【问题标题】:Javascript Canvas and UNICODEJavascript Canvas 和 UNICODE
【发布时间】: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


【解决方案1】:

将十六进制值括在 {} 中,如下所示:

ctx.fillText('\u{1302b}',10,50);

【讨论】:

    猜你喜欢
    • 2012-10-19
    • 2013-08-18
    • 2011-04-10
    • 2015-01-30
    • 2013-04-02
    • 2017-10-07
    • 2019-05-21
    • 2014-06-28
    • 2019-03-30
    相关资源
    最近更新 更多