From 744c892ba088acae63076c951ab186f8cfe4c309 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Sat, 10 Jun 2023 22:37:29 +0200 Subject: [PATCH] polyseed: use Qt for Unicode normalization Boost is unreliable for this purpose --- src/polyseed/polyseed.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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'; -- 2.52.0