我正在开发一个需要显示日文字符的javascript记忆游戏。是否有跨浏览器方式检测亚洲语言或日语的支持?
window.navigator.language将被设置为浏览器的语言,但是错过了那些没有将日语设置为浏览器语言的人(?)。
答案 0 :(得分:6)
是否有跨浏览器方式检测亚洲语言或日语的支持?
你的意思是“是否安装了日语字体”?因为现代操作系统可以配置的“支持亚洲语言”的唯一其他方面是否知道像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'的半宽和全宽变体的元素。如果有日文字体,我们可以预期它们的宽度不同。如果不存在这样的字体,它们很可能会被渲染为具有相同宽度的类似“不可渲染的字符”字形。
答案 1 :(得分:2)
您的服务器可能会检查Accept-Charset
标头,如果它不包含日文字符,则会重定向到警告页面。不幸的是,正如this thread所示,标题不适用于javascript。