“组合字符”和“修饰字母”有什么区别?

Gre*_*reg 8 unicode character

Unicode 标准中有变音符号,如 U+0302、COMBINING CIRCUMFLEX ACCENT (??) 和 U+02C6、MODIFIER LETTER CIRCUMFLEX ACCENT (ˆ)。我知道组合字符与前一个字母组合在一起,比如说,制作一个像“ô”这样的字母,但是修饰字母有什么用呢?它只是组合字符的可打印表示,如果是,它与普通的 U+005E、CIRCUMFLEX ACCENT (^) 有何不同?

[我对抑扬符本身不感兴趣,而是对这类字符感兴趣(似乎有很多,正如你在这里看到的那样)。]

sko*_*isa 5

“组合字符”和“修饰字母”有什么区别?

组合字符

组合字符始终应用于前面的基本字符。这里,从部分截取的示例5.13渲染非间距标记Unicode标准版11.0 -核心规范,其中四个组合字符的序列被施加到基础字符a

结合1

这是另一个例子。运行这个简单的 Java 代码...

System.out.println("Base character:                 \u0930");
System.out.println("Base with combining characters: \u0930\u0903\u0951");
Run Code Online (Sandbox Code Playgroud)

....产生了这个输出:

结合2

在这种情况下,输出比基本字符宽;组合字符之一放置在基本字符上方,另一个放置在基本字符右侧。

我提供了两个示例作为屏幕截图,因为很难找到一种字体来正确呈现生成的字形。

修改字母

与组合字符相反,修改字母是独立的。虽然它们通常也会修改另一个字符(通常但不一定是前面的字符),但它们本身就是基本字符,并且在视觉上是不同的。使用您的示例,以下是 Java 应用程序的输出,分别打印基本字符a后跟 U+0302、COMBINING CIRCUMFLEX ACCENT (??) 和 U+02C6、MODIFIER LETTER CIRCUMFLEX ACCENT (ˆ):

A 0302: A?

A 02C6: Aˆ
Run Code Online (Sandbox Code Playgroud)

MODIFIER LETTER CIRCUMFLEX ACCENT 呈现在右侧,A而 COMBINING CIRCUMFLEX ACCENT 呈现在其上方。

抑扬符字符作为修饰字母的实际含义(语义)是上下文驱动的。例如,在法国,在上回旋ocôté影响它的发音,但在回旋usûr没有; 相反,它用于在视觉上区分sûr(意思是确定)和发音相同的 sur(意思是on)。在法语中,抑扬符 ono总是会影响发音,而 onu从来不会。

它只是组合字符的可打印表示吗...

不 - 修饰字母带有含义。在法语抑扬符的情况下,意义可能是基于它所修饰的字母的上下文驱动的,如上所述。但是含义可以包含在修饰字母本身中。例如

修饰字母通常用于技术语音转录系统,在这些系统中,它们增加了组合标记的使用,以进行语音区分。其中一些也被改编成常规语言正字法。例如,U+02BB MODIFIER LETTER TURNED COMMA 用于表示夏威夷语正字法中的 'okina(声门塞音)。

该示例还表明修改字母不需要与任何其他字符相关联。组合字符永远不会出现这种情况。

还要注意,修饰符字母不一定是一个字母在字母表中的任何,大部分的修饰字母实际上是符号(例如抑扬)。

这与普通的 U+005E、CIRCUMFLEX ACCENT (^) 有何不同?

这只是用来表示抑扬音符的字符。与组合字符和修饰字母不同,它不能在语义或视觉上与任何其他字符相关联。

有关更多详细信息,请参阅The Unicode® Standard Version 11.0 – Core Specification 中的以下部分:

  • 7.8 修饰字母
  • 7.9 组合标记