From: tobtoht Date: Sat, 10 Jun 2023 20:37:29 +0000 (+0200) Subject: polyseed: use Qt for Unicode normalization X-Git-Url: https://git.nutra.tk/v1?a=commitdiff_plain;h=744c892ba088acae63076c951ab186f8cfe4c309;p=gamesguru%2Ffeather.git polyseed: use Qt for Unicode normalization Boost is unreliable for this purpose --- diff --git a/src/polyseed/polyseed.cpp b/src/polyseed/polyseed.cpp index e5f206e5..90746875 100644 --- a/src/polyseed/polyseed.cpp +++ b/src/polyseed/polyseed.cpp @@ -9,17 +9,18 @@ #include #include -#include -#include -#include #include +#include + namespace polyseed { static std::locale locale; static size_t utf8_nfc(const char* str, polyseed_str norm) { - auto s = boost::locale::normalize(str, boost::locale::norm_type::norm_nfc, locale); + auto Qstr = QString(str); + auto Qs = Qstr.normalized(QString::NormalizationForm_C); + auto s = Qs.toStdString(); size_t size = std::min(s.size(), (size_t)POLYSEED_STR_SIZE - 1); s.copy(norm, size); norm[size] = '\0'; @@ -28,7 +29,9 @@ namespace polyseed { } static size_t utf8_nfkd(const char* str, polyseed_str norm) { - auto s = boost::locale::normalize(str, boost::locale::norm_type::norm_nfkd, locale); + auto Qstr = QString(str); + auto Qs = Qstr.normalized(QString::NormalizationForm_KD); + auto s = Qs.toStdString(); size_t size = std::min(s.size(), (size_t)POLYSEED_STR_SIZE - 1); s.copy(norm, size); norm[size] = '\0';