Unicode Emoji Segmentation — MoonBit implementation of UTS #51 v17.0.0
let text : Array[Int] = [0x1F468, 0x1F3FB, 0x200D, 0x1F4BB] // 👨🏻💻
let seqs = @emoji.scan_strict(text)
for i = 0; i < seqs.length(); i = i + 1 {
println("emoji at [\{seqs[i].start}, \{seqs[i].end}]")
}
// emoji at [0, 3]| Input | strict | greedy |
|---|---|---|
| 👨 ZWJ (trailing ZWJ) | ∅ | {0,0} |
| 👨 ZWJ ZWJ 👩 (double ZWJ) | {3,3} | {0,0} {3,3} |
| 👨 ZWJ A (invalid ZWJ target) | ∅ | {0,0} |
| 🏴 gb eng (tag without cancel) | ∅ | {0,0} |
| Component | Size |
|---|---|
| Emoji trie | 952 bytes |
| Modifier base trie | 520 bytes |
| Presentation trie | 744 bytes |
| DFA transition table | 169 bytes |
| Total static data | 2,385 bytes |
fn resolve(type_ : EmojiSequenceType, style : EmojiPresentationStyle, leading_cp : Int) -> EmojiPresentationStyleInstall
Download zipUnicode Emoji Segmentation — MoonBit implementation of UTS #51 v17.0.0