2009-03-03 13 views
7

私は日本語の文字を表示する必要があるjavascript暗記ゲームに取り組んでいます。アジア言語のサポートを検出するクロスブラウザの方法はありますか?具体的には日本語ですか?東アジア言語のサポートを検出することは可能ですか?

window.navigator.languageはブラウザの言語に設定されますが、japaneseをブラウザの言語(?)に設定していない人は見逃しています。

答えて

6

アジア言語のサポートを検出するクロスブラウザの方法がありますか?具体的には日本語ですか?

"日本語フォントがインストールされていますか"という意味ですか?現代の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); 

をこれが一時的に半分の幅とカタカナ「」の全幅変種を含む要素を作成します。日本語のフォントが利用可能な場合、幅が異なることが期待されます。そのようなフォントが存在しない場合、それらは同じ幅を持つ同様の「レンダリング不可能な文字」グリフとしてレンダリングされる可能性が最も高いでしょう。

+0

非常に巧妙なハック! –

+0

うん、ちょうどフォントとそれは私が探していたトリックのようなものです、ありがとう:) – Annan

2

日本語の文字が含まれていない場合は、Accept-Charsetヘッダーが警告ページにリダイレクトされる可能性があります。残念ながら、this threadが示すように、ヘッダーはjavascriptで利用できません。

関連する問題