文字 "o" の作成——矛盾の無いパスの向き

# チュートリアル (その 2)

- フォントの作成
- グリフの作成 (アウトラインのトレース) 法
- 他のグリフの呼び出し方
- 次のグリフに関して (矛盾のないパスの向き)
- 統一のとれたセリフとステムの太さ
- アクセントつきグリフの組み立て方
- 合字の組み立て方
- メトリックの確認法
- カーニング
- 異体関係にあるグリフ
- アンカーマーク
- 条件つき機能
- フォントのチェック法
- フォントの出力方法
- フォントファミリー
- 最後のまとめ
- スクリプト処理のチュートリアル
- 各種の用字系における注意点

## グリフの呼び出し方

フォントビュー (表示画面) は、フォント内のグリフを呼び出すための一つの方法を提供します。単純に、あなたが必要とするグリフがみつかるまで画面をスクロールしてから、そのグリフをダブルクリックして、グリフを見るためのウィンドウを開いてください。

文字をタイプすれば、その文字に割り当てられたグリフに移動します。

しかしながらある種のフォントは巨大で (中国語や日本語・韓国語のフォントは数千から数万字にも及ぶグリフを含みます) フォントビューをスクロールして回るのはグリフを探す方法としては非効率です。`表示(V)`→`移動(G)` を実行するとダイアログが表示され、そこでグリフの名前 (または文字符号) を入力すれば、目的の文字に直接移動することができます。あなたのフォントが Unicode フォントであるなら、グリフを探すときにこのダイアログにブロック名を入力することができます (例: Alef でなく Hebrew と入力できる)。

いちばん単純な呼び出し方法は、前後の文字に移動することです。これらの操作は、`表示(V)`→`次のグリフ(N)` と `表示(V)`→`前のグリフ(P)` でできます。

## 文字“o”の 作成——矛盾の無いパスの向き

さきほどの例では、文字のビットマップは画像の大きさいっぱいに描かれていました。そのため FontForge に画像を取り込んだ時、最初にプログラム内で拡大/縮小を行う必要がありました。しかし一般的には、文字の画像を作成する時には、その周りにどれだけの空白を置くかをあらかじめ想定しているのがふつうです。画像の高さがちょうど全角 (em) に等しい場合、FontForge は正しいサイズに自動的に拡大/縮小します。これ以降の例では、全ての画像は、全角にぴったり一致するだけの空白を文字の周りに含んでいるものとします。

次の例を表示するには、フォントビュー内で“o”を含んでいるマスをダブルクリックして“o_Ambrosia.png”を取り込んでください。

文字“o”の編集の各段階

最初のアウトラインは時計回りに、2 番目を反時計回りに描かれていることに注意してください。PostScript・TrueTypeのどちらにおいてもグリフの輪郭は特定の向きに描かれなくてはならないことに決まっており (ちょっと面倒なことに、これらは互いに逆方向になっています)、FontForge では外側の輪郭線はすべて時計回りに、内側の輪郭線はすべて反時計回りでなくてはなりません。

外側の輪郭と内側の輪郭を逆向きにするのを忘れた場合、この図 の左側のような結果が得られるでしょう。外側を時計回りにするということを忘れた場合は、エラーはもっと軽微なものですが、それでも一般的には、グリフをラスタライズする必要が生じた時にあまり愉快ではない結果が得られるでしょう。

技術的で分かりにくい事柄: ラスタライザの正確なふるまいは様々です。初期の PostScript ラスタライザは「非ゼロ巻き数ルール」を使っていましたが、最近のものは「奇偶ルール」を使います。TrueType は「非ゼロルール」です。上で行った説明は「非ゼロルール」です。「奇偶ルール」の場合、パスがどちら向きであっても問題なく“o”は正確に表示されます (ただしヒント処理のときに微妙な問題をひき起こすでしょう)。

奇偶ルールを用いた塗りつぶしは、現在のピクセルから (任意の方向に) 直線を引き、輪郭線と交差する回数を数えるというものです。この回数が偶数なら、ピクセルは塗りつぶしません。回数が奇数ならピクセルを塗りつぶします。非ゼロ巻き数ルールでも同じ線を引きます。時計回りの輪郭線と交差するたびに交差回数に 1 を加え、反時計回りの線に交差するたびに 1 を引きます。結果が 0 ならば、ピクセルは塗りつぶさず、それ以外の値ならば塗りつぶします。

`エレメント(L)`→`アウトラインの向きを修正(C)` コマンドは、選択された各輪郭を眺め、それが外側になるか内側になるかを判断し、輪郭線が間違って逆向きに描かれている場合にはその向きを逆転させます。

— 前 — 目次 — 次 —