我正在开发一个需要显示日文字符的javascript记忆游戏。是否有跨浏览器方式检测亚洲语言或日语的支持?

window.navigator.language将被设置为浏览器的语言,但是错过了那些没有将日语设置为浏览器语言的人(?)。

有帮助吗?

解决方案

  

是否有跨浏览器方式检测亚洲语言或日语的支持?

你的意思是“是否安装了日文字体”?因为“支持亚洲语言的唯一其他方面”现代操作系统可以配置的是否知道像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’。如果有日文字体,我们可以预期它们的宽度不同。如果不存在这样的字体,它们很可能会被渲染为类似的不可渲染的字符’宽度相同的字形。

其他提示

您的服务器可能可以查看 Accept-Charset 标头,如果它不包含日文字符,则重定向到警告页面。不幸的是,正如此主题所示,标题不适用于javascript。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top