2010年6月2日水曜日

pdvipsで文字化け ptexlive on Ubuntu 10.04 (32bit)


普段はdvipdfmxでpdfを作成しているため,気に留めずにいたのですが,Asymptoteで日本語を表示させようと色々調べていたところ,Ubuntu 10.04に導入したptexliveのpdvipsでdviファイルから作成したpsファイルの日本語が文字化けしていることに気づきました.

解決策はptexlive Wikiの動作報告95にありました.最小限必要なものが何かまでは追求していないのですが,この動作報告にあパッケージで新規に
cmap-adobe-japan1,  cmap-adobe-japan2, gs-cjk-resource, xpdf-japanese
を導入したところ,日本語が表示されるようになりました.ちなみにpoppler-dataも日本語表示のために重要なパッケージのようですが,私の環境では既に導入済みでした.

日本語は表示されるようになったのですが,フォントの設定がまずいらしく,見栄えがあまりよくありません.上の動作報告にもあるように,pdvipsで生成されるpsファイルを表示した際のフォントや,さらにps2pdfなどでpdfファイルを生成した際に埋め込まれるフォントはghostscript (Ubuntu 10.04でのバージョンは8.71)で設定されているようで,ptexlive自体とはあまり関係してないようです.

そこで,千葉大学の倉澤治樹教授のHomePage (topページから[Linux(Ubuntu)]→[Ghostscript]とリンクを辿ります)を参考に,ghostscriptのフォントの設定を変更しました.同ページは物理の講義録が非常に充実しているのも参考になります!! 上記のパッケージを導入した時点で,ファイル
/var/lib/defoma/gs.d/dirs/fonts/cidfmap
には
/Ryumin-Light /SazanamiMincho-Regular ;
/GothicBBB-Medium /TakaoGothic-Regular ;
 という行がありましたが,さざなみフォントが見栄えの悪さの原因となっているので自分の場合は/Ryumin-Light の行を削除し,
/Ryumin-Light << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao/TakaoMincho.ttf) /SubfontID 0 /CSI [(Japan1) 0] >> ;
と書き改めました.これでpdvipsで生成したpsファイルや,これからps2pdfで作成したpdfファイルに埋め込まれたフォントはTakaoフォントに置き換わりました.

追記:(2010/06/05) この例では,Takaoフォントを導入済みでしたが,Takaoフォントをインストールしていない場合にはGothic-BBB-Mediumのほうもさざなみフォントがあてがわれているようです.その場合はRyuminの記述を真似て
/Gothic-BBB-Medium << /FileType /TrueType /Path (/usr/share/fonts/truetype/takao/TakaoGothic.ttf) /SubfontID 0 /CSI [(Japan1) 0] >> ;
と書いておけばよいようです.

  Asymptoteの日本語設定
Asymptoteで生成されるファイルの日本語表示自体はTeX WikiのAsymptoteの項目 にある設定をそのまま踏襲すればうまくいきました.具体的には ~/.asy/config.asy という設定ファイルを作り,その中に
 import settings;
tex="latex";
texcommand="platex";
dvips="pdvips";
と記述しました.platex の扱う文字コードがデフォルトでUTF-8になっていない場合には,
texcommand="platex -kanji=utf8";
のような記述は出来ないそうなので,エイリアスやシェルスクリプトで同様の動作をするコマンドをplatex-utf8のような名前で作っておき,それを設定ファイルに記述する必要があるそうです.

そんでもってAsymptoteで簡単な例を作ってみました.

日本語がきちんと表示されています.