パスワードを忘れた? アカウント作成
329555 journal

yasuokaの日記: IVSに対するfont fallback 2

日記 by yasuoka

「UnicodeのIVSがもたらすメリットとデメリット」の読者から、IVSに対するフォント・フォールバックはどうあるべきか、という趣旨の御質問をいただいた。たとえば、CSSのfont-familyで複数のフォントが指定してある場合に、最初のフォントに表示したいIVSが収録されていなかった時、表示プログラムはフォントの中をどう探していくべきか、という問題だ。

例として、3つのフォントが指定されている時に、「U+845B U+E0103」を表示するための理想的なフォント・フォールバックを、私(安岡孝一)なりに考えてみよう。

  1. 最初のフォントから「U+845B U+E0103」を探す。なければ
  2. 最初のフォントから「U+845B U+E0101」を探す。なければ
  3. 2番目のフォントから「U+845B U+E0103」を探す。なければ
  4. 2番目のフォントから「U+845B U+E0101」を探す。なければ
  5. 3番目のフォントから「U+845B U+E0103」を探す。なければ
  6. 3番目のフォントから「U+845B U+E0101」を探す。なければ
  7. 最初のフォントから「U+845B」を探す。なければ
  8. 2番目のフォントから「U+845B」を探す。なければ
  9. 3番目のフォントから「U+845B」を探す。なければあきらめる。

ちなみに、表示したいIVSが「U+559D U+E0101」であれば、私の理想は以下のようになる。

  1. 最初のフォントから「U+559D U+E0101」を探す。なければ
  2. 最初のフォントから「U+FA36」を探す。なければ
  3. 2番目のフォントから「U+559D U+E0101」を探す。なければ
  4. 2番目のフォントから「U+FA36」を探す。なければ
  5. 3番目のフォントから「U+559D U+E0101」を探す。なければ
  6. 3番目のフォントから「U+FA36」を探す。なければ
  7. 最初のフォントから「U+559D」を探す。なければ
  8. 2番目のフォントから「U+559D」を探す。なければ
  9. 3番目のフォントから「U+559D」を探す。なければあきらめる。

うーむ、どう考えても実装できそうにない。でも、だからと言って

  1. 最初のフォントから「U+559D U+E0101」を探す。なければ
  2. 最初のフォントから「U+559D」を探す。なければ
  3. 2番目のフォントから「U+559D」を探す。なければ
  4. 3番目のフォントから「U+559D」を探す。なければあきらめる。

という実装は、あまりにヒドイ。こんな実装だと、たとえば「font-family: Times, KozMinPr6N-Regular, IPAmjMincho」とか指定したら、IVSが全く使えなくなってしまう。では、さて、どのあたりが、落としどころかしら?

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
  • by emk (30939) on 2011年05月26日 20時29分 (#1959631) 日記

    そうなんですよ。Firefoxでは

    1. 最初のフォントから「U+559D U+E0101」を探す。なければ
    2. 2番目のフォントから「U+559D U+E0101」を探す。なければ
    3. 3番目のフォントから「U+559D U+E0101」を探す。なければ
    4. 最初のフォントから「U+559D」を探す。なければ
    5. 2番目のフォントから「U+559D」を探す。なければ
    6. 3番目のフォントから「U+559D」を探す。なければあきらめる。

    というfallbackにしたかったんですけど、レビュアーに却下されて

    1. 最初のフォントから「U+559D U+E0101」を探す。なければ
    2. 最初のフォントから「U+559D」を探す。なければ
    3. 2番目のフォントから「U+559D U+E0101」を探す。なければ
    4. 2番目のフォントから「U+559D」を探す。なければ
    5. 3番目のフォントから「U+559D U+E0101」を探す。なければ
    6. 3番目のフォントから「U+559D」を探す。なければあきらめる。

    という順序になってしまいました。だから「font-family: "MS PMincho", KozMinPr6N-Regular, IPAmjMincho」とか指定するとMS明朝に含まれている漢字についてはIVSがまったく使えませんし、Adobe-Japan1と汎用電子の両方を実装したフォントがないと両方を混在して使うこともできないんです。

    • ただ、それならそれで

      1. 最初のフォントから「U+559D U+E0101」を探す。なければ
      2. 最初のフォントから「U+FA36」を探す。なければ
      3. 2番目のフォントから「U+559D U+E0101」を探す。なければ
      4. 2番目のフォントから「U+FA36」を探す。なければ
      5. 3番目のフォントから「U+559D U+E0101」を探す。なければ
      6. 3番目のフォントから「U+FA36」を探す。なければあきらめる。

      か、それともいっそ何らかのCSSオプションで

      1. 最初のフォントから「U+559D U+E0101」を探す。なければ
      2. 2番目のフォントから「U+559D U+E0101」を探す。なければ
      3. 3番目のフォントから「U+559D U+E0101」を探す。なければあきらめる。

      に出来ないものかなぁ、と思っちゃうわけです。でも、無理かなぁ…。

      親コメント
typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...