5

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

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

e C-x 8 <RET> 0306 <RET>

在生成的字符上运行C-u C-x =,您将看到类似“由以下字符组成 ̆ ”之类的内容

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

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

4

1 回答 1

2

我认为diacritic e被视为两个字符。我把这个组合放在文件中 e(diacritic e)e

ĕee
(char-after 1)
(char-after 2)
(char-after 3)
(char-after 4)

它给了我。

101 101 774 101

而 774 是 0306 的十进制形式。

于 2012-07-22T16:58:27.373 回答