)2011年6月23日OpenTypeフォントって組版情報てんこ盛り大阪DTPの勉強部屋主催の「InDesign組版教室」を受講しはじめました。大石十三夫さんのよい組版への蘊蓄とこだわりがたっぷりの講義がとても面白いのです。Illustratorの文字組版の不自由さが検討されたのですが、その中に、サイズが異なる文字を1行に混植する場合などで、個々のフォントの欧文ベースラインが分からないと、文字の並び具合や行間をきれいに揃えられないという話がでてきました。大石さんのblog『なんでやねんDTP』だとこのあたりの話:http://d.hatena.ne.jp/works014/20110623そこで、欧文ベースライン位置を調べる方法をちょいと調べてみました。フォントの仕様書を読むまずは、OpenTypeフォントの仕様を勉強。specification』http://www.microsoft.com/typography/otspec/うわっ、といいたいぐらい、OpenTypeフォントには組版のための情報が盛り込まれてますね。他の情報はおいおい勉強することにして、まずは、ベースラインについての項目は?と探してみると、「BASE表」あたりのようです。tags」http://www.microsoft.com/typography/otspec/baselinetags.htmideo:これが欧文ベースライン位置を示すもの。ベースラインから仮想ボディの地(下辺)までの距離で示してあります(単位は1/1000)。icfb:平均字面の地の位置。icft:平均字面の天の位置。これらをフォントファイルから読み出せばいい訳です。実際、InDesignにしてもIllustratorにしてもこうした組版情報をフォントから読み出して文字を並べているのです。人間にできない訳はありません。たしかに、フォントファイルをxxdやhexdumpで16進ダンプして、仕様書と首っ引きで、読んでいけば読めます。試してみたところ、Adobe提供のフォント開発ツールに含まれているものが使い易そうです。Mac・Windows両版が用意されています。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」オプションで表示されます。]BASE表を表示するには、オプションを「-tBASE=5」とすると見やすい表になります。BASE表を持たないフォントところが、OpenTypeフォントでもBASE表をもたないものがあります。ダイナフォントの平成明朝など。いうフォントの場合、ベースライン位置についてはHHEAD表に記載されています。それを表示するにはオプションを「-thhea」とします。DFHSMinchoStd-W3.otfdescenderとascenderが分かります。縦組みの場合のベースライン位置などもBASE表に記載されています。縦組みの場合、たいていは「仮想ボディの中央揃え」でしょうから欧文ベースライン位置は欧文混植の場合以外は問題になることは少ないと思います。spotコマンドの出力には縦組の場合も出ていますがご参考まで。複数のテキストフレームをひとつずつ別文書にコピーわたしがつくっている新聞では「新年あいさつ」と「暑中見舞い」、年2回の名刺広告を掲載してます。1枠の料金は年間購読料よりも高く、全体でけっこうな収入になるのですが、募集事務の手間がたいへんなのです。編集部に4人もいて、財政部門も手伝ってくれていたのですが、ここ10年ぐらいはわたしひとりで作業をしています。広告主を照合しながら、募集要綱を宛名ラベルを貼った封筒に詰めて発送しています。これをなんとか省力化しようと、大組ゲラ上の前回データを募集要綱(小組ゲラ)へコピー&ペーストするという作業をInDesignで自動化させてみました。CS2なので複数文書の取り扱いに不便なところがあります。CS2ではcopy()とpaste()でしか文書間のコピー&ペーストができないようなのです。copy()とpaste()は前面のlayoutWindowにしか作用しない。そこでlayoutWindowを切り替えてやらねばならないのですが、その際、documents[0]とdocuments[1]とが指し示す文書まで入れ替わってしまいます(そのためオブジェクト名の表記を変数をもちいて簡略化できません)。CS4だとduplicateでコピー元やペースト先が明確に指示できるし、layaoutWindowを切り替える必要もないので、もっと楽にできそうです。動くようになったスクリプトはこんな具合です(エラー処理その他は未実装)。