寻找在emacs中结合字符的变音符号

Dan*_*Dan 5 unicode emacs character

我正在写一个函数,它返回关于角色的语言信息.对于预先组合的字符,这很容易.但是,我想说明变音符号.我相信这些在Unicode中被称为"标记"或"组合字符"(参见平面U + 0300 - U + 036F).

例如,要将中心化变音符号(U + 0306)放在字符e上:

e C-x 8 <RET> 0306 <RET>
Run Code Online (Sandbox Code Playgroud)

运行C-u C-x =生成的角色,你会看到类似"由以下角色组成的̆"

following-char遗憾的是,函数只返回基本字符,即"e",并忽略任何组合变音符号.有没有办法得到这些?

编辑:slitvinov指出,生成的字形由两个字符组成.如果你在上面的代码创建的字形之前放置点,并(point)在运行之前和之后执行forward-char,你会看到点增加2.我想我可以通过这种行为破解解决方案,但它似乎在一个progn语句(或函数定义)内),forward-char只能向前移动一个...尝试在一个defun或多个(progn (forward-char) (point)).为什么会这样?

sli*_*nov 2

我认为diacritic e被视为两个角色。我将此组合放入文件\n 中e(diacritic e)e

\n\n
e\xcc\x86ee\n(char-after 1)\n(char-after 2)\n(char-after 3)\n(char-after 4)\n
Run Code Online (Sandbox Code Playgroud)\n\n

它给了我。

\n\n
101 101 774 101\n
Run Code Online (Sandbox Code Playgroud)\n\n

774是0306的十进制形式。

\n