ある匷迫芳念の物語、たたはPhotoshopのカレンダヌスクリプトの曞き方







この蚘事では、最初から最埌たで、Photoshopでバグずむヌスタヌ゚ッグを䜿甚しおカレンダヌを䜜成するスクリプトをどのように䜜成したかに぀いお説明したす。 たくさんのテキスト、いく぀かのコヌド、少しのむラスト。



はじめに



それはすべお、小さな玙にスケッチしたアむデアから始たりたした。 特定の幎のカレンダヌをPhotoshopで盎接䜜成できるスクリプトを曞きたかったのです。 最初は、サむズ6の幎間カレンダヌを2か月間取埗する必芁がありたした。 ただし、開発プロセス䞭にりィッシュリストが倧きくなり、その結果、目的の蚭定のリストがナヌザヌが指定できるようになりたした。





たた、「プレビュヌ」ず同じような機胜が必芁でした。蚭定の結果を明確に反映するテスト月が䜜成されたした。



Photoshopでこれを行うこずが重芁なのはなぜですか 写真やむラストを䜿っおカラフルなカレンダヌを䜜成し、できる限り手間をかけず、できればこのプログラムで䜜業したいだけです。 たぶん誰かがそれを望んでいたす。



ツヌルキット



だから、蚈画があり、必芁なツヌルを遞択する時が来たした。



蚀語。 Photoshopは、AppleScript、VBScript、およびJavaScriptのスクリプト蚀語をサポヌトしおいたす。 ここの誰もが最初のものはMacOSに、2番目はWindowsに、3番目は䞡方に適しおいるこずを理解しおいるず思いたす。 JSが遞ばれたのは、しばらく前に私がその基瀎を孊んだからであり、そのようなスクリプトを開発するこずは、この方法で優れた実践ずしお圹立぀可胜性がありたす。



テキスト゚ディタヌ。 私は通垞の「ノヌトブック」に最初の100行を曞きたしたが、それほど長く続けるこずはできたせんでした。 玠晎らしいマルチカヌ゜ル機胜を備えたSublime Textを思い出したした。



XBYTORのスクリプトツヌル。 実際、そのツヌルの1぀であるActionToJavascript.jsxのみを䜿甚したしたが、非垞に䟿利でした。 このスクリプトは次のように機胜したす入力では、蚘録された操䜜がPhotoshopで指定されこれはMS Officeのマクロに䌌おいたすが、閉じた圢匏のみです、出力は* .jsx拡匵子を持぀ファむルであり、䜎レベルのコマンドを䜿甚しお同じこずを実行する機胜が含たれおいたす元の操䜜ずしお。



Photoshopのスクリプトリスナヌ。 Adobeの公匏プラグむン。 䞊蚘のツヌルず本質的に同じこずを実行したすが、わずかに異なる原理で動䜜したす-プログラムりィンドりでナヌザヌのアクションを監芖し、デスクトップ䞊の2぀のテキストファむルに曞き蟌みたす。 最初のファむルはJavaScriptで、2番目はOSに応じおVBSたたはAppleScriptです。 そしお、はい、圌は垞に曞いおいたす。プログラムを開始する前に、プラグむン名の先頭にチルダ ~



を远加しお削陀たたはオフにする必芁がありたす。



Adobe ExtendScriptツヌルキット。 実際、このツヌルは、Adobeプログラムのスクリプトを䜜成するためのネむティブ゜リュヌションですが、䜜業の最埌でのみ䜿甚したした。 これにより、芋知らぬ人からの゜ヌスコヌドを閉じるこずができたす。 出力は、読み取り䞍胜なコンテンツを含む䜜業スクリプトです。



ドキュメンテヌション これがないず、「こんにちは」ずいうポップアップよりも耇雑なものを曞くのは非垞に問題になりたす。 蚘事の最埌にいく぀かのリンクがありたす。



最適化



スクリプトを蚘述するプロセスで䜜業を最適化する必芁がありたした。 最初のブレヌキは、スクリプトがすでに3か月を䜜成できたずきに始たりたした。 最初は、すべおの䜜業を1぀のPhotoshopドキュメントでやりたいず思っおいたした。 しかし、最初の月の埌、速床が倧幅に䜎䞋し始めたした-そしお、1月がフラむバむだった堎合、新しい月ごずに䜜成時間が増加したした。 すでに2月は1分半、3月は3分でした。 簡単に説明したした-各日付、各碑文は個別のテキストレむダヌであるため、成長䞭のレむダヌスタックで新しいレむダヌを䜜成しお移動するのに時間がかかりたした。 したがっお、しぶしぶ初めお、毎月の䜜成を新しいドキュメントに転送し、結果を単にメむンドキュメントにコピヌしたした。 したがっお、月を䜜成する時間を増やすずいう問題は解決されたした。今では、平均しお毎月、同じ時間で䜜成されおいたす。



次の驚きは、受け取った月をそれぞれ正しく配眮するために、受け取った月のそれぞれのサむズを調べる必芁があるずきに起こりたしたナヌザヌは異なる間隔を蚭定できたす。 月の高さず幅の倀を返すはずの単玔な関数をすばやく䜜成し、実行したした。 Photoshopが固くハングしたす。 圌に寛倧な10分間を䞎えた埌、圌は決しお蘇生しなかったので、プロセスを殺さなければなりたせんでした。 私はい぀か圌が終わったず思うが、10分はそれ自䜓では倚すぎる。 問題は再びドキュメント内のレむダヌの数であるこずが刀明したした-それらの数が倚すぎお適切な数をすぐに取埗できたせんでした。 そしおしぶしぶ再び、私は毎月䜜成された段階にサむズの蚈算を移動したした。 䜜成された月はサむズによっおすぐに決定され、枬定倀は埌で䜿甚するために配列に蚘録されたした。 簡単に聞こえたすが、実際にはかなり時間がかかりたした。



間違い



ここでたず第䞀に、私のテスタヌに​​倧きな感謝を申し䞊げたいず思いたす。圌らなしでは、珟圚よりもコヌドにさらに倚くの欠点を残しおいたでしょう。



レンダリングの゚ラヌ。 これは、ナヌザヌむンタヌフェむスを䜿甚しおスクリプトを䜜成し、レンダリング時に芁玠サむズボタンなどの耇雑な再蚈算を䜿甚する堎合のヒントです。WindowsおよびMacOSでスクリプトの動䜜を確認したす。 MacOSシステムで1぀の堎所でスクリプトがクラッシュするケヌスがありたした。 私は長い間理由を探したしたが、それは以䞋でカバヌされおいたしたボタンの1぀のサむズの蚈算は、増加の方向で他のボタンに関連しお調敎されるべきであり、この操䜜は私にサむクルに駆り立おられたした私は同意する、議論の䜙地がある決定。 PhotoshopのすべおのバヌゞョンのWindowsでは、調敎可胜なボタンが垞にメむンボタンよりも小さいため、これはうたく機胜したした。 しかし、MacOSでは、逆のこずが刀明したした。メむンボタンの調敎が1〜2ピクセル少なく、スクリプトは無限ルヌプに入りたした。 今、私はそれを修正したした。そしお、唯䞀可胜な結論は、むンタヌフェヌス芁玠Capを再蚈算するずきに疑わしい決定を䜿甚しないこずです。



別の憂鬱な瞬間は、Photoshopの異なるバヌゞョンが異なる方法でりィンドりをレンダリングするこずです。特に透明床を持぀芁玠は、背景でこれらのボタンを再描画しなければならなかった理由です私には思えたすが、私は混乱しお他の䜕かを思い付く可胜性がありたす









Terry Pratchett irのファンは、Holi WIZZARDボタンに気付いたかもしれたせん。 私はこれらのものが奜きです、これがむヌスタヌ゚ッグであるかどうかはわかりたせんちなみに、以䞋でそれらに぀いお、1぀のアンチりむルスず䌌たものを芋たした-スキャナヌはLuke FilewalkerLuke Sky Filealkerず呌ばれたす。



゚ラヌは内郚的なものです。 たれですが、説明が非垞に難しい゚ラヌがありたす。 私の堎合、ブロックテキストの幅および堎合によっおは高さの蚭定がこのような問題であるこずが刀明したした。 説明しおみたしょう。Photoshopには、2皮類のテキスト-ポむントテキスト短いず段萜テキストブロックがありたす。 2番目ずは異なり、最初の境界には境界がありたせん。









そこで、私に次のこずが起こりたした。このブロックテキストの幅を800ピクセルに蚭定したした。 出力では、3333ピクセルの幅が埗られたした。 私は自分の目を信じられず、コヌドをチェックし始めたした。 間違いはありたせんでした。 それは倕方で、疲れた頭で眪を犯したので、私は手に葉を眮いお特別な泚意を払っお調べ始めたした。 間違いは目に芋えたせんでした。



30分埌、䜕が起こっおいるのかを理解するためにすでに必死だったずき、同様の問題ずのリンクが目を匕きたした。 ドキュメントの解像床が72 dpiを超える堎合、Photoshopは独自の倀を公開したす。 この方法で解決されたすドキュメントの解像床300に等しいを取埗し、暙準の72を解像床で陀算し、結果にテキストブロックの目的の幅を掛けたす。 その結果、300 dpiのドキュメントで800ピクセルのブロックを取埗するには、サむズを800 * 72/300 = 192ピクセルに蚭定する必芁がありたす。 ずおも簡単です。



週の゚ラヌ。 私が非垞に愚かだったもう1぀のポむントは、週数の蚈算です。 無知から、最初の週は1月1日に始たるずいう絶察的な信念に基づいお、週の番号を付けたした。 私はこのこずを確信しおいたので、事前に確認するこずさえしなかったが、すぐに実装を開始した。 終了したずきだけ、1月1日から番号付けを開始するこずが正しいかどうかを確認したした。 いいえずいうこずが刀明したした。



この蚘事を読んだ倚くのたたはすべおの人々は、日付ず時刻の圢匏にISO 8601暙準があるこずを知っおいたす。 そしお圌によるず、週は月曜日に始たり、最初の週は1月の最初の朚曜日に圓たる週です。 たた、最初の週は1月1日からたったく開始されない堎合がありたすが、たずえば、2日目たたは4日目からこの2016幎のように開始されたす。 そのため、コヌドのこの郚分も完党に曞き盎す必芁がありたした。



...配列の゚ラヌ ここでは䜕が問題なのかわかりたせんが、解決策は興味深いものでした。



フォント名を含む7぀のドロップダりンメニュヌを䜜成するコヌドは次のずおりです。



 for (var i=0; i<7; i++){ fontGroup.nameOfFont = fontGroup.add('dropdownlist', undefined, arrFonts); fontGroup.nameOfFont.selection = fontIndex[i]; } /* fontGroup –  «»   «» arrFonts –     fontIndex –             */
      
      





りィンドりが最初に生成されたずき、すべおが問題なく正垞に実行されたした。 ただし、ナヌザヌが保存をロヌドするず、りィンドりは閉じられ、新しいfontIndex倀で再床開かれたす。 蚭定を読み蟌んでりィンドりを再䜜成するずきに、フォントの名前が私の堎合は AarcoverPlain001.001の堎合、Photoshopがクラッシュしたした 。 残りのフォントは問題なく動䜜したしたが、これによりプログラム党䜓がクラッシュしたした。



可胜性は非垞に小さいように思えたすが実際にはそうではありたせんが、非垞に悩みたした。 問題の最初の解決策はこれでした



 alert(arrFonts); for (var i=0; i<7; i++){ fontGroup.nameOfFont = fontGroup.add('dropdownlist', undefined, arrFonts); fontGroup.nameOfFont.selection = fontIndex[i]; }
      
      





぀たり、このサむクルの前に、arrFonts配列のすべおの芁玠がリストされる譊告りィンドりを呌び出すだけでこのりィンドりが画面党䜓に衚瀺され、[OK]ボタンが衚瀺されなかった堎合、スクリプトりィンドりは通垞どおりに生成されたす。 空癜行ず䞀貫性のないテキストを含む他の「アラヌト」は、フォントの配列を䜿甚する堎合にのみ圹立ちたした。



しばらくしお、動䜜する2番目の゜リュヌションが衚瀺されたしたが、その理由はわかりたせん。



 var tempArrFont = arrFonts.slice(); for (var i=0; i<7; i++){ fontGroup.nameOfFont = fontGroup.add('dropdownlist', undefined, tempArrFont); fontGroup.nameOfFont.selection = fontIndex[i]; }
      
      





スラむスメ゜ッドを䜿甚しお「問題」配列のコピヌを䜜成し、元の代わりにこのコピヌを䜿甚するこずがわかりたす。 動䜜し、珟圚䜿甚されおいたす。 これがなぜ起こっおいるのか、どういうわけか修正できるかどうかの答えをコメントで芋お喜んでいるでしょう。



䟿利な䌑憩



2015幎12月䞊旬のどこかで、スクリプトの䜜成を䞀時停止したした。 しかし、疲れおいるか興味を倱ったので、私は止めたせんでした。 別のスクリプトを曞くためにスクリプトから脱線したす。 このこずに぀いお詳しくは説明したせんが、このスクリプトの開発䞭に、䜎レベルのコマンドを䜿甚しおテキストレむダヌを䜜成する方が、マニュアルの暙準的な方法を䜿甚しお関数を䜿甚するよりもはるかに高速であるこずがわかりたした。 はい、新しい関数では、最初に曞いた関数よりもはるかに倚くのコヌド行がありたしたが、それでも高速に動䜜したした。 私たちの䜎レベルがすべおであるず掚枬するこずは可胜ですが、その瞬間、私は培底的に愚かで、真ん䞭でのみそれをチェックしたした。



わかりやすくするために、比范プレヌトを瀺したす。



テキスト「01」を含む600のテキストレむダヌの䜜成にかかった時間

NU-䜎レベルの䜜成、SM-暙準的な方法による䜜成

Photoshopバヌゞョン 静止した

コンピュヌタヌttx
ノヌトブックTTX
CS5 NU0分47秒

SM3分43秒

NU2分28秒

SM9分49秒

CC 2015 NU1分18秒

SM10分42秒

NU3分12秒

SM42分36秒



そのような指暙を芋るCS5に泚意を払う-新しいCCはスピヌドがバむパスされる、向こう芋ずな倱望感に打ち勝った-結局のずころ、「カレンダヌ」スクリプトでテキストを䜜成するずいう私の叀い機胜は、その構造にすでに有機的に統合されおいる。 そしお、本圓にすべおをやり盎したくはありたせんでした。 しかし、実際にはすべおがそれほど悪くないず考えおいたので、ある機胜を別の機胜に非垞に慎重に眮き換える必芁がありたす。 次に、衚瀺されるすべおの欠点をテストしお修正し、新しい方法に完党に切り替えたす。 さらに、カレンダヌを䜜成する時間を短瞮しお、私だけが勝ちたす。



そのため、最初は受信した芁玠の䞍芁なコヌド行を取り陀く必芁がありたした。



生関数コヌド
 //   (    ), //   XBYTOR' cTID = function(s) { return app.charIDToTypeID(s); }; sTID = function(s) { return app.stringIDToTypeID(s); }; //   ,       //     "TEXT TEXT",  Verdana,   9,32 ,   function step1() { var desc1 = new ActionDescriptor(); var ref1 = new ActionReference(); ref1.putClass(cTID('TxLr')); desc1.putReference(cTID('null'), ref1); var desc2 = new ActionDescriptor(); desc2.putString(cTID('Txt '), "TEXT TEXT"); var desc3 = new ActionDescriptor(); desc3.putEnumerated(sTID("warpStyle"), sTID("warpStyle"), sTID("warpNone")); desc3.putDouble(sTID("warpValue"), 0); desc3.putDouble(sTID("warpPerspective"), 0); desc3.putDouble(sTID("warpPerspectiveOther"), 0); desc3.putEnumerated(sTID("warpRotate"), cTID('Ornt'), cTID('Hrzn')); desc2.putObject(cTID('warp'), cTID('warp'), desc3); var desc4 = new ActionDescriptor(); desc4.putUnitDouble(cTID('Hrzn'), cTID('#Prc'), 35.5820105820106); desc4.putUnitDouble(cTID('Vrtc'), cTID('#Prc'), 48.2254697286012); desc2.putObject(cTID('TxtC'), cTID('Pnt '), desc4); desc2.putEnumerated(sTID("textGridding"), sTID("textGridding"), cTID('None')); desc2.putEnumerated(cTID('Ornt'), cTID('Ornt'), cTID('Hrzn')); desc2.putEnumerated(cTID('AntA'), cTID('Annt'), cTID('AnCr')); var desc5 = new ActionDescriptor(); desc5.putUnitDouble(cTID('Left'), cTID('#Pnt'), 0); desc5.putUnitDouble(cTID('Top '), cTID('#Pnt'), -8.04805660247803); desc5.putUnitDouble(cTID('Rght'), cTID('#Pnt'), 50.8121795654297); desc5.putUnitDouble(cTID('Btom'), cTID('#Pnt'), 2.8260350227356); desc2.putObject(sTID("bounds"), sTID("bounds"), desc5); var desc6 = new ActionDescriptor(); desc6.putUnitDouble(cTID('Left'), cTID('#Pnt'), 0); desc6.putUnitDouble(cTID('Top '), cTID('#Pnt'), -7); desc6.putUnitDouble(cTID('Rght'), cTID('#Pnt'), 52.0618438720703); desc6.putUnitDouble(cTID('Btom'), cTID('#Pnt'), 0); desc2.putObject(sTID("boundingBox"), sTID("boundingBox"), desc6); var list1 = new ActionList(); var desc7 = new ActionDescriptor(); desc7.putEnumerated(sTID("textType"), sTID("textType"), cTID('Pnt ')); desc7.putEnumerated(cTID('Ornt'), cTID('Ornt'), cTID('Hrzn')); var desc8 = new ActionDescriptor(); desc8.putDouble(sTID("xx"), 1); desc8.putDouble(sTID("xy"), 0); desc8.putDouble(sTID("yx"), 0); desc8.putDouble(sTID("yy"), 1); desc8.putDouble(sTID("tx"), 0); desc8.putDouble(sTID("ty"), 0); desc7.putObject(cTID('Trnf'), cTID('Trnf'), desc8); desc7.putInteger(sTID("rowCount"), 1); desc7.putInteger(sTID("columnCount"), 1); desc7.putBoolean(sTID("rowMajorOrder"), true); desc7.putUnitDouble(sTID("rowGutter"), cTID('#Pnt'), 0); desc7.putUnitDouble(sTID("columnGutter"), cTID('#Pnt'), 0); desc7.putUnitDouble(cTID('Spcn'), cTID('#Pnt'), 0); desc7.putEnumerated(sTID("frameBaselineAlignment"), sTID("frameBaselineAlignment"), sTID("alignByAscent")); desc7.putUnitDouble(sTID("firstBaselineMinimum"), cTID('#Pnt'), 0); var desc9 = new ActionDescriptor(); desc9.putDouble(cTID('Hrzn'), 0); desc9.putDouble(cTID('Vrtc'), 0); desc7.putObject(cTID('base'), cTID('Pnt '), desc9); list1.putObject(sTID("textShape"), desc7); desc2.putList(sTID("textShape"), list1); var list2 = new ActionList(); var desc10 = new ActionDescriptor(); desc10.putInteger(cTID('From'), 0); desc10.putInteger(cTID('T '), 10); var desc11 = new ActionDescriptor(); desc11.putBoolean(sTID("styleSheetHasParent"), true); desc11.putString(sTID("fontPostScriptName"), "Verdana"); desc11.putString(cTID('FntN'), "Verdana"); desc11.putString(cTID('FntS'), "Regular"); desc11.putInteger(cTID('Scrp'), 0); desc11.putInteger(cTID('FntT'), 1); desc11.putUnitDouble(cTID('Sz '), cTID('#Pnt'), 9.31999969482422); desc11.putEnumerated(sTID("digitSet"), sTID("digitSet"), sTID("defaultDigits")); desc11.putUnitDouble(sTID("markYDistFromBaseline"), cTID('#Pnt'), 5.76000165939331); desc11.putEnumerated(sTID("textLanguage"), sTID("textLanguage"), sTID("russianLanguage")); var desc12 = new ActionDescriptor(); desc12.putString(sTID("fontPostScriptName"), "MyriadPro-Regular"); desc12.putString(cTID('FntN'), "Myriad Pro"); desc12.putString(cTID('FntS'), "Regular"); desc12.putInteger(cTID('Scrp'), 0); desc12.putInteger(cTID('FntT'), 0); desc12.putUnitDouble(cTID('Sz '), cTID('#Pnt'), 12); desc12.putDouble(cTID('HrzS'), 100); desc12.putDouble(cTID('VrtS'), 100); desc12.putBoolean(sTID("syntheticBold"), false); desc12.putBoolean(sTID("syntheticItalic"), false); desc12.putBoolean(sTID("autoLeading"), true); desc12.putInteger(cTID('Trck'), 0); desc12.putUnitDouble(cTID('Bsln'), cTID('#Pnt'), 0); desc12.putDouble(sTID("characterRotation"), 0); desc12.putEnumerated(cTID('AtKr'), cTID('AtKr'), sTID("metricsKern")); desc12.putEnumerated(sTID("fontCaps"), sTID("fontCaps"), cTID('Nrml')); desc12.putEnumerated(sTID("digitSet"), sTID("digitSet"), sTID("defaultDigits")); desc12.putEnumerated(sTID("dirOverride"), sTID("dirOverride"), sTID("dirOverrideDefault")); desc12.putEnumerated(sTID("kashidas"), sTID("kashidas"), sTID("kashidaDefault")); desc12.putEnumerated(sTID("diacVPos"), sTID("diacVPos"), sTID("diacVPosOpenType")); desc12.putUnitDouble(sTID("diacXOffset"), cTID('#Pnt'), 0); desc12.putUnitDouble(sTID("diacYOffset"), cTID('#Pnt'), 0); desc12.putUnitDouble(sTID("markYDistFromBaseline"), cTID('#Pnt'), 100); desc12.putEnumerated(sTID("baseline"), sTID("baseline"), cTID('Nrml')); desc12.putEnumerated(sTID("otbaseline"), sTID("otbaseline"), cTID('Nrml')); desc12.putEnumerated(sTID("strikethrough"), sTID("strikethrough"), sTID("strikethroughOff")); desc12.putEnumerated(cTID('Undl'), cTID('Undl'), sTID("underlineOff")); desc12.putUnitDouble(sTID("underlineOffset"), cTID('#Pnt'), 0); desc12.putBoolean(sTID("ligature"), true); desc12.putBoolean(sTID("altligature"), false); desc12.putBoolean(sTID("contextualLigatures"), false); desc12.putBoolean(sTID("alternateLigatures"), false); desc12.putBoolean(sTID("oldStyle"), false); desc12.putBoolean(sTID("fractions"), false); desc12.putBoolean(sTID("ordinals"), false); desc12.putBoolean(sTID("swash"), false); desc12.putBoolean(sTID("titling"), false); desc12.putBoolean(sTID("connectionForms"), false); desc12.putBoolean(sTID("stylisticAlternates"), false); desc12.putBoolean(sTID("ornaments"), false); desc12.putBoolean(sTID("justificationAlternates"), false); desc12.putEnumerated(sTID("figureStyle"), sTID("figureStyle"), cTID('Nrml')); desc12.putBoolean(sTID("proportionalMetrics"), false); desc12.putBoolean(cTID('kana'), false); desc12.putBoolean(sTID("italics"), false); desc12.putBoolean(cTID('ruby'), false); desc12.putEnumerated(sTID("baselineDirection"), sTID("baselineDirection"), sTID("rotated")); desc12.putEnumerated(sTID("textLanguage"), sTID("textLanguage"), sTID("englishLanguage")); desc12.putEnumerated(sTID("japaneseAlternate"), sTID("japaneseAlternate"), sTID("defaultForm")); desc12.putDouble(sTID("mojiZume"), 0); desc12.putEnumerated(sTID("gridAlignment"), sTID("gridAlignment"), sTID("roman")); desc12.putBoolean(sTID("enableWariChu"), false); desc12.putInteger(sTID("wariChuCount"), 2); desc12.putInteger(sTID("wariChuLineGap"), 0); desc12.putDouble(sTID("wariChuScale"), 0.5); desc12.putInteger(sTID("wariChuWidow"), 2); desc12.putInteger(sTID("wariChuOrphan"), 2); desc12.putEnumerated(sTID("wariChuJustification"), sTID("wariChuJustification"), sTID("wariChuAutoJustify")); desc12.putInteger(sTID("tcyUpDown"), 0); desc12.putInteger(sTID("tcyLeftRight"), 0); desc12.putDouble(sTID("leftAki"), -1); desc12.putDouble(sTID("rightAki"), -1); desc12.putInteger(sTID("jiDori"), 0); desc12.putBoolean(sTID("noBreak"), false); var desc13 = new ActionDescriptor(); desc13.putDouble(cTID('Rd '), 0); desc13.putDouble(cTID('Grn '), 0); desc13.putDouble(cTID('Bl '), 0); desc12.putObject(cTID('Clr '), sTID("RGBColor"), desc13); var desc14 = new ActionDescriptor(); desc14.putDouble(cTID('Rd '), 0); desc14.putDouble(cTID('Grn '), 0); desc14.putDouble(cTID('Bl '), 0); desc12.putObject(sTID("strokeColor"), sTID("RGBColor"), desc14); desc12.putBoolean(cTID('Fl '), true); desc12.putBoolean(cTID('Strk'), false); desc12.putBoolean(sTID("fillFirst"), true); desc12.putBoolean(sTID("fillOverPrint"), false); desc12.putBoolean(sTID("strokeOverPrint"), false); desc12.putEnumerated(sTID("lineCap"), sTID("lineCap"), sTID("buttCap")); desc12.putEnumerated(sTID("lineJoin"), sTID("lineJoin"), sTID("miterJoin")); desc12.putUnitDouble(sTID("lineWidth"), cTID('#Pnt'), 1); desc12.putUnitDouble(sTID("miterLimit"), cTID('#Pnt'), 4); desc12.putDouble(sTID("lineDashOffset"), 0); desc11.putObject(sTID("baseParentStyle"), cTID('TxtS'), desc12); desc10.putObject(cTID('TxtS'), cTID('TxtS'), desc11); list2.putObject(cTID('Txtt'), desc10); desc2.putList(cTID('Txtt'), list2); var list3 = new ActionList(); var desc15 = new ActionDescriptor(); desc15.putInteger(cTID('From'), 0); desc15.putInteger(cTID('T '), 10); var desc16 = new ActionDescriptor(); desc16.putBoolean(sTID("styleSheetHasParent"), true); desc16.putEnumerated(cTID('Algn'), cTID('Alg '), cTID('Left')); desc16.putUnitDouble(sTID("firstLineIndent"), cTID('#Pnt'), 0); desc16.putUnitDouble(sTID("startIndent"), cTID('#Pnt'), 0); desc16.putUnitDouble(sTID("endIndent"), cTID('#Pnt'), 0); desc16.putUnitDouble(sTID("spaceBefore"), cTID('#Pnt'), 0); desc16.putUnitDouble(sTID("spaceAfter"), cTID('#Pnt'), 0); desc16.putInteger(sTID("dropCapMultiplier"), 1); desc16.putDouble(sTID("autoLeadingPercentage"), 1.20000004768372); desc16.putEnumerated(sTID("leadingType"), sTID("leadingType"), sTID("leadingBelow")); desc16.putEnumerated(sTID("directionType"), sTID("directionType"), sTID("dirLeftToRight")); desc16.putEnumerated(sTID("kashidaWidthType"), sTID("kashidaWidthType"), sTID("kashidaWidthMedium")); desc16.putEnumerated(sTID("justificationMethodType"), sTID("justificationMethodType"), sTID("justifMethodAutomatic")); desc16.putBoolean(sTID("hyphenate"), true); desc16.putInteger(sTID("hyphenateWordSize"), 6); desc16.putInteger(sTID("hyphenatePreLength"), 2); desc16.putInteger(sTID("hyphenatePostLength"), 2); desc16.putInteger(sTID("hyphenateLimit"), 0); desc16.putDouble(sTID("hyphenationZone"), 36); desc16.putBoolean(sTID("hyphenateCapitalized"), true); desc16.putDouble(sTID("hyphenationPreference"), 0.5); desc16.putDouble(sTID("justificationWordMinimum"), 0.80000001192093); desc16.putDouble(sTID("justificationWordDesired"), 1); desc16.putDouble(sTID("justificationWordMaximum"), 1.33000004291534); desc16.putDouble(sTID("justificationLetterMinimum"), 0); desc16.putDouble(sTID("justificationLetterDesired"), 0); desc16.putDouble(sTID("justificationLetterMaximum"), 0); desc16.putDouble(sTID("justificationGlyphMinimum"), 1); desc16.putDouble(sTID("justificationGlyphDesired"), 1); desc16.putDouble(sTID("justificationGlyphMaximum"), 1); desc16.putEnumerated(sTID("singleWordJustification"), cTID('Alg '), cTID('JstA')); desc16.putBoolean(sTID("hangingRoman"), false); desc16.putInteger(sTID("autoTCY"), 0); desc16.putBoolean(sTID("keepTogether"), true); desc16.putEnumerated(sTID("burasagari"), sTID("burasagari"), sTID("burasagariNone")); desc16.putEnumerated(sTID("preferredKinsokuOrder"), sTID("preferredKinsokuOrder"), sTID("pushIn")); desc16.putBoolean(sTID("kurikaeshiMojiShori"), false); desc16.putBoolean(sTID("textEveryLineComposer"), false); desc16.putDouble(sTID("defaultTabWidth"), 36); var desc17 = new ActionDescriptor(); desc17.putString(sTID("fontPostScriptName"), "MyriadPro-Regular"); desc17.putString(cTID('FntN'), "Myriad Pro"); desc17.putString(cTID('FntS'), "Regular"); desc17.putInteger(cTID('Scrp'), 0); desc17.putInteger(cTID('FntT'), 0); desc17.putUnitDouble(cTID('Sz '), cTID('#Pnt'), 12); desc17.putDouble(cTID('HrzS'), 100); desc17.putDouble(cTID('VrtS'), 100); desc17.putBoolean(sTID("syntheticBold"), false); desc17.putBoolean(sTID("syntheticItalic"), false); desc17.putBoolean(sTID("autoLeading"), true); desc17.putInteger(cTID('Trck'), 0); desc17.putUnitDouble(cTID('Bsln'), cTID('#Pnt'), 0); desc17.putDouble(sTID("characterRotation"), 0); desc17.putEnumerated(cTID('AtKr'), cTID('AtKr'), sTID("metricsKern")); desc17.putEnumerated(sTID("fontCaps"), sTID("fontCaps"), cTID('Nrml')); desc17.putEnumerated(sTID("digitSet"), sTID("digitSet"), sTID("arabicDigits")); desc17.putEnumerated(sTID("kashidas"), sTID("kashidas"), sTID("kashidaDefault")); desc17.putEnumerated(sTID("diacVPos"), sTID("diacVPos"), sTID("diacVPosOpenType")); desc17.putUnitDouble(sTID("diacXOffset"), cTID('#Pnt'), 0); desc17.putUnitDouble(sTID("diacYOffset"), cTID('#Pnt'), 0); desc17.putUnitDouble(sTID("markYDistFromBaseline"), cTID('#Pnt'), 0); desc17.putEnumerated(sTID("baseline"), sTID("baseline"), cTID('Nrml')); desc17.putEnumerated(sTID("strikethrough"), sTID("strikethrough"), sTID("strikethroughOff")); desc17.putEnumerated(cTID('Undl'), cTID('Undl'), sTID("underlineOff")); desc17.putBoolean(sTID("ligature"), true); desc17.putBoolean(sTID("altligature"), false); desc17.putBoolean(sTID("contextualLigatures"), true); desc17.putBoolean(sTID("alternateLigatures"), false); desc17.putBoolean(sTID("oldStyle"), false); desc17.putBoolean(sTID("fractions"), false); desc17.putBoolean(sTID("ordinals"), false); desc17.putBoolean(sTID("swash"), false); desc17.putBoolean(sTID("titling"), false); desc17.putBoolean(sTID("connectionForms"), false); desc17.putBoolean(sTID("stylisticAlternates"), false); desc17.putBoolean(sTID("ornaments"), false); desc17.putEnumerated(sTID("figureStyle"), sTID("figureStyle"), cTID('Nrml')); desc17.putEnumerated(sTID("baselineDirection"), sTID("baselineDirection"), sTID("withStream")); desc17.putEnumerated(sTID("textLanguage"), sTID("textLanguage"), sTID("englishLanguage")); var desc18 = new ActionDescriptor(); desc18.putDouble(cTID('Rd '), 0); desc18.putDouble(cTID('Grn '), 0); desc18.putDouble(cTID('Bl '), 0); desc17.putObject(cTID('Clr '), sTID("RGBColor"), desc18); var desc19 = new ActionDescriptor(); desc19.putDouble(cTID('Rd '), 0); desc19.putDouble(cTID('Grn '), 0); desc19.putDouble(cTID('Bl '), 0); desc17.putObject(sTID("strokeColor"), sTID("RGBColor"), desc19); desc16.putObject(sTID("defaultStyle"), cTID('TxtS'), desc17); desc15.putObject(sTID("paragraphStyle"), sTID("paragraphStyle"), desc16); list3.putObject(sTID("paragraphStyleRange"), desc15); desc2.putList(sTID("paragraphStyleRange"), list3); var list4 = new ActionList(); desc2.putList(sTID("kerningRange"), list4); desc1.putObject(cTID('Usng'), cTID('TxLr'), desc2); executeAction(cTID('Mk '), desc1, DialogModes.NO); };
      
      







機胜を損なうこずなく、耇数の行を削陀できたした。簡単になるたでクリヌンアップしたした。新しい非反埩蚘述子を探し、それが䜕であるかを芋お、削陀し、䜜業を確認し、目に芋える倉曎がなくおもすべおが機胜する堎合は、さらにそれを続けたす。機胜の身䜓におけるそのような肉県的な倖科的介入の埌に゚ラヌがより頻繁に発生し始めたずき、私は停止したした-善の最高の敵。次に、フォントが蚭定されおいる堎所、サむズ、色を芋぀け、これらの堎所を蚭定倉数に倉換したした。



埗られた関数は完党に機胜し、新しいテキストを䜜成する堎所を瀺す必芁はありたせんでした。あるグルヌプがアクティブな堎合、その䞭にテキストレむダヌが䜜成されたす。1぀のグルヌプのテキストレむダヌがアクティブな堎合、正しく-新しいレむダヌはこのグルヌプになりたす。それは非垞に䟿利で時間を節玄できたす;亀換は無駄ではありたせんでした。結果の関数のコヌドは次のずおりです。



少しくし圢の機胜コヌド
 // ,        var sizeTestParam = { text:   fontName:   (postcript), fontSize:  , color:  () } newTextLayer(sizeTestParam, 'Left'); // .        //    function newTextLayer() { var paramset = arguments[0]; var justific = arguments[1]; if (justific===undefined) {justific = 'Cntr'} //   var text = paramset.text + ""||"<empty>"; var textLength = text.length; var fontName = paramset.fontName||"TimesNewRomanPS-BoldMT"; var fontSize = paramset.fontSize||5; var colorR = paramset.color.rgb.red||0; var colorG = paramset.color.rgb.green||0; var colorB = paramset.color.rgb.blue||0; var desc1 = new ActionDescriptor(); var ref1 = new ActionReference(); ref1.putClass(cTID('TxLr')); desc1.putReference(cTID('null'), ref1); var desc2 = new ActionDescriptor(); desc2.putString(cTID('Txt '), text); //   (  ) var desc4 = new ActionDescriptor(); desc4.putUnitDouble(cTID('Hrzn'), cTID('#Prc'), 5); desc4.putUnitDouble(cTID('Vrtc'), cTID('#Prc'), 5); desc2.putObject(cTID('TxtC'), cTID('Pnt '), desc4); desc2.putEnumerated(sTID("textGridding"), sTID("textGridding"), cTID('None')); desc2.putEnumerated(cTID('Ornt'), cTID('Ornt'), cTID('Hrzn')); desc2.putEnumerated(cTID('AntA'), cTID('Annt'), cTID('AnCr')); var list1 = new ActionList(); var desc7 = new ActionDescriptor(); desc7.putEnumerated(sTID("textType"), sTID("textType"), cTID('Pnt ')); desc7.putEnumerated(cTID('Ornt'), cTID('Ornt'), cTID('Hrzn')); desc7.putInteger(sTID("rowCount"), 1); desc7.putInteger(sTID("columnCount"), 1); desc7.putBoolean(sTID("rowMajorOrder"), true); desc7.putUnitDouble(sTID("rowGutter"), cTID('#Pxl'), 0); desc7.putUnitDouble(sTID("columnGutter"), cTID('#Pxl'), 0); desc7.putUnitDouble(cTID('Spcn'), cTID('#Pxl'), 0); desc7.putEnumerated(sTID("frameBaselineAlignment"), sTID("frameBaselineAlignment"), sTID("alignByAscent")); desc7.putUnitDouble(sTID("firstBaselineMinimum"), cTID('#Pxl'), 0); var desc9 = new ActionDescriptor(); desc9.putDouble(cTID('Hrzn'), 0); desc9.putDouble(cTID('Vrtc'), 0); desc7.putObject(cTID('base'), cTID('Pnt '), desc9); list1.putObject(sTID("textShape"), desc7); desc2.putList(sTID("textShape"), list1); var list2 = new ActionList(); var desc10 = new ActionDescriptor(); desc10.putInteger(cTID('From'), 0); //     (  -) desc10.putInteger(cTID('T '), textLength); var desc11 = new ActionDescriptor(); desc11.putBoolean(sTID("styleSheetHasParent"), true); //  desc11.putString(sTID("fontPostScriptName"), fontName); desc11.putInteger(cTID('Scrp'), 0); desc11.putInteger(cTID('FntT'), 1); //   desc11.putUnitDouble(cTID('Sz '), cTID('#Pnt'), fontSize); desc11.putEnumerated(sTID("digitSet"), sTID("digitSet"), sTID("defaultDigits")); desc11.putUnitDouble(sTID("markYDistFromBaseline"), cTID('#Pxl'), 100); //   var colorDesc = new ActionDescriptor(); colorDesc.putDouble(cTID('Rd '), colorR); colorDesc.putDouble(cTID('Grn '), colorG); colorDesc.putDouble(cTID('Bl '), colorB); desc11.putObject(cTID('Clr '), sTID("RGBColor"), colorDesc); var desc13 = new ActionDescriptor(); desc13.putString(sTID("fontPostScriptName"), "MyriadPro-Regular"); desc13.putString(cTID('FntN'), "Myriad Pro"); desc13.putString(cTID('FntS'), "Regular"); desc13.putInteger(cTID('Scrp'), 0); desc13.putInteger(cTID('FntT'), 0); desc13.putUnitDouble(cTID('Sz '), cTID('#Pxl'), 12); desc13.putDouble(cTID('HrzS'), 100); desc13.putDouble(cTID('VrtS'), 100); desc13.putBoolean(sTID("syntheticBold"), false); desc13.putBoolean(sTID("syntheticItalic"), false); desc13.putBoolean(sTID("autoLeading"), true); desc13.putInteger(cTID('Trck'), 0); desc13.putUnitDouble(cTID('Bsln'), cTID('#Pxl'), 0); desc13.putEnumerated(cTID('AtKr'), cTID('AtKr'), sTID("metricsKern")); desc13.putEnumerated(sTID("fontCaps"), sTID("fontCaps"), cTID('Nrml')); desc13.putEnumerated(sTID("digitSet"), sTID("digitSet"), sTID("defaultDigits")); desc13.putEnumerated(sTID("dirOverride"), sTID("dirOverride"), sTID("dirOverrideDefault")); desc13.putEnumerated(sTID("kashidas"), sTID("kashidas"), sTID("kashidaDefault")); desc13.putEnumerated(sTID("diacVPos"), sTID("diacVPos"), sTID("diacVPosOpenType")); desc13.putUnitDouble(sTID("diacXOffset"), cTID('#Pxl'), 0); desc13.putUnitDouble(sTID("diacYOffset"), cTID('#Pxl'), 0); desc13.putUnitDouble(sTID("markYDistFromBaseline"), cTID('#Pxl'), 100); desc13.putEnumerated(sTID("baseline"), sTID("baseline"), cTID('Nrml')); desc13.putEnumerated(sTID("otbaseline"), sTID("otbaseline"), cTID('Nrml')); desc13.putEnumerated(sTID("strikethrough"), sTID("strikethrough"), sTID("strikethroughOff")); desc13.putEnumerated(cTID('Undl'), cTID('Undl'), sTID("underlineOff")); desc13.putUnitDouble(sTID("underlineOffset"), cTID('#Pxl'), 0); desc13.putBoolean(sTID("ligature"), true); desc13.putBoolean(sTID("altligature"), false); desc13.putBoolean(sTID("contextualLigatures"), false); desc13.putBoolean(sTID("alternateLigatures"), false); desc13.putBoolean(sTID("oldStyle"), false); desc13.putBoolean(sTID("fractions"), false); desc13.putBoolean(sTID("ordinals"), false); desc13.putBoolean(sTID("swash"), false); desc13.putBoolean(sTID("titling"), false); desc13.putBoolean(sTID("connectionForms"), false); desc13.putBoolean(sTID("stylisticAlternates"), false); desc13.putBoolean(sTID("ornaments"), false); desc13.putBoolean(sTID("justificationAlternates"), false); desc13.putEnumerated(sTID("figureStyle"), sTID("figureStyle"), cTID('Nrml')); desc13.putBoolean(sTID("proportionalMetrics"), false); desc13.putBoolean(cTID('kana'), false); desc13.putBoolean(sTID("italics"), false); desc13.putBoolean(cTID('ruby'), false); desc13.putEnumerated(sTID("baselineDirection"), sTID("baselineDirection"), sTID("rotated")); desc13.putEnumerated(sTID("textLanguage"), sTID("textLanguage"), sTID("englishLanguage")); desc13.putEnumerated(sTID("japaneseAlternate"), sTID("japaneseAlternate"), sTID("defaultForm")); desc13.putDouble(sTID("mojiZume"), 0); desc13.putEnumerated(sTID("gridAlignment"), sTID("gridAlignment"), sTID("roman")); desc13.putBoolean(sTID("enableWariChu"), false); desc13.putInteger(sTID("wariChuCount"), 2); desc13.putInteger(sTID("wariChuLineGap"), 0); desc13.putDouble(sTID("wariChuScale"), 0.5); desc13.putInteger(sTID("wariChuWidow"), 2); desc13.putInteger(sTID("wariChuOrphan"), 2); desc13.putEnumerated(sTID("wariChuJustification"), sTID("wariChuJustification"), sTID("wariChuAutoJustify")); desc13.putInteger(sTID("tcyUpDown"), 0); desc13.putInteger(sTID("tcyLeftRight"), 0); desc13.putDouble(sTID("leftAki"), -1); desc13.putDouble(sTID("rightAki"), -1); desc13.putInteger(sTID("jiDori"), 0); desc13.putBoolean(sTID("noBreak"), false); desc13.putEnumerated(sTID("lineCap"), sTID("lineCap"), sTID("buttCap")); desc13.putEnumerated(sTID("lineJoin"), sTID("lineJoin"), sTID("miterJoin")); desc13.putUnitDouble(sTID("lineWidth"), cTID('#Pxl'), 1); desc13.putUnitDouble(sTID("miterLimit"), cTID('#Pxl'), 4); desc13.putDouble(sTID("lineDashOffset"), 0); desc11.putObject(sTID("baseParentStyle"), cTID('TxtS'), desc13); desc10.putObject(cTID('TxtS'), cTID('TxtS'), desc11); list2.putObject(cTID('Txtt'), desc10); desc2.putList(cTID('Txtt'), list2); var list3 = new ActionList(); var desc16 = new ActionDescriptor(); desc16.putInteger(cTID('From'), 0); desc16.putInteger(cTID('T '), 16); var desc17 = new ActionDescriptor(); desc17.putBoolean(sTID("styleSheetHasParent"), true); //  desc17.putEnumerated(cTID('Algn'), cTID('Alg '), cTID(justific)); desc17.putUnitDouble(sTID("firstLineIndent"), cTID('#Pxl'), 0); desc17.putUnitDouble(sTID("startIndent"), cTID('#Pxl'), 0); desc17.putUnitDouble(sTID("endIndent"), cTID('#Pxl'), 0); desc17.putUnitDouble(sTID("spaceBefore"), cTID('#Pxl'), 0); desc17.putUnitDouble(sTID("spaceAfter"), cTID('#Pxl'), 0); desc17.putInteger(sTID("dropCapMultiplier"), 1); desc17.putDouble(sTID("autoLeadingPercentage"), 1.20000004768372); desc17.putEnumerated(sTID("leadingType"), sTID("leadingType"), sTID("leadingBelow")); desc17.putEnumerated(sTID("directionType"), sTID("directionType"), sTID("dirLeftToRight")); desc17.putEnumerated(sTID("kashidaWidthType"), sTID("kashidaWidthType"), sTID("kashidaWidthMedium")); desc17.putEnumerated(sTID("justificationMethodType"), sTID("justificationMethodType"), sTID("justifMethodAutomatic")); desc17.putBoolean(sTID("hyphenate"), true); desc17.putInteger(sTID("hyphenateWordSize"), 6); desc17.putInteger(sTID("hyphenatePreLength"), 2); desc17.putInteger(sTID("hyphenatePostLength"), 2); desc17.putInteger(sTID("hyphenateLimit"), 0); desc17.putDouble(sTID("hyphenationZone"), 36); desc17.putBoolean(sTID("hyphenateCapitalized"), true); desc17.putDouble(sTID("hyphenationPreference"), 0.5); desc17.putDouble(sTID("justificationWordMinimum"), 0.80000001192093); desc17.putDouble(sTID("justificationWordDesired"), 1); desc17.putDouble(sTID("justificationWordMaximum"), 1.33000004291534); desc17.putDouble(sTID("justificationLetterMinimum"), 0); desc17.putDouble(sTID("justificationLetterDesired"), 0); desc17.putDouble(sTID("justificationLetterMaximum"), 0); desc17.putDouble(sTID("justificationGlyphMinimum"), 1); desc17.putDouble(sTID("justificationGlyphDesired"), 1); desc17.putDouble(sTID("justificationGlyphMaximum"), 1); desc17.putEnumerated(sTID("singleWordJustification"), cTID('Alg '), cTID('JstA')); desc17.putBoolean(sTID("hangingRoman"), false); desc17.putInteger(sTID("autoTCY"), 0); desc17.putBoolean(sTID("keepTogether"), true); desc17.putEnumerated(sTID("burasagari"), sTID("burasagari"), sTID("burasagariNone")); desc17.putEnumerated(sTID("preferredKinsokuOrder"), sTID("preferredKinsokuOrder"), sTID("pushIn")); desc17.putBoolean(sTID("kurikaeshiMojiShori"), false); desc17.putBoolean(sTID("textEveryLineComposer"), false); desc17.putDouble(sTID("defaultTabWidth"), 36); var desc18 = new ActionDescriptor(); desc18.putString(sTID("fontPostScriptName"), "MyriadPro-Regular"); desc18.putString(cTID('FntN'), "Myriad Pro"); desc18.putString(cTID('FntS'), "Regular"); desc18.putInteger(cTID('Scrp'), 0); desc18.putInteger(cTID('FntT'), 0); desc18.putUnitDouble(cTID('Sz '), cTID('#Pxl'), 12); desc18.putDouble(cTID('HrzS'), 100); desc18.putDouble(cTID('VrtS'), 100); desc18.putBoolean(sTID("syntheticBold"), false); desc18.putBoolean(sTID("syntheticItalic"), false); desc18.putBoolean(sTID("autoLeading"), true); desc18.putInteger(cTID('Trck'), 0); desc18.putUnitDouble(cTID('Bsln'), cTID('#Pxl'), 0); desc18.putDouble(sTID("characterRotation"), 0); desc18.putEnumerated(cTID('AtKr'), cTID('AtKr'), sTID("metricsKern")); desc18.putEnumerated(sTID("fontCaps"), sTID("fontCaps"), cTID('Nrml')); desc18.putEnumerated(sTID("digitSet"), sTID("digitSet"), sTID("arabicDigits")); desc18.putEnumerated(sTID("kashidas"), sTID("kashidas"), sTID("kashidaDefault")); desc18.putEnumerated(sTID("diacVPos"), sTID("diacVPos"), sTID("diacVPosOpenType")); desc18.putUnitDouble(sTID("diacXOffset"), cTID('#Pxl'), 0); desc18.putUnitDouble(sTID("diacYOffset"), cTID('#Pxl'), 0); desc18.putUnitDouble(sTID("markYDistFromBaseline"), cTID('#Pxl'), 0); desc18.putEnumerated(sTID("baseline"), sTID("baseline"), cTID('Nrml')); desc18.putEnumerated(sTID("strikethrough"), sTID("strikethrough"), sTID("strikethroughOff")); desc18.putEnumerated(cTID('Undl'), cTID('Undl'), sTID("underlineOff")); desc18.putBoolean(sTID("ligature"), true); desc18.putBoolean(sTID("altligature"), false); desc18.putBoolean(sTID("contextualLigatures"), true); desc18.putBoolean(sTID("alternateLigatures"), false); desc18.putBoolean(sTID("oldStyle"), false); desc18.putBoolean(sTID("fractions"), false); desc18.putBoolean(sTID("ordinals"), false); desc18.putBoolean(sTID("swash"), false); desc18.putBoolean(sTID("titling"), false); desc18.putBoolean(sTID("connectionForms"), false); desc18.putBoolean(sTID("stylisticAlternates"), false); desc18.putBoolean(sTID("ornaments"), false); desc18.putEnumerated(sTID("figureStyle"), sTID("figureStyle"), cTID('Nrml')); desc18.putEnumerated(sTID("baselineDirection"), sTID("baselineDirection"), sTID("withStream")); desc18.putEnumerated(sTID("textLanguage"), sTID("textLanguage"), sTID("englishLanguage")); var desc19 = new ActionDescriptor(); desc19.putDouble(cTID('Rd '), 0); desc19.putDouble(cTID('Grn '), 0); desc19.putDouble(cTID('Bl '), 0); desc18.putObject(cTID('Clr '), sTID("RGBColor"), desc19); var desc20 = new ActionDescriptor(); desc20.putDouble(cTID('Rd '), 0); desc20.putDouble(cTID('Grn '), 0); desc20.putDouble(cTID('Bl '), 0); desc18.putObject(sTID("strokeColor"), sTID("RGBColor"), desc20); desc17.putObject(sTID("defaultStyle"), cTID('TxtS'), desc18); desc16.putObject(sTID("paragraphStyle"), sTID("paragraphStyle"), desc17); list3.putObject(sTID("paragraphStyleRange"), desc16); desc2.putList(sTID("paragraphStyleRange"), list3); var list4 = new ActionList(); desc2.putList(sTID("kerningRange"), list4); desc1.putObject(cTID('Usng'), cTID('TxLr'), desc2); executeAction(cTID('Mk '), desc1, DialogModes.NO); };
      
      





そしお、別のものを远加したす。確かではありたせんが、すべおの䜎レベル関数が暙準的な方法よりも高速ではないようです-䞀床、XずYに沿っお指定されたピクセル数だけレむダヌを移動するず、暙準的な方法を䜿甚した方が高速であるように思えたした 実隓。



むヌスタヌ゚ッグ



それなしでは䞍可胜です。スクリプトには耇数のむヌスタヌ゚ッグがあり、それらのいく぀かは゜ヌスコヌドでのみ私に衚瀺されたすたずえば、1぀の関数はfireStarterず呌ばれたす。しかし、私がナヌザヌのために残したものがありたす。以䞋は興味のある人のためのネタバレです。



タむク
3 . Simple Mode , ( , ) .

« !». info, — , Warcraft III .

. , . , - . , , , «egg», . , , . — , — , .







スクリプト参照



正盎なずころ、私にずっおは、狂信的ではなく、喜びをもっおドキュメントを曞いたのは初めおでした。できる限り、詳现にコンパむルしたした。友人ず協力しお、ナヌザヌマニュアルの優れたIMHO翻蚳を受け取りたした。圌女はたた、スクリプト内のむンタヌフェむス芁玠、ヒント、その他倚くのこずを翻蚳するのを手䌝っおくれたした。



スクリプトは䞀郚のモヌドでは盎芳的に芋えないため、ドキュメントの補足ずしお短いビデオチュヌトリアルを䜜成したした。合蚈で玄10〜12個あり、スクリプトのすべおの機胜を最倧限に衚瀺しようずしたした。



そしお、完党なセットのために、質問のためのあなた自身の小さなフォヌラムがあるずいいでしょう。これを行うには、Googleグルヌプサヌビスを䜿甚したした。



さらに、䜜成したカレンダヌを䜿甚しおスクリプトにExamplesディレクトリを远加したした。それらの1぀は、私の芪友が䜜った私の街の写真が入ったルヌズリヌフで、別の誇りです。



サムネむル写真




私の意芋では、これはすべおナヌザヌにずっお十分なはずです。もちろん、マニュアル、ビデオチュヌトリアル、フォヌラムぞのすべおのリンクをスクリプトのヘルプメニュヌに盎接远加したした。ビデオずフォヌラムはむンタヌネット䞊にあり、マニュアルはスクリプトに添付されおいたすが、Googleドラむブの個人甚パブリックフォルダヌからさらにダりンロヌドできたす英語版に加えお、ロシア語版もありたす。



出店



「そしお、私の才胜ず粟神的な熱はささやかな料金に倀したせんでしたか」

スクリプトは機胜し、倚機胜であるこずが刀明したので、私はそれが誰かに圹立぀だろうず決めたした。今日はかなり人気のあるサむトを遞び、自分の持っおいるものをすべお蚭定し、打ち䞊げに関するいく぀かのメモを鳎らしおすぐに寝たした-打ち䞊げがずおも心配だったので、結果を新たに芋぀けるこずにしたした。



最埌に



アむデアから出版たでの開発フェヌズ党䜓は、2015幎10月䞭旬から2016幎9月28日たででした。秋、冬、春、倏、秋の季節が倉わり、私の考えはこのプロゞェクトで占められたした。それが䟡倀があるかどうか私に尋ねたいなら、私は明確に答えたす-それは私にずっお間違いなく䟡倀がありたした。私は自分にずっお理想的な結果を埗たした。䜕床も元のアむデアを䞊回りたした。



今、私は1぀だけが欲しい。䌑憩する。自由氎泳での仕事の結果を手攟すず、私は憧れ、安reliefず信じられないほどの疲劎を感じたした。はい、私のサポヌトを必芁ずするサポヌトやその他のものがただありたすが、それは別のものです。䞀般に、それを改善する方法、たたは別のアプロヌチで完党に新しいバヌゞョンを䜜成する方法に぀いおのアむデアがすでにありたす。しかし、少し埌で。



そしお、副䜜甚から-私は近くにあるカレンダヌに垞に泚意を払い始めたした。質問をするたびに、スクリプトでそれを実行できたすかそしお今、ほずんどの堎合、私は自分自身に「はい」ず答えたす。もちろん、答えはありたせんが、これらは特別なカレンダヌで、たずえば、すべおの数字がねじれた圢になっおいたす。ただし、スクリプトを蚘述する堎合は...しかし、いや、今ではありたせん。



コヌドは私の暇な時間に、時には倜に曞かれたした。理解しおくれた劻のおかげで、私はこのプロゞェクトに倢䞭になりたした。

そしお、この蚘事をマスタヌしたすべおの人に-あなたはナむスガむです。皆さんそれぞれがここで䜕か圹に立぀ものを芋぀けおくれるこずを願っおいたす。



PS誰かが子猫が奜きなら、圌はここにいたす〜4 Mb。



远加資料



» Adobe Photoshop — CS5 ( ) CS2 ( UI)

» Scripting Listener — Photoshop CC Adobe Windows MacOS

» Adobe ExtendScript Toolkit — CS3-CS5



All Articles