30

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

是否有可靠地产生此字形的“未找到字形”字符?我想"If the following text contains <insert character here> then you need another font..."在 UI 中写一些类似的东西。

顺便说一句,我不是在谈论 �(替换字符)。当无法从数据流中正确解码 Unicode 字符时,会显示该字符。它不一定会产生相同的字形:

在此处输入图像描述

4

8 回答 8

21

来自 Unicode 规范:

U+25A1□ 白色方块

  • 可用于表示缺失的象形文字

  • U+20DE$⃞ 组合封闭正方形

于 2015-10-01T23:20:45.310 回答
13

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

因此,最好将字符的小图像与字符本身一起显示,以便读者可以比较它们。

于 2012-12-05T20:26:41.330 回答
6

glyph-not-found 字符由字体引擎和字体指定;它没有固定的字符。

于 2012-12-05T19:06:43.740 回答
4

Unicode 使用以下术语:

  • 替换字形
  • 缺少字形
  • 可解释但不可渲染的角色

Unicode 标准 (10.0)没有定义它们的外观,但它在第 5.3 章 [ PDF ]中建议实现显示

[...] 独特的字形,给出了它们类型的一些一般指示 [...]

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

Unicode词汇表条目说

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


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

于 2017-10-20T19:51:42.707 回答
3

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

于 2013-07-05T22:49:40.523 回答
2

另外,(据我所知)日语使用GETA MARK 〓 U+3013

CJK 符号和标点符号

于 2016-02-15T08:02:56.133 回答
1

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

检查 Microsoft 规范,主题Shape of .notdef glyphhttps ://docs.microsoft.com/en-us/typography/opentype/otspec170/recom#shape-of-notdef-glyph

于 2016-11-21T15:48:38.437 回答
1

有一个 notdef 字符表示未找到该字形。但它没有字符码。您可以使用控制字符的 charcodes 插入 notdef 字符(如“”,U + 0002)

于 2018-10-20T15:34:36.723 回答