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?
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