删除不支持的unicode字符,否则显示为正方形

时间:2012-05-19 14:16:50

标签: javascript unicode special-characters

我正在使用一些可以在文档中的某处插入随机杂项unicode符号的javascript。 (like these symbols

但是,我想确保我只插入生成的字符,如果该字符不打印为其中一个“੟”方格。

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

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

这几次打电话会给我:“ਖ਼੕ੁ੡਴਱ੜਯ੉”

干杯!

2 个答案:

答案 0 :(得分:2)

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

  1. 被U + FFFD替换字符替换为显示的非法字符
  2. 所选字体中没有字形的字符(或其他可能被替换的字符)。
  3. 对于第一种情况,你可以尝试丢弃无效的代码点(非字符),但是对于第二种情况你几乎没有选择,因为它取决于字体,浏览器,其他安装的字体,技术用于渲染文本等

答案 1 :(得分:0)

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

这可以改进,但作为周日黑客,它是非常令人满意的。您可以在GitHub上查看the code