【问题标题】:Finding combining diacritics for character at point in emacs在 emacs 中查找字符的组合变音符号
【发布时间】:2012-07-22 16:11:08
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: emacs unicode character


    【解决方案1】:

    我认为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 的十进制形式。

    【讨论】:

    • 好收获。如果我使用变音符号 U+0306 创建 ĕ,将点放在生成的字符之前,然后执行 forward-char,点会增加 2。但是,函数中存在此问题,请参阅我的编辑。
    猜你喜欢
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多