emoji

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2023 License: MIT Imports: 4 Imported by: 0

README

This library provides tools to extract and characterize emoji character as defined per https://www.unicode.org/reports/tr51/

It builds unicode.RangeTable from https://www.unicode.org/Public/13.0.0/ucd/emoji/emoji-data.txt

The provided tables are

  • Emoji all character that are emoji (includes emoji component such as #)
  • EmojiPresentation all characters that have emoji presentation by default
  • EmojiModifier all characters that are emoji modifiers
  • EmojiModifierBase all for characters that can serve as a base for emoji modifiers (i.e person or gestures which might be combined with skin color modifiers)
  • EmojiComponent all for characters used in emoji sequences that normally do not appear on emoji keyboards as separate choices, such as keycap base characters or RegionalIndicator characters. All characters in emoji sequences are either Emoji or EmojiComponent. Implementations must not, however, assume that all EmojiComponent characters are also Emoji. There are some non-emoji characters that are used in various emoji sequences, such as tag characters and ZWJ.
  • ExtendedPictographic all characters that are used to future-proof segmentation. The ExtendedPictographic characters contain all the Emoji characters except for some EmojiComponent characters.
  • RegionalIndicator all base letter for regional indicator flag
  • Tag all possible tag character

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Emoji = &unicode.RangeTable{R16: []unicode.Range16{unicode.Range16{Lo: 0x23, Hi: 0x2a, Stride: 0x7}, unicode.Range16{Lo: 0x30, Hi: 0x39, Stride: 0x1}, unicode.Range16{Lo: 0xa9, Hi: 0xae, Stride: 0x5}, unicode.Range16{Lo: 0x203c, Hi: 0x2049, Stride: 0xd}, unicode.Range16{Lo: 0x2122, Hi: 0x2139, Stride: 0x17}, unicode.Range16{Lo: 0x2194, Hi: 0x2199, Stride: 0x1}, unicode.Range16{Lo: 0x21a9, Hi: 0x21aa, Stride: 0x1}, unicode.Range16{Lo: 0x231a, Hi: 0x231b, Stride: 0x1}, unicode.Range16{Lo: 0x2328, Hi: 0x23cf, Stride: 0xa7}, unicode.Range16{Lo: 0x23e9, Hi: 0x23f3, Stride: 0x1}, unicode.Range16{Lo: 0x23f8, Hi: 0x23fa, Stride: 0x1}, unicode.Range16{Lo: 0x24c2, Hi: 0x24c2, Stride: 0x1}, unicode.Range16{Lo: 0x25aa, Hi: 0x25ab, Stride: 0x1}, unicode.Range16{Lo: 0x25b6, Hi: 0x25c0, Stride: 0xa}, unicode.Range16{Lo: 0x25fb, Hi: 0x25fe, Stride: 0x1}, unicode.Range16{Lo: 0x2600, Hi: 0x2604, Stride: 0x1}, unicode.Range16{Lo: 0x260e, Hi: 0x2614, Stride: 0x3}, unicode.Range16{Lo: 0x2615, Hi: 0x2618, Stride: 0x3}, unicode.Range16{Lo: 0x261d, Hi: 0x2620, Stride: 0x3}, unicode.Range16{Lo: 0x2622, Hi: 0x2623, Stride: 0x1}, unicode.Range16{Lo: 0x2626, Hi: 0x262e, Stride: 0x4}, unicode.Range16{Lo: 0x262f, Hi: 0x262f, Stride: 0x1}, unicode.Range16{Lo: 0x2638, Hi: 0x263a, Stride: 0x1}, unicode.Range16{Lo: 0x2640, Hi: 0x2642, Stride: 0x2}, unicode.Range16{Lo: 0x2648, Hi: 0x2653, Stride: 0x1}, unicode.Range16{Lo: 0x265f, Hi: 0x2660, Stride: 0x1}, unicode.Range16{Lo: 0x2663, Hi: 0x2663, Stride: 0x1}, unicode.Range16{Lo: 0x2665, Hi: 0x2666, Stride: 0x1}, unicode.Range16{Lo: 0x2668, Hi: 0x267b, Stride: 0x13}, unicode.Range16{Lo: 0x267e, Hi: 0x267f, Stride: 0x1}, unicode.Range16{Lo: 0x2692, Hi: 0x2697, Stride: 0x1}, unicode.Range16{Lo: 0x2699, Hi: 0x2699, Stride: 0x1}, unicode.Range16{Lo: 0x269b, Hi: 0x269c, Stride: 0x1}, unicode.Range16{Lo: 0x26a0, Hi: 0x26a1, Stride: 0x1}, unicode.Range16{Lo: 0x26a7, Hi: 0x26a7, Stride: 0x1}, unicode.Range16{Lo: 0x26aa, Hi: 0x26ab, Stride: 0x1}, unicode.Range16{Lo: 0x26b0, Hi: 0x26b1, Stride: 0x1}, unicode.Range16{Lo: 0x26bd, Hi: 0x26be, Stride: 0x1}, unicode.Range16{Lo: 0x26c4, Hi: 0x26c5, Stride: 0x1}, unicode.Range16{Lo: 0x26c8, Hi: 0x26ce, Stride: 0x6}, unicode.Range16{Lo: 0x26cf, Hi: 0x26d3, Stride: 0x2}, unicode.Range16{Lo: 0x26d4, Hi: 0x26e9, Stride: 0x15}, unicode.Range16{Lo: 0x26ea, Hi: 0x26ea, Stride: 0x1}, unicode.Range16{Lo: 0x26f0, Hi: 0x26f5, Stride: 0x1}, unicode.Range16{Lo: 0x26f7, Hi: 0x26fa, Stride: 0x1}, unicode.Range16{Lo: 0x26fd, Hi: 0x2702, Stride: 0x5}, unicode.Range16{Lo: 0x2705, Hi: 0x2705, Stride: 0x1}, unicode.Range16{Lo: 0x2708, Hi: 0x270d, Stride: 0x1}, unicode.Range16{Lo: 0x270f, Hi: 0x2712, Stride: 0x3}, unicode.Range16{Lo: 0x2714, Hi: 0x2716, Stride: 0x2}, unicode.Range16{Lo: 0x271d, Hi: 0x2721, Stride: 0x4}, unicode.Range16{Lo: 0x2728, Hi: 0x2728, Stride: 0x1}, unicode.Range16{Lo: 0x2733, Hi: 0x2734, Stride: 0x1}, unicode.Range16{Lo: 0x2744, Hi: 0x2747, Stride: 0x3}, unicode.Range16{Lo: 0x274c, Hi: 0x274e, Stride: 0x2}, unicode.Range16{Lo: 0x2753, Hi: 0x2755, Stride: 0x1}, unicode.Range16{Lo: 0x2757, Hi: 0x2763, Stride: 0xc}, unicode.Range16{Lo: 0x2764, Hi: 0x2764, Stride: 0x1}, unicode.Range16{Lo: 0x2795, Hi: 0x2797, Stride: 0x1}, unicode.Range16{Lo: 0x27a1, Hi: 0x27bf, Stride: 0xf}, unicode.Range16{Lo: 0x2934, Hi: 0x2935, Stride: 0x1}, unicode.Range16{Lo: 0x2b05, Hi: 0x2b07, Stride: 0x1}, unicode.Range16{Lo: 0x2b1b, Hi: 0x2b1c, Stride: 0x1}, unicode.Range16{Lo: 0x2b50, Hi: 0x2b55, Stride: 0x5}, unicode.Range16{Lo: 0x3030, Hi: 0x303d, Stride: 0xd}, unicode.Range16{Lo: 0x3297, Hi: 0x3299, Stride: 0x2}}, R32: []unicode.Range32{unicode.Range32{Lo: 0x1f004, Hi: 0x1f0cf, Stride: 0xcb}, unicode.Range32{Lo: 0x1f170, Hi: 0x1f171, Stride: 0x1}, unicode.Range32{Lo: 0x1f17e, Hi: 0x1f17f, Stride: 0x1}, unicode.Range32{Lo: 0x1f18e, Hi: 0x1f18e, Stride: 0x1}, unicode.Range32{Lo: 0x1f191, Hi: 0x1f19a, Stride: 0x1}, unicode.Range32{Lo: 0x1f1e6, Hi: 0x1f1ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f201, Hi: 0x1f202, Stride: 0x1}, unicode.Range32{Lo: 0x1f21a, Hi: 0x1f22f, Stride: 0x15}, unicode.Range32{Lo: 0x1f232, Hi: 0x1f23a, Stride: 0x1}, unicode.Range32{Lo: 0x1f250, Hi: 0x1f251, Stride: 0x1}, unicode.Range32{Lo: 0x1f300, Hi: 0x1f321, Stride: 0x1}, unicode.Range32{Lo: 0x1f324, Hi: 0x1f393, Stride: 0x1}, unicode.Range32{Lo: 0x1f396, Hi: 0x1f397, Stride: 0x1}, unicode.Range32{Lo: 0x1f399, Hi: 0x1f39b, Stride: 0x1}, unicode.Range32{Lo: 0x1f39e, Hi: 0x1f3f0, Stride: 0x1}, unicode.Range32{Lo: 0x1f3f3, Hi: 0x1f3f5, Stride: 0x1}, unicode.Range32{Lo: 0x1f3f7, Hi: 0x1f4fd, Stride: 0x1}, unicode.Range32{Lo: 0x1f4ff, Hi: 0x1f53d, Stride: 0x1}, unicode.Range32{Lo: 0x1f549, Hi: 0x1f54e, Stride: 0x1}, unicode.Range32{Lo: 0x1f550, Hi: 0x1f567, Stride: 0x1}, unicode.Range32{Lo: 0x1f56f, Hi: 0x1f570, Stride: 0x1}, unicode.Range32{Lo: 0x1f573, Hi: 0x1f57a, Stride: 0x1}, unicode.Range32{Lo: 0x1f587, Hi: 0x1f587, Stride: 0x1}, unicode.Range32{Lo: 0x1f58a, Hi: 0x1f58d, Stride: 0x1}, unicode.Range32{Lo: 0x1f590, Hi: 0x1f590, Stride: 0x1}, unicode.Range32{Lo: 0x1f595, Hi: 0x1f596, Stride: 0x1}, unicode.Range32{Lo: 0x1f5a4, Hi: 0x1f5a5, Stride: 0x1}, unicode.Range32{Lo: 0x1f5a8, Hi: 0x1f5a8, Stride: 0x1}, unicode.Range32{Lo: 0x1f5b1, Hi: 0x1f5b2, Stride: 0x1}, unicode.Range32{Lo: 0x1f5bc, Hi: 0x1f5bc, Stride: 0x1}, unicode.Range32{Lo: 0x1f5c2, Hi: 0x1f5c4, Stride: 0x1}, unicode.Range32{Lo: 0x1f5d1, Hi: 0x1f5d3, Stride: 0x1}, unicode.Range32{Lo: 0x1f5dc, Hi: 0x1f5de, Stride: 0x1}, unicode.Range32{Lo: 0x1f5e1, Hi: 0x1f5e3, Stride: 0x2}, unicode.Range32{Lo: 0x1f5e8, Hi: 0x1f5ef, Stride: 0x7}, unicode.Range32{Lo: 0x1f5f3, Hi: 0x1f5fa, Stride: 0x7}, unicode.Range32{Lo: 0x1f5fb, Hi: 0x1f64f, Stride: 0x1}, unicode.Range32{Lo: 0x1f680, Hi: 0x1f6c5, Stride: 0x1}, unicode.Range32{Lo: 0x1f6cb, Hi: 0x1f6d2, Stride: 0x1}, unicode.Range32{Lo: 0x1f6d5, Hi: 0x1f6d7, Stride: 0x1}, unicode.Range32{Lo: 0x1f6dc, Hi: 0x1f6e5, Stride: 0x1}, unicode.Range32{Lo: 0x1f6e9, Hi: 0x1f6e9, Stride: 0x1}, unicode.Range32{Lo: 0x1f6eb, Hi: 0x1f6ec, Stride: 0x1}, unicode.Range32{Lo: 0x1f6f0, Hi: 0x1f6f3, Stride: 0x3}, unicode.Range32{Lo: 0x1f6f4, Hi: 0x1f6fc, Stride: 0x1}, unicode.Range32{Lo: 0x1f7e0, Hi: 0x1f7eb, Stride: 0x1}, unicode.Range32{Lo: 0x1f7f0, Hi: 0x1f90c, Stride: 0x11c}, unicode.Range32{Lo: 0x1f90d, Hi: 0x1f93a, Stride: 0x1}, unicode.Range32{Lo: 0x1f93c, Hi: 0x1f945, Stride: 0x1}, unicode.Range32{Lo: 0x1f947, Hi: 0x1f9ff, Stride: 0x1}, unicode.Range32{Lo: 0x1fa70, Hi: 0x1fa7c, Stride: 0x1}, unicode.Range32{Lo: 0x1fa80, Hi: 0x1fa88, Stride: 0x1}, unicode.Range32{Lo: 0x1fa90, Hi: 0x1fabd, Stride: 0x1}, unicode.Range32{Lo: 0x1fabf, Hi: 0x1fac5, Stride: 0x1}, unicode.Range32{Lo: 0x1face, Hi: 0x1fadb, Stride: 0x1}, unicode.Range32{Lo: 0x1fae0, Hi: 0x1fae8, Stride: 0x1}, unicode.Range32{Lo: 0x1faf0, Hi: 0x1faf8, Stride: 0x1}}, LatinOffset: 3}
View Source
var EmojiComponent = &unicode.RangeTable{R16: []unicode.Range16{unicode.Range16{Lo: 0x23, Hi: 0x2a, Stride: 0x7}, unicode.Range16{Lo: 0x30, Hi: 0x39, Stride: 0x1}, unicode.Range16{Lo: 0x200d, Hi: 0x20e3, Stride: 0xd6}, unicode.Range16{Lo: 0xfe0f, Hi: 0xfe0f, Stride: 0x1}}, R32: []unicode.Range32{unicode.Range32{Lo: 0x1f1e6, Hi: 0x1f1ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f3fb, Hi: 0x1f3ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f9b0, Hi: 0x1f9b3, Stride: 0x1}, unicode.Range32{Lo: 0xe0020, Hi: 0xe007f, Stride: 0x1}}, LatinOffset: 2}
View Source
var EmojiModifier = &unicode.RangeTable{R16: []unicode.Range16(nil), R32: []unicode.Range32{unicode.Range32{Lo: 0x1f3fb, Hi: 0x1f3ff, Stride: 0x1}}, LatinOffset: 0}
View Source
var EmojiModifierBase = &unicode.RangeTable{R16: []unicode.Range16{unicode.Range16{Lo: 0x261d, Hi: 0x26f9, Stride: 0xdc}, unicode.Range16{Lo: 0x270a, Hi: 0x270d, Stride: 0x1}}, R32: []unicode.Range32{unicode.Range32{Lo: 0x1f385, Hi: 0x1f385, Stride: 0x1}, unicode.Range32{Lo: 0x1f3c2, Hi: 0x1f3c4, Stride: 0x1}, unicode.Range32{Lo: 0x1f3c7, Hi: 0x1f3ca, Stride: 0x3}, unicode.Range32{Lo: 0x1f3cb, Hi: 0x1f3cc, Stride: 0x1}, unicode.Range32{Lo: 0x1f442, Hi: 0x1f443, Stride: 0x1}, unicode.Range32{Lo: 0x1f446, Hi: 0x1f450, Stride: 0x1}, unicode.Range32{Lo: 0x1f466, Hi: 0x1f478, Stride: 0x1}, unicode.Range32{Lo: 0x1f47c, Hi: 0x1f47c, Stride: 0x1}, unicode.Range32{Lo: 0x1f481, Hi: 0x1f483, Stride: 0x1}, unicode.Range32{Lo: 0x1f485, Hi: 0x1f487, Stride: 0x1}, unicode.Range32{Lo: 0x1f48f, Hi: 0x1f491, Stride: 0x2}, unicode.Range32{Lo: 0x1f4aa, Hi: 0x1f4aa, Stride: 0x1}, unicode.Range32{Lo: 0x1f574, Hi: 0x1f575, Stride: 0x1}, unicode.Range32{Lo: 0x1f57a, Hi: 0x1f590, Stride: 0x16}, unicode.Range32{Lo: 0x1f595, Hi: 0x1f596, Stride: 0x1}, unicode.Range32{Lo: 0x1f645, Hi: 0x1f647, Stride: 0x1}, unicode.Range32{Lo: 0x1f64b, Hi: 0x1f64f, Stride: 0x1}, unicode.Range32{Lo: 0x1f6a3, Hi: 0x1f6a3, Stride: 0x1}, unicode.Range32{Lo: 0x1f6b4, Hi: 0x1f6b6, Stride: 0x1}, unicode.Range32{Lo: 0x1f6c0, Hi: 0x1f6cc, Stride: 0xc}, unicode.Range32{Lo: 0x1f90c, Hi: 0x1f90f, Stride: 0x3}, unicode.Range32{Lo: 0x1f918, Hi: 0x1f91f, Stride: 0x1}, unicode.Range32{Lo: 0x1f926, Hi: 0x1f930, Stride: 0xa}, unicode.Range32{Lo: 0x1f931, Hi: 0x1f939, Stride: 0x1}, unicode.Range32{Lo: 0x1f93c, Hi: 0x1f93e, Stride: 0x1}, unicode.Range32{Lo: 0x1f977, Hi: 0x1f977, Stride: 0x1}, unicode.Range32{Lo: 0x1f9b5, Hi: 0x1f9b6, Stride: 0x1}, unicode.Range32{Lo: 0x1f9b8, Hi: 0x1f9b9, Stride: 0x1}, unicode.Range32{Lo: 0x1f9bb, Hi: 0x1f9bb, Stride: 0x1}, unicode.Range32{Lo: 0x1f9cd, Hi: 0x1f9cf, Stride: 0x1}, unicode.Range32{Lo: 0x1f9d1, Hi: 0x1f9dd, Stride: 0x1}, unicode.Range32{Lo: 0x1fac3, Hi: 0x1fac5, Stride: 0x1}, unicode.Range32{Lo: 0x1faf0, Hi: 0x1faf8, Stride: 0x1}}, LatinOffset: 0}
View Source
var EmojiPresentation = &unicode.RangeTable{R16: []unicode.Range16{unicode.Range16{Lo: 0x231a, Hi: 0x231b, Stride: 0x1}, unicode.Range16{Lo: 0x23e9, Hi: 0x23ec, Stride: 0x1}, unicode.Range16{Lo: 0x23f0, Hi: 0x23f3, Stride: 0x3}, unicode.Range16{Lo: 0x25fd, Hi: 0x25fe, Stride: 0x1}, unicode.Range16{Lo: 0x2614, Hi: 0x2615, Stride: 0x1}, unicode.Range16{Lo: 0x2648, Hi: 0x2653, Stride: 0x1}, unicode.Range16{Lo: 0x267f, Hi: 0x2693, Stride: 0x14}, unicode.Range16{Lo: 0x26a1, Hi: 0x26a1, Stride: 0x1}, unicode.Range16{Lo: 0x26aa, Hi: 0x26ab, Stride: 0x1}, unicode.Range16{Lo: 0x26bd, Hi: 0x26be, Stride: 0x1}, unicode.Range16{Lo: 0x26c4, Hi: 0x26c5, Stride: 0x1}, unicode.Range16{Lo: 0x26ce, Hi: 0x26d4, Stride: 0x6}, unicode.Range16{Lo: 0x26ea, Hi: 0x26ea, Stride: 0x1}, unicode.Range16{Lo: 0x26f2, Hi: 0x26f3, Stride: 0x1}, unicode.Range16{Lo: 0x26f5, Hi: 0x26fa, Stride: 0x5}, unicode.Range16{Lo: 0x26fd, Hi: 0x2705, Stride: 0x8}, unicode.Range16{Lo: 0x270a, Hi: 0x270b, Stride: 0x1}, unicode.Range16{Lo: 0x2728, Hi: 0x274c, Stride: 0x24}, unicode.Range16{Lo: 0x274e, Hi: 0x274e, Stride: 0x1}, unicode.Range16{Lo: 0x2753, Hi: 0x2755, Stride: 0x1}, unicode.Range16{Lo: 0x2757, Hi: 0x2757, Stride: 0x1}, unicode.Range16{Lo: 0x2795, Hi: 0x2797, Stride: 0x1}, unicode.Range16{Lo: 0x27b0, Hi: 0x27bf, Stride: 0xf}, unicode.Range16{Lo: 0x2b1b, Hi: 0x2b1c, Stride: 0x1}, unicode.Range16{Lo: 0x2b50, Hi: 0x2b55, Stride: 0x5}}, R32: []unicode.Range32{unicode.Range32{Lo: 0x1f004, Hi: 0x1f0cf, Stride: 0xcb}, unicode.Range32{Lo: 0x1f18e, Hi: 0x1f18e, Stride: 0x1}, unicode.Range32{Lo: 0x1f191, Hi: 0x1f19a, Stride: 0x1}, unicode.Range32{Lo: 0x1f1e6, Hi: 0x1f1ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f201, Hi: 0x1f21a, Stride: 0x19}, unicode.Range32{Lo: 0x1f22f, Hi: 0x1f22f, Stride: 0x1}, unicode.Range32{Lo: 0x1f232, Hi: 0x1f236, Stride: 0x1}, unicode.Range32{Lo: 0x1f238, Hi: 0x1f23a, Stride: 0x1}, unicode.Range32{Lo: 0x1f250, Hi: 0x1f251, Stride: 0x1}, unicode.Range32{Lo: 0x1f300, Hi: 0x1f320, Stride: 0x1}, unicode.Range32{Lo: 0x1f32d, Hi: 0x1f335, Stride: 0x1}, unicode.Range32{Lo: 0x1f337, Hi: 0x1f37c, Stride: 0x1}, unicode.Range32{Lo: 0x1f37e, Hi: 0x1f393, Stride: 0x1}, unicode.Range32{Lo: 0x1f3a0, Hi: 0x1f3ca, Stride: 0x1}, unicode.Range32{Lo: 0x1f3cf, Hi: 0x1f3d3, Stride: 0x1}, unicode.Range32{Lo: 0x1f3e0, Hi: 0x1f3f0, Stride: 0x1}, unicode.Range32{Lo: 0x1f3f4, Hi: 0x1f3f4, Stride: 0x1}, unicode.Range32{Lo: 0x1f3f8, Hi: 0x1f43e, Stride: 0x1}, unicode.Range32{Lo: 0x1f440, Hi: 0x1f440, Stride: 0x1}, unicode.Range32{Lo: 0x1f442, Hi: 0x1f4fc, Stride: 0x1}, unicode.Range32{Lo: 0x1f4ff, Hi: 0x1f53d, Stride: 0x1}, unicode.Range32{Lo: 0x1f54b, Hi: 0x1f54e, Stride: 0x1}, unicode.Range32{Lo: 0x1f550, Hi: 0x1f567, Stride: 0x1}, unicode.Range32{Lo: 0x1f57a, Hi: 0x1f57a, Stride: 0x1}, unicode.Range32{Lo: 0x1f595, Hi: 0x1f596, Stride: 0x1}, unicode.Range32{Lo: 0x1f5a4, Hi: 0x1f5a4, Stride: 0x1}, unicode.Range32{Lo: 0x1f5fb, Hi: 0x1f64f, Stride: 0x1}, unicode.Range32{Lo: 0x1f680, Hi: 0x1f6c5, Stride: 0x1}, unicode.Range32{Lo: 0x1f6cc, Hi: 0x1f6d0, Stride: 0x4}, unicode.Range32{Lo: 0x1f6d1, Hi: 0x1f6d2, Stride: 0x1}, unicode.Range32{Lo: 0x1f6d5, Hi: 0x1f6d7, Stride: 0x1}, unicode.Range32{Lo: 0x1f6dc, Hi: 0x1f6df, Stride: 0x1}, unicode.Range32{Lo: 0x1f6eb, Hi: 0x1f6ec, Stride: 0x1}, unicode.Range32{Lo: 0x1f6f4, Hi: 0x1f6fc, Stride: 0x1}, unicode.Range32{Lo: 0x1f7e0, Hi: 0x1f7eb, Stride: 0x1}, unicode.Range32{Lo: 0x1f7f0, Hi: 0x1f90c, Stride: 0x11c}, unicode.Range32{Lo: 0x1f90d, Hi: 0x1f93a, Stride: 0x1}, unicode.Range32{Lo: 0x1f93c, Hi: 0x1f945, Stride: 0x1}, unicode.Range32{Lo: 0x1f947, Hi: 0x1f9ff, Stride: 0x1}, unicode.Range32{Lo: 0x1fa70, Hi: 0x1fa7c, Stride: 0x1}, unicode.Range32{Lo: 0x1fa80, Hi: 0x1fa88, Stride: 0x1}, unicode.Range32{Lo: 0x1fa90, Hi: 0x1fabd, Stride: 0x1}, unicode.Range32{Lo: 0x1fabf, Hi: 0x1fac5, Stride: 0x1}, unicode.Range32{Lo: 0x1face, Hi: 0x1fadb, Stride: 0x1}, unicode.Range32{Lo: 0x1fae0, Hi: 0x1fae8, Stride: 0x1}, unicode.Range32{Lo: 0x1faf0, Hi: 0x1faf8, Stride: 0x1}}, LatinOffset: 0}
View Source
var ExtendedPictographic = &unicode.RangeTable{R16: []unicode.Range16{unicode.Range16{Lo: 0xa9, Hi: 0xae, Stride: 0x5}, unicode.Range16{Lo: 0x203c, Hi: 0x2049, Stride: 0xd}, unicode.Range16{Lo: 0x2122, Hi: 0x2139, Stride: 0x17}, unicode.Range16{Lo: 0x2194, Hi: 0x2199, Stride: 0x1}, unicode.Range16{Lo: 0x21a9, Hi: 0x21aa, Stride: 0x1}, unicode.Range16{Lo: 0x231a, Hi: 0x231b, Stride: 0x1}, unicode.Range16{Lo: 0x2328, Hi: 0x2388, Stride: 0x60}, unicode.Range16{Lo: 0x23cf, Hi: 0x23cf, Stride: 0x1}, unicode.Range16{Lo: 0x23e9, Hi: 0x23f3, Stride: 0x1}, unicode.Range16{Lo: 0x23f8, Hi: 0x23fa, Stride: 0x1}, unicode.Range16{Lo: 0x24c2, Hi: 0x24c2, Stride: 0x1}, unicode.Range16{Lo: 0x25aa, Hi: 0x25ab, Stride: 0x1}, unicode.Range16{Lo: 0x25b6, Hi: 0x25c0, Stride: 0xa}, unicode.Range16{Lo: 0x25fb, Hi: 0x25fe, Stride: 0x1}, unicode.Range16{Lo: 0x2600, Hi: 0x2605, Stride: 0x1}, unicode.Range16{Lo: 0x2607, Hi: 0x2612, Stride: 0x1}, unicode.Range16{Lo: 0x2614, Hi: 0x2685, Stride: 0x1}, unicode.Range16{Lo: 0x2690, Hi: 0x2705, Stride: 0x1}, unicode.Range16{Lo: 0x2708, Hi: 0x2712, Stride: 0x1}, unicode.Range16{Lo: 0x2714, Hi: 0x2716, Stride: 0x2}, unicode.Range16{Lo: 0x271d, Hi: 0x2721, Stride: 0x4}, unicode.Range16{Lo: 0x2728, Hi: 0x2728, Stride: 0x1}, unicode.Range16{Lo: 0x2733, Hi: 0x2734, Stride: 0x1}, unicode.Range16{Lo: 0x2744, Hi: 0x2747, Stride: 0x3}, unicode.Range16{Lo: 0x274c, Hi: 0x274e, Stride: 0x2}, unicode.Range16{Lo: 0x2753, Hi: 0x2755, Stride: 0x1}, unicode.Range16{Lo: 0x2757, Hi: 0x2763, Stride: 0xc}, unicode.Range16{Lo: 0x2764, Hi: 0x2767, Stride: 0x1}, unicode.Range16{Lo: 0x2795, Hi: 0x2797, Stride: 0x1}, unicode.Range16{Lo: 0x27a1, Hi: 0x27bf, Stride: 0xf}, unicode.Range16{Lo: 0x2934, Hi: 0x2935, Stride: 0x1}, unicode.Range16{Lo: 0x2b05, Hi: 0x2b07, Stride: 0x1}, unicode.Range16{Lo: 0x2b1b, Hi: 0x2b1c, Stride: 0x1}, unicode.Range16{Lo: 0x2b50, Hi: 0x2b55, Stride: 0x5}, unicode.Range16{Lo: 0x3030, Hi: 0x303d, Stride: 0xd}, unicode.Range16{Lo: 0x3297, Hi: 0x3299, Stride: 0x2}}, R32: []unicode.Range32{unicode.Range32{Lo: 0x1f000, Hi: 0x1f0ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f10d, Hi: 0x1f10f, Stride: 0x1}, unicode.Range32{Lo: 0x1f12f, Hi: 0x1f12f, Stride: 0x1}, unicode.Range32{Lo: 0x1f16c, Hi: 0x1f171, Stride: 0x1}, unicode.Range32{Lo: 0x1f17e, Hi: 0x1f17f, Stride: 0x1}, unicode.Range32{Lo: 0x1f18e, Hi: 0x1f18e, Stride: 0x1}, unicode.Range32{Lo: 0x1f191, Hi: 0x1f19a, Stride: 0x1}, unicode.Range32{Lo: 0x1f1ad, Hi: 0x1f1e5, Stride: 0x1}, unicode.Range32{Lo: 0x1f201, Hi: 0x1f20f, Stride: 0x1}, unicode.Range32{Lo: 0x1f21a, Hi: 0x1f22f, Stride: 0x15}, unicode.Range32{Lo: 0x1f232, Hi: 0x1f23a, Stride: 0x1}, unicode.Range32{Lo: 0x1f23c, Hi: 0x1f23f, Stride: 0x1}, unicode.Range32{Lo: 0x1f249, Hi: 0x1f3fa, Stride: 0x1}, unicode.Range32{Lo: 0x1f400, Hi: 0x1f53d, Stride: 0x1}, unicode.Range32{Lo: 0x1f546, Hi: 0x1f64f, Stride: 0x1}, unicode.Range32{Lo: 0x1f680, Hi: 0x1f6ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f774, Hi: 0x1f77f, Stride: 0x1}, unicode.Range32{Lo: 0x1f7d5, Hi: 0x1f7ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f80c, Hi: 0x1f80f, Stride: 0x1}, unicode.Range32{Lo: 0x1f848, Hi: 0x1f84f, Stride: 0x1}, unicode.Range32{Lo: 0x1f85a, Hi: 0x1f85f, Stride: 0x1}, unicode.Range32{Lo: 0x1f888, Hi: 0x1f88f, Stride: 0x1}, unicode.Range32{Lo: 0x1f8ae, Hi: 0x1f8ff, Stride: 0x1}, unicode.Range32{Lo: 0x1f90c, Hi: 0x1f93a, Stride: 0x1}, unicode.Range32{Lo: 0x1f93c, Hi: 0x1f945, Stride: 0x1}, unicode.Range32{Lo: 0x1f947, Hi: 0x1faff, Stride: 0x1}, unicode.Range32{Lo: 0x1fc00, Hi: 0x1fffd, Stride: 0x1}}, LatinOffset: 1}
View Source
var RegionalIndicator = &unicode.RangeTable{
	R32: []unicode.Range32{
		{Lo: uint32('🇦'), Hi: uint32('🇿'), Stride: 1},
	},
}
View Source
var Tag = &unicode.RangeTable{
	R32: []unicode.Range32{
		{Lo: uint32(0xE0030), Hi: uint32(0xE007E), Stride: 1},
	},
}

Functions

func Decode

func Decode(b []byte) ([]byte, bool, int)

Decode returns - the first complete emoji, true, and it's width in bytes is available - the full non emoji sequence, false and it's width in bytes (might be a rune or multiples in case of malformed emoji)

func DecodeString

func DecodeString(s string) (string, bool, int)

DecodeString returns - the first complete emoji, true, and it's width in bytes is available - the full non emoji sequence, false and it's width in bytes (might be a rune or multiples in case of malformed emoji)

func Find

func Find(b []byte, max int) [][]byte

Find returns the n first emoji in b of all of thems if max == -1

func FindString

func FindString(s string, max int) []string

FindString returns the n first emoji in s of all of thems if max == -1

func Fuzz

func Fuzz(data []byte) int

func PossibleGlyph

func PossibleGlyph(b []byte) bool

PossibleGlyph checks is the given string might be an emoji based on the EBNF from https://www.unicode.org/reports/tr51/#EBNF_and_Regex

possible_emoji :=

flag_sequence
| zwj_element (\x{200D} zwj_element)*

flag_sequence :=

\p{RI}\p{RI}

zwj_element :=

\p{Emoji} emoji_modification?

emoji_modification :=

\p{EMod}

| \x{FE0F} \x{20E3}?

tag_modifier :=

[\x{E0020}-\x{E007E}]+ \x{E007F}

There should not be false negative (glyph wrongly detected as an emoji) There is false positive such inexistant flag indicator

func PossibleGlyphString

func PossibleGlyphString(s string) bool

PossibleGlyphString checks is the given string might be an emoji based on the EBNF from https://www.unicode.org/reports/tr51/#EBNF_and_Regex

possible_emoji :=

flag_sequence
| zwj_element (\x{200D} zwj_element)*

flag_sequence :=

\p{RI}\p{RI}

zwj_element :=

\p{Emoji} emoji_modification?

emoji_modification :=

\p{EMod}

| \x{FE0F} \x{20E3}?

tag_modifier :=

[\x{E0020}-\x{E007E}]+ \x{E007F}

There should not be false negative (glyph wrongly detected as an emoji) There is false positive such inexistant flag indicator

func Replace

func Replace(b []byte, max int, f func([]byte) []byte) []byte

Replace replace the n first all emoji with f(b) of all of thems if max == -1

func ReplaceString

func ReplaceString(s string, max int, f func(string) string) string

ReplaceString replace the n first all emoji with f(s) of all of thems if max == -1

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL