情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

TeXでPDFにフォントを埋め込む(dvipdfmx) このエントリーを含むはてなブックマーク

TeXのインストールは「簡単TeXインストール@Windows」で済ませているとして、pdfにフォントを埋め込む方法をメモ。

この記事は、「TeX Wiki>dvipdfm/dvipdfmx の使い方」を参考にしました。

フォントを埋め込むとは

いろいろblogなどを見てみると、TeXから作るpdfにフォントを埋め込むという作業は、「埋め込まれていないフォントを埋め込む」というわけではなく、「フォントを指定して埋め込む」という感じで、もともとの埋め込まれていないフォントを埋め込むという意味というより、とにかく埋め込まれた状態のpdfを作るという感じみたいです。なので、この作業で埋め込んでみると、埋め込む前と後でフォントが変わったりします。埋め込まれればいいやという人には十分ですが、こだわると全く違う作業が必要になりそうです。ここでは、とにかく埋め込む方法を書いておきます。

準備

フォントを埋め込むという作業は、PDFファイルを作るときに行います。つまり、フォントが埋め込まれていないPDFを埋め込まれているPDFに変換するわけではありません

今回はdvipdfmxを使うので、まずPDFに変換する前の.dviファイルを作成してください。WinShellなら、「実行>LaTeX(F5)」で、.dviファイルが出力されるはずです。

フォントを埋め込む(英文の場合)

英文の場合は簡単で、paper.dviというファイルに対して、次のようなコマンドを実行すればOKですコマンドは、コマンドプロンプトを起動して行います

dvipdfmx -f dlbase14.map paper.dvi

見て分かるとおり、「-f」オプションに「dlbase14.map」というフォントの対応付けファイルを指定するだけです。おそらく、dlbase14.mapはディレクトリを指定しなくても読み込んでくれるはずです。ちなみに「dlbase14.map」を探してみたところ「C:\w32tex\share\texmf\fonts\map\dvipdfm\base\dlbase14.map」にあるみたいで、中身は次のようになっています。

% dlbase14.map
%
% urw fonts (in Ghostscript) are embedded for the Base 14 fonts.
% dvipdfm(x) -f dlbase14.map ... ...
%
% Courier
%
pcrr8r    8r    ucrr8a
pcrb8r    8r    ucrb8a
pcrro8r   8r    ucrro8a
pcrbo8r   8r    ucrbo8a
%
pcrr8rn   8r    ucrr8a -e 0.85
%
% Helvetica
%
phvr8r    8r    uhvr8a
phvb8r	  8r    uhvb8a
phvro8r   8r    uhvro8a
phvbo8r   8r    uhvbo8a
%
% Helvetica narrow
%
phvbon8r  8r    uhvbo8ac
phvbrn8r  8r    uhvb8ac
phvron8r  8r    uhvro8ac
phvrrn8r  8r    uhvr8ac
%
phvbo8rn  8r    uhvbo8ac
phvb8rn   8r    uhvb8ac
phvro8rn  8r    uhvro8ac
phvr8rn   8r    uhvr8ac
% Symbol
psyr      none  usyr
psyro     none  usyr -s 0.167
% Raw Symbol
rpsyr     none  usyr
% Times
ptmr8r    8r    utmr8a
ptmb8r    8r    utmb8a
ptmbi8r   8r    utmbi8a
ptmri8r   8r    utmri8a
% Raw Times
rptmr     none  utmr8a
rptmb     none  utmb8a
rptmbi    none  utmbi8a
rptmri    none  utmri8a
%
ptmbo8r   8r    utmb8a -s 0.167
ptmro8r   8r    utmr8a -s 0.167
ptmrre8r  8r    utmr8a -e 1.2
ptmrrn8r  8r    utmr8a -e 0.8
% ZapfDingbats
pzdr      none  uzdr
%
% txfonts
%
rtxptmb   tx8r  utmb8a
rtxptmbo  tx8r  utmb8a -s 0.167
rtxptmbi  tx8r  utmbi8a
rtxptmr   tx8r  utmr8a
rtxptmro  tx8r  utmr8a -s 0.167
rtxptmri  tx8r  utmri8a
rtxphvr   tx8r  uhvr8a
rtxphvro  tx8r  uhvro8a
rtxphvb   tx8r  uhvb8a
rtxphvbo  tx8r  uhvbo8a

内容はさっぱりですが、とりあえずこの中身をコピーして「dlbase14.map」というファイルを.dviファイルと同じフォルダに配置すれば同じことが出来そうです。

フォントを埋め込む(和文の場合)

日本語の場合は、はじめからこの.mapファイルを作成するのが良さそうです。次のような内容で、「wabun.map」というファイルを.dviファイルと同じフォルダに作成します。

rml   H  :0:msmincho.ttc
rmlv  V  :0:msmincho.ttc
gbm   H  :0:msgothic.ttc
gbmv  V  :0:msgothic.ttc

このファイルでは、よく見ると何となく分かるのですが、MS明朝とMSゴシックを指定して、埋め込むことになっています。ここをいじれば、他のフォントを埋め込むことが出来るんだと思いますが、具体的になんと入力すればいいかまではまだ理解していません。

そして、コマンドプロンプトを起動して、次のようにコマンドを実行します。

dvipdfmx -f wabun.map paper.dvi

実行結果では、次のように警告が表示されてしまいますが、とくに問題なさそうで、よく分かりません。

paper.dvi -> paper.pdf
[1
** WARNING ** Removed 9 null character(s) from fontname --> MS-Mincho
** WARNING ** Removed 9 null character(s) from fontname --> MS-Gothic
][2][3][4][5][6%%[ ProductName: GPL Ghostscript  ]%%
%%[Page: 1]%%
%%[LastPage]%%
%%[ ProductName: GPL Ghostscript  ]%%
%%[Page: 1]%%
%%[LastPage]%%
][7]
** WARNING ** UCS-4 TrueType cmap table...
** WARNING ** UCS-4 TrueType cmap table...

234567 bytes written

フォントが埋め込まれているかどうかの確認方法(コマンドラインからpdffonts)

フォントが埋め込まれているかどうかの確認が出来ることはとても重要です。一つの方法として、pdffontsがあります。次のようにコマンドを実行するだけです。

pdffonts paper.pdf

これを実行すると、「yes yes no」のような、yes/noの3連続がたくさん現れます。この3つのうちの一番左が「emb」という列を表しており、この列が埋め込まれているかどうかをyes/noで表してくれているみたいです。なので、「yes * *」しか無ければ埋め込まれていると言うことになり、「no * *」なら埋め込まれていないフォントがあるということになります。

フォントが埋め込まれているかどうかの確認方法(Adobe Reader)

もっと手軽なのはAdobe Readerを利用する方法で、チェックしたいpdfをAdobe Readerで開いて、「ファイル>プロパティ」で「文書のプロパティ」を開いて、「フォント」タブを見るだけです。フォントタブには、使用されているフォントがずらっと並んでいます。そして、そのフォントが埋め込まれている場合は「埋め込みサブセット」と書かれているはずで、もしそれが書かれていない場合は、埋め込まれていないということになります。つまり、全部のフォントに「埋め込みサブセット」と書いてあれば、フォント埋め込みが成功しているというわけです。

まとめ

やはり、フォントを埋め込むという作業は埋め込まれていないpdfを変換する形で実行したいものですが、今のところその方法が分からないので、とりあえずこうやっています、という記事でした。

LaTeX2ε美文書作成入門
独習 LaTeX2ε
LATEXはじめの一歩―Windows Vista/XP対応

TeX | コメント:0 | トラックバック:0 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

この記事のコメント

コメントの投稿 エントリの新旧に関わらず、極力18時間中に返信します。














この記事のトラックバック

トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。