TrueType と OpenType の違い
一般的に使うフォントと言えば、OpenType (*.otf/*.otc) か TrueType (*.ttf/*.ttc) です。
規格としては TrueType の方が古く、OpenType の方が新しくできた形式で、最近では OpenType の方が主流になっています。
フリーフォントに関しては TrueType で配布されている場合も多いですが、これは、OpenType では何かしら不具合が出るソフトなどがあるということを理由に、互換性の高い TrueType を選んでいるという場合があります。
特に、Windows の場合は、OpenType フォントを使うと問題が出ることも多いようです。
OpenType と TrueType は、フォーマット的にはほぼ同じですが、グリフデータの格納方法が異なります。
また、OpenType は3次ベジェ曲線でアウトラインを描くのに対して、TrueType は2次ベジェ曲線を使います。
[2次ベジェ→3次ベジェ] の変換は正確に行えるので、TrueType→OpenType 変換は問題ありませんが、
[3次ベジェ→2次ベジェ] の変換の場合、全く同じ形には変換できず、近い形になるように近似するだけなので、OpenType→TrueType 変換に関しては少し注意してください。
(実際にフォントを描画する際にはほぼ気にならないと思いますが)
FontForge では、「フォント情報」の「レイヤー」の項目で、アウトラインのベジェタイプを選択できます。
OpenType で出力するつもりなら「すべて3次」を、TrueType で出力するつもりなら「すべて2次」を選んでおいた方がいいでしょう。
規格としては TrueType の方が古く、OpenType の方が新しくできた形式で、最近では OpenType の方が主流になっています。
フリーフォントに関しては TrueType で配布されている場合も多いですが、これは、OpenType では何かしら不具合が出るソフトなどがあるということを理由に、互換性の高い TrueType を選んでいるという場合があります。
特に、Windows の場合は、OpenType フォントを使うと問題が出ることも多いようです。
OpenType と TrueType は、フォーマット的にはほぼ同じですが、グリフデータの格納方法が異なります。
また、OpenType は3次ベジェ曲線でアウトラインを描くのに対して、TrueType は2次ベジェ曲線を使います。
[2次ベジェ→3次ベジェ] の変換は正確に行えるので、TrueType→OpenType 変換は問題ありませんが、
[3次ベジェ→2次ベジェ] の変換の場合、全く同じ形には変換できず、近い形になるように近似するだけなので、OpenType→TrueType 変換に関しては少し注意してください。
(実際にフォントを描画する際にはほぼ気にならないと思いますが)
FontForge では、「フォント情報」の「レイヤー」の項目で、アウトラインのベジェタイプを選択できます。
OpenType で出力するつもりなら「すべて3次」を、TrueType で出力するつもりなら「すべて2次」を選んでおいた方がいいでしょう。
OpenType を TrueType に変換する
元々が OpenType のフォントを、編集したり合成して、最終的に TrueType で出力する場合は、「EM の大きさ」を変更する必要があります。
「エレメント」>「フォント情報」でフォント情報を開き、「一般情報」の項目の「EM の大きさ」の値を見てください。
OpenType の場合は、基本的に「1000」が指定されますが、TrueType の場合は、2の累乗値を指定することが推奨されているため、「1024 か 2048」が使われることが多いです。
OpenType から TrueType に変換する場合は、この EM 値を変更しなければなりません。
EM 値は、Windows のフォントや IPA フォントでは 2048、フリーフォントなどでは 1024 が使われていることが多いようです。
値が大きいほうが座標の精度としては高くなりますが、好きな方を使ってください。
フォント情報で「EM の大きさ」の値を変更し、「輪郭を拡大/縮小」にチェックを入れておきます。
なお、EM の値が変更された場合は、自動で他の設定値も調整されます。
EM 値を変更した後に「OK」ボタンを押すと、全てのグリフの座標が、変更された EM 値に合わせて拡大縮小されるので、終わるまでしばらく待ちます。
EM の変更が適用できたら、フォント出力で、タイプに「TrueType」を選択して、ttf ファイルを出力します。
「エレメント」>「フォント情報」でフォント情報を開き、「一般情報」の項目の「EM の大きさ」の値を見てください。
OpenType の場合は、基本的に「1000」が指定されますが、TrueType の場合は、2の累乗値を指定することが推奨されているため、「1024 か 2048」が使われることが多いです。
OpenType から TrueType に変換する場合は、この EM 値を変更しなければなりません。
"推奨" であるため、一応それ以外の値を設定することも可能ではあります。
実際、TrueType で EM が 1000 になっているフォントも稀にあります。
そのまま 1000 で出力して問題がないようであれば、変更しなくても構いませんが、できるだけ推奨値に合わせておいた方がいいでしょう。
実際、TrueType で EM が 1000 になっているフォントも稀にあります。
そのまま 1000 で出力して問題がないようであれば、変更しなくても構いませんが、できるだけ推奨値に合わせておいた方がいいでしょう。
EM 値は、Windows のフォントや IPA フォントでは 2048、フリーフォントなどでは 1024 が使われていることが多いようです。
値が大きいほうが座標の精度としては高くなりますが、好きな方を使ってください。
フォント情報で「EM の大きさ」の値を変更し、「輪郭を拡大/縮小」にチェックを入れておきます。
なお、EM の値が変更された場合は、自動で他の設定値も調整されます。
EM 値を変更した後に「OK」ボタンを押すと、全てのグリフの座標が、変更された EM 値に合わせて拡大縮小されるので、終わるまでしばらく待ちます。
フォントの EM 値は、グリフの座標値に関係してきます。
グリフの座標は小数点を含まない整数値であり、EM x EM のサイズの枠を基本として、グリフのパスが構成されます。
EM 値が 1000 の場合、1000 x 1000 の枠を基準に座標値が指定されているので、EM 値が 1024 に変更された場合は、1024 x 1024 の枠に合うように座標を拡大縮小しなければ、グリフが小さくなってしまいます。
グリフの座標は小数点を含まない整数値であり、EM x EM のサイズの枠を基本として、グリフのパスが構成されます。
EM 値が 1000 の場合、1000 x 1000 の枠を基準に座標値が指定されているので、EM 値が 1024 に変更された場合は、1024 x 1024 の枠に合うように座標を拡大縮小しなければ、グリフが小さくなってしまいます。
EM の変更が適用できたら、フォント出力で、タイプに「TrueType」を選択して、ttf ファイルを出力します。
Windows での問題点
FontForge で出力した OpenType フォントを Windows で使用する場合、フォントとして読み込めない場合があります。
その場合、まず、「フォント情報」の「一般情報」の項目で、「解釈」を「日本語」に選択して、otf で出力してみてください。
合成フォントの場合は、これだけでは読み込めませんでしたが、[ OpenType 読み込み → 単一化 → Unicode 変換 → グリフの修正 ] を行った場合は、これで大丈夫でした。
どうしても Windows で読み込めない場合は、TrueType で出力してください。
その場合、まず、「フォント情報」の「一般情報」の項目で、「解釈」を「日本語」に選択して、otf で出力してみてください。
合成フォントの場合は、これだけでは読み込めませんでしたが、[ OpenType 読み込み → 単一化 → Unicode 変換 → グリフの修正 ] を行った場合は、これで大丈夫でした。
どうしても Windows で読み込めない場合は、TrueType で出力してください。