[Kdeveloper] [Qt-devel] Fwd: KDE 4.3における日本語フォントに関する問題整理

Kenji Sugita sugita @ sra.co.jp
2010年 1月 14日 (木) 08:11:18 UTC


  杉田です。

From: Asaki Takumi <takumi @ asaki.jp>
Subject: Re: [Qt-devel] [Kdeveloper] Fwd: KDE 4.3における日本語フォントに関する問題整理
Date: Thu, 14 Jan 2010 15:58:59 +0900

;;; >  .fonts.conf を使わずに、うまく行くようにしたいです。KDE と逸れてしまうけれど、
;;; > そうすれば、Qt for Embedded Linux でも新 IPA フォントが使えるというのが理由です。
;;; > 
;;; >    $ ftstring -encode unicode -m AAああ 18 ipag.ttf

    $ ftstring -encode unicode -m AAああ 18 ipag.otf

  打ち込んだときに間違えました。バージョンは 003.01 です。

;;; > 
;;; > では、A が正しく半角になるので、qfontengine_ft.cpp が間違っている可能性もある
;;; > のではないでしょうか。
;;; 
;;; 参考ですが、 Mac OS X に付属の Font Book でも IPA フォントを半角で表示しています。

  Mac OS X の Omini Outliner や付属のテキストエディットでも、半角は半角で表示さ
れます。

;;; ただし、それぞれで "ignore Global Advance Width" 指定時には半角は全角の半分の幅となる。
;;; ということがわかりました。
;;; 
;;; ftstring や fontconfig 等のいくつかの freetype を用いたプログラムではこの
;;; FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH を指定してグリフをロードしているようです。
;;; http://freetype.sourceforge.net/freetype2/docs/reference/ft2-base_interface.html#FT_LOAD_XXX
;;; 
;;; つまり、 FIXED と宣言しているフォントが実は文字ごとに幅が異なるような場合に
;;; グローバルな値を無視することができるようになっているようです。
;;; > This flag exists for historical reasons (to support buggy CJK fonts).
;;; ( freetype のドキュメントより )
;;; 
;;; 試しに Qt のソースの FT_Load_Glyph のフラグに全て FT_LOAD_IGNORE_GlOBAL_ADVANCE_WIDTH を
;;; 加えてみたところ、Qt で IPA フォントの半角を半角として表示することができました。

  この修正で、Qt for Embedded Linux でも半角が半角として表示されました。

  Qt は元のままで、ipag.otf (003.01) に、helvR14.bdf を追加した OTF を作ってみ
ると、半角が半角として表示されるようになりました。

;;; ということで、原因としては
;;; * IPA フォントは FIXED フォントと宣言している
;;; * freetype は FIXED フォントに対しては指定されない限りグローバルな値を幅に用いる。
;;;   ( 埋め込みビットマップがある場合はそちらが優先? )
;;; * Qt では Global Advance Width を無視するようにしていない。
;;; ということになります。
;;;
;;; 問題は対策でしょうか。
;;; Qt で FT_LOAD_IGNORE_GlOBAL_ADVANCE_WIDTH を指定して対策するパッチを作成するのは
;;; 難しいことではないですが、フォント側ではなく Qt を変更することの理由がなければ
;;; 受け入れてもらうのは難しいかもしれません。
;;;
;;; 問題のないであろうその他のフォントに影響がないことも言えなければだめだと思います。
;;; 
;;; IPA フォントに対応してもらうのが一番でしょうが、
;;; * 半角/全角の双方を含むフォントが FIXED と宣言するのは正しいのか。
;;;     (freetype では buggy CJK fonts と言っていますが)
;;; という観点に関する情報が欲しいですね。

  GNOME の gedit や Mac OS X のネイティブアプリケーションは、うまく表示できるよ
うにしています。テキスト表示でこのように扱うのは、アプリケーション側の現実的な
対処でしょう。Windows では、新 IPA フォントはどのようになるのでしょうか
(Windows ラップトップは、貸し出しているので)。




Kde-jp メーリングリストの案内