gpt4 book ai didi

unicode - Unicode 中的 ‘combining characters’ 和 ‘grapheme extenders’ 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 23:54:24 25 4
gpt4 key购买 nike

‘combining characters’ 和有什么区别和 ‘grapheme extenders’在Unicode?

据我所知,它们似乎在做同样的事情——尽管字素扩展器的集合大于组合字符的集合。我显然在这里遗漏了一些东西。为什么要区分?

Unicode 标准,第 3 章,D52

  • 组合字符:具有组合标记(M)通用类别的字符。
  • 组合字符由 all characters with the General Category values of Spacing Combining Mark (Mc), Nonspacing Mark (Mn), and Enclosing Mark (Me) 组成.
  • 所有具有非零规范组合类的字符都是组合字符,但反之则不然:存在具有零规范组合类的组合字符。
  • 将专用字符 (Co) 解释为组合字符与否由实现决定。
  • 这些字符通常不会单独使用,除非它们被描述。它们包括重音、变音符号、希伯来文点、阿拉伯元音符号和印度语 matras 等字符。
  • 组合字符的图形定位取决于最后一个前面的基本字符,除非它们被既不是组合字符也不是零宽度连接符或零宽度非连接符的字符分隔。据说组合字符适用于该基本字符。
  • 可能没有这样的基本字符,例如当组合字符位于文本开头或跟在控制或格式字符之后时,例如回车、制表符或左右标记。在这种情况下,组合字符称为孤立组合字符。
  • 具有孤立组合字符或进程无法进行图形组合时,进程可能会出现没有图形组合的组合字符;也就是说,它可以将它呈现为一个基本字符。
  • 组合字符的代表图像在代码图中用虚线圆圈表示。当与前面的基本字符以图形组合方式呈现时,该基本字符旨在出现在虚线圆圈所占据的位置。

  • Unicode 标准,第 3 章,D59
  • 字素扩展器:具有属性 Grapheme_Extend 的字符.
  • 字素扩展字符由所有非间距标记、零宽度连接器、零宽度非连接器、U+FF9E、U+FF9F 和少量间距标记组成。
  • 字素扩展器可以主要被认为是一种应用在另一个间距字符上方或下方的非间距图形标记。
    零宽度连接器和零宽度非连接器被正式定义为字素扩展器,因此它们的存在不会破坏其他字素扩展器的序列。
  • 少数具有 Grapheme_Extend 属性的间距标记都是两部分组合标记的第二部分。
  • 根据定义,具有 Grapheme_Extend 属性的字符集和具有 Grapheme_Base 属性的字符集是不相交的。
  • 最佳答案

    实际使用上的区别在于,组合字符被定义为通用类别,用于字符的粗略分类,而字素扩展器主要用于UAX #29 text segmentation .
    编辑:既然你提供了赏金,我可以详细说明一下。
    组合字符是不能用作独立字符但必须与另一个字符组合的字符。它们用于定义组合字符序列。
    Graphite 烯扩展器 introduced in Unicode 3.2用于 Unicode Technical Report #29: Text Boundaries (然后处于提议状态,现在称为 Unicode Standard Annex #29:Unicode Text Segmentation )。主要用途是定义字素簇。字素簇基本上是用户感知的字符。根据 UAX #29:

    Grapheme cluster boundaries are important for collation, regular expressions, UI interactions (such as mouse selection, arrow key movement, backspacing), segmentation for vertical text, identification of boundaries for first-letter styling, and counting “character” positions within text.


    主要区别在于字素扩展器不包括大部分 spacing marks (该集合实际上小于组合字符的集合)。大多数间距标记是亚洲文字的元音符号。在这些脚本中,元音有时是通过修改辅音字符来书写的。如果这种修改占用了水平空间(间距标记),它曾经被视为一个单独的用户感知字符,并形成一个新的(遗留)字素簇。在 UAX #29 的后续版本中,这一点有所改变,并引入了扩展的字素簇,其中大多数但不是所有的间距标记不会破坏簇。
    我认为标准中的关键句子是:“可以将字素扩展器主要视为应用于另一个间距字符上方或下方的那种非间距图形标记。”另一方面,组合字符还包括应用于左侧或右侧的间距标记。不过,也有一些异常(exception)(请参阅属性 Other_Grapheme_Extend)。
    例子
    U+0995 孟加拉字母 KA :

    U+09C0 孟加拉语元音符号 II (组合字符,但没有字素扩展器):

    两者的结合:
    কী
    这是由两个传统字素簇组成的单个组合字符序列。元音符号不能单独使用,但它仍然算作遗留字素簇。例如,文本编辑器可以允许将光标放在两个字符之间。
    像这样不扩展字素的组合字符有 300 多个,不组合但扩展字素的字符有 4 个。

    关于unicode - Unicode 中的 ‘combining characters’ 和 ‘grapheme extenders’ 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21722729/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com