コンピュータ

FontForgeを使ってみた

フリーのフォント編集ソフト FontForge を Mac にインストールしてみた。直接の動機は Comic Sans MS フォントのアルファ (α) がラテン文字のエー (a) と区別つかないのを何とかしたいということ。いや,こんなコミカルなフォントをTeXの数式フォントにしなければいいのだが,CTANからcomicsansパッケージをダウンロードしたら,存外良さそうだったので。

FongForge on Mac OS X

このFontForgeは,もともとUNIXのソフト。だから,マック上というよりは X11上で動く。初め最新のパッケージをインストールしたのだが,X11のライブラリーが不足しているとかで起動できなかった。どうも最新のはMac OS X 10.4 以上でないとダメみたい。そこで,少し前のパッケージを入れてみた。基本的にベジェ・スプライン曲線で輪郭を作るわけで,Metafontと原理は似ている。画面上でコントロールポイントをいじるのは面白い。慣れないと思い通りにはならないが。いや,これは楽しい作業だ。

Comic Sans の埋め込みに成功したが・・・

あれこれやっていたら成功したので 😉 どこがポイントなのかイマイチ不明だが,メモ。

前回失敗した原因は多分2つ。ひとつはMapファイルがpdfTeX用(dvipsと同じか?)であったこと。もう一つが納得できないのだが,dvipdfmxがMapファイルを読めてなかったこと。正確に言うと,updmapしたのに認識されてなかったこと。直に dvipdfmx.cfg に f comicsans.map と書き込んだら上手く行った。おまけに,Type 1 に変換せずとも TrueType のままでも埋め込めることまで判明。あー無駄な作業しちゃったなあ。

updmap-sys –enable Map=comicsans.map とやればそれでOKだと思っていたが,違うのかな?
/texmf/web2c/updmap.cfg には追加されていたが,dvipdfmx.cfg には反映されてなかった。

よく分かってないが,ともかく dvipdfm(x) 用の書式に合わせて,
rcomic8r 8r ComicSansMS.ttf
のように「TeXでのフォント名,エンコーディング,フォント本体」を並べて Map ファイル comicsans.map を作り,これを dvipdfmx.cfg に登録すれば,とりあえずはOKみたいである。根本的理解はしてないので不満が残るが。

MacPorts

TrueTypeフォントをPS Type1に変換するためのツール ttf2pt1 をインストールしようとFinkで探すがない。あちこち探すと MacPorts でインストールできるらしい。単独のインストールもできるみたいだが、良い機会なので MacPorts をインストール。Finkのイメージでもっと親切かと思っていたら、えらい違い(笑)。GUIはまったくなし :mrgreen:

パッケージをインストールしたら、まずPATHを通すために .bashrc に

export PATH=/opt/local/bin:/opt/local/sbin/:$PATH
export MANPATH=/opt/local/man:$MANPATH

を追加。bashを再起動して

$ sudo port -d selfupdate
$ sudo port -d sync

これでインストール準備完了。ttf2pt1を探すには、

$ port search ttf2pt1

ちゃんとあることを確認したので、インストール

$ sudo port install ttf2pt1

以上で終了。

Comis Sansの埋め込みに失敗

CTANからComis Sansパッケージをダウンロードしてインストール。texhashもupdmapもちゃんとして実験。dviファイルは作られるが,dvipdfmxでPDFに変換中にエラー。

** ERROR ** Unable to find TFM file "ComicSansMS"

試しに日本語TeXではなく,欧文専用のpdfTeX (dviを経由せずに直接PDFを生成するもの) でコンパイルすると,とくにエラーもなくPDFが作られる。ということは,基本線は間違ってないはず。しかし解せないのは,メトリックファイル(TFM)が見つからないというエラーの意味。TeXのコンパイルは出来ているのに・・・。dvipdfmx が変換時にどういう情報を必要としているのか,調べる必要があるなあ。

Windowsの自己解凍ファイルをMac OS X で開く

MS Comic Sans というフォントをMac上のTeXから使うためのメモ。フォント自体はMacにもインストールしてあるが,ファイル形式が Font Suitcase なので,拡張子が ttf の普通の TrueType フォントが欲しい。変換ツールが見つからなかったので,フォントをダウンロードすることにした。

An easy way to install Microsoft’s TrueType core fonts on linux

Download Microsoft Core Fonts

Windowsのフォントは自己解凍形式で comic32.exe という実行ファイルとしてしか入手できないみたいだ。しかし,これを他のプラットフォームで解凍するためのツール CabExtract (Extract Cabinet Fileということかな?) がある。

cabextract

Mac OS X には,Finkのパッケージがあったので,Fink Commander からインストール。シェルから

$ cabextract comic32.exe

とすれば,comic.ttf と comicbd.ttf の2つが生成される。

日本語フォントをPDFに埋め込む実験

このところ,Windows版TeXでの実験ばかりだったが,Mac OSX にはもともとヒラギノという美しいフォントが付属しているわけで,これを使わない手はなかった。ということで,埋め込みの実験。実は,utfパッケージを拡張した otfパッケージを使えば,自動的にヒラギノが埋め込まれる。しかし,それ以外にも埋め込みたいフォントがあるので,仕組みを理解しておきたいのであ〜る。

参考にしたのは,otfパッケージを作成された齋藤修三郎さんのサイト LaTeX2e的 と 具体的な事例が紹介されている MacPorts の pTeX における和文多書体環境の整えかた というページ。作業は意外と簡単だったが,忘れないうちにメモ。

とりあえず,ファイル群はすべてカレントに置いて実験。本格的に使うときは,適切なディレクトリーに置いて,texhash すること。

まず,フォント本体をダウンロード。今回は cinecaption.otf というOpenType Font を使う。jis.tfm あるいは otfパッケージの tfm ファイルをコピーして cinecaption.tfm なるメトリックファイルを作る。今回は otfパッケージのをコピーした,あとで縮尺するのだが,jis.tfmと違い,0.92469倍にすることに注意。

次に,vf (Virtual Font) などを作る。makejvf を使って,cinecaption.vf と cinecap.tfm を生成する。作り方は

% makejvf cinecaption.tfm cinecap

さらにマップファイルを作る。次の内容を cinecap.map というファイルに保存する。

cinecap H cinecaption.otf

最後に,このフォントを使うためのマクロ。とりあえず,sample.tex というファイルで実験。プリアンブルの部分に次のような記述をする。


\makeatletter
\DeclareKanjiFamily{JY1}{cinecap}{}
\DeclareFontShape{JY1}{cinecap}{m}{n}{<-> s * [0.92469] cinecaption}{}
\newcommand{\cinecapdefault}{cinecap}
\DeclareRobustCommand\cinecapfamily{%
  \not@math@alphabet\cinecapfamily\relax
  \kanjifamily\cinecapdefault\selectfont}
\def\textcinecap#1{\relax\ifmmode\hbox\fi{\cinecapfamily #1}}

これで,コンパイルすれば,sample.dvi ができる。これを PDF に変換する際には,マップファイルへの参照が必要となる。本格運用時は cid-x.map に書き込んで updmap するが,今回は実験なので dvipdfmx が読み込むように,オプションで指定する。

% dvipdfmx -f cinecap.map sample.dvi

以上でフォントがちゃんと埋め込まれているのを確認。

TeXマクロメモ

理由がよく分からないのだが,とりあえず動いたのでメモ。

丸数字(数字を○で囲んだもの)を実現するマクロ \Maru{数字} を適当に組んで使っている。あちこちのサイトや書籍で紹介されているのと基本的には同じで,数字と○を重ねて表示する。それはそれで良いのだが,utfパッケージを利用して,ヒラギノフォントなどで使える本物(?)の丸数字を使おうと

\def\Maru#1{\ajMaru{#1}}

などとマクロを組んでいたのだが,相互参照でうまく行かない。数式番号として丸数字を使うマクロを組んでいるのだが,\eqref{hoge} で hoge というラベルを付けた数式番号を表示しようとするとエラーになってしまう。一回目のLaTeX処理ではまだ hoge が何番か分かってないので,hogeを参照するマクロ \r@hoge は未定義(つまり \relax と同じ値)。そこで,未定義の時は■を出力し,定義されているときは丸数字を表示させようと,

\def\eqref#1{%
  \expandafter\ifx\csname r@#1\endcsname\relax
     \hbox{■}%
  \else\Maru{\ref{#1}\fi }

と定義した。\Maru の定義が以前のものだと問題なく動くのだが,\Maru を \ajMaru を呼び出す形だと,何故かエラーになる。どうも引数が数字と認識されてない様子。あれこれ試したけどダメ。最後にままよ,とカウンター変数を使って次のようにしたらうまくいった。

\newcount\eqcounter
\def\eqref#1{%
  \expandafter\ifx\csname r@#1\endcsname\relax
     \hbox{■}%
  \else\eqcounter=\ref{#1}\Maru{\the\eqcounter}%
  \fi}

しかし,何故これで上手く行って,それまでのマクロはダメなのか,理解できていない。要は,きちんと数字を渡せれば良いはずなのだが。

メモリー増設したいけど

かみさんのVAIO、初期状態に戻したはいいが、やはり動作が・・・。まあ、Firefoxでタブを10個も広げてる 😉 ワタシも悪いのかもだが。実メモリーと仮想メモリーがどうなっているのか分からないのだが、とにかくメモリースワップが頻繁なのだ~。で、メモリー増設しようと思うのだが・・・

取説を読むと、純正品の VGP-MM512L を2枚刺すことで、最大1Gバイトまで増設できる、とある。うーん、そんなものなのかあ・・・と、しょぼ~ん。ままよ、と検索すると、何と1枚35000円もするではないか。が~ん。そんな~。きょうび、メモリーの値段はどれりゃあ下がっているのではなかったのか?

ハードウェアは全然詳しくないので、うかつに使えないものを買うのが怖い。情報が欲しいところ。VGP-MM512L を調べたところ、DDR2、SDRAM とか書いてある。これが規格?この意味も分からないのだが、そういう規格でいいのなら、ちょっと調べただけでも1枚5000円ぐらいで買えそうなのだが。できれば、1枚あたり1Gぐらいのを2枚刺して、2Gバイトと行きたい気分なのだがなあ。それって、OSがちゃんとついて行けるのかなあ。そもそも、メモリースロットの形状とかは、ちゃんと互換性あるんだろうねえ。昔のアップルみたいに、規格がどんどん変わっていて、今のメモリーは刺せません、とか無いだろうねえ。

いろいろ心配で、どれを買ったら良いのか、さっぱり分からない。量販店のお兄さんに聞いても分からないだろうしなあ。ディープな店には入りたくないしなあ(爆)。

[ 追記 ] ソニーのサイトで調べたら、次のページにたどり着いた。

VAIO | type F light

そうそう、かみさんのVAIOはこのタイプ。CPUとかメモリーとかを選んで注文したっけ。このページによれば、「DDR2 SDRAM、DDR2 400対応、デュアルチャンネル転送」というものを選べば良さそう。最大2GBと書いてあるから、1GBを2枚は可能ってことだよね。あとは、どこで購入するかだなあ。

dvipdfmxで日本語フォントの埋め込み実験

ポータブル化とはあまり関係ないが、出来上がりのPDFにフォントが埋め込まれてないと、印刷時の環境に依存してしまう、ということで、日本語フォントの埋め込みの実験。フリーのIPAフォントというのを入手してきて、やってみた。

正式には、mapファイルやフォント関係を適切なディレクトリーに配置するべきだが、とりあえず実験ということで、文書と同じディレクトリーに mapファイルとTrueTypeフォントを置いた。IPAフォントを解凍して、すべてをカレントディレクトリーに配置。次に、

rml   H      ipam.ttf
rmlv  V      ipam.ttf
gbm   H      ipag.ttf
gbmv  V      ipag.ttf

なる内容を、例えば IPA_font.map という名前で保存する。そして、コマンドラインから

> dvipdfmx -f IPA_font.map sample.dvi

とすれば、IPAフォントが埋め込まれた sample.pdf が作られる・・・のだが、何故か警告が。

** WARNING ** UCS-4 TrueType cmap …

という警告メッセージが出るのだが。これは無視して良いのかな?