0

我正在搞砸一些 javascript,它们会在文档的某处插入一个随机的杂项 unicode 符号。(像这些符号

但是,我想确保我只插入生成的字符,如果该字符不被打印为那些“੟”方块之一。

到目前为止,我正在生成 2600 到 2699 之间的随机数。但我想确保它们是有效的而不是正方形。没关系,我没有生成十六进制代码,只是整数,我缺少哪些符号并不重要。

String.fromCharCode(2600+(Math.floor(Math.random()*70)));

多次调用它会给我:“ਖ਼੕ੁ੡਴਱ੜਯ੉”

干杯!

4

2 回答 2

2

有两个基本的东西可能显示为这样的正方形(或菱形中的问号,或完全不同的东西,例如正方形中的代码点值):

  1. 被 U+FFFD 替换字符替换为显示的非法字符
  2. 在所选字体(或其他可能被替换的字体)中没有字形的字符。

对于第一种情况,您可以尝试丢弃无效的代码点(非字符),但对于第二种情况,您几乎没有选择,因为这完全取决于字体、浏览器、其他安装的字体、用于渲染的技术文字等

于 2012-05-19T14:40:20.367 回答
0

仅仅因为是星期天,我破解了一个小 JS,用于测试代码点在画布上绘制时是否看起来像 0xFFFF 字符。这只是比较像素的问题。因此,如果您的字体(在示例代码中我使用的任何默认系统字体)没有代码点,那么它(希望)就像 0xFFFF 一样被绘制。

这可以改进,但作为一个星期天的黑客,它是相当令人满意的。你可以在 GitHub 上查看 代码。

于 2012-05-27T09:52:39.870 回答