Dr. Ken Lunde | Senior Computer Scientist | Adobe Systems Incorporated
このワークショップのサンプルデータについて
サンプルデータはアドビの「小塚ゴシック Pr6N M」フォントに基づく グリフ数は234字:ラテン文字、約物、仮名、漢字 自分のフォントに基づくサンプルデータが作成できるスクリプトがある PREP/AJ10ディレクトリにAdobe-Japan1-x「cidfont.ps」ファイルを入れる tx -t1 <font>.otf cidfont.ps PREP/AJ10ディレクトリにある「build.sh」スクリプトを実行する {dingbats,generic,hiragana,kanji,katakana,proportional}.pfaの/FontNameを編集する 上記の*.pfaをCID-AJ10/1_2_CID-N-NOMAPとCID-AJ10/1_3_CID-N-MAPにコピー font.pfaをCID-AJ10/1_1_CID-1-NAME2CIDとCID-AJ10/1_4_CID-1-CID2CIDとPREP/AI0にコピー CID-AJ10/1_4_CID-1-CID2CIDディレクトリにbuild1.shスクリプトを実行する PREP/AI0ディレクトリにある「build.sh」スクリプトを実行する {dingbats,generic,hiragana,kanji,katakana,proportional}-*.pfaをCID-AI0/1_2_CID-Nにコピー font-uni.pfaをCID-AI0/1_1_CID-1にコピーAFDKOは何?
AFDKOというのは「Adobe© OpenType©フォント開発キット」の略語
ほとんどのAFDKOのツールはCIDキー方式フォントに対応している
tx mergeFonts rotateFont stemHist autohint makeotfAFDKOでのフォント開発に便利なコマンドライン
AFDKOのtxツールでグリフ一覧表が簡単に生成できる
tx -pdf <font> glyphs.pdf
tx -pdf -g <glyphs> <font> glyphs.pdf
CIDキー方式フォントのCIDの表示(txツールのフィルター)
extract-cids.pl <font> extract-cids.pl -r <font> extract-cids.pl -r -s <font> 名前キー方式フォントのグリフ名の表示(txツールのフィルター)
extract-names.pl <font>AFDKOでのフォント開発に便利なコマンドライン(続き)
CID/名前キー方式フォントのGIDの表示(txツールのフィルター)
extract-gids.pl <font> extract-gids.pl -r <font> FDArray要素の割当ての表示(txツールのフィルター)
fdarray-check.pl <font> このワークショップで使用するコマンドラインについて
忘れないように各ディレクトリに「build*.sh」スクリプトがある 実行する前に必ずスクリプトの内容をよく確認して下さいCIDとGID
ROSの全てのCIDがフォントに入っている場合のみCIDとGIDは同一
GIDは常に連続 CIDが連続しない場合には「サブセットフォント」という 「ROS」は/CIDSystemInfo辞書の/Registry、/Ordering、/Supplementの略語 スラッシュ「/」接頭辞でCIDを明示的に指定することを推薦する
CID+1200 → /1200 extract-cids.plとfdarray-check.plの出力にはスラッシュ接頭辞を使う
txツールで生成したグリフ一覧表にはGIDとCIDが表示される
GIDは左上 CIDは左下にバックスラッシュ接頭辞つきで「cidfontinfo」ファイルの基礎
mergeFontsツールとmakeotfツールが使用するファイル
makeotfツールは必ずしもこのファイルを必要としない makeotfのコマンドオプションで設定できる為 mergeFontsツールでCIDキー方式フォントを生成する時には必須 以下のcidfontinfoファイルの行はmergeFontsツール専用:
FontName (KozGoAJ10-Medium)FullName (Kozuka Gothic AJ10 OpenType Medium)
FamilyName (Kozuka Gothic AJ10 OpenType)
Weight (Medium) version (1.000) Registry (Adobe) Ordering (Japan1) Supplement 0 XUID [1 11 9273884]
AdobeCopyright (Copyright 2001-2012 Adobe Systems Incorporated. All…)
「cidfontinfo」ファイルの基礎(続き)
以下のcidfontinfoファイルの行はmakeotfツール専用:
IsBoldStyle false #「-nb」オプションと同じ
IsItalicStyle false #「-ni」オプションと同じ
PreferOS/2TypoMetrics true #「-osbOn 7」オプションと同じ
IsOS/2WidthWeigthSlopeOnly true #「-osbOn 8」オプションと同じ
IsOS/2OBLIQUE false #「-osbOff 9」オプションと同じ
UseOldNameID4 false #「-newNameID4」オプションと同じ
「cidfontinfo」ファイルのXUID配列について
cidfontinfoファイルの「XUID」行を正しく設定する方法
XUIDというのは4つの要素までの配列 最小の要素数は2つ 最初の要素は開発者の「XUID」の値(整数)に設定する
アドビのXUIDの値は「1」 その次の要素は開発者が自分で設定する
各フォントは違うXUID配列に設定する 特定のフォントの違うバージョンは同じXUID配列に設定する XUID登録の為のURLは次の通り:
http://partners.adobe.com/public/developer/font/register/xuid_reg.doAFDKOのmergeFontsツールの基礎
mergeFontsツールは複数のフォントを1つのフォントに結合する
名前キー方式をCIDキー方式に変換する為には「cidfontinfo」が必要
「-cid cidfontinfo」オプションとその引数が必要 複数フォントに同一CIDかグリフ名があると、一番最初のものが使われる
そのグリフを明示的に除外する為には「-gx <glyphs>」オプションを使用する mergeFontsのマッピングファイルでCIDかグリフ名を変更できる
マッピングファイルの第一行目は必ず「mergeFonts」にする 「cidXXXX」というグリフ名はマッピングファイルなしでそのCIDに変換される CIDキー方式フォントの場合にはFDArray要素の名前が指定できる
マッピングファイルの第一行目の「mergeFonts」の引数で指定する mergeFonts KozGoAJ10-Medium-Kanji 1 1番目の引数はFDArray要素の名前、2番目は「/LanguageGroup」の値(0か1)AFDKOのmergeFontsツールとFDArray要素の割当て
CIDキー方式フォントには1つ以上のFDArray要素を含む
最大は256個のFDArray要素、最小は1個のFDArray要素 各CIDは1つのFDArray要素に割当てることができる
各FDArray要素には/FontNameがある
FDArray要素の/FontNameは/CIDFontNameをベースに /CIDFontName +「-」+「識別子」で指定する FDArray要素の割当てを制御する方法は2つある
名前キー方式フォントの/FontNameが継承される/FontName /KozGoAJ10-Medium-Kanji def
mergeFontsのマッピングファイルの1行目の引数で
mergeFonts KozGoAJ10-Medium-Kanji 1
どのROSが適切?「Adobe-Japan1-
x
」か「Adobe-Identity-0」か?
Adobe-Japan1-xにないグリフの場合に、Adobe-Identity-0のROSが必要
例:新JISマーク このグリフはAdobe-Japan1-6にないが、Adobe-Japan1-7の候補である 例:「かづらき」フォントの縦書専用のグリフ 漢字と平仮名リガチャー Adobe-Japan1-xにあるグリフの場合には、両方のROSが使える
Adobe-Japan1-xの利点
標準の資料が使用できる CMapリソースやGSUBフィーチャーの定義 Adobe-Identity-0が不利な点
そのフォント用のUTF-32のCMapリソースを作成する必要 そのフォント用のGSUBフィーチャーも作成する必要名前キー方式フォントをAdobe-Japan1-
x
のCIDキー方式フォントに
名前キー方式フォントデータのファイル数には2通りある
全てのグリフを1つのフォントリソースにする グリフ数が少ない場合 複数フォントリソースにする グリフ数が多い場合 グリフ名はAdobe-Japan1-xのCID番号に対応:「cid」+ CID番号
CID+1200 → cid1200 複数フォントリソースの場合、mergeFontsのマッピングファイルは不要
フォントリソースの/FontNameは必ずFDArray要素の名前と同一名前キー方式フォントをAdobe-Identity-0のCIDキー方式フォントに
名前キー方式フォントデータのファイル数には2通りある
全てのグリフを1つのフォントリソースにする グリフ数が少ない場合 複数フォントリソースにする グリフ数が多い場合 グリフ名はユニコードに対応:「uni」+ ユニコードの16進数の値
U+4E00 → uni4E00 mergeFontsのマッピングファイルを準備する必要がある
FDArray要素を1つ持つCIDキー方式フォントを複数の要素に
mergeFontsのマッピングファイルは必須
複数のFDArray要素の場合には各要素のmergeFontsマッピングファイルが必要
「-cid」オプションと「cidfontinfo」ファイルは不要
コマンドラインは次の通り:
AFDKOのrotateFontツールで90度で回転したグリフを生成できる
rotateFontツールはグリフを回転する他にも以下のようなことができる グリフ幅の変更 グリフ名の変更 グリフ位置の調整 GSUBフィーチャー「vrt2」の為のグリフ作成には4つの操作が必要になる 90度回転、グリフ幅を全角に、CIDの変更、グリフ位置の調整 90度回転は「-rt」オプションの1番目の引数で指定する -rt 90 0 0 その他の操作は「-rtf」オプションを使ってファイルに記述することができる 入力グリフ、出力グリフ、グリフ幅、X軸のシフト、及びY軸のシフト 例:1 8720 1000 120 880 コマンドラインの例CIDキー方式フォントに直接ヒントをつける(/StdHWと/StdVW)
fdarray-check.plツールで各FDArray要素に割当てられたCIDを一覧できる
fdarray-check.pl <font>
FDArray要素に割当てるCIDをstemHist -allの「-g」オプションの引数に
stemHist -all -g /633-/635,/638,/686-/687,/7887-/7888,/7911-/7912 <font>
stemHistツールの出力は次の2つのファイル <font>.hstm.txt(横ステム幅) <font>.vstm.txt(縦ステム幅)
横/縦ステム幅のヒストグラムを作成し頻度が最も高い値を探し出す
FDArray要素すべてに対し「hintparam.txt」ファイルで設定する
Dingbats /BlueValues [-250 -250 1100 1100] def /StdHW [69] def /StdVW [69] defCIDキー方式フォントに直接ヒントをつける(/BlueValues)
FDArray要素に割当てるCIDをstemHist -aの「-g」オプションの引数に stemHist -a -g /1,/6,/13,/15,/17-/26,/34-/59,/66-/91 <font> stemHistツールの出力は次の2つのファイル <font>.bot.txt(ステムの下のゾーン) <font>.top.txt(ステムの上のゾーン) 1番目の値のペアは<font>.bot.txtからのベースラインとオーバーシュート その次のペアは<font>.top.txtからのxハイトとCapハイトとそのオーバーシュート 非ラテンのFDArray要素の場合にだけ次の固定の/BlueValues配列を使う /BlueValues [-250 -250 1100 1100] def ラテンのFDArray要素には「hintparam.txt」の/BlueValuesで設定する Proportional /BlueValues [-11 0 551 563 765 777] def /StdHW [93] def /StdVW [116] defCIDキー方式フォントに直接ヒントをつける(続き)
hintcidfont.plツールで各FDArray要素のヒントパラメーターを変更する
hintcidfont.pl hintparam.txt < cidfont-nohint.ps > cidfont-hint.ps
txツールでFDArray要素毎のヒントパラメーターを確認するのが望ましい
tx -0 cidfont-hint.ps
最後にautohintツールを実行する
CIDキー方式フォントのグリフを変更する方法
txツールの「-t1 -decid -g <glyphs>」オプションでグリフを抽出する
適当なFDArray要素の番号を「-usefd <index>」オプションで指定する
tx -t1 -decid -usefd 3 -g /2520 cidfont.ps cid2520.pfa
名前キー方式フォントになってしまう
FontLab Studio等のフォントエディターでグリフを変更する
「ASCII/UNIX Type 1」式のフォントを生成する
mergeFontsツールで変更されたグリフをCIDキー方式フォントに変換する
mergeFonts -cid cidfontinfo cid2520.ps cid2520.pfa
mergeFontsツールで元のグリフを変更されたグリフに交換する
mergeFonts -gx /2520 cidfont-mod.ps cidfont.ps cid2520.ps
CIDキー方式フォントにグリフを追加する方法
mergeFontsツールで追加したいグリフをCIDキー方式フォントに変換する
FDArray要素の割当てに注意! mergeFonts KozGoAI0-Medium-Dingbats 1 0 .notdef 300 NewJISmergeFonts -cid cidfontinfo cid300.cid newjis.map newjis.pfa
mergeFontsツールで元のフォントと追加したいグリフを結合する
mergeFonts cidfont-add.ps cidfont.ps cid300.cid
autohintツールで追加されたグリフにヒントをつける
CIDキー方式フォントのFontBBox配列を正確に設定する方法
mergeFontsツールで生成されたフォントのFontBBox配列は時々不正確
rotateFontツールの場合も同様
fix-fontbbox.plツールでFontBBox配列を正確に設定できる
fix-fontbbox.pl cidfont.ps > cidfont-fix.ps mv cidfont-fix.ps cidfont.ps
CIDキー方式フォントを変更した後の操作
フォントを変更した場合にバージョンをインクリメント
version-up-cidfont.plツールでCIDFontヘッダの2カ所をインクリメントする %%Version: 1 /CIDFontVersion 1 def コマンドラインは次の通り:version-up-cidfont.pl < cidfont.ps > cidfont-new.ps
version-up-cidfont.plツールを実行した後の結果:
%%Version: 1.001
/CIDFontVersion 1.001 def
Adobe-Identity-0のUTF-32のCMapリソースを開発する方法
ほとんどの資料はmergeFontsのマッピングファイルにある
184 uni56FD 次のようなUTF-32のCMapリソースのマッピングになる
<000056FD> 184 「cmap-template.txt」ファイルを編集する
「0 begincidchar」の行の直後に全てのマッピングを挿入する 0 begincidchar <00000020> 1 … <000056FD> 184 … endcidchar cmap-tool.plツールを実行する
グリフ数とFDArrayの数が最大のCIDキー方式フォントを作る方法
CIDキー方式フォントの最大グリフ数は65,535字(64K)
CID+0からCID+65534まで これに対し、最小グリフ数は一字 CID+0(いわゆる「.notdef」というグリフ) mergeFontsのマッピングファイルで257グリフのフォントを作る
「.notdef」と「cid1」から「cid256」 256個のmergeFontsマッピングファイルで64Kグリフのフォントを作る
mk64k256fdarray.pl UnicodeP02 > build2.sh
コマンドラインでは長いので、「build2.sh」スクリプトで実行する
sh ./build2.sh