LaTeXから生成するPDFが、SlideShareで日本語が表示できるようにしてみた。

Debian勉強会資料のGitリポジトリを用いて、LaTeXからPDFを生成する場合、フォントは埋め込まれていないので、SlideShareでは日本語が表示されない。 [1]

で、フォントを埋め込むためにはどうすればいいかなぁとやってみた。今回はきろ字フォントをPDFに埋め込む、という例。

システム全体の設定

まず、dvipdfmxコマンドがフォントを読む込めるようにする。Squeeze/Sidでは/etc/texmf/texmf.d/75DviPS.cnfのOSFONTDIRの値がダミーの値になっているので、これを/usr/share/fontsに変更する。/etc/texmf/texmf.cnfは、このファイルにも書いてあるとおり直接編集してはならない。

$ sudo git diff
diff --git a/texmf/texmf.d/75DviPS.cnf b/texmf/texmf.d/75DviPS.cnf
index ade8f9f..f23b179 100644
--- a/texmf/texmf.d/75DviPS.cnf
+++ b/texmf/texmf.d/75DviPS.cnf
@@ -6,7 +6,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type42,t
ype3,truetype}}/
 % OSFONTDIR is to provide a convenient hook for allowing TeX to find
 % fonts installed on the system (outside of TeX).  An empty default
 % value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts

 % PostScript Type 1 outline fonts.
 T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//

変更後、update-texmfで/etc/texmf/texmf.cnfファイルを生成する。

$ sudo update-texmf -v
Merging information from /etc/texmf/texmf.d/ into /etc/texmf/texmf.cnf ... Replacing config file /etc/texmf/texmf.cnf with new version
done

実行すると、以下のようにファイルが更新される。

$ sudo git diff
diff --git a/texmf/texmf.cnf b/texmf/texmf.cnf
index 63c392d..406a2c0 100644
--- a/texmf/texmf.cnf
+++ b/texmf/texmf.cnf
@@ -370,7 +370,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type
42,type3,truetype}}/
 % OSFONTDIR is to provide a convenient hook for allowing TeX to find
 % fonts installed on the system (outside of TeX).  An empty default
 % value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts

 % PostScript Type 1 outline fonts.
 T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//
diff --git a/texmf/texmf.d/75DviPS.cnf b/texmf/texmf.d/75DviPS.cnf
index ade8f9f..f23b179 100644
--- a/texmf/texmf.d/75DviPS.cnf
+++ b/texmf/texmf.d/75DviPS.cnf
@@ -6,7 +6,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type42,t
ype3,truetype}}/
 % OSFONTDIR is to provide a convenient hook for allowing TeX to find
 % fonts installed on the system (outside of TeX).  An empty default
 % value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts

 % PostScript Type 1 outline fonts.
 T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//
diff --git a/texmf/texmf.d/75DviPS.cnf b/texmf/texmf.d/75DviPS.cnf
index ade8f9f..f23b179 100644
--- a/texmf/texmf.d/75DviPS.cnf
+++ b/texmf/texmf.d/75DviPS.cnf
@@ -6,7 +6,7 @@ TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type42,t
ype3,truetype}}/
 % OSFONTDIR is to provide a convenient hook for allowing TeX to find
 % fonts installed on the system (outside of TeX).  An empty default
 % value would add "//" to the search paths, so we give it a dummy value.
-OSFONTDIR = /please/set/osfontdir/in/the/environment
+OSFONTDIR = /usr/share/fonts

 % PostScript Type 1 outline fonts.
 T1FONTS = .;$TEXMF/fonts/{type1,hbf}//;$OSFONTDIR//

ユーザ個別で指定する場合

ホームディレクトリ直下に、.texmf-config として、texmf.cnfを用意してやれば良いみたいだが、未検証。

PDF生成前の準備

フォントマップを用意する。きろ字フォントは、/usr/share/fonts/truetype/kiloji/ディレクトリの下に、

ls /usr/share/fonts/truetype/kiloji/
kiloji.ttf  kiloji_b.ttf  kiloji_d.ttf  kiloji_p.ttf

のように存在する。拡張子の.ttfはフォントマップには書かない。プロポーショナルフォントのkiloji_pを指定する場合は以下のようになる。

rml H kiloji_p
gbm H kiloji_p
rmlv V kiloji_p
gbmv V kiloji_p

あとは、dvipdfmxコマンドを実行するときに、このファイル(custfont.mapとでもしておこう)を-fオプションで指定すればよい。

$ dvipdfmx -f custfont.map hoge.dvi

するとフォントを埋め込んだPDFを生成できる。Debian勉強会のMakefileだと、

%.pdf: %.dvi
        umask 002 ; dvipdfmx -o $@.tmp $<

となっているところを、

%.pdf: %.dvi
        umask 002 ; dvipdfmx -f custfont.map -o $@.tmp $<

とすれば良い。

[1]Debian勉強会ではGitや勉強会のWebサイトで資料配布しているので別に困らないのだけど、他の勉強会で資料を作るときは、このリポジトリをfork、カスタマイズしているのだが、他の人は大体SlideShareを使っているので、まぁちょっと不便。