Diary?

2007-09-02
Sun

(16:20)

理想のフォントのお話、あるいは FontForge でオリジナルフォントをでっち上げるまで。

俺は基本的にフォントは Bitstream Vera Sans Mono か M+ と IPA の合成フォントを使っていた。コードを書く分には Bitstream が優れていて、日本語の表示にはやはり M+ の方が良い。本音を言えば半角英数字記号は Bitstream で日本語が M+ だといいんだが、残念ながら M+ と IPA の合成フォントのうち Bitstream を使っている奴は半角英数字の幅が狭められていてしまって若干視認性が悪い。つまり、ちょうどいいと俺が思っているものが無い。

そこで俺は Bitstream と M+ と IPA の合成フォントをさらに合成して新しいフォントを作ろうと思ったわけよ。フォント作成のためのツールとしては FontForge を選んだ。というか他の奴を知らないだけなんだけど、まあいいか。

この FontForge には独自のスクリプト言語を用いた処理機能があって、文法及び仕様には正直どうかと思うものの、フォントの合成や変換などの処理を行うことが出来る。とりあえず俺が書いたのは次のようなスクリプト。動かす際には、このスクリプトと同じディレクトリに対象のフォントファイルを置いておくこと。

#!/usr/bin/fontforge -script
Open("M+2VM+IPAG-circle.ttf")
SelectAll()
foreach
  Scale(200, 200, 0,0)
endloop
Generate("temp.ttf")
Close()
Open("VeraMono.ttf")
SelectAll()
foreach
  Scale(110,100, 0, 0)
endloop
MergeFonts("temp.ttf")
SetFontNames("IPAVM-Regular", "IPAVM", "IPAVM Regular", "Regular", "")
Generate("ipavm.ttf")
Close()

最初はもっと単純なコードだったのだけど、その時は M+ と Bitstream を単に合成すると日本語フォントがかなり小さくなってしまうという問題が発生。なのであらかじめ M+ を拡大して保存し、その後 Bitstream と合成している。ところでこの FontForge のスクリプト言語では、どうも Open で開いたフォントがカレントフォント (Perl の $_ みたいな奴) に設定され、それに対して処理を行うらしい。ちなみに俺はこういう仕様が嫌いだ。

これで一応は出来たのだけど、気にくわないことが一つ。三点リーダがダメダメなのだ。恐らく Bitstream Vera Sans Mono には三点リーダが含まれていてそれがダメなのだろうと思って調べようとしたのだが、膨大なフォントから三点リーダを探すのは俺には無理。よってユニコード番号から当たりをつけていくことにした。

$ python
>>> unicode("…")
u'\u2026'

三点リーダのユニコード番号がわかったので、 FontForge を起動して大体多分そこら辺と思われるところを探して、三点リーダを Bitstream より削除。その後上記のスクリプトを走らせて、ようやく目的のフォントを作成できた。

それにしてもフォントって面倒くさいなあ。こんな基本的なフォントの合成だけでも調べないといけないことが結構あったけど、もっと高度なフォント処理とか自分でフォント作成とかしてる人は相当苦労してるんだろうな。俺にゃとても真似できないな。

(21:15)

友人のサイトに突然アクセスできなくなって (403 で弾かれる) どーしたんだろーなーと思って、ちょっとその友人の使ってるレンタルサーバであるロリポップについて調べてみた。そしたらテメー、 Linux 用の英語版 Firefox はアクセス禁止だと!? どうやら UA に英語版かつ Linux と思われる文字列が入っているとアウトらしい。

一応 general.useragent.locale の値を書き換えてどうにかしたけど、まったくなんだよこのクソ会社は。ロリポップ側は SPAM 対策のつもりらしいけど、 User Agent で対策するってのはなんかアドホック過ぎないか? どう考えても抜本的な対策ではないだろ。そういや Wikipedia も同じようなことをやってたな (こっちは Python の urllib の UA とかだった)。まあ Wikipedia の方は単に負荷を軽減したいだけなのでまだわかるが、同じことを SPAM 対策でやるって神経が信じられないな。

(21:59)

Gentoo の portage に python 2.5 が上がってきた。って、大丈夫なんだよな、これ。

で、 emerge しようとしたら python-updater を落としてこれなくてがっかり状態に。Gentoo の Bugs 見たらどうも何か問題が起きて修正してる最中っぽいので、それなのかな。ってか、今日ちょうど問題が報告されてるし。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。