エンコーディングメニュー

エンコーディングメニューはフォントビューだけに存在します:

エンコーディング変換(R)
このメニューには標準およびユーザ定義のサブメニューが付属しています。フォントの現在のエンコーディングにはチェックマークがついています。別の項目を選択することによってエンコーディングを変換できます。

エンコーディングは、2 つの僅かに異なる形式が可能です。それは Unicode の符号位置かグリフ名によって定義することができます。符号位置によって定義されたエンコーディングに変換したときは、それに一致する Unicode 値がエンコーディングスロットに割り当てられます。グリフ名によって定義されたエンコーディングに変換したときは、一致する名前をもつグリフを最初に検索し、見つかった場合はそれを使用します。見つからなかった場合は、グリフ名に対応する Unicode 符号位置 (があれば) を検索し、グリフがあればその名前をエンコーディングによって指定されている名前に変更します。

例:“uni0041”という名前のグリフを含むフォントがあったとして、そのエンコーディングでは U+0041→スロット 65 に対応づけられていたとすると、グリフはスロット 65 に移動します。もし、“A”→スロット 65 への対応づけを行っている別のエンコーディングがあったとすると、(“A”の Unicode 値は U+0041 なので) エンコーディング変換後のグリフはスロット 65 に置かれたままですが、その名前は“A”に変更されます。

コンパクト化(C)
エンコーディングからすべての隙間を取り除き、全グリフは一繋がりに押し潰されます。フォントがすでにコンパクト化されている場合、もう一度これを選択するとオリジナルに復元します。
エンコーディングを強制(F)
上記の …変換(R) と同じサブメニューを含みます。このメニューでは、フォント内のグリフが正しい順番に並んでいて、名前の方が間違っていると見なします (これは奇妙に感じますが、よくあることです)。このコマンドは、全てのグリフの名前を、エンコーディングで指定された名前に強制的に変更します。
エンコーディングスロットを追加(A)...
幾つかの追加スロットをフォントの末尾に追加します。それらはエンコーディングに含まれないグリフ (異体字グリフなど) を定義するのに使用できます。
未使用のスロットを削除(U)
フォントの末尾にある任意の未使用スロットを削除します。フォントの途中にあるスロットは削除できません。それを行うとエンコーディングが壊れてしまいます。
グリフの切り離し(D)
選択した全てのエンコーディングスロットを、現在割り当てられているグリフからきりは生します。それらのスロットは未使用のものとマークされます。グリフはフォント内に残ります。文字符号が割り当てられていないだけです (エンコーディング変換を行うと、それらのグリフはまた見えるようになります)。
グリフの切り離し・削除(V)...
上と同様ですが、切り離されたグリフ (のうち、エンコーディングの他の箇所で使用されていない物) のすべてをフォントから削除します。
エンコーディングの名前を追加(N)...
ユーザにエンコーディング名を問い合わせ、それを iconv() データベースから検索します。それがあれば、そのエンコーディングをメニューに追加します。
エンコーディングを読み込み(L)...
ユーザにファイル名を問い合わせ、ユーザ定義のエンコーディングをそのファイルから読み込もうと試みます。(読み込むことができるのは、小さなエンコーディング―― 1 バイトエンコーディングだけです)
フォントから作成(K)...
フォントの現在のエンコーディングに (既存の物と重ならない) 名前をつけ、エンコーディングメニューに追加することができます。
エンコーディングを削除(C)...
ユーザ定義のエンコーディングを一つ削除します。
グループ毎の表示(G)...
フォントビューに表示されたフォントを、ユーザが定義したグループ (次のコマンドで定義できます) に制限します。
グループを定義(E)...
相互に何らかの繋がりをもつ (と見ることができる) グリフのグループを定義することができます。
フォントの名前リストを保存(S)...
現在のフォント内のグリフ名を Unicode に対応づける名前リストファイルを作成します。
名前リストを読み込み(O)...
名前リストファイルを FontForge に読み込み、将来 FontForge を起動した時に読み込めるようにコピーします。
グリフ名を変更(Y)...
このコマンドでは名前リストを指定できます。現在のフォント内のすべてのグリフは名前リストの様式に合うように改名されます。
名前を指定してグリフを作成(A)...
このコマンドでは、グリフ名のリストを含むファイルを指定することができます。FontForge は文字コードが割り当てられていないグリフの列を指定した名前で作成します。これは例えば、あなたが作るフォントが必ず小型大文字を含んでいて、それらを常に“A.small”,“B.small”,“C.small”のように命名したい時に役立つはずですし、常に "longs_longs_t", "f_longs", "f_j" 等の名前を使いたい場合にもたぶん役立つでしょう。

エンコーディングに関する一般的な注意

すべてのフォントフォーマットが全てのエンコーディングをサポートするわけではないことにご注意ください。SVG フォントは常に Unicode エンコーディングで出力され、TreuType では Unicode か CJK エンコーディングのどれかを選ぶことができ、Type1 フォントは 1 バイトエンコーディングしかサポートしていないなどです。

CID キー指定フォントではエンコーディングを変更することはできません (本質的にエンコーディングが存在しないため) が、CID→補遺番号を変更 コマンドでレジストリ/順序づけの情報を表示し、補遺番号を変更することができます。


組み込みのエンコーディング

FontForge は、デフォルトで以下のエンコーディングについて知っています。

エンコーディングに関する情報源:

Unicode のグリフすべての画像へのインデックス


ユーザ定義のエンコーディング

FontForge が知っているエンコーディング一覧に新しいエンコーディングを追加することもできます。ユーザ定義のエンコーディング群を操作するためのボタンは 3 つ用意されています。標準のエンコーディングと同様に、これらは文字セットと符号化方式の両方を指定します。エンコーディングは最大 256 項目を含むことができますが、文字セットはそれより大きくても構いません (1024 文字まで)。これは、追加の文字を含むフォントを定義できるということです。PostScript フォントは実行時にエンコーディングを切り替えることができるので、これが役に立つ場合があります。

エンコーディングを読み込む コマンドを実行すると、エンコーディングをファイルから読み込むことができます。現在のところ、ファイルは Unicode Consortium が ISO 8859 の各エンコーディングを Unicode に対応づけるのに使っているフォーマットか、PostScript のエンコーディング配列でなければなりません。最初の形式は以下のような形です:

0x20	0x0020	#	SPACE
  0x21	0x0021	#	EXCLAMATION MARK
  ...
  

PostScript ファイルは以下のような形です:

/TeXBase1Encoding [
   % 00
   /.notdef /dotaccent /fi /fl
   /fraction /hungarianumlaut /Lslash /lslash
   ...
  ] def
  

PostScript ファイルには複数のエンコーディングを含めることができます。エンコーディングの読み込み処理は賢くありません。このような形で指定されたエンコーディングしか読み込めないので、PostScript で配列を指定する他の無数の方法を試みないでください。

フォントにカスタムエンコーディングがある場合、フォントから作成メニューが選択できるようになります。これを使って、現在のフォントに対して定義したエンコーディングに名前をつけることができます。

エンコーディングを削除メニューを選択すると、すべてのカスタムエンコーディングを列挙するリストが表示され、それらを削除することができます。

ここに PostScript エンコーディングファイルの例があります。それには以下のエンコーディングが含まれています:

名前リスト

Adobe は、多数の Unicode 文字に人が読んで理解可能なグリフ名をつけた命名規約を定めています。その中には訳の分からない名前もいくつか含まれています。

名前リストは Unicode からグリフ名への対応づけにすぎません。グリフ名は英数字 (および特殊文字‘.’と‘_’) からなり、数字で始まらない長さ 31 文字以内の文字列でなければなりません。

FontForge はいくつかの標準名前リストを提供しています:

あなた自身の名前リストを定義することができます。名前リストは拡張子“.nam” をつける必要があります。その中には以下のような行の並びが含まれます:

0x0020 space
0x0021 exclam
0x0022 dblquote

多くの場合、既存の名前リストに 2, 3 の追加を行いたいだけでしょう。以下のように書くことができます:

Based: Adobe Glyph List
0x0021 exclamation

この記述は、この名前リストが Adobe グリフリストと同じで、U+0021 が“exclam”ではなく“exclamation”という名前になっているだけが違います。

リストに明記して名前をつけていないグリフはすべて“uniXXXX”または“uXXXXX”という名前になります (ここで XXXX は 16 進表記の Unicode 値を表します)。接頭辞“uni”は BMP 内のグリフに、接頭辞“u”は BMP に含まれないグリフにつけられます。

いま、グリフ名は英数文字 (および他の少数の文字) のみを含むべきであると述べました。しかし実際にはそれは、グリフ名がフォント内に出力される場合のみ当てはまる事実です。独自の名前リストを作成した場合、Unicode の (ほとんど) 全範囲を使用して、どのようなグリフ名でも好きにつけることができます――ただし、フォントを出力する前に全てのグリフ名を Adobe の名前に変換することが前提です。非 ASCII の文字名を使用した場合、ファイルを UTF-8 で符合化する必要があります。

通常は FontForge はグリフ名を ASCII の範囲に制限してしますが、ファイルF環境設定(E)...一般UnicodeGlyphNamesを選択し、この欄をセットすれば Unicode を使用することができます。

私はアクセント付き文字を使用するフランス語の名前リストを作成しました。これは FontForge ではうまく動作していますし、ほとんどのラスタライザはこのような名前を使用して出力されたフォントを解析することができるでしょう――しかしこれは非標準ですので問題を起こすことでしょう。フォントを出力する前に改名するに如くはありません。

ですから、Adobe が決めた名前以外で作業した方が楽なのでしたら、自前の名前ファイルを作成することができます。ファイルを作成したら エンコーディング(N)名前リストを読み込み(O)... で、あなたが今後作成するすべてのフォントがこの名前リストを使用するように命令することができます。フォントの名前リストを変更するには、以下の 2 つの方法があります:

フォントを開いた時に全グリフを強制的に改名したい場合もあるでしょう。現在のファイルオープンダイアログではそう指定することができます。同様に、フォントの出力時にそのフォントを Adobe グリフリストの標準名を使用するように強制したほうがいいでしょう。

その他のメニュー

目次