diff --git a/core/src/ldml/ldml_processor.cpp b/core/src/ldml/ldml_processor.cpp index 9c58a40d19..ff2fc60b73 100644 --- a/core/src/ldml/ldml_processor.cpp +++ b/core/src/ldml/ldml_processor.cpp @@ -271,10 +271,10 @@ ldml_processor::process_key_string(km_core_state *state, const std::u16string &k // so that we don't have to reconvert it inside the transform code. std::u32string key_str32 = kmx::u16string_to_u32string(key_str); assert(ldml::normalize_nfd_markers(key_str32)); // TODO-LDML: else fail? - // extract context string, in NFC - std::u32string old_ctxtstr_nfc; - (void)context_to_string(state, old_ctxtstr_nfc, false); - assert(ldml::normalize_nfc_markers(old_ctxtstr_nfc)); // TODO-LDML: else fail? + // extract context string, in NFD + std::u32string old_ctxtstr_nfd; + (void)context_to_string(state, old_ctxtstr_nfd, false); + assert(ldml::normalize_nfd_markers(old_ctxtstr_nfd)); // TODO-LDML: else fail? // context string in NFD std::u32string ctxtstr; @@ -304,18 +304,18 @@ ldml_processor::process_key_string(km_core_state *state, const std::u16string &k // Ok. We've done all the happy manipulations. - /** NFC and no markers */ + /** NFD and no markers */ std::u32string ctxtstr_cleanedup = ldml::remove_markers(ctxtstr); - assert(ldml::normalize_nfc_markers(ctxtstr_cleanedup)); + assert(ldml::normalize_nfd_markers(ctxtstr_cleanedup)); // find common prefix. // For example, if the context previously had "aaBBBBB" and it is changing to "aaCCC" then we will have: // - old_ctxtstr_changed = "BBBBB" // - new_ctxtstr_changed = "CCC" // So the BBBBB needs to be removed and then CCC added. - auto ctxt_prefix = mismatch(old_ctxtstr_nfc.begin(), old_ctxtstr_nfc.end(), ctxtstr_cleanedup.begin(), ctxtstr_cleanedup.end()); + auto ctxt_prefix = mismatch(old_ctxtstr_nfd.begin(), old_ctxtstr_nfd.end(), ctxtstr_cleanedup.begin(), ctxtstr_cleanedup.end()); /** The part of the old string to be removed */ - std::u32string old_ctxtstr_changed(ctxt_prefix.first,old_ctxtstr_nfc.end()); + std::u32string old_ctxtstr_changed(ctxt_prefix.first,old_ctxtstr_nfd.end()); /** The new context to be added */ std::u32string new_ctxtstr_changed(ctxt_prefix.second,ctxtstr_cleanedup.end()); diff --git a/core/tests/unit/ldml/ldml.cpp b/core/tests/unit/ldml/ldml.cpp index 0f5ee82bbd..546af55ef4 100644 --- a/core/tests/unit/ldml/ldml.cpp +++ b/core/tests/unit/ldml/ldml.cpp @@ -28,6 +28,9 @@ #include "ldml_test_source.hpp" #include "debuglog.h" + +#include "ldml/ldml_transforms.hpp" + namespace { bool g_beep_found = false; @@ -279,6 +282,7 @@ run_test(const km::core::path &source, const km::core::path &compiled, km::tests verify_context(text_store, test_state, test_context); } else if (action.type == km::tests::LDML_ACTION_CHECK_EXPECTED) { + assert(km::core::ldml::normalize_nfd(action.string)); // TODO-LDML: should be NFC std::cout << "- check expected" << std::endl; std::cout << "expected : " << string_to_hex(action.string) << " [" << action.string << "]" << std::endl; std::cout << "text store: " << string_to_hex(text_store) << " [" << text_store << "]" << std::endl; diff --git a/core/tests/unit/ldml/ldml_test_source.cpp b/core/tests/unit/ldml/ldml_test_source.cpp index 9171f25163..93ddff9f7c 100644 --- a/core/tests/unit/ldml/ldml_test_source.cpp +++ b/core/tests/unit/ldml/ldml_test_source.cpp @@ -472,7 +472,7 @@ LdmlJsonTestSource::next_action(ldml_action &fillin) { if (type == "check") { fillin.type = LDML_ACTION_CHECK_EXPECTED; fillin.string = LdmlTestSource::parse_u8_source_string(result.get()); - assert(km::core::ldml::normalize_nfc(fillin.string)); + assert(km::core::ldml::normalize_nfd(fillin.string)); // TODO-LDML: should be NFC return; } else if (type == "keystroke") { fillin.type = LDML_ACTION_KEY_EVENT; @@ -483,7 +483,7 @@ LdmlJsonTestSource::next_action(ldml_action &fillin) { } else if (type == "emit") { fillin.type = LDML_ACTION_EMIT_STRING; fillin.string = LdmlTestSource::parse_u8_source_string(to.get()); - assert(km::core::ldml::normalize_nfc(fillin.string)); + assert(km::core::ldml::normalize_nfd(fillin.string)); // TODO-LDML: should be NFC return; } else if (type == "backspace") { // backspace is handled as a key event @@ -507,7 +507,7 @@ int LdmlJsonTestSource::load(const nlohmann::json &data) { this->data = data; // TODO-LDML auto startContext = data["/startContext/to"_json_pointer]; context = LdmlTestSource::parse_u8_source_string(startContext); - assert(km::core::ldml::normalize_nfc(context)); + assert(km::core::ldml::normalize_nfd(context)); // TODO-LDML: should be NFC return 0; }