マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

TTC 形式のフォントを pdfTeX で使う話

bxcjkjatype パッケージでは、pLaTeX の pxchfon パッケージと同じように、使用する日本語フォントを文書内で指定する機能がある。日本語組版に bxcjkjatype を使う目的は pdfLaTeX(PDF 出力)を使う必要があるためであろうが、この場合には使用できるフォントに重大な制限がある。

pdfTeX では TTC フォントは使えない

pdfLaTeX + CJK パッケージで使用するフォントについては以下のような制限がある。これは pdfTeX エンジン自体がもつ制限なのでパッケージ側では解決できない。

  • CFF グリフの OpenType フォントは使用できない。*1
  • TTC 形式のファイル(拡張子 .ttc)は使用できない。

日本語用の OpenType フォントは CFF グリフや TTC 形式のものが結構多い。特に、フリーフォントで明朝・ゴシック 2 ウェイト揃えたい場合の最も有望な選択肢である Mobo/Moga フォントが TTC 形式での配布であるので、この制限の影響は大きい。

TTC フォントを分解する

しかしながら、「フォントの形式を変換する」という選択肢は(ライセンスが許す限りは)存在する。特に、TTC 形式のフォントは、複数の TrueType 形式のフォントを割と単純な方式で結合した(重複する部品は一つに纏めることができる)ものなので*2、品質の劣化やメタ情報の欠損を全く被らずに、普通の TrueType フォント形式(拡張子 .ttf ((TrueType グリフのフォントファイルの拡張子を .otf にすることも許されるが、.ttf を使う方が多いようである。)))に「分解」することが可能であり、実際にそのためのツールが幾つか公開されている。*3

例えば、Y.Oz 氏*4制作の UniteTTC *5というツールを使うと、Mobo/Moga フォントを TrueType 形式フォントに変換して pdfTeX で用いることが可能になる。具体的には以下のようにする。

  • UniteTTC mogam.ttc」を実行、生成される mogam001.TTF〜mogam006.TTF のうち mogam002.TTF(MogaExMincho)を採用する。*6
  • 同様に、mogamb.ttc、mogag.ttc、mogagb.ttc を分解して、mogamb002.TTF、mogag002.TTF、mogagb002.TTF を採用する。*7
% 文字コードは当然UTF-8
\documentclass[a4paper]{article}%欧文レイアウトで済ませる
\usepackage[whole]{bxcjkjatype}
\setminchofont{mogam002.TTF}
\setboldminchofont{mogamb002.TTF}
\setgothicfont{mogag002.TTF}
\setboldgothicfont{mogagb002.TTF}
\begin{document}
明朝で\textbf{太字}\gtfamily ゴシックで\textbf{太字}\end{document}
蛇足事項

ところで、UniteTTC 等の「分解ツール」は C 言語(か C++)で実装されソースファイルまたは実行バイナリの形で配布されているものが多いようである。環境によってはスクリプト言語での実装の方が好都合かも知れない。なので、自作の Lua プログラムを公開しておくことにする。

LuaTeX がインストールされている環境であれば、「luatex zrdecompttc.lua mogam.ttc」等として変換ができる。(普通の Lua 処理系でも実行できるはず。)

*1:これは CJK パッケージ等で用いる「サブフォント」に限定した話で、通常の欧文フォントであれば pdfTeX で CFF の OpenType は扱える。ただし、サブセット埋込に対応していないなどの制限があって使い勝手はよくない。

*2:だから TTC 形式のファイルを OS にインストールすると、それは「複数のフォント」として認識される。msgothic.ttc は「MS ゴシック」「MS Pゴシック」「MS UI Gothic」の 3 つのフォントが含まれる。

*3:なお、汎用のフォント形式変換ツールで TTC と TrueType の両方をサポートするものでも同様の変換が可能であるが、「単純に分解」でない場合、メタ情報まで含めて「元のフォントと同じ」になるとは限らない。

*4:Mobo/Moga フォントの作者。

*5:名前から判るように、「分解」だけでなく「結合」(TrueType → TTC)もできる。

*6:CJK(bxcjkjatype)パッケージでの使用の場合、Moga〜 より MogaEx〜 の方が適切だと思われる。

*7:90JIS(2000JIS)字形を優先させる場合は、mogam005.TTF、mogamb005.TTF、mogag004.TTF、mogagb004.TTF を採用する。