5#ifdef RUNE_CASTER_HAS_UTFCPP
7#elif defined(RUNE_CASTER_HAS_ICU)
8 #include <unicode/normalizer2.h>
9 #include <unicode/unistr.h>
24 std::string utf8_text = input.
to_utf8();
25 std::string normalized;
28#ifdef RUNE_CASTER_HAS_UTFCPP
30 utf8::utf8to32(utf8_text.begin(), utf8_text.end(), std::back_inserter(utf32));
32 utf8::utf32to8(utf32.begin(), utf32.end(), std::back_inserter(normalized));
33#elif defined(RUNE_CASTER_HAS_ICU)
35 normalized = utf8_text;
37 normalized = utf8_text;
40 normalized = utf8_text;
49 return "Unicode NFC Normalization";
51 return "Unicode NFD Normalization";
53 return "Unicode NFKC Normalization";
55 return "Unicode NFKD Normalization";
57 return "Unicode Normalization";
bool empty() const noexcept
static RuneString from_utf8(std::string_view utf8_text)
Create a RuneString from UTF-8 text.
std::string to_utf8() const
Convert the sequence to UTF-8 string.
std::string description() const override
Get the spell's description.
RuneSequence operator()(const RuneSequence &input) const override
Apply the spell transformation.
UnicodeNormalizer(unicode::NormalizationForm form=unicode::NormalizationForm::NFC)
Construct a UnicodeNormalizer.
RuneString RuneSequence
Backward compatibility alias for RuneString.
Simple and unified spell system for text transformation.