Проблема, с которой я столкнулся, состоит в том, что, учитывая последовательность байтов, я хочу определить ее самый длинный префикс, который формирует действительный символ Unicode (кластер расширенного графема) в предположении кодировки UTF8.
Я использую Swift, поэтому я хотел бы использовать встроенные функции Swift для этого. Но эти функции декодируют только полную последовательность байтов. Таким образом, я думал преобразовать префиксы последовательности байтов через Swift и взять последний префикс, который не дал сбоя и состоит только из 1 символа. Очевидно, что это может привести к испытанию всей последовательности байтов, чего я хочу избежать. Решение состоит в том, чтобы прекратить пробовать префиксы после сбоя 4 префиксов подряд. Если свойство, заданное в моем вопросе, остается в силе, это гарантирует, что все более длинные префиксы также не будут работать.
Я считаю Unicode Text Segmentation Standard нечитаемым, иначе я бы попытался напрямую реализовать определение границ кластеров расширенных графем ...