trueroad/HaranoAjiFonts-generator

文字幅を上書きしたグリフの位置調整

h20y6m opened this issue · 5 comments

現在文字幅をAJ1の文字幅に合わせるために文字幅を上書きしたグリフは左に寄っています。これを**揃えにする等の位置調整が出来ればもう少し見た目が良くなるのではと思います。

そこで試しにCFFの変換処理を作ってみました。

https://github.com/h20y6m/HaranoAjiFonts-generator/tree/h20y6m-dev-adjust

動作はCygwinとUbuntu (WSL)で確認しています。(Python3が必要です。)

  • make_adjust.py
    • 変換前後のhmtxテーブルから調整量を計算
      • 現状対象グリフは決め打ち
  • adjust.py
    • グリフのCharStringを書き換え
      • 元の文字幅を(あれば)削除し、(必要であれば)変換後の文字幅を書き込み
      • ヒント情報の座標を変換
      • 描画命令の座標の変換

ご検討ください。

ありがとうございます。
素晴らしいです。

ぜひ取り込みたいのですが、以下をお願いしてもよいでしょうか。

  • script/ ディレクトリを掘って make_adjust.py と adjust.py をその下に移動する
  • make_adjust.py と adjust.py の冒頭にライセンス表示を付ける
    • 他の C++ ソース冒頭と同じ文面にして、 Copyright のところの名前とメールアドレスの所を @h20y6m さんのものに書き換える(本名を出すのが嫌だとかであればハンドル名的なものでもよいですし、メールアドレスも出したくなければ省略していただいてもよいです)

それで pull request を出していただけないでしょうか。

Pull request を作成しました。

2点ほど、

  • CID+127 のグリフですが配布されているもと若干異なっているようです。調整前後の CFF.ttx の CharString に差異はないので生成に使用したファイルの差異と判断しましたが、念のためご確認ください。
  • CharString のサブルーチン呼び出しはサブルーチンの中身をその場に展開しています。そのため若干サイズが大きくなっています(と言っても数KB程度ですが、上記リンク先の議論でファイルサイズについての議論がありましたので)。

原ノ味フォントをデフォルトに?

このような議論があったのですね。(タイミングよすぎ……)

ありがとうございます。
取り込んだものを
https://github.com/trueroad/HaranoAjiFonts-generator/releases/tag/20200215
としてリリースしたいと思います。

CID+127 のグリフですが配布されているもと若干異なっているようです。調整前後の CFF.ttx の CharString に差異はないので生成に使用したファイルの差異と判断しましたが、念のためご確認ください。

前バージョン (20190824) をビルドする際に UniJIS2004-UTF32-H を最新の 1.021 にアップデートしたつもりだったのですが、できておらず 1.020 のままになっていたのが原因と思われます。今回改めて 1.021 にアップデートしたところ、前バージョンとは CID+127 が紐づくグリフが変更になりました。

CharString のサブルーチン呼び出しはサブルーチンの中身をその場に展開しています。そのため若干サイズが大きくなっています(と言っても数KB程度ですが、上記リンク先の議論でファイルサイズについての議論がありましたので)。

そうするしかないよなぁと思っておりましたし、サイズについては仕方なしと思っております。

.notdef の中身をサブルーチンへ追加して、ダミーグリフをすべてそのサブルーチン呼び出しにする、とかすればサイズが減るだろうなと思っていますが手を付けておりません。。。

原ノ味フォントをデフォルトに?

このような議論があったのですね。(タイミングよすぎ……)

あちらの議論をご覧になってから、今回いただいたコードをお作りになったのかと思っておりました。