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
Closed

Emoji That Use Zero Width Joiner Sequences Render Incorrectly #176

DuaneOBrien opened this issue Feb 7, 2019 · 7 comments

Comments

@DuaneOBrien
Copy link
Contributor

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
Copy link
Owner

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

@astefanutti
Copy link
Owner

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
Copy link
Contributor Author

DuaneOBrien commented Feb 8, 2019 via email

@astefanutti
Copy link
Owner

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

@astefanutti
Copy link
Owner

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

@astefanutti
Copy link
Owner

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

@DuaneOBrien
Copy link
Contributor Author

Verified fixed, thanks for your help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants