This package defines the \emo{<emoji-name>} macro for including color emoji in
a document no matter the LaTeX engine. It uses the Noto color emoji font if the
engine supports doing so and falls back onto PDF graphics otherwise. In either
case, \emo{desert-island} results in ๐ and \emo{parrot} results in ๐ฆ. Emo
may come in particularly handy when dealing with academic publishers that
provide only minimal support for non-Latin scripts (cough,
ACM, cough).
Emo's source repository is https://github.com/apparebit/emo. It also is
available through CTAN. Emo supports conversion to
HTML with LaTeXML or
TeX4ht. When using the latter tool, please be sure to
use |make4ht -l| as invocation.
Package Options
When emo is used with the extra option, this package also defines the
\lingchi and \YHWH macros for ๅ้ฒ and ืืืื, respectively. Both macros
preserve a subsequent space as space, no backslash needed.
When used with the index option, this package also emits a raw index entry for
each use of an emoji into an emo index or .edx file.
Installation
To extract files embedded in emo.dtx, run pdftex emo.dtx. Note
that plain old tex won't do, since it mangles this README. pdflatex works,
but also generates the package documentation. The embedded files are build.sh,
emo.ins, emo.sty, emo.sty.ltxml, emo-support.sty, canary.tex,
demo.tex, and README.md.
To run emo's tests and build its documentation, make build.sh executable
by invoking chmod +x build.sh and then run ./build.sh, which:
Tests emo on pdfTeX, XeTeX, and LuaTeXโsee canary.pdf;
Tests emo with LaTeXML and TeX4htโsee demo.html;
Builds the documentation with indicesโsee emo.pdf.
To configure the emoji, run python3 config/emo.py with appropriate
arguments. The package documentation explains the configuration tool
in detail, but you may find the -h for help option sufficient to get started.
To install this package, place emo.def, emo.sty, emo.sty.ltxml,
emo-lingchi.ttf, and the emo-graphics directory with the fallback PDF files
somewhere where LaTeX can find them. In a pinch, your project directory will do.
Supported Emoji
By default, emo supports all of the emoji listed below. In order of Unicode's
emoji groups, emo's pre-configured emoji include:
All emoji in Unicode's Smileys & Emotion group;
All emoji in the People & Body group that do not override gender, hair,
or skin color;
All emoji in the Animals & Nature, Food & Drink, Travel & Places,
Activities, Objects, and Symbols groups;
All emoji in the flag subgroup of the Flags group;
The EU flag.
In Unicode display order, that's the following 1,415 out of 3,655 possible emoji
as of Unicode 15.0:
The package documentation explains the underlying naming scheme. It
also explains how to update the configuration with the emo.py
script, which takes care of most heavy lifting by downloading the sources for
Noto color emoji, converting SVG into PDF graphics compatible with pdfTeX and
XeTeX, and generating up-to-date emo.def files.
Copyright and Licensing
This package combines code written in LaTeX, Python, and Perl with Unicode data
about emoji as well as graphics and fonts derived from Google's Noto fonts. As a
result, a number of different licenses apply, all of which are OSI
approved and non-copyleft:
This package's LaTeX code is ยฉ Copyright 2023 by Robert Grimm and
has been released under the LPPL
v1.3c or later.
The emo.py configuration script also is ยฉ Copyright 2023 by
Robert Grimm but has been released under the Apache 2.0
license.
The emo-lingchi.ttf font is a two-glyph subset of the serif traditional
Chinese version of Google's Noto
fonts and hence subject to the SIL
Open Font License v1.1.
The PDF graphics in the emo-graphics directory are derived from the
sources for Noto's color emoji
and hence subject to the Apache 2.0 license.