AFDKO入門《CIDキー方式のOpenTypeフォントの作り方》 前篇:AFDKOのインストールとmergeFonts
花園明朝OTプロジェクトでは、フォントの生成に使っている各種スクリプト・設定ファイル類を公開してはいるものの、AFDKO(Adobe Font Development Kit for OpenType)をどのように利用しているかといった詳しい生成方法については、(面倒だったので)あまり文書化していませんでした。
先日、花園明朝OTのページを見た方から「AFDKOの使い方の例を教えてほしい」とのメールをいただいたので、これを機に簡単な入門記事を書いてみたいと思います。テーマは、《CIDキー方式の OpenType フォントの作り方》。ごく単純なCIDキー方式 OpenType フォントの作成方法を、サンプルファイルとともに順を追って解説していきます。
ただし、わたし自身AFDKOやフォントフォーマットについて熟知しているわけではないので、以下の内容には怪しい記述があるかもしれません。誤りなど発見された場合には、ご指摘いただけると助かります。
この入門記事で扱う内容
この記事では、AFDKOに含まれる mergeFonts, makeotf を利用して、通常の名前キー方式の OpenType フォント(name-keyed OpenType font)からCIDキー方式の OpenType フォント(CID-keyed OpenType font)を生成する方法を簡単に解説します。あくまでも入門なので、ヒントや feature などについては扱いません*1。
なお、この記事ではコマンドプロンプトの基本的な操作*2を身に着けていることを前提としています。Windows 環境を想定して手順の解説をしていますが、Mac の場合でも(コマンドプロンプトがターミナルに変わるぐらいで)手順は同一です。
AFDKOのインストール
このページに書かれている利用許諾契約をよく読み、内容に同意してページ下部のリンクからAFDKOの zip ファイルをダウンロードします。2011年12月6日現在、Windows 版・Mac 版ともに最新バージョンは2.5です。
ダウンロードしたら zip を展開し、中のFDKフォルダを好きな場所に移動します。このとき、パスにスペースやマルチバイト文字が入っているとうまく動作しません。C:\FDK などにしておけば無難です。
最後に、Windows のコマンドプロンプトを開き、FDK\FinishInstallWindows.cmd を実行すればインストール完了です。
なお、以上の内容は FDK\Read_Me_First.html に書かれています。また、AFDKOの各種ツールに関するドキュメントは FDK\Technical Documentation\ 内にありますので、詳細についてはそちらをお読みください*3。
大まかな手順
今回は例として、ウェイトが Light のフォントからひらがなのグリフを、Medium のフォントからカタカナのグリフを抽出し、「ひらがなが Light でカタカナが Medium な、CIDキー方式の OpenType 仮名フォント」を作成します。
手順としては、まず mergeFonts を用いて一つのCIDフォントにまとめます。次に makeotf で各種テーブルを設定し、完全なCIDキー方式 OpenType フォントに仕上げて完成です。
mergeFonts
mergeFonts のチュートリアルは FDK\Technical Documentation\5900.RFMFAH_Tutorial.pdf にありますが、これは英語で書かれています。日・英・中の3言語で書かれたバージョンが以下で配布されていますので、一度これに目を通しておくといいでしょう。
この記事では簡単なCIDフォントの生成に焦点を絞っていますので、それ以外の内容についてはチュートリアルをお読みください。
素材フォントの用意
素材となるグリフ抽出元のフォント*4は、ここではCFFベース(PostScript ベース)の OpenType 形式で用意しておきます。以下にファイルが置いてありますので、ダウンロードして利用してください*5。
この記事の例では2つの素材フォントからグリフを抽出しますが、素材フォントの数はいくつあっても(1つだけでも)構いません。
マッピングファイルの用意
mergeFonts でCIDフォントを生成するためには、「素材フォントの何という名前のグリフを、どのCIDに割り当てるか」という情報が必要です。これを指定するのがマッピングファイルです。mplus-1p-light.otf からひらがなを抽出するために hiragana.map を、mplus-1p-medium.otf からカタカナを抽出するために katakana.map を、それぞれ用意します。
マッピングファイルがどのような書式になっているのか、hiragana.map を例に見てみましょう。
mergeFonts Kana 000000 .notdef 000842 uni3041 000843 uni3042 000844 uni3043 000845 uni3044 000846 uni3045 000847 uni3046 (以下略)
000843 uni3042
の列を見てみます。ここでは、000843
がCIDの番号を、uni3042
が素材フォントでのグリフ名を表しています。つまり、uni3042 という名前のグリフ(mplus-1p-light.otf では「あ」のグリフにあたります)を CID+843 に割り当てる、という意味です。グリフ名とは下の画像で示した位置に表示されている文字列のことです(FontForge の場合)。
どのグリフをどのCIDに割り当てるかは、以下の Adobe TechNote を参考にして決めれば良いでしょう。
なお、最初の行は mergeFonts Kana
となっています。mergeFonts
の部分は固定で、必ずこのように書いておきます。Kana
の部分ではヒント辞書名(サブフォント名)を指定します((この入門記事ではヒントについて扱いませんので、hiragana.map, katakana.map のいずれも適当に Kana
と指定しておきます。))。
cidfontinfo の用意
最後に、cidfontinfo ファイルを用意します。このファイルでは、フォントの情報を指定します。
FontName (AFDKOSample-Light) FullName (AFDKO Sample Light) FamilyName (AFDKO Sample) Weight (Light) version (1.000) Registry (Adobe) Ordering (Japan1) Supplement 0 AdobeCopyright (Copyright 2002-2011 M+ FONTS PROJECT)
FontName
はいわゆる PostScript 名を指定します。FullName
は FamilyName
と Weight
をくっつけたもので良いでしょう。version
(Version
ではありません)はバージョンです。次の3項目 Registry
, Ordering
, Supplement
でROSを指定します。例えばこの記事で作成するフォントは Adobe-Japan1-0 の範囲に収まるので、それぞれ Adobe
, Japan1
, 0
を指定します。最後の AdobeCopyright
には、著作権情報を書いておきます。
以上の9項目が必須とされています。cidfontinfo のより詳しい内容に関しては、mergeFonts -h で表示される mergeFonts のヘルプや、以下のページを参照してください。
mergeFonts の実行
素材フォント・マッピングファイル・cidfontinfo の用意ができたら、いよいよ mergeFonts の出番です。CIDフォントを生成する場合、基本的なコマンドの書式は次のようになります。
mergeFonts -cid [cidfontinfo] [出力フォント] ([マッピングファイル] [素材フォント])+
マッピングファイルと素材フォントの組はいくつでも指定できます。
それでは試してみましょう。まず、わかりやすいように素材フォント(mplus-1p-light.otf, mplus-1p-medium.otf)・マッピングファイル(hiragana.map, katakana.map)・cidfontinfo を一つのディレクトリにまとめておき、コマンドプロンプトでそのディレクトリに移動します。続けて以下のコマンドを実行すると、2つの素材フォントからグリフが抽出されてCIDフォントが生成されます。
mergeFonts -cid cidfontinfo merged.raw hiragana.map mplus-1p-light.otf katakana.map mplus-1p-medium.otf
hiragana.map を参照して mplus-1p-light.otf からひらがなグリフを、katakana.map を参照して mplus-1p-medium.otf からカタカナグリフを抽出し、cidfontinfo に書かれたフォント情報を付加して merged.raw というCIDフォントを生成せよ、という意味になります。
なお、以下のようにしてCIDキー形式のフォントをソースフォントにすることができます。この場合、素材フォントから抽出したグリフがソースフォントに追加され*6、CIDフォントが生成されます。
mergeFonts -cid [cidfontinfo] [出力フォント] [ソースフォント] ([マッピングファイル] [素材フォント])*
mergeFonts でCIDフォントを生成する際の注意点として、CID+0 については必ずグリフを割り当てなければなりません。この例では hiragana.map の2行目に 00000 .notdef
とあるとおり、mplus-1p-light.otf の .notdef という名前のグリフを割り当てています。この割り当てを忘れた場合、以下のようなエラーが発生してCIDフォントの生成が失敗します。
mergeFonts.exe: (cfw) missing CID 0 glyph mergeFonts.exe: fatal error