2012-07-22 8 views
5

Estoy escribiendo una función que devuelve información lingüística sobre el carácter en el punto. Esto es fácil para los personajes precompuestos. Sin embargo, deseo dar cuenta de diacríticos. Creo que estos se denominan "marcas" o "combinación de caracteres" en Unicode (consulte el plano U + 0300 - U + 036F).Encontrar la combinación de signos diacríticos para el carácter en el punto en emacs

Por ejemplo, para colocar el diacrítica centralización (U + 0306) en el carácter e:

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

Run C-u C-x = en el carácter resultante y verá algo así como "Compuesto con el siguiente carácter (s) ̆ "

Por desgracia, funciones como following-char solo devuelven el carácter base, es decir," e ", e ignoran cualquier combinación de signos diacríticos. ¿Hay alguna forma de obtener esto?

EDIT: slitvinov señaló que el glifo resultante consta de dos caracteres. Si coloca un punto antes del glifo creado por el código anterior y ejecuta (point) antes y después de ejecutar forward-char, verá que el punto aumenta en 2. Me imaginé que podría piratear una solución mediante este comportamiento, pero parece que dentro de una declaración progn (o definición de función), forward-char solo mueve el punto hacia adelante en uno ... pruébalo en un defun o con (progn (forward-char) (point)). ¿Por qué podría ser esto?

Respuesta

2

Creo que diacritic e se tratan como dos caracteres. Puse esta combinación en el archivo e(diacritic e)e.

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

Me da.

101 101 774 101 

Y 774 es una forma decimal de 0306.

+0

Buena captura. Si creo ĕ usando el signo diacrítico U + 0306, coloco el punto antes del carácter resultante y ejecuto 'forward-char', el punto aumenta en dos. Hay un problema con esto en una función, sin embargo, ver mi edición. – Dan

Cuestiones relacionadas