【问题标题】:Is it possible to detect East Asian language support?是否可以检测东亚语言支持?
【发布时间】:2023-03-06 00:22:02
【问题描述】:

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

window.navigator.language 将设置为浏览器的语言,但会漏掉不将日语设置为浏览器语言的人 (?)。

【问题讨论】:

    标签: javascript browser internationalization


    【解决方案1】:

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

    您的意思是“是否安装了日文字体”?因为现代操作系统可以配置的“对亚洲语言的支持”的唯一其他方面是与 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”的半角和全角变体的元素。如果可以使用日文字体,我们希望它们具有不同的宽度。如果不存在这样的字体,它们很可能会被渲染为具有相同宽度的类似“不可渲染字符”字形。

    【讨论】:

    • 是的,只是字体,这正是我正在寻找的技巧,谢谢 :)
    【解决方案2】:

    您的服务器可能能够检查Accept-Charset 标头,如果它不包含日文字符,则重定向到警告页面。不幸的是,正如this thread 所指出的,标头不适用于javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      相关资源
      最近更新 更多