東アジア言語のサポートを検出することは可能ですか?
-
03-07-2019 - |
質問
日本語の文字を表示する必要があるjavascript暗記ゲームに取り組んでいます。アジア言語、または特に日本語のサポートを検出するクロスブラウザの方法はありますか?
window.navigator.languageはブラウザの言語に設定されますが、日本語をブラウザの言語(?)に設定していない人は見逃します。
解決
アジア言語、または特に日本語のサポートを検出するクロスブラウザーの方法はありますか?
「日本語フォントがインストールされている」という意味ですか?アジア言語のサポートの唯一のその他の側面”現代のOSが設定できるのは、Shift-JISなどの文字エンコーディングが知られているかどうか(Windowsではコードページ932)に関係しています。ただし、UTF-8を使用するだけで、どこでもサポートされているので、通常は必要ありません。
一般に、特定の文字範囲のフォントがインストールされているかどうかを直接知ることはできませんが、回り道があります。たとえば、ページ上のテキストのレンダリングされたサイズを測定する場合:
var half= document.createElement('span');
var full= document.createElement('span');
half.appendChild(document.createTextNode('\uFF71'));
full.appendChild(document.createTextNode('\u30A2'));
document.body.insertBefore(half, document.body.firstChild);
document.body.insertBefore(full, document.body.firstChild);
var havejapanesefont= half.offsetWidth!=full.offsetWidth;
document.body.removeChild(half);
document.body.removeChild(full);
これは、カタカナ‘ a’の半角および全角バリアントを含む要素を一時的に作成します。日本語フォントが利用可能な場合、それらは異なる幅になると予想されます。そのようなフォントが存在しない場合、ほとんどの場合、同様の‘レンダリング不能な文字’としてレンダリングされます。同じ幅のグリフ。
他のヒント
サーバーで を確認できる場合がありますAccept-Charset
ヘッダー(日本語の文字が含まれていない場合)は、警告ページにリダイレクトします。残念ながら、このスレッドが示すように、ヘッダーはjavascriptで使用できません。