Я ищу способ подсчета лигатур как отдельных единиц, когда они отображаются пользователю, например. https://www.compart.com/en/unicode/U+FEFB.
Когда этот символ набирается (наберите G на арабской клавиатуре), он вставляется в форме декомпозиции, то есть U+0644 U+0627
.
Я могу разложить U+FEFB
на
escape(String.fromCodePoint(0xFEFB).normalize("NFKD")) // '%u0644%u0627'
Есть ли способ составить U+0644 U+0627
в 0xFEFB
?
Почему это работает?
escape(String.fromCodePoint(0x0644, 0x0627).normalize("NFKC"))
Единственная идея, которая у меня была, состояла в том, чтобы перебрать интересующие меня диапазоны юникода, разложить и создать карту, но я надеюсь, что есть лучший способ.