2012-07-22 10 views
5

Piszę funkcję, która zwraca informacje językowe o postaci w punkcie. Jest to łatwe w przypadku wstępnie skomponowanych postaci. Chciałbym jednak uwzględnić znaki diakrytyczne. Sądzę, że są one nazywane "znakami" lub "łączącymi znaki" w Unicode (patrz płaszczyzna U + 0300 - U + 036F).Znaleźć kombinację znaków diakrytycznych dla postaci w punkcie w emacs

Na przykład, aby umieścić diakrytykę centralizacji (U + 0306) na znak E:

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

Uruchom C-u C-x = na wynikającym z charakteru i widać coś w stylu „Złożony z następującym charakterze (s) 01 "

Funkcje takie jak following-char niestety zwracają tylko znak bazowy, np." E ", i ignorują wszelkie kombinacje znaków diakrytycznych. Czy jest jakiś sposób, aby je zdobyć?

EDIT: slitvinov zwrócił uwagę, że wynikowy glif składa się z dwóch znaków. Jeśli umieścisz punkt przed glifem utworzonym przez powyższy kod i wykonasz (point) przed i po uruchomieniu forward-char, zobaczysz, że punkt zwiększy się o 2. Pomyślałem, że mogę zhackować rozwiązanie przez to zachowanie, ale wydaje się, że wewnątrz instrukcji progn (lub definicja funkcji), forward-char przesuwa się tylko o jeden punkt w przód o jeden ... spróbuj w defun lub (progn (forward-char) (point)). Dlaczego to możliwe?

Odpowiedz

2

Myślę, że diacritic e jest traktowany jako dwa znaki. Umieszczam tę kombinację w pliku e(diacritic e)e.

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

Daje mi.

101 101 774 101 

A 774 jest formą dziesiętną 0306.

+0

dobry połów. Jeśli utworzę ĕ używając znaku diakrytycznego U + 0306, umieść punkt przed wynikowym znakiem i wykonaj 'forward-char', punkt zwiększy się o dwa. Występuje w tym problem z funkcją, zobacz moją edycję. – Dan

Powiązane problemy