1

我有一个非常简单的 JavaScript 应用程序,它必须呈现一些日文字符(特别是半角假名)。

这就是所有:ヲァィゥェォャュョッアイウエオカキクケコサシス セソタチ ユヨラリルレロワン </p>

但是,当它们呈现到屏幕上时,它们会显示为其他随机字符,如下所示。这是一个屏幕截图。

更奇怪的是,如果我将随机渲染的字符复制并粘贴到我的代码编辑器中,它就会变成日语!

我知道 Chrome 能够渲染日文字符,因为当我输入这个问题时,我现在可以看到它这样做了。所以,我完全不知道为什么会在我的程序中发生这种情况。

Firefox 似乎没有这个问题,但 Safari 有。

这是我的代码。我有一个字符串中的所有字符,我随机选择一个来显示(这是出于艺术目的)。

let randomChar = function() {
  const halfWidthKana = "ヲァィゥェォャュョッアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
  const numerals = "0123456789";

  let possible = halfWidthKana + numerals;

  return possible.charAt(Math.floor(Math.random() * possible.length));
};

然后随机选择的字符显示在 li 标签内

let li = document.createElement("li");
li.appendChild(document.createTextNode(randomChar()));

这是我的应用程序形成的唯一 HTML 文件:

<!DOCTYPE html>
<html>
    <head>
        <title>Japanese Text</title>
        <meta charset="utf-8" />
        <meta name="google" value="notranslate">
        <link rel="stylesheet" href="styles.css">
        <script src="generate.js"></script>
        <script src="Column.js"></script>
    </head>
    <body>
        <div id="lines"></div>
    </body>
</html>
4

1 回答 1

1

我也可以在我的 Mac 上重现它。

Chrome 的检查器显示正在使用字体“Songti SC”。切换到不同的字体可以解决此问题。

更多细节在https://crbug.com/544402讨论。

于 2017-08-29T10:59:10.700 回答