engine: a Hanja reading answers with the words it begins

hanjaquery matched the reading exactly, so a word was reachable only
once every syllable of it had been typed, and the popup went blank on
the way there.  Measured over map/hanja.dict's 187,304 readings:
95,024 proper prefixes of a word answer with nothing today, and 66,731
of those are the keystroke just before the word completes -- 대한민 is
one, so 대한민국 looks absent until the last key lands.

dictprefix walks the entry at a node before its children, so the
reading's own conversions keep their place and the words follow: 34,441
readings gain candidates and none of the 187,304 has its existing order
changed.  A jamo reading is untouched, since the two keyspaces do not
meet and ㅁ has no children.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-18 13:54:42 +09:00
parent 5abd885e11
commit d9e27e8b01
5 changed files with 40 additions and 3 deletions

View File

@@ -56,7 +56,9 @@ emoji's CLDR name and keywords in English, Korean and Japanese, and against
ASCII aliases such as `->` and `<=`. `Ctrl+H` takes the syllable being
composed as its query and composes on from it, converting a word as well as
a syllable — 한자 gives 漢字, 대한민국 gives 大韓民國 — and `Esc` gives the
syllable back. A lone consonant is a reading too, and answers with the
syllable back. A reading is also the start of the longer words it begins,
whose conversions follow its own, so 대한 answers 大寒 first and 大韓民國
further down. A lone consonant is a reading too, and answers with the
symbol table a Korean keyboard's 한자 key has always offered: ㅁ gives ※ ○
△ ㈜, ㄴ the brackets 「」『』, ㄹ the units ℃ ㎏ , ㅇ the circled numbers
①②③. Text already committed belongs to the application and cannot be