Illustrator preferences 1

最終更新日

Comments: 3

アスパラガスが最盛期を迎えています。毎朝数本収穫します。それらは直ちに茹で上げられ、朝の食卓とお弁当のおかずにへんしんします。アスパラガスというのは鮮度が命です。流通に乗るとあの独特の青臭さが強くなり、糖質も分解されるため甘味も低下します。うちでは収穫→調理まで長くて5分です。根本的に味が異なると思って下さい。とっても美味しいのですw
本題です。えー、イラストレータのOMV眺めていると使い方の分からないメソッド(解説されていない、あるいは引数に当てるキー値が公開されていない、そもそも解説する気すらない)ものが山のように存在するのは皆様ご存知の通りです。わたしとしましても、そう言った状況は「全くおもしろくない」ものだと言うのは当然なのですが、教えてくれないよーって泣いているだけではそこらへんの幼児とかわりません。基本的に手元で使える(無料で)リソースと経験をカンを総動員して調査を行うわけです。
今回のもOMVで見るとメソッドはしっかり解説されています。しかし、「Preference Key」は何処探してもありません。ググるセンセに聞いてもつれないお返事ですので、またもやあの手この手を使って…となりました。
先に感想を書いておきますが、これ、連綿と書き足された為にかなりカオスな状態です。全く整理されていませんし、検証も中途半端な状態の様な気がします。
とりあえず設定項目を順番に見て行きますが途中で変なのが出たりするのはご愛嬌と言う事にしておきます。

さて、まずはメッソッドを見ておきましょう。

app.preferences.getBooleanPreference("startup/showSplashScreen");

という感じの使い方をします。こちらは読み出しですが、preferenceオブジェクトには「Real」「Integer」「Boolean」「String」等の種類がありますので読み出し書き出し共にそれぞれに対応するメソッドが用意されています。この例では「startup/showSplashScreen」がキー値となっています。
さて、書き込みはというと

app.preferences.setBooleanPreference("startup/showSplashScreen",false);

引数が2つになり、キー値とセットしたい値を並べて渡します。
このキーはスクリプトからしかアクセスできない物です。一度動かしてみて下さい。
どうでしょう?これは、スタート時にスプラッシュスクリーンの表示をさせない設定です。こんなのが色々とあったりします。

では、パネルを見てみます。まずは最初の項目「一般」です

こんな感じですね。キー値は以下の様になっています。

■一般
cursorKeyLength : Real・・・キー入力
constrain/angle : Real・・・角丸の制限
constrain/cos : Real
constrain/sin : Real
ovalRadius : Real・・・角丸の半径
pen/disableAutoAddDelete : Boolean・・・自動追加/削除しない
usePreciseCursors : Boolean・・・十字カーソルを使う
showToolTips : Boolean・・・ツールヒント
antialias/graphic : Boolean・・・アートワークのアンチエイリアス
(antialias/text)
(antialias/image)
selectSameTintPercentage : Boolean・・・同じ濃度を選択
fileFormatGetFile/ConvertedInFilename : Boolean・・・以前のバージョンファイルを開く時...
doubleClickToIsolate : Boolean・・・ダブルクリックして編集モード
cropMarkStyle : Boolean・・・日本式トンボを使用する
transformPatterns : Boolean・・・パターンも変形する
scaleLineWeight : Boolean・・・線幅と効果も拡大・縮小
includeStrokeInBounds : Boolean・・・プレビュー境界を使用

まあ、素直な感じで変な部分はありません。続くクラウド周りの扱いは全く別扱いになっており、実際に「preferences」の後に追加されています。また、少々仕組みが異なっておりますので今回はパスと言う事にして次に行きます。

こんな画面です。選択範囲の設定では数値入力にはReal型のプレファレンスが当てられています。ではリストを見てみます。

■選択範囲
selectionTolerance : Integer・・・許容値
hitShapeOnPreview : Integer(0 as checked)・・・オブジェクトの選択範囲をパスに制限
snapToPoint : Boolean・・・ポイントにスナップ
snappingTolerance : Integer
selectBehind : Boolean・・・Cmd+クリックで背面のオブジェクトを選択
アンカーポイントとハンドルの表示
selectedAnchorMarkType :Integer(2,9)・・・アンカー
unselectedAnchorMarkType : Integer(1,8)
directionHandleMarkType : Integer(4,10,11)・・・ハンドル
highlightAnchorOnMouseOver : Boolean・・・カーソルを合せた時にアンカーを強調表示
showDirectionHandles : Boolean・・・複数アンカーを選択時にハンドルを表示
liveCorners/hideCornerWidgetBasedOnAngle : Boolean・・・次の角度より大きい時にコーナー...
liveCorners/cornerAngleLimit : Real

ここで注目すべき点は「hitShapeOnPreview」です。この項目はチェックボックスで表現されています。しかし、実際にはInteger型のプレファレンスであり、チェックを入れると「0」にセットされると言う非常にへそ曲がりのものなのです。わたしはここで小一時間ハマリました。
次のテキストにも同様のハマリどころが存在します。

■テキスト
text/sizeIncrement : Real・・・サイズ/行送り
text/kernIncrement : Integer・・・トラッキング
text/riseIncrement : Real・・・ベースラインシフト
言語オプション
showAsianTextOptions : Boolean・・・東アジア言語
AI WorldReadiness Dict Key: Boolean・・・インド言語(Must be radio button)
hitTypeShapeOnPreview : Integer(0 as checked)・・・テキストオブジェクトの選択範囲
text/useEnglishFontNames : Boolean・・・フォント名を英語表記
text/recentFontMenu/showNEntries : Integer・・・最近使用したフォントの表示数
text/fontMenu/showInFace : Boolean・・・フォントプレビュー
text/fontMenu/faceSizeMultiplier : Real(0.75,1,1.25)
text/doFontLocking : Boolean・・・見つからない字形の保護をにする
text/doNonLatinInlineInput : Boolean () ラテン文字以外にインライン入力を利用

「hitTypeShapeOnPreview」がIntegerとなっており、且つ真偽値が逆転しています。そして、東アジア言語オプションとインド言語は相反する関係ですが、同時にチェックするとミドルイーストな雰囲気に。テキストツールも左から右へ文字が流れるヤツがデフォルトになります。ラジオボタンにしなかったのはこう言った理由ですかねえ?掃除にチェックするとパネルでのチェックボックスが消えてパネルから設定を戻せなくなるのでご注意を。
そして、フォントプレビューのサイズの設定ですが、3つの選択肢がありますのでIntegerかなって思いますよね???でもRealです。この「text/fontMenu/faceSizeMultiplier」というのは中央値を1.0と設定し、0.75倍、1.25倍という倍率を直接設定させています。

今回解説するのはここまでですが、ちょっとした利用方法を添えておきます。

var prefs = [["cursorKeyLength",
     "constrain/angle",
     "constrain/cos",
     "constrain/sin",
     "ovalRadius",
     "liveCorners/cornerAngleLimit",
     "text/sizeIncrement",
     "text/riseIncrement",
     "text/fontMenu/faceSizeMultiplier"
     ],[
     "pen/disableAutoAddDelete",
     "usePreciseCursors",
     "showToolTips",
     "antialias/graphic",
     "antialias/text",
     "antialias/image",
     "selectSameTintPercentage",
     "fileFormatGetFile/ConvertedInFilename",
     "doubleClickToIsolate",
     "cropMarkStyle",
     "transformPatterns",
     "scaleLineWeight",
     "includeStrokeInBounds",
     "snapToPoint",
     "selectBehind",
     "highlightAnchorOnMouseOver",
     "showDirectionHandles",
     "liveCorners/hideCornerWidgetBasedOnAngle",
     "showAsianTextOptions",
     "text/useEnglishFontNames",
     "text/recentFontMenu/showNEntries",
     "text/fontMenu/showInFace",
     "text/doFontLocking",
     "text/doNonLatinInlineInput",
     "artNamesAreXMLIDs"
     ],[
     "selectionTolerance",
     "hitShapeOnPreview",
     "hitTypeShapeOnPreview",
     "snappingTolerance",
     "selectedAnchorMarkType",
     "unselectedAnchorMarkType",
     "directionHandleMarkType",
     "text/kernIncrement",
     "rulerType",
     "strokeUnits",
     "text/units",
     "text/asianunits",
     "numbersArePoints"]];
var i,j;
var rslt = [];
for (i=0;i<prefs.length;i++){
     rslt[i] = [];
     for (j=0;j<prefs[i].length;j++){
          switch (i){
               case 0:
                    rslt[i].push(app.preferences.getRealPreference(prefs[i][j]));
                    break;
               case 1:
                    rslt[i].push(app.preferences.getIntegerPreference(prefs[i][j]));
                    break;
               case 2:
                    rslt[i].push(app.preferences.getBooleanPreference(prefs[i][j]));
                    break;
                    }
          }
     }

var f = File.saveDialog("save preferences file","ini");
if (f.open("w")){
     for (i=0;i<rslt.length;i++)
          f.writeln(rslt[i].join());
     f.close();
     }

このスクリプトは初期設定をテキストデータとして保存する為の物です。ここまでのキー値を抜き出してファイル名を付けて保存する事が出来ます。
ちなみに、主要なpreferencesのキー値にはString型がありません。

結果はこんな感じ

0.1417322835,0,1,0,8.5039370079,177,0.7086614173,0.3543307087,1
0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,0,1,1,1,5,1,1,1,0
true,true,true,true,true,true,true,true,true,true,true,true,false

配列をjoinして3行書き込みます。
リストアする場合は各行を読み込んで先程と逆の処理を行ないます。次回お届けの予定です。

ten_a

Graphic Designer, Scripter and Coder. Adobe Community Professional.

シェアする