2009-03-03 3 views
7

Ich arbeite an einem Javascript-Gedächtnisspiel, das die Anzeige japanischer Schriftzeichen erfordert. Gibt es einen browserübergreifenden Weg, Unterstützung für asiatische Sprachen oder speziell Japanisch zu erkennen?Ist es möglich, ostasiatische Sprachunterstützung zu erkennen?

window.navigator.language wird auf die Sprache des Browsers eingestellt, aber vermisst Personen, die nicht Japanisch als Browsersprache (?) Eingestellt haben.

Antwort

6

Gibt es einen Cross-Browser Weg (s) zur Erkennung der Unterstützung für asiatische Sprachen, oder speziell Japanisch?

Meinst du nur "ist dort eine japanische Schriftart installiert"? Da der einzige andere Aspekt der "Unterstützung asiatischer Sprachen", den moderne Betriebssysteme konfigurieren können, ist, ob Zeichenkodierungen wie Shift-JIS bekannt sind (aka Codepage 932 unter Windows). Aber du brauchst das sowieso nicht, da du einfach UTF-8 verwenden kannst, das viel sauberer ist und überall unterstützt wird.

Im Allgemeinen können Sie nicht direkt feststellen, ob eine Schriftart für einen bestimmten Zeichenbereich installiert ist oder nicht, aber es gibt Umwege. Wie zum Beispiel die gerenderte Größe von On-Page-Text Messung:

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); 

Dies schafft vorübergehend Elemente halbe Breite und in voller Breite Varianten des Katakana ‚a‘ enthält. Wenn eine japanische Schriftart verfügbar ist, würden wir erwarten, dass sie unterschiedliche Breiten haben. Wenn keine solche Schriftart vorhanden ist, werden sie höchstwahrscheinlich als ähnliche Glyphen des Typs "nicht auswechselbares Zeichen" mit der gleichen Breite wiedergegeben.

+0

Sehr schlauer Hack! –

+0

Ja, nur die Schriften und das ist genau die Art von Trick, die ich gesucht habe, danke :) – Annan

2

Ihr Server ist möglicherweise in der Lage, den Header Accept-Charset zu überprüfen. Wenn er keine japanischen Zeichen enthält, wird er auf eine Warnseite umgeleitet. Leider, wie this thread angibt, sind die Header für Javascript nicht verfügbar.