Update 1 (01/26/2021 @ 1:53 PM ET): Google has merged the commits that enable updatable system fonts in Android, just in time for Android 12. Click here for more information. The article as published on November 24, 2020, is preserved below.

Emojis have become an integral part of our informal expression. These tiny graphical assets add emotions, intention, and character to mere words. The frequent addition of new emojis to the Unicode standard is testimony to their popularity. Whenever Unicode gets new emojis, we need to wait for an OS upgrade to reach our phones to bring support for the emoji, before we can actually make them a part of our internet lingo. Google seems to prepare to make this easier, as a few commits indicate that it is working on decoupling new emojis from Android system updates.

As it currently stands, all fonts on Android are currently stored in the system partition, and more specifically, under the /system/fonts directory. Emojis, in particular, are present within the file called NotoColorEmoji.ttf. The system partition is read-only, and updating any file within the partition requires a system update while the partition isn't mounted. So the only way to get new fonts and new emojis is to wait for an official OTA update or install it yourself unofficially through root.

New commits have been spotted at the Android Open Source Project (AOSP) Gerrit that look to decouple font files away from needing an OS upgrade. Keep in mind that these commits have not been merged yet. We can glean their purpose from the commit descriptions:

Add /data/fonts/files directory:

The updated font files will be stored to /data/fonts/files and all application will read it for drawing text. Thus, /data/fonts/files needs to be readable by apps and only writable by system_server (and init).

Set up /data/fonts directory for updatable system fonts:

- /data/fonts/files The updated font files are placed in this directory. The files under this directory are readable by any apps. Only system_server can write font files to this directory.

- /data/fonts/config The font configuration used by system_server is stored in this directory. Only system_server can read/write this directory.

These commits essentially make it possible for the system_server process to write updated font files to the /data/fonts directory. The data partition is mounted as read-write, so with this change, Google is allowing only the system_server process the permission to write to this directory. All apps will then read the font and emoji files from this directory for drawing text. Thus, updated font files, and by extension new emojis, can be pushed to the phone without needing an entire OTA update for this purpose.

We reiterate that these commits have not been merged yet. Consequently, we aren't sure when this change will happen. If these commits are merged within the next few months, we can see this change happen in Android 12.

Thanks to XDA Recognized Developer luca020400 for the tip!


Update 1: Possible support in Android 12

A few days ago, Google merged the commits that set up a /data/fonts directory for updatable system fonts. Since emojis are contained within a font file, this means new emojis can be added by pushing an updated font file to this directory instead of through a full system update. And since these commits were merged ahead of the stable release of Android 12 in a few months, it's likely this updatable system font feature will be available in the upcoming Android release.

Thanks to @LinkofHyrule89 for the tip!