ブログの伝統モンゴル文字投稿で、格助詞などの一部の文字が正しく表示されないという報告を受けた。調査の結果、ブラウザがデフォルトでMongolian Baitiフォントを使用していることが判明した。
問題は、blog-theme.cssの@font-face規則にあった。フォントファイル名が間違っていた。
/* 問題のあったコード */
@font-face {
font-family: 'Noto Sans Mongolian';
src: url('/shared-assets/fonts/NotoSansMongolian-Regular.woff2');
}
実際にサーバーに保存されているファイル名は、はるかに長い:
noto-sans-mongolian-v23-latin_latin-ext_math_mongolian_symbols-regular.woff2
この不一致により、ブラウザはカスタムフォントの読み込みに失敗し、システムのフォールバックフォント(Mongolian Baiti)を使用していた。
Mongolian Baitiフォントの問題は、MVS(Mongolian Variation Selector)とFVS(Free Variation Selector)の処理が不完全なことだ。これらの制御文字は、同じ基本文字の異なる形態を選択するために使用される。例えば、格助詞の形態は、先行する母音によって変化する。
解決策は簡単だった。@font-faceのファイルパスを正しい長いファイル名に修正する。
@font-face {
font-family: 'Noto Sans Mongolian';
src: url('/shared-assets/fonts/noto-sans-mongolian-v23-latin_latin-ext_math_mongolian_symbols-regular.woff2');
}
さらに、functions.phpでCSSのバージョン番号を更新(2.14→2.15)し、ブラウザキャッシュを強制的にクリアした。
現在、伝統モンゴル文字は正しく表示される。格助詞、母音の変異形、すべてのMVS/FVS制御文字が、Noto Sans Mongolianフォントで適切にレンダリングされる。フォントファイル名の管理は、多言語サイトでは特に注意が必要だということを学んだ。