From Heide's v0.1.20 testing (Galaxy Tab S9): "I miss my emojis, though, lol! Especially in email."
Emoji is an alphabet-choice problem, like Klingon/Runic/IPA — the engine's node tree comes from the selected alphabet XML. Approaches:
- Dedicated emoji alphabet in DasherCore data (
alphabet.emoji.xml): grouped nodes (smileys, hearts, gestures, food, symbols…), uniform initial frequencies, optionally a small training corpus of common sequences. Appears in the alphabet picker like any other. Downside: switching alphabets to reach emoji mid-sentence is clunky.
- Emoji group appended to existing alphabets (like punctuation groups): a small curated set (~100 common emoji) as an extra group in the main alphabets — reachable without switching. Needs DasherCore data changes across alphabets or a merge at load.
- Both: appended quick set in main alphabets + full emoji alphabet for heavy users.
Blocking detail: emoji are multi-codepoint (ZWJ sequences, skin tones) — the alphabet reader must commit full sequences per node. Verify DasherCore's UTF-8 aggregation handles that (v0.2.25 hardened the reader; needs a test).
Tracking here for the Android side (alphabet picker already exposes whatever the engine registers); the data/alphabet work lands in DasherCore.
From Heide's v0.1.20 testing (Galaxy Tab S9): "I miss my emojis, though, lol! Especially in email."
Emoji is an alphabet-choice problem, like Klingon/Runic/IPA — the engine's node tree comes from the selected alphabet XML. Approaches:
alphabet.emoji.xml): grouped nodes (smileys, hearts, gestures, food, symbols…), uniform initial frequencies, optionally a small training corpus of common sequences. Appears in the alphabet picker like any other. Downside: switching alphabets to reach emoji mid-sentence is clunky.Blocking detail: emoji are multi-codepoint (ZWJ sequences, skin tones) — the alphabet reader must commit full sequences per node. Verify DasherCore's UTF-8 aggregation handles that (v0.2.25 hardened the reader; needs a test).
Tracking here for the Android side (alphabet picker already exposes whatever the engine registers); the data/alphabet work lands in DasherCore.