GSUB による縦書フォント (Re: vfontmap)

Nobuyuki Tsuchimura tutim****@nn*****
2005年 9月 28日 (水) 18:35:15 JST


  土村です。

From: Takanori Uchiyama <uchiy****@appi*****>
Subject: Re: vfontmap
Date: Sat, 24 Sep 2005 00:27:12 +0900 (JST)
Message-ID: <20050****@appi*****>

> >   そうそう、申し遅れているのですが、
> > 今年の6月に出た FreeType 2.1.10 のソースを見ると、
> > GSUB というキーワードがあります。
> > これはひょっとすると TrueType フォントの
> > 縦書文字を引くために使えそうな気がしています。
> 
> GSUB を利用する高度な API は(見落としていなければ), 用意されていないと
> 思います. GSUB の存在を確認する API はありますから, GSUB のデータを自
> 分で解釈するコードを起こすことになるでしょう(FT_OpenType_Validate:

  GSUB の資料が Adobe の web site にあったので、
http://partners.adobe.com/public/developer/opentype/index_table_formats.html
あたりを見ながら解釈するプログラムを書いてみました。

  繁雑で紛らわしいところもありますが、難しいことはなく、
ようやく縦書用の GID が得られるようになりました。
TrueType と OpenType はどちらも同じように扱えそうです。
このプログラム(400行)を xdvi に組み込むのはこれからです。

  これで auto_shift() などの
位置合わせコードが不要になるかと言えば、
そう簡単な話でもありません。
GSUB アクセスで縦書フォントを得るには、次の問題があります。

(1) FreeType2.1.10 以降が必須(今年6月に公開されたものなので、
    多くの Linux ディストリビューションには含まれてないと思います。)
(2) VFlib には効力なし

  xdvi に組み込むときにどうするか、考えてみました。

(a) freetype2.1.10 以降を必須にする
(b) xdvi に freetype2.1.10 を同梱する
(c) freetype2.1.9 以前用に GSUB まわりの処理を更に追加する
(d) auto_shift() などと共存して、可能な時だけ GSUB にアクセスする

(a)
これはきっと受け入れられないでしょうね。

(b) 
いっそのこと、T1lib みたいに、
xdvi に freetype2.1.10 を含めてしまえば話は簡単になりますが、
それもどうかという気もしますし...
もっとも、VFlib が本当にいらなくなるのはありがたいです。

(c)
FreeType2.1.10 では、FT_OpenType_Validate を使うと
簡単に GSUB テーブルが手に入りました。
この部分を FreeType2.1.9 以前で同等の処理ができるよう、
こちらで実装してしまうという手もありますが、
ちょっと見たところ、面倒そうな気がします。
どうせすぐに obsolete になるソースを書くのは、
馬鹿馬鹿しい気もします。

(d)
無難な選択肢ではありますが、ソース肥大につながるので、
なんとかしたいところです。

  どちらにしても vfontmap の書式は、
もう一度考え直した方がよいでしょうね。
今は縦書かどうかを表示する時に判定してますけど、
はやり vfontmap に書いてある方が楽でよいです。

  私の知恵ではこのぐらいしか思い付きません。
ご意見いただければ幸いです。
-----
土村 展之     Nobuyuki Tsuchimura



Xdvi-users メーリングリストの案内
Back to archive index