Объединение персонажей по имени гекса - PullRequest
6 голосов
/ 22 апреля 2019

Это работает:

say "\c[COMBINING BREVE, COMBINING DOT ABOVE]"  # OUTPUT: «̆̇␤»  

Однако это не так:

say "\c[0306, 0307]"; # OUTPUT: «IJij␤»

Он обрабатывает его как два разных персонажа.Есть ли способ заставить его работать напрямую, используя цифры, кроме использования uniname для преобразования его в имена?

Ответы [ 2 ]

9 голосов
/ 22 апреля 2019

Выход \c[…] предназначен для объявления символа по имени или псевдониму.
0306 это не имя, это порядковый номер / кодовая точка символа.

Выход \x[…] предназначен для объявления символа шестнадцатеричным порядковым числом.

say "\x[0306, 0307]"; # OUTPUT: «̆̇␤»

(Подсказка: в шестнадцатеричном литерале есть x 0x0306)

5 голосов
/ 22 апреля 2019

\ c использует десятичные числа:

say "\c[774, 775]"

, где 774 - десятичный эквивалент 0306, работает отлично.

...