2010年2月17日水曜日

フォントを編集

準備

fontforge は OpenSolaris のパッケージリポジトリに入っていないようなので、 自分でバイナリを構築します。関係者の方々に感謝!!
http://fontforge.sourceforge.net/ より、fontforge のソースコードを入手。 適切な場所に展開し、構成、構築、インストール。(実際にはインストールする前に動作確認をしますが…)
$ bzip2 -d -c fontforge_full-20090923.tar.bz2 | gtar xf -
$ cd fontforge-20090923
$ ./configure --prefix=${PATH_TO_DESTDIR}
$ gmake
$ gmake install
OpenSolaris snv_132 ja_JP.UTF-8 環境では入力方式との絡みで落ちるので、 シェルスクリプトをかませて起動するようにします。
LC_CTYPE=C exec PATH_TO_DESTDIR/bin/fontforge "$@"

編集

システム標準の日本語系フォントは /usr/share/fonts/TrueType/ipafont/ にあります。
$ ls /usr/share/fonts/TrueType/ipafont/
fonts.dir    ipag.otf     ipagp.otf    ipam.otf     ipamp.otf
fonts.scale  ipag.ttf     ipagp.ttf    ipam.ttf     ipamp.ttf
一般ユーザの権限で fontforge を実行し、ゴシックフォントを編集します。
$ fontforge /usr/share/fonts/TrueType/ipafont/ipag.ttf
 

このウィンドウは自動的に閉じるようです。


警告メッセージのようですが無視します。


このウィンドウで編集したい文字を探し、その文字をダブルクリックします。


このウィンドウで編集するわけですね


レイヤーを操作するのでしょうか。使ったことがありません。


道具箱と呼んでいいのでしょうか。何をするかここで決めます。

編集方法は体で覚えるしかないのですが、微調整は数字を直接入力しました。 道具箱で矢印を選び、エディタ上で点を選択して右クリック。 メニューから「情報を得る…」を選択。

「同じ輪郭上の前の点」「同じ輪郭上の次の点」などを使用して前後の点の位置を確認し、 「基点(B)」の数値二つを編集します。
曲線部分の曲がり具合を微調整するには、「前の制御点」「次の制御点」の数値を変えます。

保存

できあがったフォントを保存する前には、フォントの名前を変更します。 「エレメント」->「フォント情報」で設定します。

「名前」では、「フォント名(N)」、「ファミリー名(F)」、「表示用の名前(S)」を変更します。

「TTF名」では、 「日本語」の「ファミリー」、「日本語」の「UniqueID」、「日本語」の「フルネーム」、 「英語(アメリカ)」の「UniqueID」を変更します。
そして「OK」。
「ファイル」->「ファイル名を指定して保存」。
続いて、「ファイル」->「フォントを出力」。

「TrueType」を指定し、「Validate Before Saving」を解除します。 どこかに問題があるようで、検証を行うとフォントを出力できません。
出力したフォントは ${HOME}/.fonts に置くと、使うことができます。 「システム」->「設定」->「外観の設定」->「フォント」の選択肢に出てくるようになります。 また OpenOffice でも選択できるようになります。

余談

入力方式がらみで落ちたときに生成される core ファイルの情報。
$ pstack core
core 'core' of 3979: ./fontforge
 fe325005 _lwp_kill (1, 6, 8045e0c, fe2cbbde) + 15
 fe2cbbea raise    (6, febc5bb4, 4000140, c8) + 22
 feba9c0e myerrorhandler (83b4090, 8045f44, 20, fe6f159e) + ca
 fe6f1696 _XError  (83b4090, 8046024, 20, fe6d514e) + 106
 fe6d5541 _XReply  (83b4090, 8046024, 0, 1) + 401
 fe6daede XSync    (83b4090, 0) + 72
 fdd56686 JcxsoS_SendProc (dacdc60) + 3e
 fdd565f4 JcxsoS_PushMessage (dacdc60, dc81ee0) + 5c
 fdd5408e SocmnS_SendToAtokAuxd (844b030, dad3d08, 1, 5c, 5, dad4828) + 2f6
 fdd52779 SocmnS_Draw (dad3d08, 80461d0, 0, fdea1a11) + 131
 fdea1a65 IIimpAuxDraw (8652f80, 8659428, 0, fde9ead1) + 61
 fde9f933 IMProcessIncomingEvent (8652f80, 86590c8, 4000140, 0) + e73
 fde9fb5d IMChangeFocus (8652f80, 0, df6f898, fde93f30) + a1
 fde93f5b _Ximp_Local_UnSetFocus (8652f80, fde91fe4, fde920d4, fded0b10) + 37
 fde95ad0 SWITCH_DestroyIC (8652f80, 4000140, fdeb0888, 8652f80) + 5c
 fdeb1262 DestroyIC (8652f80, dcafb10, dcafb10, fe70fada) + 52
 fe70faf1 XDestroyIC (8652f80, febd91f8, 8046718, febb2253, 4, 8046690) + 21
 febb22a7 dispatchEvent (83b4090, 8046740, 80467b8, febb2f9f) + c87
 febb2fb4 GXDrawEventLoop (8440520, 1, 0, feb5f935) + 4c
 feb5f968 GDrawEventLoop (0, 0, 0, 9, 0, feffb2e0) + 40
 0819cfe9 main     (1, 80478bc, 80478c4, 81b0ec0, 0, 0) + c91
 0807eb7f _start   (1, 80479ec, 0, 8047a04, 8047a33, 8047a61) + 83

余談その弐

最初、fontforge を試したときにうまく動かなかったので、 Windows 7 と Ubuntu も試してみました。
当然、Windows 7 は OpenSolaris 上の VirturlBox で動かします。 Windows 7 の標準のフォントエディタを起動してみると、 残念、ビットマップフォントしか編集できないみたい? ちょっと弄って見ましたが、早々に諦め。
続いて Ubuntu。こちらも OpenSolaris 上の VirturlBox で動かします。 標準では fontforge は入っていないのですが、 apt-get でさくっとインストールできました。 感謝感謝。 OpenSolaris で使用しているフォントと同系統のものもあります。
$ ls /usr/share/fonts/truetype/ttf-ipamonafont
ipag-mona.ttf ipagp-mona.ttf ipagui-mona.ttf ipam-mona.ttf ipamp-mona.ttf
フォントの字形の編集は(試行錯誤しつつも)問題なく終了。 OpenSolaris 上に持って行き、 ${HOME}/.fonts に置いて、 OpenOffice.org から参照でき、印刷できることも確認。 すべてがうまくいっていると思っていました。
ところが、ふと見ると、デスクトップのパネルのフォントがみすぼらしいことに気づきました。 よくわからないままいろいろなものを見ていると、 gnome-terminal のフォントも変ですし、 FireFox も変です。
試しに字形を変更した文字を表示させてみると、変更されていました。 OpenOffice.org 内だけで有効だと思っていたのですが、 なぜかデスクトップ全体に有効になっていたようです。 「システム」->「設定」->「外観の設定」->「フォント」では設定を変更していないのになぜ…
仕方がないので、OpenOffice.org で使う作業が終わった後、 ${HOME}/.fonts を別の名前に変更してログインし直し。 とりあえずの問題は解決しましたが、なぜこうなったのかは今も謎です。
ちなみに、今は OpenSolaris のフォントを編集し、 ${HOME}/.fonts に起きっぱなしにしています。 元々同じフォントなので、パネルとかに使われても見た目には問題ありません。 ただ、時々編集した文字を表示させて確認していますが、 今のところその文字は編集されていない標準的な字形で表示されています。

0 件のコメント:

コメントを投稿