Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does the Apple color emoji font work, and is there an Android version?

I saw that on iPhone there is a truetype font called Apple Color Emoji. It contains the emoticons that exist on iPhones which can be used in any application.

I wonder:

  1. How is this font displayed in multicolor?! Truetype fonts can only include black and white glyphs.
  2. Can this font, or one like it, be used on Android phones?
like image 548
Developer Avatar asked Mar 02 '12 14:03

Developer


People also ask

Do Apple emojis work on Android?

You can still view iPhone emojis on Android. This is great news if you're making the switch from iPhone to Android and want access to your favorite emojis.

How do you get the Apple color emojis?

Go to Edit > Emoji & Symbols and your Character Viewer should come up which will let you input things from the color emoji font.


2 Answers

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.

like image 53
natevw Avatar answered Oct 27 '22 07:10

natevw


  1. The font uses embedded PNGs and they are stored in a sbix table.
  2. 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.

like image 23
13rac1 Avatar answered Oct 27 '22 08:10

13rac1