GlyphWiki logo
navigation
help
search

toolbox
languages
user pagediscussionview sourcehistory

User:emk

From GlyphWiki, the free glyph database

拡張Iの漢字をwebブラウザーで表示する

2023年11月22日現在、CJK統合漢字拡張I対応フォント(字雲フォント など)をインストールしただけでは、多くの場合webブラウザーで表示されない。
  • webブラウザーによっては、内蔵のUnicodeデータベースで未定義のコードポイントは、ページがCSSなどでフォント名を直接指定しない限り表示しないよう制限している。未定義のコードポイントを勝手に使っているフォントがあるとしたら、そのフォントを指定しない限り意図した表示にならないと考えられるので、不合理な制約とは言えないが、このようにブラウザー内蔵のUnicodeデータベースが更新されるまでにタイムラグが生じる問題もある。
    • Firefox 81-119/102ESR/115.4ESRまではこの制限が課されており、利用者側でできる対策はない。Firefox 120/115.5.0ESR以降は、about:configなどでgfx.font_rendering.fallback.unassigned_charsをtrueに設定することで、未定義のコードポイントを表示できる。設定変更なしで表示するには、内蔵Unicodeデータベースがバージョン15.1に更新されるまで待つ必要がある(その更新を含んだICU 74にバグが見つかった ため、予定は未定となっている)。
    • Windows上のChromium系ブラウザー(Chrome、Edgeなど)にも同様の制限が課されているようである。LinuxではChromeでも表示できるという報告があるので、ブラウザーではなくOSの制限かもしれない。ICU 74への更新の予定は未定
    • サイト側では既知の対応フォント名を明示的に指定する、webフォントを使用するなどの対策が考えられる。もちろん標準規格で定義された文字を表示できないのはブラウザーの責任であるとして、何もせずブラウザーやOSの対応を待つという方法もある。
  • webブラウザーによっては、fingerprinting対策のためユーザーがインストールしたフォントの使用を許可していない場合がある。
    • macOS Mojave/Safari 12以降やBraveにこの制限が掛けられている。Braveでは制限を解除できるようである。
    • Firefox 119以降、強化型トラッキング防止を「厳格」に設定している場合及びプライベートウィンドウでは制限が掛けられている。fingerprinting対策が無効になることを承知の上なら、privacy.fingerprintingProtection.overridesに-FontVisibilityLangPackを追加することで制限を解除できる。
    • サイト側ではwebフォントを使用するくらいしか対策はない。

時系列

Windows 7でIVSを認識しない問題について

「ちゃんと動くフォントの作成は黒魔術 (black art)の域にあると言わざるを得ない。」

--狩野宏樹

Windows 7でIVSを認識させるには、以下の条件をすべて満たす必要があるようです。

  • GSUBテーブルが必要
    • 存在していれば実際にグリフ置換の定義が含まれている必要はないようです。
  • U+0020にグリフが必要
    • ただし半角のグリフと全角のグリフを混ぜた幅の平均を取ってxAvgCharWidthに設定しないこと。
  • BMP外に、少なくとも1つグリフが必要
    • フルセットの花園ではもちろん問題ありませんが、Webフォント用に必要なグリフだけ入れたフォントを作ろうとするとハマるかもしれません。というかハマりました。
    • さらに、
      • OS/2テーブルのulUnicodeRangeのbit57がセットされている。
      • UCS4のcmapが存在する。
      • 実際にcmapにU+10000以上のグリフが定義されている。
    • のすべての条件を満たさないと「BMP外にグリフがある」とみなしてもらえないようです。
  • Default UVS Tableを使わない
    • Default UVS Tableがあると、Non-Default UVS Tableの置換まで正常に行われなくなるようです。すべてNon-Default UVS Tableで定義しなければならないのでサイズが大きくなってしまいますが仕方ありません。FontForgeはもともとNon-Default UVS Tableしか使わないようですが、自作ツールでハマりました。