今フリーフォントを考える

 大上段なタイトルを構えてみたが、実際のところ、なにかを考えた訳では無い。というか、なんも考えてない。
 最近、微妙に日本語フォント製作が活発化しているような印象を受ける。VLGothicはこれまでのさざなみフォントよりはかなり綺麗だし、潮待フォントもパーツの自動合成作業が進められている。そこで、フリーフォントの作成環境についてちょっと調べてみた。
 まず、VLGothicはFontforgeで全部手作業で作成されているものと思われる。作業量は膨大であるが、一番確実に成果が出せるタイプだ。
 次に潮待フォントであるが、これはもともとinkscapeを使って手作業で作成されたSVGをTTFに変換していたが、最近ではそのSVGを生成するためのパーツ部品をSVGで作り、パーツからSVGを生成するという方向に進んでいる。より正確には、ビルド時にSVGの各パーツのラベルにパーツ名が入れてあって、そのパーツ名を持つパーツで置換するという形になっている。このやり方ではパーツ同士の位置関係はどうやって処理しているのかが気になるが、まだ試していない。
 両者ともものすごい作業量で、気が遠くなりそうだ。たぶん、手数を惜しんでいるようではフォントは作れないのだろう。しかし個人的にはそこまでの気合いは入れられないので、別の方向からなにかできればいいなと思う。
 というわけで、CommonLisp版和田研フォントキットをいじってみた。実はこれまでも何回かCLWFKにはチャレンジしてみたことがあるのだが、フォントの作成が出来たことはこれまで一度もない。大体はtracecontがstack overflowを起こしてしまうバグがどうしても取れずにあきらめる(ネットで情報を漁ると、倍精度で計算できていればとりあえずビルドできるみたいなのだが、なぜかうまくいかない。)のだが、CLWFKの方で重複除去を行う必要は無いという事に気づいた。out-to-sfd-allに:remove-overlap nilというオプションを付けると重複除去は行わないようになるようだ。これでとりあえずビルドできる…!!と思ったのだが、以下のようなエラーを吐いてビルドに失敗する。

; Error in batch processing:
Argument X is not a NUMBER: NIL.
1-72-83 make: *** [Sznm-G-K.sfd] エラー 1
 これだけのエラーは何が何やらわからないので、エラーの出ている1-72-83というグリフを以下のようにして出力してみる。
(out2sfd
 (skeleton2list (normkanji (rm-limit (applykanji 1-72-83 'gothic))) 'gothic)
 1024 880)
 結果は長いので出さないが、何の問題もなく出力できてしまった。なんでエラーにならないのか。頭が痛くなってくる。そもそもArgument Xってなによ。せめてどこの関数で使われてるもんなのかぐらい表示しなさいよ。  この字は補助漢字のようなので、とりあえず補助漢字を作らないようにコメントアウトして、やっとフォントが作成できた。ほんと、どうやってさざなみフォントは作られているのか、さっぱりわからない。普通にmakeできるのかしら。  というわけで、いつもと大差ないところで挫折したので記録に記しておく。  (追記:)skeleton2listの中でエラーが起こってるところまでは確認した。どうもcrosspointで(linecross line0 line2)に与えられるline0とline2が正しい場合と全然違う値になってるみたいだ。