フォント Font Forge

提供:yonewiki

フォントに戻る。←Font Forgeのインストール方法もこちら。

概要

フォントを作れる

用語解説

  • 拡張子.sfd = スプライン フォント データベース
FontForgeのフォント編集状態を保存する独自形式
  • 拡張子.ttc .ttf .otc .otf
よく使われるフォントの拡張子。ttはTrue Type(古くからあるフォント形式です。どれくらい古いかは知りません)。otはOpen Type(後発で機能強化されています)。末尾のcはコレクションでttcの場合は4フォントまで纏めることができます。fはフォントで単一のフォントのファイルです。
  • カーニング
字詰め設定です。文字と文字の間に対して設定するので、ASCIIコードだけでも95文字 95Glyphあるので、95×95とおりの設定が必要です。文字のカタチをクラス分けしたらば、もうちょっと設定する数は少なくなると思います。Glyphにきっちりとした法則を適用していないとクラスとして纏めることはできないです。設計は大事。
  • Glyph(グリフ)
字形をいいます。出来上がって表示されているのが文字。形式がフォント。
  • 送り幅
カーニングを設定する前に送り幅を設定しよう。デフォルト値とGlyph毎の設定があってGlyphは編集ウィンドウで黒い線が出てるので必要に応じて変更するとよいかもひれません。プロポーショナルフォントの方が疲れるわな。
  • 等幅フォント プロポーショナルフォント
等幅は名前のとおり、全てのGlyphが同じ間隔になるようにフォントが設計されているモノ。つまりGlyphの送り幅が全部のGlyphで同じだということです。日本語の場合は日本語が半角英数ASCII範囲だけが日本語文字の2分の1になっていれば等幅を名乗っています。これは国際的な感覚としてはプロポーショナルなんですけど、日本では半角の数が1行にたいして奇数と偶数とかになるとフォントがずれます。比較的、等幅は読みにくいです。読み物に対してのGlyphで使われるプロポーショナルは送り幅やカーニングが最適化されています。

仕組み

  • 保存
 グリフをダブルクリックすると個別のグリフを編集するためのウィンドウが表示されます。一文字一文字を保存する意味での保存ではなく、FontForgeが管理する全体に対して保存されます。なので、保存しないで終わらせておいたグリフがある場合、その次のグリフを編集したときに保存した際には、保存しないでおいといた全てのグリフも保存されます。ようするに、メインウィンドウの保存もグリフ表示ウィンドウの保存のどちらで保存しても、すべての作業が保存されるという感じです。

不具合

 FontForgeでは等幅の全角文字のフォントファイルを出力すると文字間にもうひとつ全角スペースがはいったくらいの2倍くらいの文字間隔になるという不具合があるようです。いままで半角文字のフォントしか作ったことなかったので気が付かなかったです。


 そもそも日本語における等幅とは、英語圏のフォントからみると真に等幅とはいえない。似非等幅でして、なんとも都合よく、英文字は半角で日本語は全角で、両方がきっちり1:2の文字幅になっていることが要求されるのが、我々の言う最高の等幅なのです。こういうのは世界標準では等幅ではなくプロポーショナルフォントと分類されます。FontForgeも世界標準で作られているので、そんなことは細かく配慮されていません。


 世界標準で考えれば、英文字はきっちり半分の文字幅で英文字以外の全角文字は1文字として考えるプロポーショナルフォントで、日本語システム的には等幅ってフォントに明記しちゃおうって感じ。


 FontForgeの不具合で半角文字を1文字として考えて、全角は2文字になるみたいな不具合があります。この場合、フォントの設定方法は一文字づつがもっているフォントの文字幅をすべて調整する必要があります。これは不具合とも関係なく実施しなければならない日本語圏特有の手法になります。一文字づつの幅って大変そうって感じですが、複数のフォントを大量に選択した状態で文字幅は設定できます。アウトラインエディタでみたときの細い黒い線がそうです。半角は1024。全角は2048に設定するのが一般的です。一文字の大きさEMは2048となります。文字の高さは、高さと深さを足して2048になっていればよいです。英文字特有のベースラインという考え方がありまして、これを考慮する必要があります。


 ですから、メニュー[エレメント]-[フォント情報]の[一般情報]のタブは高さ+深さが2048。EM大きさが2048 輪郭を拡大縮小はOn 下線の位置は-256 オーバーラインを意味するHeightは102くらいが一般的です。縦書きメトリックも是非Onにしたいものです。


 [OS/2]のタブにある[その他]タブでOS/2バージョンを1選択することで、不具合を回避して、きちんと文字幅どおりにフォントが構成されます。PFMファミリーの値はセリフでよいです。これが国際標準の扱いに準じた情報です。そのかわり、[Panose]タブでは幅の比率で等幅を選択すると割とうまくいきます。あとはフォント名としての等幅は太字や斜体と同じ扱いで名前を付ければたいていのアプリで分類がうまく作動します。


 しかし、バージョン1を選択してもうまくいかないケースでは、大変ですがttf/otf/ttc/otcフォントファイルを作成してから、バイナリ―をいじる必要が出てきます。実際はfontファイルからcmapなどの情報を抜き出すttxコマンドでフォント情報を取り出して、その情報を編集して、また再結合させるという手順になります。


 ttxの入手はコチラの記事で説明していますので省略します。フォントファイルのあるフォルダへ移動してから以下のコマンドを実行します。$env:windir\Fontsに移動してしまうと、ファイルの操作がやりにくくなるので、フォントフォルダからファイルを作業用にどこかのディレクトリコピーして、そこでやるのがいいと思います。


ttx -t OS/2 MeiryoKe_Gothic.ttf


 のようにするとフォントに含まれるOS/2テーブルという部分が抽出できます。上記の例ではMeiryoKe_Gothic.ttxというファイル名になります。


 出来上がったttxテキストを開くとxAvgCharWidth=nnnnというようなnに数字が当てられた部分がみつかると思います。ここのnnnnの値を1024のような半角文字の幅に該当する値にして保存します。


 そして

ttx -m MeiryoKe_Gothic.ttf MeiryoKe_Gothic.ttxとして、再度結合して、フォントファイルをインストールします。Windows10だとフォントファイルを右クリックして全ユーザにインストールとかですね。


 これでうまくいくといいのだけど。

エラー

重大なエラー

フォントファイルを書き出す時に整合性チェックを実施します。警告的なエラーがかなり多いです。特に問題となることがある場合は出力できません。

  • The selected spline attains its extrema somewhere other than its endpoints
選択されたスプラインは、端点以外のどこかで、その極値に到達します。
解説:スプラインというのはcurveやHV curveのようなハンドルを持つ頂点が描く線で、角になっているということを意味しています。角っぽいところに〇印の頂点がないかチェックしましょう。存在したら矢印ツール選択中に頂点を右クリックして表示されるコンテクストメニューから「角の点」を選択しましょう。あるいはグリフ表示状態のメニューから「エレメント(L)」-「問題点を発見(M)」でエラーチェックしたときに、上記の英文が出ている状態のダイアログで「修正」ボタンを押すと次々と問題点の頂点を発見しては半自動(修正していいか確認しながら修正ボタンをポチポチしなければならないという意味で半自動)で修正できます。


軽微なエラーの項目

  • Self Intersection
フォント内にパス同士が交差する箇所がある。
  • Wrong Direction
フォント作成のルール、外側の輪郭は時計回り、内側の輪郭は反時計回り、に反している。
  • Missing Points at Extrema
極値の点に問題がある。
  • Non-integral coordinates
整数ではない座標がある。
  • There is another glyph in the font with this unicode code point
ユニコード値が重複している。


 このようなエラーは、FontForgeのメインウィンドウで、メニューの「エレメント(L)」-「Validation」-「Validate」で表示されるウィンドウを右クリックして表示されるコンテクストメニューの「Try to Fix Gryphs with」から、それぞれの項目について自動修正できる。

  • Open Countors(グリフの輪郭が閉じていない。)
  • Self Intersections(自己に交点が存在する)
  • Bad Directions(外側の輪郭は時計回り、内側の輪郭は反時計回り、に反している)
  • Missing Extrema(極値における失敗) ※cautiously の方は慎重に修正する。
  • Too Many Points(点が多すぎる)
  • 保存する前に、修正した箇所にマークを乗せる。


  • Adobe says that big splines should not have extrema. But they don't define what big means. If the distance between the spline's end-points is bigger than this value, then the spline is big to FontForge.
アドビは、大きなスプラインに極値があってはならないと、言っています。 しかし、彼らは大きさに意味を定義していません。 スプラインの終点間の距離がこの値(FontForgeのデフォルトチェック設定値は10)より大きい場合、スプラインはfontforgeでは大きいとします。


フォントに戻る。