Unicode 是否有一个“问题”;“未找到图示符”;性格

Unicode 是否有一个“问题”;“未找到图示符”;性格,unicode,fonts,special-characters,glyph,Unicode,Fonts,Special Characters,Glyph,假设有一个文本包含无法显示的Unicode字符,因为我们的字体没有相应的字形。通常会显示一个占位符,例如矩形块(参见屏幕截图) 是否存在可靠生成此标志符号的“未找到标志符号”字符?我想写一些类似于“如果下面的文本包含,那么您需要在UI中使用另一种字体…” 顺便说一下,我不是说� (). 当无法从数据流中正确解码Unicode字符时,将显示此字符。它不一定产生相同的图示符: 字形未找到字符由字体引擎和字体指定;它没有固定字符。不,没有“未找到glyph”字符。不同的程序使用不同的图形表示。空的窄矩

假设有一个文本包含无法显示的Unicode字符,因为我们的字体没有相应的字形。通常会显示一个占位符,例如矩形块(参见屏幕截图)

是否存在可靠生成此标志符号的“未找到标志符号”字符?我想写一些类似于
“如果下面的文本包含,那么您需要在UI中使用另一种字体…”

顺便说一下,我不是说� (). 当无法从数据流中正确解码Unicode字符时,将显示此字符。它不一定产生相同的图示符:


字形未找到字符由字体引擎和字体指定;它没有固定字符。

不,没有“未找到glyph”字符。不同的程序使用不同的图形表示。空的窄矩形是常见的渲染,但不是唯一的渲染。它也可以是一个带有问号的矩形,也可以是带有十六进制字符编码的矩形


因此,最好将字符的小图像与字符本身一起显示,以便读者能够进行比较

使用非字符,如U+10FFFF(在Unicode空间的最末端),这99.99%肯定不会在任何sane字体的cmap表中找到。至少没有已知的Windows系统字体将该非字符映射到字形,也不太可能是任何Linux/Mac系统字体。即使是包罗万象的最后一种字体()似乎也无法映射它。因此,虽然没有在Unicode中定义的官方“glyph not found”字符映射到.notdef glyph,但实际上,上述非字符保证显示该glyph,无论该特定字体中的glyph设计是什么。.notdef标志符号(OpenType中的标志符号id 0)可能是一个简单的空心矩形(标准)、带x的框、带问号的框、偶尔空白的框(这是一种不好的做法),有时还可能是一些奇怪的东西,如螺旋(在Palatino Linotype中)。

来自Unicode规范:

U+25A1
□ 白色正方形

  • 可用于表示缺少的表意文字

  • → <代码>U+20DE$⃞ 组合封闭正方形

另外,(据我所知)日本人使用GETA标记〓U+3013


未找到字形的3个可能字符

检查Microsoft规范,主题为.notdef glyph的形状,
Unicode使用以下术语:

  • 替换图示符
  • 缺失字形
  • 可解释但无法描述的特征
Unicode标准(10.0)没有定义它们的外观,但它在第5.3章[]中建议实现显示

[…]给出其类型一般指示的独特标志符号[…]

将其与“未分配代码点”区分开来。他们举了一些例子:

Unicode:

它通常显示为一个开放的或黑色的矩形



tl;dr:没有标准化的外观/图示符,这取决于实现。为了帮助用户,实现可以显示标志符号,指示无法显示的字符类型。

有一个notdef字符,表示找不到标志符号。但它没有字符码。您可以使用controll字符的字符码插入notdef字符(如“”,U+0002)

矩形是“glyph not found”glyph。尽管有很多关于“glyph not found”(未找到glyph)glyph的好答案,但这并不能帮助您实际检测到它,因为代码中的文本字符串仍然具有该字符,而不管用于呈现它的字体如何。我认为有些渲染库可以查询字体,但我不知道这有多标准。问题清楚地表明,这与替换字符无关,替换字符U+FFFD是一个固定字符(它没有固定的字形,尽管包含它的字体往往使用非常相似的字形)@Jukka:不过我也不是在说U+FFFD。那就不要用“替换字符”这个短语,因为a)它根本不是一个字符,b)它特别不是带有Unicode名称替换字符的字符,(c)人们很容易被这样的问题弄糊涂。我已将您的编辑回滚到Jukka K.Korpela的答案。请在此答案中包含该信息和/或在另一个答案中添加注释。为什么不在此处包含该信息并删除此答案?在一些Android手机上,缺少的标志符号仅用几个像素的空白绘制。所以它甚至不必是可见的东西,看起来这个角色不能在stackoverflow中发布