たまりば

  パソコン・インターネット パソコン・インターネット  三鷹市 三鷹市

MSゴシック改造_その2
2009年12月09日 18:35

以前「MSPゴシック半濁点パッチ」を作ったが、その続きである。
少し前の記事にFontForgeを導入したらうまく保存できなかったと書いたが、色々設定を変えていたら一応できるようになった。

前回から変わったところは次のとおりである。

・新たにビットマップを描いた
バイナリ書き換えでは既にあるビットマップを編集することしかできなかったが、FontForgeを使うことで今までビットマップの無かった文字に新たにビットマップを付けることができる。
そこで「ゔか゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚セ゚ツ゚ト゚ㇷ゚ㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ」と「㉑~㊿」に新たにビットマップを描いた。
これは「ゔか゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚セ゚ツ゚ト゚」までは既存の清音を元に描けばよいので比較的楽だが、他は予想以上に面倒だった。もうやりたくない。
あと、ク゚とケ゚の区別を付けるのがなかなか大変である。
新規文字
…こうしてみると結構描き忘れがあるなあ。

・一部の文字の領域を広げた
バイナリ書き換えでは既にドットがある領域しか編集できなかったので、たとえば「ぺ」の半濁点が下に来すぎたり単独の半濁点「゜」がそのままだったりしたが、これが改善した。
ペ

・小さいサイズまで4×4ピクセルの半濁点にした
こんな感じ。かなり無理をしても読めるものである。
巨大半濁点

・小サイズのビットマップを拡充した
8ドット(余白込みで9ドット)の恵梨沙フォントと7ドット(同8ドット)の美咲フォントを合成した。
恵梨沙フォント
美咲フォント
また、7,8,9ドットの半角英数を新たに描いた。
これで小サイズでも文字が読めるようになった。
小サイズ

・MSPだけでなくMSとMSUIも描き換えた
ただ、新たにビットマップを描くのは面倒なのでこちらはさぼり気味。

-----
ただ、改善ばかりでもなく、色々と不都合なことも起こった。

・一部の文字が1ドットずれる
読み込みの際か書き込みの際か分からないが、ビットマップが時々1ドットずれる。
文字幅が1ドット少なくなったり、文字幅は同じでも中の文字が1ドットずれていることもある。
幅の狭い文字が被害にあいやすいようで、小サイズのアルファベットで顕著である。隣の文字とくっついて読みづらい。
幅の異常
8ptの英小文字。上がオリジナル、下が今回のもの。
ひらがなでもまれに起こる。例えば9ptMSUIで「しばしば」と書くとくっつく。
しばしば

・縦書き文字が正常に出せなくなる
標準では保存に失敗するので設定を変えたのだが、それで縦書き用グリフへのリンク指定が破壊されたようである。グリフ自体は残っているので一つ一つリンクを張りなおせば戻せるだろうが面倒である。
なお「か゚」などの合字の指定も破壊されたが、こちらは数が少なかったので復元した。

それぞれ「㍍→あー。」と打ってある。文字送りの幅も異常

・ファイルサイズが巨大になる
本来、TTCファイルは複数のTTFファイルの共通部分を統合して小さいファイルサイズで複数のフォントを扱えるのだが、いじっていたらこれができなくなり普通にMS・MSP・MSUIの3つ分足したファイルサイズになってしまった。
2ちゃんねるを読むと同様の状況に対して「一致するテーブルがないんだからサイズを減らせるわけがない」と書かれていたがよく分からない。→「2のフォントがおかしい件について part1」393-395
このため今回はパッチを配布することができない。
(ついでに恵梨沙フォントのライセンスが再配布を禁じているのも理由)


とりあえずかなり理想に近いものができたが、まだ色々と分からないこともあるのでさらに調べるつもり。
もしかしたらそのうちパッチ配布できる形になるかもしれない。9ドットも美咲にすればライセンス的にはそんなに問題ないはず。(MSゴシックを書き換えること自体の問題がよく分からない)

余談だが、これが完成したのでEeePCのフォントファイルをUbuntuのLiveUSBを使って書き変えたのだが、その影響でEeePCのWindowsが起動しなくなってしまった。その話はまた次回。

-----

◆今日の例文◆
・日本国憲法前文より抜粋
・有名な英字パングラム

タグ :フォント

  • Post time : 2009年12月09日 18:35│Comments(0)
    URL欄を実験的に消してる間に廃止されてしまいました。まあいいか。
     
    <ご注意>
    書き込まれた内容は公開され、ブログの持ち主だけが削除できます。
    削除
    MSゴシック改造_その2
      コメント(0)