susisu / mte-kernel

text editor independent part of markdown-table-editor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ‘¨β€πŸ‘©β€πŸ‘§ emoji sequence not display right

yurenchen000 opened this issue Β· comments

try on https://susisu.github.io/mte-demo/

/1
paste πŸ‘¨β€πŸ‘©β€πŸ‘§
but shown πŸ‘¨πŸ‘©πŸ‘§

/2
1️⃣ display right, but width seems wrong.


some emoji sequence:

'πŸ‘¨β€πŸ‘©β€πŸ‘§'.length -> 8
'πŸ‘¨β€πŸ‘©β€πŸ‘§'.split('') -> (8)
 ['\uD83D', '\uDC68', '‍', '\uD83D', '\uDC69', '‍', '\uD83D', '\uDC67']
'πŸ‘¨β€πŸ‘©β€πŸ‘§'.match(/\p{Extended_Pictographic}/ug) -> ["πŸ‘¨","πŸ‘©","πŸ‘§"]

'1️⃣'.split('') -> (3) ['1', '️', '⃣']
'2️⃣'.split('') -> (3) ['2', '️', '⃣']

ref:
https://stackoverflow.com/a/64007175/4896468
https://unicode.org/Public/emoji/13.0/emoji-sequences.txt

https://github.com/mathiasbynens/emoji-regex

foud this pkg good at split emoji chars:

const text = `
\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
\u{1F469}: πŸ‘© emoji modifier base (Emoji_Modifier_Base)
\u{1F469}\u{1F3FF}: πŸ‘©πŸΏ emoji modifier base followed by a modifier
πŸ‘¨β€πŸ‘©β€πŸ‘§1️⃣2️⃣
`;

const regex = emojiRegex();
for (const match of text.matchAll(regex)) {
  const emoji = match[0];
  console.log(`Matched sequence ${ emoji } β€” code points: ${ [...emoji].length }`);
}

output as expected:

 Matched sequence ⌚ β€” code points: 1
 Matched sequence ⌚ β€” code points: 1
 Matched sequence ↔️ β€” code points: 2
 Matched sequence ↔️ β€” code points: 2
 Matched sequence πŸ‘© β€” code points: 1
 Matched sequence πŸ‘© β€” code points: 1
 Matched sequence πŸ‘©πŸΏ β€” code points: 2
 Matched sequence πŸ‘©πŸΏ β€” code points: 2
 Matched sequence πŸ‘¨β€πŸ‘©β€πŸ‘§ β€” code points: 5
 Matched sequence 1️⃣ β€” code points: 3
 Matched sequence 2️⃣ β€” code points: 3
commented

Hi, @yurenchen000.

I am aware of the issues you reported, but this repository is no longer actively maintained.

Fortunately, there is a project that has been forked from this repository and is being actively maintained:

Please give it a try, and consider contributing to it if you are interested :)

@susisu

Please give it a try, and consider contributing to it if you are interested :)

Thanks, It works perfect !