2011年6月23日

OpenTypeフォントって組版情報てんこ盛り

大阪DTPの勉強部屋主催の「InDesign組版教室」を受講しはじめました。
大石十三夫さんのよい組版への蘊蓄とこだわりがたっぷりの講義がとても面白いのです。(http://www.osakadtp.com/

その第1回(6/17)はAdobe Illustratorの文字組版の不自由さが検討されたのですが、その中に、サイズが異なる文字を1行に混植する場合などで、個々のフォントの欧文ベースラインが分からないと、文字の並び具合や行間をきれいに揃えられないという話がでてきました。

大石さんのblog『なんでやねんDTP』だとこのあたりの話:
http://d.hatena.ne.jp/works014/20110623

そこで、欧文ベースライン位置を調べる方法をちょいと調べてみました。

フォントの仕様書を読む

まずは、OpenTypeフォントの仕様を勉強。仕様書の在処はもちろん、開発元Microsoft社です;
『OpenType specification』
http://www.microsoft.com/typography/otspec/

うわっ、といいたいぐらい、OpenTypeフォントには組版のための情報が盛り込まれてますね。

他の情報はおいおい勉強することにして、まずは、ベースラインについての項目は?と探してみると、「BASE表」あたりのようです。
「BASE - Baseline Table」
http://www.microsoft.com/typography/otspec/BASE.htm
「Baseline tags」
http://www.microsoft.com/typography/otspec/baselinetags.htm

ideo
これが欧文ベースライン位置を示すもの。ベースラインから仮想ボディの地(下辺)までの距離で示してあります(単位は1/1000)。
icfb
平均字面の地の位置。
icft
平均字面の天の位置。

これらをフォントファイルから読み出せばいい訳です。実際、InDesignにしてもIllustratorにしてもこうした組版情報をフォントから読み出して文字を並べているのです。人間にできない訳はありません。

たしかに、フォントファイルをxxdやhexdumpで16進ダンプして、仕様書と首っ引きで、読んでいけば読めます。

AFDKOTのインストール

でも、もっと楽な方法はないのか? いろいろ試してみたところ、Adobe提供のフォント開発ツールに含まれているものが使い易そうです。Mac・Windows両版が用意されています。

「Adobe Font Development Kit for OpenType」
http://www.adobe.com/devnet/opentype/afdko.html

インストールは、配布物をunzipして出てきた「FDK」フォルダを適当な場所(恒常的に置いておける場所:私は自分のホームディレクトリ下のライブラリフォルダに置きました)に移動して、フォルダ中のシェルスクリプトFinishInstallOSXをTerminalにドロップして実行するだけ。FDKフォルダへのリンクが~/bin/内に作られ、シェルの設定ファイルに必要な環境変数設定が追加記入されます。詳しくは、Read_Me_First.htmlに書いてあります。

spotコマンドをつかってBASE表を読み出し

AFDKOはフォントをつくるためのキットなので、こちらにも沢山の機能・コマンドが入ってます。

組版のための情報はその中の「spot」コマンドで読み出せます。Terminal上での操作になります。

使用法は「-h」オプションで表示されます。


moria: tac$ spot -h
Usage: spot [-u|-h|-ht|-r] [-n|-nc|-G|-T|-F] [-f] [-V] [-m] [-d][-i] [-o] [-t|-P] [-p] [-@ ]  +
OR: spot  -X 

Options:
    -u  print usage information
    -h  print usage and help information
    -ht print table-specific usage information
    -r  dump Macintosh resource map
    -n  dump glyph id/name mapping (also see '-m' below)
    -nc dump glyph id/name mapping, one per line (also see '-m' below)
    -T  list table-directory in sfnt table
    -F  list features in GPOS,GSUB tables
    -G  proof glyph synopsis
    -f  proof GPOS features in font order instead of GID order
    -V  proof glyphs in Vertical writing mode (same as -p6 below)
    -m  map glyph names into Adobe 'friendly' names, not AGL/Unicode names
    -d  suppress header info from proof
    -br proof glyph synopsis one per page
    -i  sfnt resource id list (see help)
    -o  TTC directory offsets list (see help)
    -t  table dump list (see help)
    -P  , e.g 'P cswh,frac,kern'  (use '-Proof' for all)
    -p  set proofing policies: 
        1=No glyph name labels
        2=No glyph numeric labels
        4=Show KanjiStandardEMbox on glyph
        5=Show GlyphBBox on glyph
        6=Show Kanji in Vertical writing mode
        7=Don't show Kanji 'kern','vkrn' with 'palt','vpal' values applied
    -@  set proofing glyph point-size (does not apply to certain synopses)
    -X  execute a series of complete command-lines from  [default: OTFproof.scr ]


BASE表を表示するには、オプションを「-tBASE=5」とすると見やすい表になります。(実行結果は左の図の前半)

moria: tac$ spot -tBASE=5 KozMinPro-Regular.otf 





































BASE表を持たないフォント

ところが、OpenTypeフォントでもBASE表をもたないものがあります。例えばダイナフォントの平成明朝など。

そういうフォントの場合、ベースライン位置についてはHHEAD表に記載されています。それを表示するにはオプションを「-thhea」とします。

moria: tac$ spot -thhea DFHSMinchoStd-W3.otf

descenderとascenderが分かります。



なお、縦組みの場合のベースライン位置などもBASE表に記載されています。しかし、縦組みの場合、たいていは「仮想ボディの中央揃え」でしょうから欧文ベースライン位置は欧文混植の場合以外は問題になることは少ないと思います。spotコマンドの出力には縦組の場合も出ていますがご参考まで。


0 件のコメント:

コメントを投稿