Обнаружение критических изменений нормализации в Unicode через UCD
Unicode подчеркивает, что программное обеспечение должно быть максимально совместимым с продвижением вперед, по умолчанию обрабатывая неназначенные символы, как если бы они были кодовой точкой частного использования. В большинстве случаев это хорошо работает, поскольку большинство новых символов не меняются при нормализации, свертывании регистра и т. Д.
Однако я хочу проанализировать "критические" изменения нормализации в Unicode: символы, которые имеют свойства, которые могут привести к изменениям при применении нормализации NFx, NFKx, casefold или NFKC_Casefold. Я не уверен на 100% в своем понимании алгоритмов NFC или NFKC и считаю, что произошли некоторые изменения стабильности, которые ограничивают количество особых случаев. Я могу ограничить свой анализ Unicode 4, 5 или даже 6, если это означает, что мне не придется иметь дело с особыми случаями.
Мой первоначальный удар по этому поводу анализирует базу данных символов XML Unicode и выбирает кодовые точки на основе канонического класса комбинирования) (ccc != 0
), Быстрая проверка NFxy (NFC_QC != 'Y'
,
NFD_QC != 'Y'
и т. д.), и складывание корпуса / NFKC_Casefold (CWKCF = 'Y' or CWCF = 'Y'
) свойства.
Это лучший подход, или я должен просто смотреть на отображение декомпозиции и тип?