Illustrator CC 2019で、環境設定の「選択された文字の異体字を表示」をJavaScriptで切り替える

はいこんにちは。

Illustrator CC 2019の環境設定には[選択された文字の異体字を表示]なる設定があるのですが、どうもこれがクリックで切り替えられない呪いがかかっているらしい。Windowsでは試してないのでわかりませんが。

Illustrator CC 2019の[異体字を表示]オプションをオフにできないことがあるときの対処方法 | DTP Transit

上の記事ではタブキーでフォーカスして……と書いてあるのだけど、それすら私の環境ではできなかったのです。
というわけで、この呪いを解く呪文を考えました。



結論

先に呪文だけ書いておきます。

var bool = app.preferences.getBooleanPreference("text/enableAlternateGlyph");
app.preferences.setBooleanPreference("text/enableAlternateGlyph", !bool);

実行するたびに設定が切り替えられます。
オフにするだけなら

app.preferences.setBooleanPreference("text/enableAlternateGlyph", false);

でOK。



過程

せっかくなので、作る過程を書いておきます。
呪いだけ解きたい人はこの先は読まなくてもいいです。あと、Mac前提で話をしますがたぶんWindowsでも同様に見つけられると思います。


前提として、Illustratorの環境設定をJavaScriptExtendScript)で制御することは可能。
ただし、そのためのプロパティ(各設定に対応するキー名)はスクリプティングの資料には載っていない。なんでだよ。

Illustrator preferences 1 - 手抜きLab@DTPの現場
preferences keeper (AI preferences 2) - 手抜きLab@DTPの現場

抜き書きしたものをGitHubに共有してくれているのだけど、
この中にそれらしい名前のものは見つからなかった。



しかたがないので自力で探すことにする。

Preference Key for Illustrator | Adobe Community

このスレッドによると、Illustrator SDKをダウンロードすればドキュメントの中に手がかりがあるらしい。
というわけでダウンロード。

https://console.adobe.io/downloads

Illustrator CC 2019 SDKを選んでダウンロード。
dmgファイルなので、マウントしてdocs/references/sdkdocs.tar.gzを展開。sdkdocs/index.htmlを開くとリファレンスが見られます。
(このへんはWindowsだと違うかもしれません)


Suite > AIPreferenceSuite を開くと解説が載っている。

For predefined prefixes and suffixes of application and Adobe plug-in preferences, see AIPreferenceKeys.h.

とのことなので、AIPreferenceKeys.h File Reference(_a_i_preference_keys_8h.html)を開く。

適当に「alternate」とか「glyph」とかで検索し、それっぽい物を発見。

#define kAIPrefTextEnableAltGlyph ((const char*)"text/enableAlternateGlyph")
Making Alternate Glyph Widget on screen visible.

よくわかんないけどこのtext/enableAlternateGlyphあたりがキーだと思う。なんとなくだよ!



環境設定の値を取得するときは(Boolean値の場合)

app.preferences.getBooleanPreference("キー");

でできるようなので、まずはキーがあってるか確かめる。

$.write(app.preferences.getBooleanPreference("text/enableAlternateGlyph"));

trueが出力されたのでたぶんあってる。
設定をオフにしてみる。こちらはsetBooleanPreference()を使う。

app.preferences.setBooleanPreference("text/enableAlternateGlyph", false);

IllustratorGUIで確かめてみたところ、ちゃんとオフになってる!
解呪成功!!



せっかくならオン/オフを切り替えられるようにしたい、ということでちょっと修正。
冒頭に書いたものとおなじです。

var bool = app.preferences.getBooleanPreference("text/enableAlternateGlyph");
app.preferences.setBooleanPreference("text/enableAlternateGlyph", !bool);

これで実行するたびに切り替わるようになりました。



以上です。あ、そういえばどうもお久しぶりです。