【发布时间】:2015-09-01 15:40:37
【问题描述】:
我有一个使用5 digits 作为其字符集的Unicode 字体。问题是它们不在画布上打印。我想显示字符,比如\u1302b:
ctx.fillText('\u1302b',10,50);
显示a square and a 'b'。
ctx.fillText(String.fromCharCode(parseInt('\u1302b',16)),10,50);
也没有效果,什么都不显示。
画布是否限制为 4 位 UNICODE 字符?
编辑:当然,这里有一个类似的问题:Unicode characters not rendering properly in HTML5 canvas。显然,我需要使用提供的 toUTF16() 函数将那个 5 位字符代码分解为两个 4 位字符代码。好的,但是,如何在画布上渲染它们?没有给出工作示例,我尝试的所有方法都失败了。
【问题讨论】:
-
我当然知道我不是在画正方形,你看我的问题了吗?我也很清楚它是什么角色。我也安装了正确的字体。但它现在在我的画布中正确显示,我的问题是,如何解决这个问题?
-
我哪里粗鲁了?我再说一遍:我安装了正确的字体,它在我的文字处理器中运行良好,等等。它只是在画布上不起作用。您的 jsbin 示例都不适合我。在这两种情况下,我都看到了一个正方形。 Chrom、e Opera 和 Firefox。
-
我发布了一个答案,但随后删除了它,因为这个问题是重复的,并且已经在这里给出了一个很好的答案:stackoverflow.com/q/29462958/1607043
-
只需阅读您的链接。好的,使用 toUTF16('\u1302B') 返回 \uD800\uDC00。现在,如何在我的画布中渲染它?
-
DPenner1.事实上,它在 FF、OP 和 IE 中运行良好,但在我用于测试的 Chrome 中却不行。我刚刚发现的 String.fromCodePoint() 也运行良好,但在 Chrome 中却不行。我不明白为什么。感谢您的帮助!
标签: javascript canvas unicode