Можно ли обнаружить поддержку восточноазиатских языков?
-
03-07-2019 - |
Вопрос
Я работаю над игрой для запоминания javascript, которая требует отображения японских символов.Существует ли кроссбраузерный способ (ы) обнаружения поддержки азиатских языков, в частности японского?
window.navigator.язык будет установлен в качестве языка браузера, но не будут доступны пользователи, которые не используют японский в качестве языка своего браузера (?).
Решение
Существует ли кроссбраузерный способ (ы) обнаружения поддержки азиатских языков, в частности японского?
Вы просто имеете в виду “установлен ли японский шрифт”?Потому что единственный другой аспект “поддержки азиатских языков”, который могут настроить современные операционные системы, связан с тем, известны ли кодировки символов, такие как 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);
Это временно создает элементы, содержащие варианты катаканы ‘а’ в половину ширины и во всю ширину.Если доступен японский шрифт, мы бы ожидали, что они будут разной ширины.Если такого шрифта не существует, они, скорее всего, будут отображаться как похожие глифы ‘unrenderable character’ с одинаковой шириной.
Другие советы
Возможно, ваш сервер сможет проверить Accept-Charset
заголовок, если он не содержит японских символов, перенаправьте на страницу предупреждения.К сожалению, поскольку этот поток указывает, что заголовки недоступны для javascript.