[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:7461] 非 TrueType フォントの bold 表示について



>>>>> [meadow-develop : No.7461] にて
>>>>> 藤井さんは書きました:
> 1. 非 TrueType の bold の扱い。

> 非 TrueType のフォントでは、bold は normal の字体をずらして重ね合わせて
> いるという扱いになっており、そのずれ幅が overhang として扱われています。

なるほど、そうなってますか。

NTEmacs の overstrike の実装も同じようになっています。Meadow で
overstrike は未実装なのですが、同じ処理を導入しようかと考えていた
ところでした。この場合も同じ問題が生じますね。


> Meadow の論理フォント層でもこれを overhang として扱うべきでしょうか?
> (現在は Windows API で取得した overhang がそのまま設定されるので、
> overhang として扱われています)

> これを overhang として扱うこととすると、以下のような問題がでてくるので
> はないかと思っています。ですので、できれば overhang として処理するので
> はなく、bold 化によって文字幅が広がったものとして扱うようにしたいと考え
> ています。

この意見に賛成です。


>   - bold 化して文字幅が広がった分が、描画時に欠ける可能性がある。(現在
>     italic の overhang 部分が描画で欠けるのと同じ現象が起きる可能性が考
>     えられる)

overhang で文字幅を超えた場合の文字欠けは、X 上の Emacs では生じな
いようなのですが、どのような実装になっているか分かる方いますか?
;; もしかして気のせい?


> 2. 非 TrueType での bold-italic の扱いについて

> bold の場合は overhang が字体の幅増加分となるので、方針が決まれば修正は
> 効くと思うのですが、bold-italic の場合は別の問題があります。

> bold-italic の overhang は italic が元々持っている overhang に上記の
> bold 化による幅増加分の合計となります。

> また、GetTextExtentPoint32 API で取得できる幅は normal の幅に、bold 化
> による幅増加分が足された値になります。

> このため、rbearing, lbearing の計算をどうすれば良いのか分かりません。

合算されているため italic と bold それぞれに対する成分が分からな
いということでしょうか?

ちょっと手間ですが、非 bold で italic だけ有効にした logfont を一
時的に作って GetTextExtentPoint32 で overhang を調べることは無理
かな?

--
三好 雅則 http://miyoshi.meadowy.org/