TeXの日本語フォントを変更する方法

TeXのタイプセット(platex,dvipdfmx)から出力されるpdfの日本語フォントを変更しようとして四苦八苦した。方法をメモしておく。

環境:macOS Sierra,texlive2016

まず,私が言う「pdfの日本語フォントを変更する」とは,「pdfに埋め込む日本語フォントを変更する」ことを指すらしい。そのための方法はいくつかあって,それらを以下に述べる。

 

方法1 pxchfonパッケージを使う
1. フォントファイルを配置する。
使用したいフォントファイルを,以下のフォルダに配置する。
フォントファイルの実体を配置してもいいし,シンボリックリンクでもいい。

フォントファイルの拡張子が.otfまたは.otcの場合
/usr/local/texlive/texmf-local/fonts/opentype/public/
フォントファイルの拡張子が.ttfまたは.ttcの場合
/usr/local/texlive/texmf-local/fonts/truetype/public/

今回は游ゴシック体ミディアムに変更することにして,YuGo-Medium.otfの名前でフォントファイルへのシンボリックリンクをはる。ターミナルで以下を実行。

sudo ln -s "/System/Library/Assets/com_apple_MobileAsset_Font3/f30406e59433110c0729335b11a8210e8c63ce6d.asset/AssetData/Yu Gothic Medium.otf" /usr/local/texlive/texmf-local/fonts/opentype/public/YuGo-Medium.otf
2. 配置したフォントファイルをTeXに認識させる。
ターミナルで以下を実行。

sudo mktexlsr
3. .texにpxchfonの設定を記述する。
.texにpxchfonの設定を2,3行目のように書く。

\documentclass[20pt]{jsarticle}
\usepackage[noalphabet]{pxchfon}
\setminchofont{YuGo-Medium.otf} 
%拡張子が.otc(opentypeフォントを束ねたもの)のときは,何番目のフォントを使うのかオプションで指定する。
% \setminchofont[0]{hoge.otc} 
\begin{document}
あいうえお
\end{document}
4. タイプセットする。
platex,dvipdfmxでタイプセットして完成。

 

方法2 updmap-sysを使う
1. フォントファイルを配置する。
ターミナルで,以下の通り移動してスクリプトを実行する。

cd /usr/local/texlive/2016/texmf-dist/scripts/cjk-gs-integrate
sudo perl cjk-gs-integrate.pl --link-texmf --force

すると,/usr/local/texlive/texmf-local/fonts/opentype/cjk-gs-integrate/usr/local/texlive/texmf-local/fonts/truetype/cjk-gs-integrate配下に,実フォントファイルへリンクを貼ってくれる。切り替え可能なmapファイルに対応するフォントを全てリンクしてくれるので,とても便利。

2. 配置したフォントファイルをTeXに認識させる。
ターミナルで以下を実行。

sudo mktexlsr
3. mapファイルを切り替える。
ターミナルで以下を入力する。

sudo updmap-sys --setoption jaEmbed toppanbunkyu-sierra

今回は凸版文久のフォントを用いるようにmapファイルを選択した。凸版文久以外のフォントを使いたいときは,toppanbunkyu-sierraを,使いたいフォントのmapファイルが配置されているフォルダ名(/usr/local/texlive/2016/texmf-dist/fonts/map/dvipdfmx/ptex-fontmaps/を参照。ただし,ここにある全てのmapが使用可能なわけではなく,対応していないフォントもある。)に書き換える。

4. タイプセットする。
platex,dvipdfmxでタイプセットして完成。

 

方法3(おまけ) kanjix.mapを直に書き換える

mapファイルを直に書き換えて,出力されるpdfのフォントを変える。データの不整合を招きかねないよくないやり方だけれど,動作を知るための実験としてやってみた。バックアップを取るなりして,TeXが正常に動作しなくなってもリカバリが効く状態で試してください。

0. .texから.pdfを作るまでの流れを確認
sample.texからsample.pdfを作るまでの,ざっくりとした流れは以下の通り。



まず,platexsample.texからsample.dviを作る。このとき,rml.tfmを参照してフォントの寸法を取得する。フォントの寸法は,TeX Font Metric(TFM)と呼ばれる。”rml”はRyuMin-Lightの略で,日本語のデフォルトはrml.tfmになるらしい。sample.dviにはフォントの寸法しか入っていない。
次に,dvipdfmxがsample.dviからsample.pdfを作る。このとき,kanjix.mapを参照してフォントの具体的な形(グリフという)の情報をpdfに埋め込む。したがって,グリフを変えたければ,kanjix.maprmlに対応するフォントファイルを書き換えればよい。寸法が狂うかもしれないけど,目をつぶることにする。

1. フォントファイルを配置する。
方法1 の1と同じ。
2. 配置したフォントファイルをTeXに認識させる。
方法1 の2と同じ。
3. kanjix.mapを書き換える。
/usr/local/texlive/2016/texmf-var/fonts/map/dvipdfmx/updmap/kanjix.mapを開き,”rml”を検索する。

% ptex-toppanbunkyu-sierra.map
gbm H :0:ToppanBunkyuGothic.ttc %!PS ToppanBunkyuGothicPr6N-DB
gbmv V :0:ToppanBunkyuGothic.ttc %!PS ToppanBunkyuGothicPr6N-DB
rml H ToppanBunkyuMincho-Regular.otf %!PS ToppanBunkyuMinchoPr6N-Regular
rmlv V ToppanBunkyuMincho-Regular.otf %!PS ToppanBunkyuMinchoPr6N-Regular

rml の行にあるToppanBunkyuMincho-Regular.otfを,1で配置したフォントファイル名に書き換える(updmap-sysでmapファイルを切り替えると,kanjix.mapの中身が書き換えられていく。)。

4. タイプセットする。
platex,dvipdfmxでタイプセットして完成。

 


以下のサイトを参考にさせていただきました。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください