WPF の縦書き、さらに続く
縦書き用の GSUB vert/vrt2 テーブルは、なんとか取れました。メイリオでは 99 のグリフが置換されるようになっているようです。ちなみに MS Gothic では 101。この差は何でしょうね。
ちなみに TrueType/OpenType のフォントテーブルはフォントのメーカーやフォントそのものによってかなりつくりに差があり、またデータのおかしいフォントも数多くあります。昔の Windows では、壊れたフォントを入れて表示すると Blue Screen、なんてこともよくありました。ので、直接テーブルを読みたくはない。
この実験コードでは、一応公開 API だけでなんとかここまで来れています。Interop は使っていますが。
しかしフォントによってはこんなことに。句点「。」の位置もおかしいですが、他の文字も微妙に上下左右におかしくずれています。
グリフ置換はきちんと入って処理しているので、他の縦書きメトリックス系のテーブルをきちんと読まないと正しくレンダリングできないフォントは、もっときちんとやらなければいけないようです。


Comments
ほうほう。なるほど。
Wordでは縦書きの際にグリフの横位置や縦位置をレンダリングしてから調整しているのでしょうね。
本来の微妙な位置を考えると、縦書きフォントと横書きフォントはベースラインが変わるはずなので、すべての文字が置き換えられるようになっていないといけないはずですものね。
Posted by: 中博俊 | 2007.11.30 at 04:59 PM