【问题标题】:Visually-identical characters in UnicodeUnicode 中视觉上相同的字符
【发布时间】:2012-11-06 23:07:34
【问题描述】:

我想为 Unicode 中的特定字符找到视觉上相同的字符。 我知道如何找到一个字符的规范或兼容性分解;但他们没有给我我想要的。 我想找到视觉上相同(不相似)的字符,它们唯一的区别可能是它们的大小。

例如,我想要:(s,S) 或 (S,S)(其代码点不同)。 我不想要 (ß, β) 或 (e, é)。

有什么建议吗?谢谢。

【问题讨论】:

  • Unicode 没有指定字符的外观。那是字体问题。 (标准使用代表性图像,但它们不是标准的一部分。)例如,您是否希望将大写 I 和数字 1 和小写 l 放在一起?在某些字体中它们是相同的,而在其他字体中它们都是不同的。

标签: unicode similarity


【解决方案1】:

对于特定字符,您可以从 Unicode 标准的代码图表中的注释开始。注释通常出于各种原因引用其他字符,包括形状的相似性或同一性。但注释并不意味着涵盖所有内容。

您也可以在http://shapecatcher.com/ 上绘制您的角色并让它识别它。您经常会得到一长串视觉上相似的替代品。

正如@TedHopp 在他的评论中所写,视觉识别是依赖于字体的。例如,“s”和“S”的形状不必相同;在大多数字体中,它们是不同的——基本形式是相同的,但在笔画宽度变化、曲率、衬线等方面存在各种差异。但是,在包含它们的任何字体中,可以预期某些字符在视觉上是相同的,例如如拉丁文大写 A、希腊大写字母 Alpha 和西里尔大写字母 А。

您没有具体说明研究的目的,但您可能正在做一些 Unicode 联盟在某种程度上已经执行的事情。参见UTR #6Unicode Security Considerations,其中还包含对相关工作的引用,包括UTS #9Unicode Security Mechanisms,其中包含 confusables.txt,Recommended confusable mapping for IDN(即,用于特定上下文,但也可能对其他目的感兴趣)。

【讨论】:

  • 很好的解释!还有一些字符在视觉上是相同的,但它们是不同的字素或具有不同的声音或角色。例如,拉丁语“H”(如“Hot”)与西里尔字母“H”(如“неплохо” - 第一个字母发音为拉丁语“N”)。知道 Unicode 字符代表“字形”而不是它们的含义,当然也不是“字形”,这可能会对其他读者有所帮助。
猜你喜欢
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
相关资源
最近更新 更多