makeotf で必要なファイル

makeotf で必要になるファイル
OpenType フォントを作成するには、AFDKO の makeotf コマンドを使いますが、フォントの詳細な情報は、テキストファイルで指定する必要があります。

fontinfo
cidfontinfo
フォントのオプションを指定します。
FontMenuNameDBフォント名の情報を指定します。
フォントの name テーブルにセットされる情報となります。
GlyphOrderAndAliasDB欧文用の OpenType/CFF を作成する場合、GID の順番を決めたり、グリフ名を変更したりするために使います。
CMapCID フォントの場合に必要となります。
各文字コードと CID のマッピングを指定します(基本的に Unicode のマッピングを使います)。
Adobe が作成した既存のファイルを使います。
UVS ファイル異体字に対応する場合、異体字の Unicode とグリフのマッピングを指定します。
CID フォントの場合、Adobe が作成した既存のファイルが使えます。
featuresフォントの各テーブルの情報を指定します。
GSUB,GPOS など、色々なテーブルの情報をまとめて設定します。
fontinfo/cidfontinfo
fontinfo または cidfontinfo は、作成するフォントのデフォルトのオプション値を設定するためのファイルです。
makeotf コマンド実行時のオプションや、プロジェクトファイルで、各オプション値が指定された場合、値は上書きされます。

AFDKO のソースファイルを見てみると、python/afdko/makeotf.py の setOptionsFromFontInfo 関数内で処理されています。

とりあえず、以下のような形で設定しますが、項目の詳細については、makeotf のオプションと重複するので、省略します。
デフォルトで問題ない場合は、作成しなくて構いません。

IsBoldStyle                false
IsItalicStyle              false
PreferOS/2TypoMetrics      false
IsOS/2WidthWeigthSlopeOnly false
IsOS/2OBLIQUE              false
UseOldNameID4              false

なお、源ノフォントのソースの cidfontinfo.* では、CID フォントに関する項目も設定されていますが、makeotf コマンドにおいては、使用されません。
源ノフォントのグリフデータは cidfont.ps.* (Type 1 フォント) に格納されていますが、CID フォントの情報は、その中に記録されています。
FontMenuNameDB
FontMenuNameDB は、フォントの名前を定義するためのファイルです。
フォントの name テーブルにセットされます。

英語以外のフォント名を指定しないのであれば、以下のような形で記述します。

[SansAJ-Regular]
f=Source Han Sans AJ
s=Regular
l=Source Han Sans AJ Regular

[name]PostScript 名を指定します。
f=ファミリ名を指定します。
フォント一覧で使われるような名前となります。
s=スタイル名を指定します。
省略すると、現在のオプションに合わせた文字列になります (Regular/Bold/Italic/BoldItalic)
l=ファミリ名とスタイル名を合わせた文字列にします。

古い環境では、フォント名は 31 文字までとなっているので、そういった環境に合わせるのであれば、文字列は 31 文字以内にしてください。
英語以外のフォント名
英語でのフォント名は必須となりますが、日本語など、英語以外の言語で使われるフォント名を指定することもできます。

各項目の '=' の後に、カンマで区切って、「platform ID」「script ID」「language ID」「文字列」の順で、値を指定します。
ID の値は、フォントの name テーブルで使われる数値です。

例えば、"源ノ明朝" (日本語) であれば、以下のような記述になります。

f=3,1,0x411,\6E90\30CE\660E\671D

platform ID = 3 で、Windows。
script ID = 1 で、Unicode。
language ID = 0x411 で、Japanese です。

各 ID の値によって、言語と、文字列の文字コードが決まります。

Windows, Unicode の場合、文字コードは常に UTF-16 となります。
文字列は、指定された文字コードで記述しなければなりません。
'\' の後に 16進数の数値で、文字コードの数値を指定して、記述します。

例の場合、1文字が UTF-16 なので、基本的に4桁の Unicode となります。
\6E90 は U+6E90 (源)、\30CE は U+30CE (ノ) です。

基本的には、Windows, Unicode で、言語ごとに language ID を指定して、UTF-16 で文字列を記述してください。
CMap ファイル
CID フォントを作成する場合は、CID と文字コード (主に Unicode) とのマッピング情報が必要になります。

https://github.com/adobe-type-tools/cmap-resources

こちらに、各 ROS における CMap ファイルが用意されているので、基本的にはこのファイルを使います。

Adobe-Japan1 の場合、ファイルが複数ありますが、使用するのは一つだけです。

JIS2004 の字形でマッピングしたいのであれば UniJIS2004-UTF32-H を、
90JIS の字形でマッピングしたいのであれば UniJIS-UTF32-H を使います。

*-V は縦書き用のマッピングですが、フォントの作成においては、使いません。
UVS ファイル
CMap ファイルには異体字の Unicode は含まれていないので、異体字に対応する場合は、別途定義ファイルが必要になります。

CID フォントの場合は、あらかじめ定義されたファイルがあるので、それを使います。

https://github.com/adobe-type-tools/Adobe-Japan1
- Adobe-Japan1_sequences.txt