结合附加符号(combining diacritical marks)是指一类比较特殊的字符,这些字符一般不会单独存在,而是结合其他字符一同出现来表达不同的含义。汉语环境下,比较典型的例子就是汉语拼音的声调。

结合附加符号的 Unicode 范围是 0300-036F,字符数量总共有 112 个。其中,汉语声调字符包括:

名字 样式 Unicode编号 HTML实体代码 汉语声调
组合用长音符 ̄ U+0304 ̄ 阴平
组合用锐音符 ́ U+0301 ́ 阳平
组合用抑扬符 ̌ U+030C ̌ 上声
组合用抑音符 ̀ U+0300 ̀ 去声

Javascript 中使用 String.fromCharCode() 可以返回由指定的 UTF-16 代码单元序列创建的字符串。例如,String.fromCharCode(98, 97, 768, 32, 98, 97) 返回 bà ba,而 bà ba 的长度为 6。

结合附加符号有一个特点是可以附加在前一个字符上,这就导致前一个字符的实际显示高度可能会变化,例如:

cdm_inner

考虑到这种情况,在渲染文本的时候,如果文本有可能含有结合附加符号最好限制一下行高度和文本渲染区域的高度,防止影响区域外的内容。