チュートリアル (その 4)

アクセントつきグリフの組み立て方

ラテン文字、ギリシャ文字およびキリル文字はすべて大量の補助的なアクセントつきグリフを含んでいます。 FontForge は、基底グリフ (base glyphs) からアクセントつきグリフを組み立てる方法をいくつか提供しています。

いちばん分かりやすいメカニズムは単純なコピー&ペーストです: グリフ“A”をコピーして“Ôに貼り付け、次にチルダアクセントをコピーして“Ôに追加貼り付けします。(追加貼り付けが貼り付けとは微妙に異なることに注意してください)。 貼り付け(P) コマンドは貼り付けの前に文字を消去しますが、追加貼り付け コマンドは、その文字の元の内容にクリップボードの中身を付け加えます)。 それから“Ôを開いてアクセントの位置を調整し、A の真上に中心が来るようにします。

このメカニズムは、文字“A”の形を変更した場合には、特に非効率になります。その文字から組み立てられたすべてのアクセントつきグリフを構築し直さなければなりません。FontForge にはグリフへの参照という概念があります。ですから、A への参照をコピーし、貼りつけ、チルダへの参照をコピーして追加貼りつけし、それから A の上のアクセントの位置を再調整するという手順が使えます。

その後で A の形を変更しても、“Ôに含まれる A の形や“Ôの文字幅を、勝手に更新してくれます。

しかし FontForge は“Ôが“A”とチルダアクセントから造られていることを知っているので、これらの参照を“Ôに自動配置し、アクセントを“A”の真上に揃えることにより、アクセントつきグリフを簡単に作成することができます (Unicode 規格は、Unicode に含まれる各アクセントつきグリフの構成要素を列挙したデータベースを提供しています)。

例えば、ファイル tutorial/Ambrosia.sfd を開き、符号位置が 0xc0〜0xff の範囲にあるすべてのグリフを選択して エレメント(L)組み立て(U)アクセントつきグリフを構築(B) を押せば、すべてのアクセントつき文字がお任せで現れます (この範囲にはアクセントつき文字でない物が数文字ありますが、それらは空白のままになります)。

FontForge はアクセントの位置を決める経験的方法 (ほとんどのアクセントはグリフの最も高い位置を中心として、その上に配置する) を用いますが、時々これは悪い結果を招きます (もし“u”の 2 つのステムの片方がもう片方よりもわずかに高ければ、アクセントはグリフの中央の上に来ないで高いステムの上に来てしまいます) ので、アクセントつきグリフを作成した後は、目で確かめる心構えが必要です。

合字の作成

Unicode には多数の合字グリフが含まれています (ラテン文字では Æ, OE, fi などです。アラビア文字では数百にも及びます)。これに関しても、Unicode は各標準の合字の構成要素を列挙するデータベースを提供しています。

FontForge があなたのために美しい合字を作ってくれることは不可能ですが、エレメント(L)組み立て(U)複合グリフを構築(C) を用いれば、その合字のすべての構成要素を 1 個のグリフ上に配置することが可能です。 これで、合字のデザインが (少なくともラテン文字では) 少しは楽になります。
合字組み立てのための手順

参照による ffi 合字

ffi の参照を解除したところ

ffi の最初の f を下げたところ

ffi の重複除去をしたところ

ffi の合字キャレットを調整したところ

グリフの名前を決め、合字であることを指定するために エレメント(L)グリフ情報(I)... ダイアログを使います。次に エレメント(L)組み立て(U)複合グリフを構築(C) で合字の構成要素への参照を挿入します。 編集(E)参照を解除(N) コマンドを使って、参照を輪郭線に変換します。 各要素がより揃って美しく見えるように調整します。ここでは最初の f のステムを下に動かしています。 エレメント(L)重複処理(V)→重なり合う図形を結合(R) コマンドを使って、グリフを整理します。 最後に合字キャレットの線を、原点からもっと適切な構成要素間の場所に動かします。

一部のワードプロセッサは、合字の内部 (の合字の各構成要素の間の位置) にキャレットを置いて編集することができます。 これは、ワードプロセッサの利用者が、合字を取り扱っていることを意識する必要が無く、そこに構成要素が置かれているときとほとんど同じふるまいを目にするということです。 しかし、ワードプロセッサーがこの機能を可能にするためには、フォントデザイナーが適切なキャレット位置として設定した地点についていくつかの情報を得る必要があります。 FontForge は、あるグリフが合字であることが分かっている場合、合字要素の間に配置するのに十分な個数のキャレット位置境界線をその文字に挿入します。 FontForge はこれらを原点に置きます。もしあなたがこれらを原点に置いたままにしている場合、FontForge はそれらを無視します。 しかし、合字を作成し終えたら、ポインタツールで原点に位置する線を移動し、ボタンを押してキャレット行の一つを正しい位置に移動したほうがよいでしょう。 (TrueType と OpenType のみがこれをサポートしています)。

警告: OpenType エンジンは、現在の用字系において適正であると判断した時にかぎり、機能を適用します (ラテン文字では、Uniscribe は‘liga’機能のみを適用します)。 Microsoft は、Uniscribe においてどのスクリプトにどの機能を適用するかを文書化しようとしていますが、Word および Office はデフォルトと全く異なる振舞いをするため、これはほとんど参考になりません。さらに悪いことに、いくつかのアプリケーションはおそらく一切の機能を適用しないことを選んでいます (Word はラテン文字の合字処理を行いません)。 Microsoft は、Uniscribe においてどのスクリプトにどの機能を適用するかを文書化しようとしていますが、Word および Office はデフォルトと全く異なる振舞いをするため、これはほとんど参考になりません。 インド系の用字系では非常に多くの合字が必要とされますが、Unicode はそれらに対してエンコーディングを割り当てていません。 Unicode に含まれない合字が必要な場合、以下のようにすれば構築することができます。 まず エンコードされていないグリフをフォントに追加 し、グリフに名前をつけます (または Unicode フォントならば、私用領域のコードポイントを使用します)。 名前は重要です。もしあなたが正確に名前を指定したならば、FontForge はそれが合字であり、どんな要素から構成されているかを知ることができるからです。 グリフ“longs”,“longs”と“l”からなる合字を作成したい場合には、“longs_longs_l”と名前をつけます。Unicode 0D15, 0D4D と 0D15 からなる合字を組み立てる場合には“uni0D15_uni0D4D_uni0D15”と命名します。

合字に名前をつけ、その構成要素を (「複合文字の構築」を使って) 挿入したならば、おそらくグリフを開きたくなるでしょう。 参照を解除 して、それらが美しい形になるように編集してください。

Akhand 合字タイプに対する文字情報最後に、FontForge がこのグリフを合字として印づけたかどうか (および、合字ならば、正しい種類の合字かどうか) を確認しましょう。 エレメント(L)グリフ情報(I)...[合字] サブダイアログを呼び出してください。 以下のような行が表示されるでしょう:
    liga  m longs longs l
または
    liga  m uni0D15 uni0D4D uni0D15
最初のケースでは、([新規(N)...] ボタンを押して以下のような行を追加したほうがいいかもしれません:
    liga  m longs_longs l
(ここでは合字 longs_longs が既に作成済みだと仮定しています)。 2 番目のケースでは、行を選択して [編集(E)...] ボタンを押して合字のタイプを‘liga’から‘akhn’に変更する必要があるでしょう (私自身は、この違いを理解するほどのインド系用字系に関する十分な知識がありません)。結果はこうなります:
    akhn  m uni0D15 uni0D4D uni0D15

目次