4

如果要显示⬀、⤴或➶等特殊字符,如何查看用户的浏览器是否可以显示?我不希望角色以▯的形式出现;如果可以,我宁愿显示一个正常的↗。

那么如何确保我发出的任何字符都能正确显示呢?

我找到了这个问题的答案,不幸的是,这在我的情况下不起作用。 诀窍是放置一个在 DOM 树中不存在的字符,这样您就知道它不会显示,并将其宽度与所需字符的宽度进行比较。如果宽度相同,很可能您想要的字符也未定义并且也不会显示。

但是,此技巧并非在所有情况下都有效。链接的答案将 U+FFFD 用于非显示字符,但在某些设备(在我的情况下为 Windows Mobile 手机)上,U+FFFD 是已定义字符,其宽度与用于未定义字符的字形不同( � vs ▯)。此外,已知的非字符代码点(例如 U+FFFE)显示为问号 (?) 而不是 ▯,因此它们的宽度也不同。

所以我的问题是,我可以将我的角色与什么进行比较,以便我知道它不会是一个不可显示的角色?

4

1 回答 1

0

使用多个字符

假设您没有使用等宽字体,请使用来自不同语言的 3+ 个字符,可能没有人将它们全部安装。

然后在可以渲染它们的环境中测量它们的宽度并将这些数据提供给您的应用程序。

例如:

  • A 比 B 宽
  • B比C宽

一个简单的算法是:

  1. 在用户环境中收集 A、B 和 C 的宽度。
    使用您描述的技术。

  2. 如果 A 比 B 宽,B 比 C 宽。
    回退到安全字符。

  3. 如果其中一项或全部的顺序不正确。
    使用那个作为▯。

结论

我知道这是基本的,但这是我能想到的最好方法。

于 2014-02-19T21:57:46.243 回答