yasuokaの日記: IVSに対するfont fallback 2
日記 by
yasuoka
「UnicodeのIVSがもたらすメリットとデメリット」の読者から、IVSに対するフォント・フォールバックはどうあるべきか、という趣旨の御質問をいただいた。たとえば、CSSのfont-familyで複数のフォントが指定してある場合に、最初のフォントに表示したいIVSが収録されていなかった時、表示プログラムはフォントの中をどう探していくべきか、という問題だ。
例として、3つのフォントが指定されている時に、「U+845B U+E0103」を表示するための理想的なフォント・フォールバックを、私(安岡孝一)なりに考えてみよう。
- 最初のフォントから「U+845B U+E0103」を探す。なければ
- 最初のフォントから「U+845B U+E0101」を探す。なければ
- 2番目のフォントから「U+845B U+E0103」を探す。なければ
- 2番目のフォントから「U+845B U+E0101」を探す。なければ
- 3番目のフォントから「U+845B U+E0103」を探す。なければ
- 3番目のフォントから「U+845B U+E0101」を探す。なければ
- 最初のフォントから「U+845B」を探す。なければ
- 2番目のフォントから「U+845B」を探す。なければ
- 3番目のフォントから「U+845B」を探す。なければあきらめる。
ちなみに、表示したいIVSが「U+559D U+E0101」であれば、私の理想は以下のようになる。
- 最初のフォントから「U+559D U+E0101」を探す。なければ
- 最初のフォントから「U+FA36」を探す。なければ
- 2番目のフォントから「U+559D U+E0101」を探す。なければ
- 2番目のフォントから「U+FA36」を探す。なければ
- 3番目のフォントから「U+559D U+E0101」を探す。なければ
- 3番目のフォントから「U+FA36」を探す。なければ
- 最初のフォントから「U+559D」を探す。なければ
- 2番目のフォントから「U+559D」を探す。なければ
- 3番目のフォントから「U+559D」を探す。なければあきらめる。
うーむ、どう考えても実装できそうにない。でも、だからと言って
- 最初のフォントから「U+559D U+E0101」を探す。なければ
- 最初のフォントから「U+559D」を探す。なければ
- 2番目のフォントから「U+559D」を探す。なければ
- 3番目のフォントから「U+559D」を探す。なければあきらめる。
という実装は、あまりにヒドイ。こんな実装だと、たとえば「font-family: Times, KozMinPr6N-Regular, IPAmjMincho」とか指定したら、IVSが全く使えなくなってしまう。では、さて、どのあたりが、落としどころかしら?
Firefoxのfallback (スコア:1)
そうなんですよ。Firefoxでは
というfallbackにしたかったんですけど、レビュアーに却下されて
という順序になってしまいました。だから「font-family: "MS PMincho", KozMinPr6N-Regular, IPAmjMincho」とか指定するとMS明朝に含まれている漢字についてはIVSがまったく使えませんし、Adobe-Japan1と汎用電子の両方を実装したフォントがないと両方を混在して使うこともできないんです。
「U+559D U+E0101」のfallback (スコア:1)
ただ、それならそれで
か、それともいっそ何らかのCSSオプションで
に出来ないものかなぁ、と思っちゃうわけです。でも、無理かなぁ…。