マルチプルマスターフォントの作成・変更ができます。
マルチプルマスターフォントとは、(PostScript Type 1) フォントの一種で、1 個のフォント記述の中に、共通のフォントファミリーに属する数個の極端なスタイルのフォントと、中間的なデザインを生成するためにそれらを補間するコードを含んだものです。Apple は同様の概念を TrueType に応用しています——管見に入る限りではどれも「Apple 変形可能フォント」と呼んでいますが——ここでは両方ともマルチプルマスターと呼ぶことにします。
マルチプルマスターフォントは、変種を発生させることができる座標軸をいくつか持っています。例えば、あるフォントは Weight 軸 (Thin から Black までのすべて) の変種に加え、Width 軸 (Condensed から Extended) と、Optical Size 軸 (6pt から 72pt) を備えています。Type1 の仕様では、各軸ごとの極値のすべての組み合わせが存在する必要があります。上の例ではこうなるでしょう:
フォントデザイナーは中間デザインを追加することもできます。
これらの両極のデザインから、PostScript のラスタライザは欲しいスタイル (Normal Normal 12pt のような) を補間することができます。
Apple はわずかに異なるフォーマットを使っており、極限のデザインだけでなく、デフォルトのデザインも指定する必要があります (ですから、PostScript では軸ごとに 2 種類のデザインを必要とするのに対し、Apple は 3 種類のデザインを必要とします)。上の例では 27 種類のデザインとなるでしょう:
Apple もまた、中間デザインを認めていますが、FontForge は現在これをサポートしていません。
フォントデザイナーは、最初にいくつの軸が必要か決定する必要があります。PostScript では、Type1 フォントに最大 4 個の軸を使うことができます。FontForge は Apple のフォントに対しても 4 軸までしかサポートしていません。
それから、各軸に関する情報を提供します。特に、
次に、デザインの個数を選びます。Type 1 フォントでは最大 16 個で、最低 2^軸の個数 となります。そのため、3 軸のフォントでは最低 8 個のデザインが、各極限の値につき 1 個必要となります。
Type1 フォントを作る場合、2 個の PostScript 関数を書く必要があります。
最後に、デザインの重みづけのデフォルトベクトルを (各デザインごとに 1 つずつ) 提供しなければなりません。これは、マルチプルマスターフォントに何も追加情報を与えずに使用したときに用いられる重みづけです。ここにはフォントの通常版を記述するべきです。「通常」の定義として、[400 500 12] を取ったならば、このベクトルは [.273 .027 .273 .027 .182 .018 .182 .018] のようになるでしょう。
Apple 変形可能フォントは PostScript 関数を必要としませんし、上記のデフォルト重みづけベクトルも不要です。その代わり、デザイン空間に置ける特定の座標値を名前に対応づける、名前つきスタイルの組が必要になります (名前は複数の言語で指定することができます)。
各デザインにおける対応するグリフには、ある程度の類似性が必要です:
このダイアログはマルチプルマスターフォントの作成と修正に用いられます。このダイアログは、順番に処理しなければならないいくつかのサブダイアログを含み、上で説明したプロセスに非常に密接に対応しています。まず最初に Adobe のフォントに対する手順を示し、次に Apple のフォントを説明します。
最初の画面では、作成したい変形可能フォントのタイプ (Adobe マルチプルマスターまたは Apple)、フォントに含まれる軸の数、マスターデザインの個数およびファミリー名 (これは、新しいフォントが必要なときにそれを作成するのに用いられます) を選択することができます。
2 番目の画面では、各軸の制御を行うことができます。Adobe (と Apple) によって定義された軸のタイプは 2, 3 種類しかありませんが、独自の軸を新しく定義することもできます。ここでは使用不可能になっている欄があることにご注意ください。それらは Apple のフォントでしか使用できません。
次に、各マスターデザインに属するフォントを割り当てなければなりません。(この例のように) FontForge に新しいフォントを作成させることもできますし、既に読み込み済みのフォントを使用したり、ディスク上のフォントを使用するためにディレクトリを検索することもできます (同じフォントを 2 回使わないようにしてください)。
このデザインの軸上での座標値を指定することもできます。もしデザインの個数を最少に抑えるならば、それらはすべて極値でとなり、座標値は 0 か 1 のどちらかになります。中間デザインの作業をするのでなければ、FontForge がこのフィールドを初期化するのに任せるのが最善です。
この画面に表示されているのは、デザインベクトルを重みベクトルに対応づけるのに必要な PostScript 関数です (言い替えれば、各デザイン軸での位置を指定したとき、これらは各マスターデザインからの混ぜ合わせの比率を生成します)。ほとんどの有益な場合では、FontForge はこれらの関数を自動生成しますが、中間デザインを使用したときには、FontForge で扱うには非常に複雑になるので、関数を手動で入力しなければなりません。
最後の画面が表示しているのは、デフォルトの重みづけ (これは直接入力することもできますし、デザイン軸に沿った座標値でも指定できます) および、プライベート辞書の項目 ForceBoldThreshold です。
ダイアログの見かけは非常によく似ていますが、2,3 の相違点があります。ダイアログの「軸」ペインで、その軸のデフォルト値と変換可能な名前を指定しなければなりません。
提言
Adobe の Type1 フォントは極限にあるデザインを全部指定する必要があるので、3 軸のマルチプルマスターフォントでは、8 種類のデザインが必要です。これは、Adobe が補間のみを使うことを想定しているからのようです。一方、多くの場合ではそれらのデザインのいくつを作成するのに補外を使用することができます。3 軸の場合、必要なデザインは 4 種類だけになります (基本デザインのために 1 個、および各軸のバリエーションを表すのに 1 個ずつ)。
私は、2 軸の場合のみを詳しく説明するつもりです (視覚化が簡単なので): Weight 軸が 50〜900, Width 軸が 100〜1000 の範囲で変動するフォントがあるとします。そして、Weight=50,Width=100, Weight=50,Width=1000 と Weight=900,Width=100 のフォントが作成済みだとします。それらをデザイン 0, 1, 2 と呼びましょう。ここで作成したいのは Weight = 900, Width=1000 のデザイン 3 です。
最初に中間デザインを作成する必要があります (これは後で削除します)。これを“I”と呼ぶことにします。FontForge の エレメント(L)
→フォントの補間(L)...
コマンドを使って、デザイン 1 から 2 の間の 50% に位置するデザインを生成してください (これは Weight=475, Width=550 となります)。それからデザイン 0 から デザイン“I”の延長上 200% に位置するもう一つのデザインを作成します。これが必要な極限のデザインとなります。
Adobe の Type2 デザインはこのアプローチを可能にする準備があったように思いますが、Type2 の仕様からマルチプルマスター関連の演算子が削除されてしまったので、この疑問の答えは不明です。