‘;组合字符’;和‘;字形扩展器’;用Unicode?

‘;组合字符’;和‘;字形扩展器’;用Unicode?,unicode,terminology,grapheme,combining-marks,Unicode,Terminology,Grapheme,Combining Marks,Unicode中和的区别是什么 据我所知,它们似乎也在做同样的事情——尽管一组字形扩展器比一组组合字符大。我显然遗漏了一些东西。为什么会有区别 Unicode标准,第3章,D52 合并字符:具有合并标记(M)一般类别的字符 组合字符由以下部分组成 所有具有非零规范组合类的字符都是组合字符,但情况并非相反:存在具有零规范组合类的组合字符 是否将专用字符(Co)解释为组合字符取决于实现 这些字符通常不会单独使用,除非对其进行描述。它们包括口音、变音符号、希伯来语点、阿拉伯元音符号和印度语标记等字

Unicode中和的区别是什么

据我所知,它们似乎也在做同样的事情——尽管一组字形扩展器比一组组合字符大。我显然遗漏了一些东西。为什么会有区别


Unicode标准,第3章,D52
  • 合并字符:具有合并标记(M)一般类别的字符
  • 组合字符由以下部分组成
  • 所有具有非零规范组合类的字符都是组合字符,但情况并非相反:存在具有零规范组合类的组合字符
  • 是否将专用字符(Co)解释为组合字符取决于实现
  • 这些字符通常不会单独使用,除非对其进行描述。它们包括口音、变音符号、希伯来语点、阿拉伯元音符号和印度语标记等字符
  • 组合字符的图形定位取决于前一个基本字符,除非它们由既不是组合字符也不是零宽度合并字符或零宽度非合并字符的字符分隔。据说组合字符适用于该基本字符
  • 可能没有这样的基本字符,例如当组合字符位于文本的开头或在控件或格式字符(例如回车符、制表符或左右标记)之后时。在这种情况下,组合字符称为独立组合字符
  • 对于孤立的组合字符,或者当一个进程无法执行图形组合时,一个进程可以呈现一个没有图形组合的组合字符;也就是说,它可以将其显示为基本字符
  • 组合字符的代表性图像在代码图中用虚线圈表示。当以图形方式与前面的基本字符组合显示时,该基本字符将出现在虚线圆圈所占据的位置
Unicode标准,第3章,D59
  • Grapheme extender:具有属性的字符
  • Grapheme extender字符由所有非间距标记、零宽度连接符、零宽度非连接符、U+FF9E、U+FF9F和少量间距标记组成
  • 一个字形扩展器主要可以被认为是一种应用在另一个间距字符之上或之下的非间距图形标记。 零宽度连接线和零宽度非连接线被正式定义为grapheme扩展器,因此它们的存在不会打断其他grapheme扩展器的序列
  • 具有Grapheme_Extend属性的少量间距标记都是两部分组合标记的第二部分
  • 根据定义,具有Grapheme_Extend属性的字符集和具有Grapheme_Base属性的字符集是不相交的

    • 我可以引用Yannis Haralambous的话吗,第116f页:

      这个想法是,一个脚本或一个符号系统有时太复杂了 精细地划分成字符的。而当我们把这些东西切碎的时候 对于角色,没有办法将它们重新组合在一起 重建较大的字符。例如,加泰罗尼亚人有结扎线 ŀl。此连字编码为两个Unicode字符:“ŀ”
      0x0140带中间点的拉丁文小写字母l
      和一个普通的“l”。但是 这种划分可能并不总是我们想要的。
      假设我们希望 正如我们所希望的那样,在这个连字上加一个回旋音 与连字“œ”和“æ”有关。如何在Unicode中实现这一点? 允许用户在播放rôle的结构中构建角色 在新字符中,Unicode引入了三个新属性(grapheme 基本字符、字形扩展、字形链接)和一个新字符:
      0x034F组合字形连接器


      因此,在我看来,这意味着grapheme Extender用于应用(例如)本身由几个字符组成的字符上的重音。

      实际用法的区别在于,组合字符被定义为字符粗略分类的一般类别,而字符扩展符主要用于

      编辑:既然你提供了赏金,我可以详细说明一下

      组合字符是不能用作独立字符但必须与其他字符组合的字符。它们用于定义组合字符序列

      石墨烯扩展器将用于(当时处于建议状态,现在称为)。主要用途是定义grapheme集群。图形集簇基本上是用户感知的字符。根据UAX#29:

      对于排序、正则表达式、用户界面交互(如鼠标选择、箭头键移动、退格)、垂直文本的分割、第一个字母样式的边界标识以及计算文本中的“字符”位置,字形集群边界非常重要

      主要区别在于,grapheme Extender不包含大多数字符(该集合实际上比组合字符集合小)。大多数间隔符号是亚洲文字的元音符号。在这些脚本中,元音有时是通过修改辅音字符来书写的。如果此修改占用了水平空间(间距标记),则它通常会被视为一个单独的用户感知字符,并形成一个新的(传统的)字形集群。在UAX#29的更高版本中,这一点被改变,并引入了扩展的石墨烯簇,其中大多数但并非所有的间距标记都不会打断簇

      我认为他们的标准中的关键一句是:“一个字形延伸器可以被认为主要是一种应用在o上面的无空格的图形标记