KANOU Hiroki
kanou****@khdd*****
2003年 11月 9日 (日) 23:29:25 JST
狩野です。 [Mplus-fonts-dev 46] にて森下さん: > 仮想ボディ枠を 1024 * 1024 に変更するとともに、 > 全ての文字を再び太くし、文字バランスも見直しました。 今になって言うのもなんですが、1000 のほうがよかったかもしれません。 まずは OpenType を目標において作るのが分かりやすいからです。 TrueType のアウトラインは 2 次ベジェ曲線を元にしていますから、 Illustrator で編集して作った 3 次ベジェ曲線より自由度が低いのです。 フォント化のときは必ず、曲線のフォーマットを変換しなくてはなりません。 これによって必ず誤差が生じます。(逆ならば誤差を生じずに変換できます。 ただし、座標値に 1/3 の端数 (TrueType では曲線上の点の座標に 1/2 の 端数が生じることがあるので、最小で 1/6 刻みになります) が生じます。 中間に点を増やすなどすれば誤差を減らすことができますが、現在の PfaEdit のアルゴリズムはあまり精度が高くないようで、変換後のパスを元の文字に 重ね合わせてみると、最大で2〜3ユニットの誤差が生まれます。 「フォント情報」の「一般情報」で一番下の「2 次スプライン」をチェック すると、曲線のフォーマットが変換されます。別ウィンドウで元のフォントを 開いて、そこに変換した文字をコピペすると、完全に一致しないのがお分かり 頂けるかと思います。 OpenType (Type1 や CID など、他の PostScript フォントも同様) の座標は 1000 ユニットにするのが慣例ですが、1024 でもできないことはない (この 場合 /FontMatrix [ 0.0009765625 0 0 0.0009765625 0 0 ] def という半端な 値になりますが) ので、一旦変換したからには、このまま進めたほうがいいと 思います。 一般的にフォント作成の注意点としては、 ・座標値は整数値にする (PS フォントでは分数の座標を使えますが、フォント サイズが大きくなるので避けるべき) ・極値 (曲線の接線が水平・垂直になる点) に点を置く ことが、レンダリング品質を良くするためには必要だとされています。極値への 点の追加は、PfaEditでは「エレメント」→「極大点の追加」で自動的に行われ ます。ただし、この点の座標が整数値とは限らないので、出力時の変換の結果、 誤差が生じる可能性もあるので、最初から点を置いておくに越したことはあり ません。 > 例によって仮想ボディ枠の左下が基準点 (0,0) となっています。 > 全体を Descent 値の分だけ下げたいのですが、スクリプト内での修正方法が > 分かりません、よろしくお願いいたします。 SelectAll(); Move(0, -123) みたいにすると全部の文字が下がります。 ところで、EPS ファイルを cvs に置いてはいかがでしょうか。現在の Web の サンプル表示はどんどん変わっていくので、前に文字を見て感じた印象と 現在の印象が異なるのが字体が変化したからなのか、自分が見慣れたからなのか 分からないことがあります。もし、お使いの Illustrator が SVG 書き出しに 対応しているなら、cvsweb 経由で、ブラウザ上に表示させてみることができ、 形を見比べることができます。 狩野 宏樹 <kanou****@khdd*****>