在 Unicode 标准之外,字符是由一个或多个 graphemes 组成的单个文本单元。 Unicode 标准定义为“字符”实际上是字形和字符的混合。 Unicode 提供了将并列字素解释为单个字符的规则。
Unicode code point 是分配给每个 Unicode character 的唯一编号(可以是字符或字素)。
不幸的是,Unicode 规则允许一些并列的字素被解释为已经有自己的代码点的其他字素 (precomposed forms)。这意味着在 Unicode 中有不止一种方式来表示一个字符。 Unicode normalization 解决了这个问题。
字形是字符的视觉表示。字体为特定字符集(不是 Unicode 字符)提供一组字形。对于每个字符,都有无数可能的字形。
回复马克·艾默里
首先,正如我所说,每个字符都有无数可能的字形,所以不,一个字符不是“总是由一个字形表示”。 Unicode 本身不太关心字形,它在代码图表中定义的东西肯定不是字形。问题是他们也不是所有角色。那么它们是什么?
哪个是更大的实体,字形还是字符?人们如何称呼文本中不是字母或标点符号的图形元素?一个很快浮现在脑海中的术语是“字形”。这个词准确地让人联想到“文本中的图形单元”的概念。我给出了这样的定义:字素是书面文本中最小的不同组成部分。
可以反过来说,字形是由字组成的,那么就叫“汉字”,而汉字所组成的那些点点滴滴,都得叫“字”。然而,这一切都倒退了。字素是不同的点点滴滴。人物更加发达。短语“字形是可组合的”,在 Unicode 的上下文中更好地表述为“字符是可组合的”。
Unicode 定义了字符,但它也定义了要与其他字素或字符组合的字素。你创作的那些怪物就是一个很好的例子。如果他们流行起来,也许他们会在更高版本的 Unicode 中获得自己的代码点;)
这一切都有一个递归元素。在更高的级别,字素变成字符变成字素,但它一直是字素。
对 T S 的回复
Chapter 1 的
标准规定:“Unicode 字符编码处理字母字符,
表意字符和符号等价,这意味着它们可以使用
在任何混合和同等便利的情况下”。鉴于这种说法,我们应该
为标准中的一些术语的合并做准备。有时适当的
随着标准的发展,术语只有在回顾时才会变得清晰。
在语言的正式定义中经常出现两个基本
事物是相互定义的。例如,在
XML 一个元素被定义为起始标签
可能后跟内容,后跟结束标记。内容定义在
turn 作为元素、字符数据或其他一些可能的东西。一种
自引用定义的模式也隐含在 Unicode 中
标准:
字素是代码点或字符。
一个字符由一个或多个字素的序列组成。
当第一次遇到这两个定义时,读者可能会反对
第一个定义是基于代码点是一个字符,但是
这并不总是正确的。一个由两个代码点组成的序列有时会编码一个
下的单个代码点
normalization,那
编码的代码点表示字符,如图所示
figure 2.7。序列
编码其他代码点的代码点。这变得有点棘手
我们甚至还没有达到字符编码方案这样的层
正如UTF-8 用于
将代码点编码为字节序列。
在某些情况下,例如一篇关于
diacritics 和个人
字符的一部分可能会单独出现在文本中。在这种情况下,
单个字符部分可以被认为是一个字符,所以它是有道理的
Unicode 标准也保持灵活。
正如 Mark Avery 所指出的,一个角色可以组合成一个更复杂的
事物。也就是说,如果需要,每个字符都可以用作字素。这
所有组合的最终结果是“用户认为
性格”。似乎没有任何真正的阻力,无论是在
标准或在此讨论中,认为在最高级别有
用户认为文本中的这些内容是单个字符。到
避免重载该术语,我们可以在所有需要的情况下使用“字形”
指用于组成角色的部分。
有时,Unicode 标准的术语无处不在。为了
例如,Chapter 3
将 UTF-8 定义为“编码形式”,而词汇表定义了“编码
形式”作为其他东西,而 UTF-8 作为“字符编码方案”。另一个
例如“Grapheme_Base”和“Grapheme_Extend”,are
acknowledged 是
错误,但仍然存在,因为清除它们是一项任务。有
仍需努力收紧该标准使用的术语。
Proposal for addition of COMBINING GRAPHEME
JOINER 知道了
当它说“字素是一个或多个编码的序列时,它是错误的
与用户认为的字符相对应的字符。”它应该
而是阅读,“一个或多个字素的序列组成了用户
认为是一个字符。”然后它可以使用术语“字素序列”
与术语“字符序列”截然不同。这两个术语都很有用。
“字素序列”巧妙地暗示了从
较小的碎片。 “字符序列”是指我们通常直觉的
意思是:“用户认为是字符的一系列事物。”
有时程序员确实想在字素级别进行操作
序列,因此检查和操作这些序列的机制应该是
可用,但一般来说,在处理文本时,操作就足够了
“字符序列”(用户认为的字符)并让
系统管理底层细节。
到目前为止,在本讨论中涉及的所有情况下,使用“字形”会更简洁
指不可分割的组成部分,“字符”指组合的
实体。这种用法也更好地反映了两者的长期含义
条款。