/ / 最新

swk's log - LaTeX から PDF を作る際に Times 系フォントを埋め込む方法まとめ

2007-08-15

* LaTeX から PDF を作る際に Times 系フォントを埋め込む方法まとめ [tech] 42 users

一部の学会に原稿を提出するとき,フォントとしては Times を使い,かつそれを提出する PDF ファイルに埋め込め,などと指示される場合がある (IEEE とか IEEE とか IEEE とか).単に指示されるだけでなく,これを守らないと原稿を受け取ってもらえなかったり,ひどい仕上りで収録されてしまったりして悲しいことになる.

ところが,Times は売り物であって普通の PC には入っていないため (Windows に入っているのは Times New で別物),単純に例えば Adobe Distiller で「すべてのフォントを埋め込む」などと設定しても埋め込んではくれないのである (というか存在しないものは埋め込みようがない).

というわけで,LaTeX で原稿を書く場合に限って,Times ファミリのフォントを埋め込む方法,あるいはそれに準ずる方法を,わかる範囲でちょっとまとめてみる.


「どの段階でフォントが埋め込まれるのか」をよく考えないと頭がこんがらかるのであらかじめ整理しておこう.DVI から PDF を作る場合のフローは大別すると

  • dvips などで,いったん PostScript (以下 PS) ファイルを作って,その後 Adobe Distillerなどで PDF に変換する
  • dvipdfmx などでいきなり PDF を作る

の二つがあって,前者の場合は,DVI → PS の時点でフォントを埋め込むか, PS → PDF の時点で埋め込むかの二通りの選択があることに注意する.


本物の Times 系フォントを埋め込む (製品を買って来る)

Times ファミリのフォントは例えば Linotype などが販売している.それを買って来て適当な場所にインストールするというのが正攻法.なのだが,買ったことないので私はよく分からない.

本物の Times 系フォントを埋め込む (Acrobat Reader 3 付属のものを使う)

実は Linotype の Times フォント (など) は,Acrobat Reader のバージョン 3 以前には付属していた.今でも UNIX 用のものは Adobe の ftp サーバに置いてあるので,これを入手すれば本物の Times が手に入ることになる.ただしこれはライセンス的にはグレーっぽいのでおすすめしない.

おすすめはしないが一応手順を書いておくと:-),まず

をダウンロードしてきて展開する.中に READ.TAR があるのでさらに tar で展開すると fonts というディレクトリがあって,その中にいわゆる基本 14フォント (Times,Helvetica など) が pfa と呼ばれる形式で置いてある.

とりあえず Times ファミリだけでよければ,

  • Times-Roman
  • Times-Italic
  • Times-Bold
  • Times-BoldItalic

の 4 つを取り出しておく.これをどこか適当なフォルダにおいて,そのフォルダを Adobe Distiller の [設定]-[フォントの場所] に追加しておく.

以上のようにしておけば,

% dvips -Ppdf hoge.dvi

のようにして普通に作った hoge.ps ファイルを Distiller にかけることで Times が埋め込まれるようになる.-Ppdf オプションで作った PS ファイルには基本14フォントは埋め込まれず,/Times-Roman とか /Times-Italic とかのフォント名だけが書き込まれている.Distiller がこれを見て,必要なフォントを埋め込むことになる.

同様に,dvips とか dvipdfmx とかがこのフォントを使うようにも設定できると思うけど,面倒なのでパス.

(参考) http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/23063.html

Times クローンのフォントを埋め込む (dvips 時)

多くの LaTeX のディストリビューションには,Times のクローンフォントが付属して来る.(URW)++ Design & Development の Nimbus Roman No9 L なるフォントファミリらしい.

teTeX 2.x 以降の場合 (UNIX の場合),

% dvips -Pdownload35 hoge.dvi

とすれば hoge.ps にこれらのフォントが埋め込まれる.W32TeX (Windows) の場合は download35 が無いようなのだけど

> dvips -Pdl hoge.dvi

でよいだろうか.

上記の方法がダメな場合 (インストールされている LaTeX ディストリビューションのバージョンが古い場合など) は,

のようにするとうまく行くかも知れないらしい.

なお,これらの方法で作成した PDF のフォントのプロパティを Acrobat で見ると,フォント名はしっかり NimbusRomNo9L とかになっている.なので, IEEE の指示である「Times を使え」に,厳密には従ってないのではないかという一抹の不安が頭をよぎるが,気にしない方が健康によい.(そもそもクローンを使うという選択をした時点でわかり切ったことである)

Times クローンのフォントを埋め込む (dvipdfmx 時)

W32TeX (Windows) の場合,

> dvipdfmx -f dlbase14.map hoge.dvi

で,Nimbus Roman No9 L が埋め込まれた hoge.pdf ができるようだ.UNIX でこれに対応する方法があるのかどうかはよくわからない.

(追記 2007-08-16) UNIX の場合,

% dvipdfmx -f dvipdfm_dl14.map hoge.dvi

でよさそうです.(追記ここまで)

Times クローンのフォントを埋め込む (distiller 時)

さて,このクローンフォントを PS → PDF 時に埋め込むことはできないのだろうか.これができれば,PS ファイルしか手元にない場合も Times を埋め込んだ PDF を作れるようになるはずだ.

dvips -Ppdf などで普通に作った PS ファイルには,前述のように /Times-Roman とか /Times-Italic とかの名前だけが指定されている.クローンフォントは名前が違うので,そのままでは Distiller は埋め込んでくれない.

じゃあ,名前変えればいいんじゃね?

というのが自然な発想である.手段は二通りあって

  • PS ファイルの中に現れる Times-Roman 等を Nimbus なんとか等にごっそり置換する
  • フォントファイルの中に現れる Nimbus なんとか等を Times-Roman 等に置換する

前者は難しくないと思うので読者にお任せする.(文章本体に「/Times-Roman」とかの文字列が出て来る場合のことを考えなくていいのか? という心配はあるけど…)

で,後者だが,最初は単純にファイルの中に出て来るフォント名を機械的に置き換えればいいのかと思ってやってみたのだが,うまくいかない.もうちょっと真面目にいじる必要があるようだ.

必要なものは,まず Nimbus Roman No9 L のフォントファイルそのもの.多くの LaTeX のディストリビューションに

  • utmr8a.pfb (Times Roman 相当)
  • utmri8a.pfb (Times Italic 相当)
  • utmb8a.pfb (Times Bold 相当)
  • utmbi8a.pfb (Times Bold Italic 相当)

という名前で含まれているのでそれを用意する.手元にない場合,例えば CTAN だと

にある.次に,これらのフォントファイルを操作するために t1utils (http://www.lcdf.org/type/) をインストールしておく.FreeBSD の ports だと print/t1utils にある.

これで準備ができたので,上記の pfb ファイルを t1disasm で逆アセンブルし,フォント名を置き換えて,t1asm で再びアセンブルし直せばよい.例えばこんなスクリプトを用意して

% ./fake_times.pl utmb8a.pfb utmbi8a.pfb utmr8a.pfb utmri8a.pfb

と実行すると,fake_times_utmb8a.pfb などの 4 つのファイルが生成される.これをどこかにおいて Distiller の [設定]-[フォントの場所] に追加してあげればよい.

このようにして作成した PDF ファイルは,Acrobat でフォントのプロパティを見ても Nimbus なんとかの名前が出て来なく,本物の Times が埋め込まれているかのように見えるようになる.

ただし,たぶんこの方法もライセンス的にグレーというか,少なくとも Linotype の商標権は侵害していることになる気がするので,良い子は真似してはいけない.(← じゃあ書くな)

IEEE PDF eXpress を使う

で,長々と述べておきながらちゃぶ台をひっくり返すのだが,投稿先が対応しているのであれば,IEEE PDF eXpress を使うのが一番楽かも知れない.

PS ファイルをアップロードすれば,PDF に自動的に変換してくれる (試したことないけど TeX のソース一式を送ってもよいらしい).フォントのプロパティを見ると Times-Roman とかになって埋め込まれているので,おそらく IEEE が正規にフォントのライセンスを購入しているのだろう (知らんけど).

投稿先の会議とかが対応してくれないと使えないのが難点だが,要するに Conference ID を入れればよいだけなので,その時期に投稿締め切りがありそうな適当な会議のうわなんだおまえやめr


以上,夏休みの自由研究でした.

関連記事:
[2010-09-19-1] PowerPoint から LaTeX 用の EPS ファイルを全自動で生成する
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [gnjuAniTA] modafinil online pharmacy http... (2019-02-16 22:39:33)

* [bsfGrall] canadian pharmacy online http... (2019-02-16 09:30:42)

* [nsgxThync] canadian pharmacy meds http... (2019-02-16 05:20:29)

* [btdzicevy] online canadian pharmacy http... (2019-02-16 00:20:12)

* [htrblaphy] online canadian pharmacy http... (2019-02-15 23:29:17)

* ...

最終更新時間: 2010-09-19 06:14


Shingo W. Kagami - swk(at)kagami.org