Для объединения диакритических знаков они считаются буквами? Поскольку, насколько я знаю, они могут сочетаться только с другими буквами в правильно сформированном Юникоде.
Функция ICU для определения того, является ли кодовая точка Unicode буквой, принимает только одну кодовую точку, поэтому для любой заданной кодовой точки она не может знать, были ли они объединены с диакритическим знаком или диакритическим, каким оно было в сочетании с. Я пытаюсь реализовать что-то похожее на регулярное выражение с поддержкой Юникода, используя такую конструкцию, как
while(is_letter(codepoint))
Тем не менее, я весьма обеспокоен тем, что произойдет, если codepoint
на самом деле является диакритическим знаком, который будет сопоставляться с предыдущей кодовой точкой и другими знаками сопоставления.
Это безопасно сделать? Или мне придется явно находить и игнорировать диакритические знаки и другие сопоставительные знаки?
Редактировать: Что мне действительно нужно сделать, так это итерацию символов , а не кодовых точек .
Этот вопрос является жертвой проблемы XY. Мне нужно поднять вопрос о моей реальной проблеме .