Hatena::ブログ(Diary)

アセトアミノフェンの気ままな日常

2015-10-03

TeX で OpenType Collection フォントを扱ってみると(その1)

El Capitan で大変なのが、新しいフォント形式である OpenType Collection の扱いである。このフォント形式は拡張子は従来のアプリケーションで認識できるように .ttc のままであるが、中身は従来の TrueType Collection とは別物である*1



El Capitan に収録された日本語フォントの一覧は doraTeX さんが作成してくださっている。この中を見ると N 付きと N 無し・Medium と Bold の収録順序などがフォントによってバラバラで、しかも ttc に束ねた際に共有させたテーブルを見る限りどうもあまり知識のない人によって行われたらしいともいう。


pTeX / upTeX + dvipdfmx の場合

先日は「TeX Live 上流にどれくらいマージされるか」が不明であることを理由に El Capitan のヒラギノフォントを pTeX 系で扱う方法を説明することを避けたが、jfontmaps & cjk-gs-integrate 20151002.0 がリリースされたことで一定の収束がみえてきた。このことについて、もう少し詳しく説明しよう。

pTeX 系のフォントの管理は map ファイルを用いて行われている。TeX が文字組を行う際には実際の字形は問題とせずフォントメトリクス(TFM または JFM)だけを参照し、DVI ファイルにその情報を書き込む。これをもとに、dvipdfmx が map ファイルを参照して実フォントを PDF に埋め込む(詳細は「和文の仕組み - TeX Wiki」へ)。この dvipdfmx 用のマッピングは、TTC や OTC のような複数フォントが束ねられた形式の場合はインデックスを元に実フォントを参照する。このインデックスは0から始まり、例えば Windows の msmincho.ttc は例えば0が等幅フォントの「MS 明朝」、1がプロポーショナルフォントの「MS P明朝」となっている。TeX でプロポーショナル組みはそのフォント特有の TFM をわざわざ作らないかぎり無理*2なので、0番の等幅フォントを指定している。

hminl-h	H	:0:msmincho.ttc 
hminl-v	V	:0:msmincho.ttc 
hminr-h	H	:0:msmincho.ttc 
hminr-v	V	:0:msmincho.ttc 
hminb-h	H	:0:msmincho.ttc 
hminb-v	V	:0:msmincho.ttc 
hgothr-h	H	:0:msgothic.ttc 
hgothr-v	V	:0:msgothic.ttc 
hgothb-h	H	:0:msgothic.ttc 
hgothb-v	V	:0:msgothic.ttc 
hgotheb-h	H	:0:msgothic.ttc 
hgotheb-v	V	:0:msgothic.ttc 
hmgothr-h	H	:0:msgothic.ttc 
hmgothr-v	V	:0:msgothic.ttc 

このように、pTeX 系のマッピングでは「フォントファイルの中にどういう順番でフォントが収録されているか」が重要となる。

ところが、先ほど述べたとおり El Capitan の OTC はポリシーが不明であるため、一つ一つのフォントでインデックスがまばらになってしまった。

hminl-h	H	HiraMinPro-W2.otf 
hminl-v	V	HiraMinPro-W2.otf 
hminr-h	H	:1:HiraginoSerif-W3.ttc %!PS HiraMinPro-W3 
hminr-v	V	:1:HiraginoSerif-W3.ttc %!PS HiraMinPro-W3 
hminb-h	H	:1:HiraginoSerif-W6.ttc %!PS HiraMinPro-W6 
hminb-v	V	:1:HiraginoSerif-W6.ttc %!PS HiraMinPro-W6 
hgothr-h	H	:3:HiraginoSans-W3.ttc  %!PS HiraKakuPro-W3 
hgothr-v	V	:3:HiraginoSans-W3.ttc  %!PS HiraKakuPro-W3 
hgothb-h	H	:3:HiraginoSans-W6.ttc  %!PS HiraKakuPro-W6 
hgothb-v	V	:3:HiraginoSans-W6.ttc  %!PS HiraKakuPro-W6 
hgotheb-h	H	:2:HiraginoSans-W8.ttc  %!PS HiraKakuStd-W8 
hgotheb-v	V	:2:HiraginoSans-W8.ttc  %!PS HiraKakuStd-W8 
hmgothr-h	H	:0:HiraginoSansR-W4.ttc %!PS HiraMaruPro-W4 
hmgothr-v	V	:0:HiraginoSansR-W4.ttc %!PS HiraMaruPro-W4

幸い OTC フォントでもこの方法が使えたので、マッピングさえ誤らなければ pTeX / upTeX + dvipdfmx で日本語 PDF を出力することができる(実例)。ただし、このインデックスに対するポリシーのなさは今後に不安を残すものとなっている。

続く

*1:フォント周りに疎い方はそもそも OpenType フォントとか TrueType フォントといったものすらわからないかもしれないが、とりあえず拡張子が .otf のものは OpenType フォント・拡張子が .ttf のものは TrueType フォントと思っておけばよい(詳細はアンテナハウス「さまざまなフォントについての概要」が詳しい)。これら .otf や .ttf は「一つのファイルに一つのフォント」であるが、.ttc は「一つのファイルに複数のフォントを束ねたもの」であるので、ナントカ Collection という呼び方をするのである。このように Collection にすることで共通の情報をひとつにまとめるなどして節約できるという点が、別々のフォントファイルにすることと比較したメリットである。

*2:齋藤修三郎氏による hiraprop / moriprop はそれぞれヒラギノフォント・モリサワフォントのプロポーショナル欧文を使うパッケージは、このような苦労の産物である。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close