« November 2007 | Main | February 2008 »

2007.12.14

WPF/XPS + IsSideways + Morisawa

WPF/XPS の縦書き Metrics を検証 から、キャノンの FontGallery など他数種のフォントを試して、TrueType および TrueType 出身の OpenType はだいじょうぶそうなことが確認できました。

とすると、Morisawa やおそらく他の Type 1 出身の OpenType が駄目なのは単なるバグではないかと。

互換性問題上厄介なバグを残してしまいましたが、WPF もどこかではもっときちんと縦書きをやる、という話もあるようだし、少なくともそこでは直るんでしょう。

| | Comments (53) | TrackBack (0)

2007.12.10

WPF/XPS の縦書き Metrics を検証

WPF 縦書き対応Font BlackBox の計算 とを組み合わせてみる。

MS Gothic
image

Meiryoimage

イワタ楷書
image

BlackBox が微妙に下にずれているのはご愛敬。

IsSideways なんて、縦書きとは無関係のプロパティだと主張しているようにも見えるが、縦書き用のテーブルを見て Baseline をきちんと中央に合わせているのが分かる。GSUB を見て自分で GlyphIndex を置き換えてやれば、「ー」や「。」も正しく表示される。

しかし。

Morisawa Jun 201 OTF
image

Baseline が合っていない。TrueType 系 OpenType はだいじょうぶだけど、Type 1 系 OpenType は駄目、ということかもしれない。

OpenType Specifications に日本語フォントの作り方が書いていないのでフォントのつくりに差が出てしまったか、WPF が Type 1 系に十分対応していないか、あるいはその両方の組み合わせか。

Word はしかしこのフォントでも正しく縦書きできる。それを XPS で保存しても正しく見える――と思ったら、XPS の中は Glyphs ではなく PNG 画像だった。WPF/XPS では対応しきれないフォントだとどこかで判断して、回避しているようだ。

| | Comments (1700) | TrackBack (1)

2007.12.08

Font BlackBox in WPF

フォントによって BlackBox の縦位置が正しく取れない問題 は、計算方法が違っていたらしい。だいたいにおいて高さが正しい BlackBox を取れていたのだから、TopSideBearingsBottomSideBearings を疑ったのは間違いだった。

image

DistancesFromHorizontalBaselineToBlackBoxBottom を使って BlackBox の下座標を取ることで、以前は BlackBox が上にずれていた英文フォントや一部の日本語フォントも正しくなりました。

あとは Vertical Origin が取れればそれなりの縦書きを実装できそうなのだが、これが見つからない。

| | Comments (147) | TrackBack (1)

2007.12.06

フォントによる WPF 縦書きの違い

IsSideways で正常に縦書き表示できるフォントの TopSideBearingsBottomSideBearings は正常に取得できる。

image

こうなってしまうフォントもある。このフォントでは IsSideways だけで縦書き仕様としてもうまく行かない。

image

GSUB の処理をアプリで回避したけど、縦書き用 GPOS  が処理できていないのか。あるいはフォント側の問題で、GSUB/GPOS ではなくて cmap を使ってレンダリングしてやらなければいけないのか。

Meiryo は縦書きできるけど、TopSideBearings と BottomSideBearings が怪しい。

| | Comments (565) | TrackBack (1)

2007.12.05

FamilyTypeface.DeviceFontCharacterMetrics

FamilyTypeface.DeviceFontCharacterMetrics から Unicode code point を使って CharacterMetrics が取れる、と書いてあり、ここには vertical origin はないものの、他の縦書きに必要な情報は取れそう、と思ったものの。

嘘です。FamilyTypeface.DeviceFontCharacterMetrics.Count は常に 0 のようです。他にも困っている人がいるみたい ですが。

| | Comments (303) | TrackBack (0)

2007.12.02

縦書きの XPS

WPF の縦書き、さらに続く でそこそこ表示できるようにはなったものの。

フォントによってはだめな場合がある、ということは、縦書きメトリックスの処理が XPS にきちんと入ってない、ということなんでしょうね。

横書きや BiDi では XPS が TrueType/OpenType のメトリックスを読んである程度までは並べてくれて、そこから上はアプリが処理、とわかれているのだから、本来であれば 中さんのおっしゃるよう に、XPS でももうちょっとサポートしてほしいのは確かです。

横書きでも、Word が XPS のレイアウトエンジンをそのまま使わずに、文字を分割してレイアウト位置を微調整することがある。どこまでが XPS で、どこまでがアプリケーションあるいはフレームワーク、という線引きはいつでも難しいけれど、横書きと縦書きで線引きの場所が違う、というのは、力の入れ具合の不足感を感じてしまいます。

縦書きって、BiDi のようにその国の人なら毎日必ず使うものではないので、という優先度なんでしょうが、やっぱりそれ抜きでは日本語組版を語れないかと。

| | Comments (70) | TrackBack (1)

« November 2007 | Main | February 2008 »