2009-03-03 2 views
7

Я работаю над игрой для запоминания javascript, которая требует отображения японских символов. Существует ли кросс-браузерный способ (ы) поиска поддержки для азиатских языков или японцев конкретно?Можно ли определить поддержку восточноазиатского языка?

window.navigator.language будет установлен на язык браузера, но пропускает людей, которые не устанавливают japanese в качестве своего браузера (?).

ответ

6

Есть ли кросс-браузерный способ (ы) поиска поддержки для азиатских языков или японцев конкретно?

Вы имеете в виду «есть ли установленный японский шрифт»? Потому что единственный другой аспект «поддержки азиатских языков», который могут настроить современные ОС, заключается в том, что известны кодировки символов, такие как Shift-JIS (например, кодовая страница 932 в Windows). Но вам это вообще не нужно, поскольку вы можете просто использовать 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.

Смежные вопросы