Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Emoji That Use Zero Width Joiner Sequences Render Incorrectly #176

Closed
DuaneOBrien opened this Issue Feb 7, 2019 · 7 comments

Comments

Projects
None yet
2 participants
@DuaneOBrien
Copy link

DuaneOBrien commented Feb 7, 2019

Thank you for this awesome tool!

I have discovered what appears to be a bug somewhere in the decktape workflow that is causing incorrect rendering of emoji using ZWJ sequences.

(Background on ZWJ sequences: http://blog.unicode.org/2016/11/113-new-unicode-emoji-plus-skin-tones.html, cf. https://blog.emojipedia.org/emoji-zwj-sequences-three-letters-many-possibilities/)

In summary, decktape renders these characters fine: 📸 📹 📰 📬 🐦

This is because they are single unicode characters.

But decktape renders these characters incorrectly: 🧙‍♂️ 🧛‍♂️ 🤹‍♂️ 🧟‍♂️ 🧜🏻‍♂️

This is because these individual emoji are rendered by joining one or more single unicode characters using a ZWJ.

I've created a demo slidedeck that can be used to verify/troubleshoot: https://duaneobrien.github.io/decktape-emoji-bug/

Sourcecode and the decktape output are in https://github.com/DuaneOBrien/decktape-emoji-bug

This may ultimately be a Puppeteer bug, but I don't see any issues in either repo (open or closed)

decktape version: 2.9.1 (fresh install today)
Chrome version: 71.0.3578.98 (unsure if Puppeteer uses this or not)

@astefanutti

This comment has been minimized.

Copy link
Owner

astefanutti commented Feb 7, 2019

Thanks a lot for the feedback and the awesome bug report! I'll investigate ASAP.

@astefanutti

This comment has been minimized.

Copy link
Owner

astefanutti commented Feb 7, 2019

I've just tested with a newer version of Puppeteer (1.12.2) and that fixes the issue. That version comes with Chromium 73, as opposed to Chromium 71 for the current version used by Decktape.

I usually wait for the newer Chromium version to land in Alpine as it used in the Docker image. I did some quick tests and it seems Puppeteer is compatible with older Chromium version (i.e. 71), so if that's urgent for you, I could do the upgrade and that would fix the issue for the NPM install.

I realise another thing would be to add some Emoji font packages to the Docker image, like font-noto-emoji.

@DuaneOBrien

This comment has been minimized.

Copy link
Author

DuaneOBrien commented Feb 8, 2019

@astefanutti

This comment has been minimized.

Copy link
Owner

astefanutti commented Feb 8, 2019

Cool. Yes, it can take a couple of weeks.

@astefanutti

This comment has been minimized.

Copy link
Owner

astefanutti commented Feb 8, 2019

For reference, an interesting discussion on how to enable Noto Coloraturas Emoji on Linux googlei18n/noto-emoji#36 that may help for the Docker image.

@astefanutti

This comment has been minimized.

Copy link
Owner

astefanutti commented Mar 12, 2019

It should be fixed in version 2.9.2. Thanks for your patience.

@DuaneOBrien

This comment has been minimized.

Copy link
Author

DuaneOBrien commented Mar 14, 2019

Verified fixed, thanks for your help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.