Перейти к содержимому

Эмодзи

Коды эмодзи и эмодзи Unicode превращаются в изображения Twemoji без обращения к сети: в HTML-странице, изображениях, PDF, PowerPoint и OpenDocument.

Эмодзи появились в v0.4.0; в v0.3.0 их не было.

Пишите эмодзи кодом или самим символом:

# Launch :rocket: 🎉

Shortcodes :smile: :+1: :heart_eyes: and Unicode 😄 👍🏽 👩‍💻 🇫🇷 1️⃣.

Каждый превращается в изображение Twemoji, которое рисует Marp Core, с той же разметкой, что пишет Marp Core:

<img class="emoji" draggable="false" alt="😄" src="data:image/svg+xml;base64,…" data-marp-twemoji=""/>

Без сети

В Marp Core src — это URL на CDN, поэтому презентация, показанная офлайн, распечатанная или превращённая в PDF на машине без подключения, показывает битые изображения. go-slides кладёт сам SVG в URI data:. Графика (4009 изображений, Twemoji 17.0.3, Emoji 17.0) встроена в программу из модуля на чистом Go go-icons/twemoji, занимает 2 МБ в сжатом виде и читается, только если в презентации есть эмодзи.

Изображения одинаково рисуют HTML-страница, --images/--image, --pdf, --pptx и --odp: SVG растеризует go-webengine. Все 4009 изображений разбираются и рисуются его SVG-растеризатором; это проверяет тест. Начиная с v0.5.0 этот растеризатор — go-gfx/oksvg v0.2.0: clipPath, fill-rule: evenodd и команды дуг теперь рисуются так же, как в Chrome, что изменило один Twemoji и 211 других, а SVG-логотипы больше не искажаются.

Правило, подгоняющее размер эмодзи под текст (img[data-marp-twemoji], квадрат в один em, выровненный по базовой линии), добавляется к теме так же, как это делает Marp Core, поэтому его получает и ваша собственная тема.

Что преобразуется

Правила взяты из Marp Core; тест сравнивает их с HTML, который Marp Core 4.4.0 пишет для презентации со всеми случаями.

:smile:, :+1:, :heart_eyes:1903 имени из markdown-it-emoji — в тексте, заголовках, ссылках, таблицах, header и footer; не в коде, не в URL и не в alt-тексте изображения
😄, 👩‍💻, 🇫🇷, 1️⃣, 👍🏽эмодзи Unicode — в тексте и в коде: Marp Core переписывает отрисованный HTML кода
✔, ©, ™, ▶остаются текстом: символы, у которых представление по умолчанию текстовое, становятся эмодзи только с U+FE0F (✔️); ❤ — исключение
☺︎остаётся текстом: U+FE0E после эмодзи просит простой глиф
12:30:45, :not_a_name:остаются как написано

id заголовка и оглавление используют эмодзи, а не имя кода: у # Launch :rocket: будет id launch-%F0%9F%9A%80, как в Marp.

Там, где go-slides отличается от Marp Core, он преобразует больше: ✌️ ☝️ ✍️ 🏋️ и ещё несколько символов с текстовым представлением по умолчанию, которые emoji-regex в Marp Core оставляет текстом, а также горстку последовательностей, которые рисует Twemoji, но которых нет в списке Unicode.

Отключение

--no-emoji (в коде — slides.Config{NoEmoji: true}) оставляет коды и эмодзи Unicode тем текстом, каким они были написаны; это emoji: false из Marp Core.

Авторство

Графика — Twemoji, Copyright 2020 Twitter, Inc и другие участники, лицензия CC-BY 4.0; проект продолжает jdecked/twemoji. Презентация, которая их показывает, должна указывать авторство, например в нижнем колонтитуле или на заключительном слайде. Таблица кодов взята из markdown-it-emoji (MIT).

Created on by tannevaled

Modified on by tannevaled