В уникодном Basic Multilingual Plane присутствует всего 70 символов, которые после NFC нормализации начинают занимать большее количество байт, большая часть отностится к ивриту, так что в абсолютном большинстве случаев можно сделать преаллокацию по текущему размеру строки
@l29ah зачем?
@l29ah там нет баги. просто будет лишняя аллокация, когда обнаружится, что преаллоцированного буфера недостаточно