我正在编写一个函数,该函数返回有关该字符的语言信息。这对于预合成的字符来说很容易。然而,我想解释一下变音符号。我相信这些在Unicode中被称为"标记"或"组合字符"(参见平面U+0300-U+036F)。
例如,在字符e:上放置中心化变音符号(U+0306)
e C-x 8 <RET> 0306 <RET>
在生成的字符上运行C-u C-x =
,您会看到类似于"用以下字符组成̆"的
不幸的是,像following-char
这样的函数只返回基本字符,即"e",而忽略任何组合变音符号。有办法拿到这些吗?
EDIT:sli特维诺夫指出,生成的字形由两个字符组成。如果您将点放在上面代码创建的字形之前,并在运行forward-char
之前和之后执行(point)
,您将看到点增加2。我想我可以通过这种行为破解一个解决方案,但在progn
语句(或函数定义)中,forward-char
似乎只向前移动了一个点。。。在defun
或(progn (forward-char) (point))
中尝试。为什么会这样?
我认为diacritic e
被视为两个字符。我把这个组合放在文件里了CCD_ 10。
ĕee
(char-after 1)
(char-after 2)
(char-after 3)
(char-after 4)
它给了我
101 101 774 101
774是0306的十进制形式。