さて、今回は前回の続きで、プログラムで合字を制御するところを見ていくことにしよう。Wordでは、合字の制御が細かくできなかった。今回は、プログラムを作って、細かくOpenTypeの合字を制御してみる。プログラムは、一応、筆者のGitHubリポジトリに置いた。コードを直接書き直して動かすものなので、プログラム自体は、さほど面白いものでもない。
作成したのは、.NETのWPF(Windows Presentation Foundation)プログラムで、Visual Studio 2022で作成を行った。もともとのプログラムの意図は、Windows TerminalのCascadiaフォントのプログラマ向け合字(Coding Ligature)、について調べるものだった。
プログラムとしては、4つの同じ文字列に対して、4つの合字特性
liga 標準合字
clig コンテキスト合字
dlig 任意の合字
hlig 歴史的合字
と“calt”(Contextual Alternates。コンテキスト代替)を指定して、表示させるもの。比較用に別のフォントで同じ特性指定を行うようにしてある(写真01)。
Cascadia Codeフォントでは、プログラマ向けに「!=」を「≠」などとして表示する機能がある。等倍フォントなので、見た目は、1文字(グリフ)だが、2文字分の範囲に表示される。
Cascadia Codeフォントプロジェクトのリポジトリにある解説(Cascadia CodeプロジェクトリポジトリのREADME.md)には、この機能は、“Cording Ligature”とあるが、OpenType上の特性(Feature)は、“calt”だった。
前掲の画面写真では、5番目のみCording Ligatureになっている。後半の“x =”の後ろでも、“www”の上辺がカーブしている、あるいは“***”の中央のアステリスクが少し上に配置されている。上は、純粋なCascadia Codeフォントで、下は、そのバリエーションの1つでNerdフォントのシンボルを含むもの。GitHubやGimp、Linuxなどの「キャラ」文字グリフが含まれている。
これを改良して、合字の表示を制御させてみたのが、(写真02)である。Cascadia Codeを表示したものとの違いは、フォントサイズや例示する文字列など。簡単なチェック用に作ったため、Visual Studioを動かしたまま、コードを書き換えて表示を変えている。
Palatino Linotypeフォントでは、標準合字(liga)のときのみ合字表示でff、Fl、ffiの幅が狭くなる。これにより、末尾のパイプ文字の位置が微妙にずれる。Cascadia Codeフォントは、モノスペース(等幅)だったので、合字の有無に関わりなく、末尾の位置はずれないが、このフォントは、プロポーショナル(可変幅)なので、合字があると位置がずれる。位置がずれるのは標準合字のときのみで、他の合字やcaltのときには、末尾の位置は同じになる。
これに対して、筆記体系のSegoe Scriptでも標準合字が有効になっている(写真03)。さらによく見ると、caltでも微妙に末尾の位置が違う。よく見ると、Coffeeの最後のeやFloat最後のtのストロークの終わりの形が異なっている。
プログラムからは、合字などのOpenType特性を細かく制御できる。筆記体文字では、caltを有効にすると、スペース前の単語の切れ目の感じが良く出ている感じがする。印象が異なると感じる人もいる。微妙な違いなので、全然、気にならないという人もいるだろう。同じものを見たとしても、立場や着目点が異なれば、違って見えてくるものだ。
今回のタイトルネタは前回と同じく「合成脳のはんらん」(エスエフ世界の名作シリーズ 岩崎書店、1967年)である。筆者は、かなり前に原作のペーパーバックを入手した。邦訳で表紙にもあった、アメーバ状で一つ目にギザギザの歯がついた「合成神経細胞群塊」こと「ゴセシケ」が原作でどう書かれているのかが、ずっと気になっていたからだ。
なんと驚くことには、翻訳の「合成神経細胞群塊」は、“Cluster of synthetic neurons”であり、作られた生物は「ゴセシケ」ではなく「Frog」と呼ばれていた。よく見るとペーパーバック版の表紙(写真04)にカエルの絵が描いてある。