Illustratorには合成フォント機能があり、漢字・ひらがな・アルファベット・数字などの種類ごとに別々のフォントを指定し合成した単一のフォントを作れます。
単一のフォントになっているため、それをテキストに割り当てるだけで自動的に文字の種類ごとに意図通りの見た目に変わってくれます。自力で個別に指定するよりずっと確実で、ヒューマンエラーを減らすのに効果的です。
Illustratorの合成フォント機能は、残念ながらスクリプトでの操作に対応していません。せめて情報の取得だけでもできればよかったのですが、XMPメタデータを通じて内訳のフォントファイル名を取得するところまでが限界でした。フォントファイル名からPostScript名を求める部分は、外部のデータベースかFont Bookなど外部アプリの機能が必要です。惜しいですね。
調べたところ、合成フォントファイルを読むことで内訳のPostScript名が得られそうでした。
そこで今回は、ExtendScriptでIllustratorの合成フォントの内訳のPostScript名を取得する例 を紹介します。
合成フォントファイルって何?
合成フォントを作成すると自動でできる設定ファイルです。編集画面で 書き出し… を選ぶと手動でも保存できます。
macOSでは次のフォルダに保存されます。
~/Library/Application Support/Adobe/Adobe Illustrator [バージョン番号]/ja_JP/合成フォント
内容を見てみると、PostScriptのヘッダーのような形式で情報が書いてあります。PostScript名はいくつか情報源の候補がありますが、どれも漢字・かな・全角約物・全角記号・半角欧文・半角数字・あれば特例文字複数繰り返し、という配列形式で並んでいるようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
typ1�pCFMA�d����CID �d��L�RLBL�d��cname�d��|�Gk�%!PS-Adobe-3.0 Resource-Font %ADOResourceSubCategory: RearrangedFont %%DocumentNeededResources: ProcSet CIDInit %%+ Font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%+ Font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%+ Font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%+ Font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%+ Font AcuminPro-Light-UniJIS-UTF16-H %%+ Font AcuminPro-Light-UniJIS-UTF16-H %%+ Font AcuminPro-Light-UniJIS-UTF16-H %%IncludeResource: ProcSet CIDInit %%IncludeResource: font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%IncludeResource: font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%IncludeResource: font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%IncludeResource: font PGothicBBBPr6N-Regular-UniJIS-UTF16-H %%IncludeResource: font AcuminPro-Light-UniJIS-UTF16-H %%IncludeResource: font AcuminPro-Light-UniJIS-UTF16-H %%IncludeResource: font AcuminPro-Light-UniJIS-UTF16-H %%BeginResource: Font ATC-41504e2d30b45072364e2d522b4163756d696e50726f2d4c %%Version: 1 /CIDInit /ProcSet findresource begin %ADOStartRearrangedFont /ATC-41504e2d30b45072364e2d522b4163756d696e50726f2d4c [ /PGothicBBBPr6N-Regular-UniJIS-UTF16-H /PGothicBBBPr6N-Regular-UniJIS-UTF16-H /PGothicBBBPr6N-Regular-UniJIS-UTF16-H /PGothicBBBPr6N-Regular-UniJIS-UTF16-H /AcuminPro-Light-UniJIS-UTF16-H /AcuminPro-Light-UniJIS-UTF16-H /AcuminPro-Light-UniJIS-UTF16-H ] beginrearrangedfont 1 beginusematrix [1.000000 0 0 1.000000 0 0.000000] endusematrix 1 usefont 以下略 |
ちなみにサイズやベースラインはmatrixとして記録してありました。これは漢字部分の設定なので、サイズは100%だしベースラインシフトも0%です。何の変哲もありませんね。今回のスクリプトサンプルでは、matrixは無視して名前の取得だけに集中します。
1 |
1 beginusematrix [1.000000 0 0 1.000000 0 0.000000] endusematrix |
どうやって解析するの?
合成フォントファイルをbinaryとして一行ずつ読み込み、正規表現でPostScript名の部分を取り出すだけです。ファイルを読むのはそれなりに時間がかかるようなので、最初のほうにあるこの記述をターゲットにすることにします。
1 |
%%+ Font PGothicBBBPr6N-Regular-UniJIS-UTF16-H |
コードはこちらです。対象の合成フォントファイルの名前をご自身で書き換えて実行してください。alertでそのPostScript名を表示します。
例えば、画像のようなA P-OTF 中ゴシックBBB Pr6N RとAcumin Pro Lightの合成フォントのとき。
実行すると、alertはこうなります。
これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!
作者に感謝を伝えたい!
Buy me a coffeeは、クレジットカード払いなどでクリエイターにコーヒーをおごれるサービスです。ツール・情報が役に立った! 感謝の気持ちを表現したい! というかた、おごっていただけましたら嬉しいです☕️
このサイトで配布しているスクリプトやその他のファイルを、無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について、私どもは責任を負いません。
スクリプトやファイルの複製・ダウンロードを行った時点で、上記の規定に同意したとみなします。