アーカイブ

2006年 4月 14日 のアーカイブ

試行錯誤でまたちょっと進展したが、それは良い成果を出してはいなくて、
むしろ、今やろうとしてることは無理だと言うことだけを裏付ける。

ともかくBitstream Vera Sans Monoを、MSゴシックにリンクする作業は、
強引にいろんな事をすれば出来ると言えば出来るので、その方法と結果を書いておく。
FontForgeで読み込んで、そのまま書き出したときのまずい点を二つ、無理矢理修正した。
あたしゃ日本語化はしてないので、操作方法は英語で書く。
一つは、トルコ語と認識されちゃう問題。これは不要なグリフを削除すれば良いみたい。
VeraMono1.ttfを読み込み、Encoding>Reencodeで、Latin1を選択する。
これをやることで、Latin1の順番で並べ替えてくれるので、
Latin1に属さないフォントは、U+00FFより後に並ぶからまとめて選択しやすい。
実際は、U+00FFの次に.notdefという四角いグリフが来ているので、そこまでが必要で、
それ以降の、十字架みたいなマークから以降全てを選択する。
で、Encording>Detach&Remove Glyphsを選択すると、そこいらが空っぽになる。
さらにEncording>Remove Unused Slotsで、空の器を削除する。
これで一つめの作業は終わり。
この後にやる作業のために、Encording>ReencodingでOriginalを選択しておく。
次に、フォントが等幅扱いされなくなることと、たとえ等幅でも縦横比が合わない点を一度に解決。
全てを選択して、Metrics>Set Widthで、ダイアログを開き、幅を1024に設定する。
これは、このフォントが高さ2048だから、その半分を全グリフの幅に設定ってことであって、
MSゴシックが高さ256に幅が128という作りだから、それに習っただけ。
あとはTrueTypeとして書き出して完成だ。

で、完成したフォントはどんなものかというと、上記に書いた作業で想像出来るとおり、
BitstreamからLatin1に属さないグリフを削除し、字間をぐっと狭めたものだ。
狭めたというか、ほとんどの文字は割り当てられた幅からちょっとはみ出ているため、
もう密着しちゃって全然読みにくい。
それでもMSゴシックと同じ縦横比に無理矢理に収めれば、ちゃんとリンクできることがわかった。

とにもかくにもわかったことがあって、MSゴシックとリンクさせるなら、
縦横2対1じゃなきゃダメで、そうじゃないものでも無理に2対1に修正できるけど、
ちょっとの修正なら大丈夫だけど大きく修正だと見にくくなるから全然ダメで、
それよりははじめから縦横比が2対1か、それに近いフォントが良いんじゃないのってことね。
たまには画像も。
画像

追記:
フォントの器だけでなく、フォントそのものも一括で幅を変えれた。
幅を75%にし、そしたら縦長過ぎたので高さも90%にしてみた。
Delphiでも使えるようになってメデタシだが、詰めすぎて大文字Mとかが見にくいからダメだ。
画像
Mが潰れるくらいなら、多少字間が狭い方に調節し、幅85%、高さ90%でリンク。
これが今のところ一番いい具合かな。
画像
で、今更気づいたんだけど、9ptはこれで良いけど10ptだと2対1でもダメっぽいな。

さて、うまくいったように見えたフォント話の続き。
今使いたいのは、Bitstream Vera Sans Monoである。
アウトラインでも綺麗だし、等幅で似た字と間違わない良いフォントだ。
これを普通にWindows XP に入れると、日本語部分は全然等幅じゃない。
おそらくMS PゴシックかUIゴシックで表示されているのだろう。
プロポーショナルフォントに対応したソフトでなら、英語部分さえ等幅なら問題ないが、
等幅フォントにしか対応してないDelphiのエディタでは、日本語で書いたコメントが見にくい。
所々で字間が大きく空いたりしている。

よって、MSゴシックとフォントリンクさせることで、ちゃんと等幅にしようとすると、
MSゴシックにはBitstreamと縦横比が同じビットマップが入っていないのか、
日本語部分は汚いアウトラインになってしまう。
そもそも求めているフォントは9pt以下なのだが、それをアウトラインで綺麗に出せるのは、
画数の少ない欧文ぐらいなので、日本語部分はビットマップで表示したい。
Delphiではさらに悪いことに、このフォントは使えないらしく、
ダイアログで選択できるのに、選択しても勝手にデフォルトのMSゴシックに戻されてしまう。

そこで、FontForgeで内部のどこかをいじれば、
Delphiでもうまく使えるかもだし、MSゴシックのビットマップとリンクできるかもだしと、
あっちこっちイジって試してみたのだが、実はどこもいじらなくても、
BitstreamをFontForgeに読み込んで、そのまま書き出せばビットマップとリンクできたのだ。
しかし、このフォントリンクは失敗であるということがわかった。
せっかくMSゴシックのビットマップとリンクできたのに、
全角文字が半角文字の倍の幅になっていない。
これじゃ等幅とは呼べないし、現にAPIでフォントをリストアップすると等幅とは見なされていない。
Bitstreamに幅の違うMSゴシックをリンクすることが悪いのかと思ったら、
フォントリンクしなくても、FontForgeで読み込んで書き出しただけで、等幅でなくなったみたいだ。
どうしてこれがリンクできたのかはハッキリわかっていないが、
読み込んだフォントを何もいじらずに書き出すことが出来ないソフトらしく、
書き出したフォントは等幅ではないと見なされたから、
縦横比をBitstreamにあわせる必要がなくなり、ビットマップのあるサイズとリンクしたのだろうなと。
今使ってるフォントはFontForgeで改造したのに、日本語の等幅フォントとして認識されている。
何が違うのかわからない。
ただ、確実に言えるのは、このフォントを等幅として保存できたとしても、
それじゃ縦横比が違うからビットマップとはリンクできない。

もう一つ、このソフトの自由にならない点があって、
この、ただ読み込んで書き出したフォントは、メモ帳とかのダイアログでフォントを選ぶとき、
”欧文”のほかに”トルコ語”ってのを勝手に追加してくれる。
今使っているシャープのフォントの改変版も、勝手に”キリル語”の選択肢を足されている。
これはきっと、トルコ語やキリル語の文字を含むフォントでは必ず勝手に追加されるのだろうな。
でも、トルコ語のどの文字が含まれるかみたいなルールはいじれない内部にあるらしく、
実験で全角スペースを足した欧文フォントは日本語フォントにはなってくれなかった。

さて、次にやってみたくなるのは、はじめからMSゴシックと同じ縦横比の欧文フォント作成。
そうすればMSゴシックの欧文部分のみをプログラミング向けに出来ないだろうかと。
んでもこれももしかしたらFontForgeで作ると、勝手に等幅じゃなくしちゃうのだろうか。
おかしいよな。

という、何も実っていないが疑問はふくらみ、フォントが悪いのかソフトが悪いのか、
身を削ってストレスをためる作業なのでフォントに関わるのは自主規制してる話にまたループ。
今度こそ何か成果を上げたいな。

B000EGD45I
B000EGD45I