我在 Typography 网站提案上看到了这个问题,我不知道答案让我很烦恼。我一直认为“字形”和“字符”是可以互换的。
看了Unicode Character Encoding Model page 上的解释后,我的理解大致是这样的:
- 字符由它们在语言中的含义、字形、它们的外观来定义。因此,美学组合的连字
fi
是一个字形,但两个字符。
所以,我的信念是(如果我错了,请纠正我)实际的区别是:
- 对文本美学不感兴趣的文本解析器会将字形读取为它们各自的字符。所以:
- 如果您要将包含字形的文本复制并粘贴到纯文本编辑器中,则字形将被转换为它们各自的字符(
fi
连字字形将变为f
andi
) - 任何制作精良的基于文本解析的自动化系统(例如搜索引擎爬虫、屏幕阅读器、拼写检查器)都会将字形解释为它们各自的字符。
- 一个字符可以有多个字形或字形集。我想说一个字形只能有一个字符,但这显然是不对的,因为链接文章中有一个示例,其中包含 3 个字形和字形集,它们似乎每个都对应于一个字符和一组字符。我不太明白这是如何工作的:这当然意味着这些字形的解释方式会不一致或模棱两可,因解释器而异?(或者它是否因语言或字体而异?)
- 虽然字形浏览器(例如 Illustrator 中的浏览器)包含字体的完整字形集,但字符映射(例如 Windows 字符映射)仅包含字符,而不包含像连字这样的多个字符的字形(我以前没有注意到)
- 如果您要将包含字形的文本复制并粘贴到纯文本编辑器中,则字形将被转换为它们各自的字符(
我觉得我快到了,但我显然误解了某些地方:不仅仅是“一个字形多个字符”的事情,而且,使用连字的复制和粘贴行为也不是我所期望的:
- 将 Illustrator 中的连字复制
fi
到此输入框:fi
按预期粘贴为(两个字符)。 - 粘贴它的 HTML 代码
fi
( ),以及代码块中的代码(fi
),如预期的那样。 - 将呈现的非代码块连字复制并粘贴回输入框中:粘贴为连字字符,并呈现为连字,无论它是否在代码块中(fi 和
fi
)。同样,包含它的单词:fit misfits (fit misfits
) 粘贴为fit misfits (fit misfits
)。也许这取决于它被粘贴的地方是否理解所使用的编码?
我对此的理解有多大的错误?有人能把我说得对吗:明确定义字形和字符之间的区别(如果我的错误或可以改进),并给出比我的更清晰/更准确的例子来说明这在实践中意味着什么?