How does the Apple color emoji font work, and is there an Android version?
Apple is using a proprietary extension to the OpenType standard. Basically, they just store pre-rasterized color PNGs in a proprietary extension "block" within the TTF file (reference, corroboration).
The only reason this works is because they also provide the full stack between that font extension and the screen (font rasterization, system graphics library, text rendering widgets). There's no standardized way to accomplish this across all platforms/libraries.
- The font uses embedded PNGs and they are stored in a
sbix
table. Apple Color Emoji
cannot be used in Android, but a Google CBLC/CBDT formatted font can.
There are four methods for implementing color in Open Type fonts right now:
- Apple's SBIX - Embedded PNGs
- Google's CBLC+CBDT - Embedded PNGs
- Microsoft's COLR+CPAL - Colored glyphs
- Adobe/Mozilla/W3C's SVG+CPAL - SVG in OpenType
The complete list of OpenType tables.
You can disassemble/reassemble the font using ttx
from FontTools(pypi, github) for more details.