Emoji on Linux
(Updated 2017-08-20)

This page was originally a short article written in April 2015 about the state of emoji support on Gnu/Linux systems and the work to do in order to get a default working implementation. Now it also offers regular updates about emoji on Linux. Here is a list of what you will find here ; If you are simply simply looking to get emoji on your computer, or want a quick recap on what is to be done for a full implementation, you can jump to the first two sections.
For users
How to display emoji? ⋅ How to input Emoji?For implementers
What is to be done?Original article (Written 2015-04-01)
Implement emoji display ⋅ Implement emoji insertionUpdates (Last updated 2017-06-17)
Current state of emoji on Linux and latest considerations
For users
(As for 2017-06-17)
The current best option to display emoji on your Linux computer, especially if you use Firefox or another Mozilla-based browser, is to set up Brad Erickson’s Twemoji font. You’ll get the 2623 emoji from the latest Emoji 5.0/Unicode 10.0 standard, using Twitter’s designs. They’ll show up in full colour in Mozilla applications and as fallback stroke-only monochrome symbols elsewhere. Installation is explained at the link!
The best option to input emoji isn’t clear yet and widely depends on your desktop environment. If you plan to insert emoji mainly on the Web, you may want to try a browser add-on like the EmojiOne extensions or Emoji Helper. You’ll get an emoji picker in your toolbar. For other ways, scroll down and follow the updates.
For implementers
If you’re interested in how Emoji can be supported out of the box as a system default, the steps to follow would be:
- Get colour fonts working system-wide.
- Choose or design a free emoji font and ship it by default.
- Design and implement an emoji picker available from any text field.
Read on for more details about colour font technologies, free-licensed emoji fonts, and progress on emoji pickers.
Original article
(2015-04-01)
They are now working out of the box on Windows, Android, and Apple’s OSs. Emoji is this wide ensemble of standardised emoticons, each being one Unicode character but rendered as a colourful little symbol, and they are increasingly in use. They are not, however, supported on Gnu/Linux systems.
Yet. Here are some thoughts about implementing them by default in environments or distributions. Until then, we won’t see anything except for some Unicode boxes when someone else uses them, nor be able to use them without some copy-pasting from online lists.
Implement emoji display
The first thing about implementing emoji would be displaying emoji. There are two parts in this: the technical system involved for displaying the characters, and the visual design of the symbols.
The minimum viable way
That’s the answer to every ‘how can I see emoji?’ questions on Gnu/Linux forums: install the Symbola font. It is part of the Unicode fonts for ancient scripts, contains a glyph for most emoji, and thanks to the magic of font substitution for missing characters, it allows to see emoji. Not the in the best way: the symbols are not always well designed, and they are all black and white, which isn’t the expected emoji experience.
However, in the very short term, I believe every distribution would gain in installing the Symbola font by default, if only to not surprise in a bad way users who receive messages containing emoji. Packages are already available, like ttf-ancient-fonts in Ubuntu-based distributions and gdouros-symbola-fonts in Fedora-based ones; they should just be part of the default installation.

Left: an sign of love without anything.
Right: the same with Symbola set up. That’s already better.
The better ways
I see these ways to display emoji:
- Via a normal monochrome font.
- Via a multilayer colour font (with a possible monochrome fallback).
- Via bitmap images.
- Via vector images.
- There are possibly a midway between fonts and images, which would be images embedded into a font, or SVG fonts.
The first way is simply what we’ve seen previously with Symbola. Even with a better monochrome design, it’s still monochrome.
The second way is what Microsoft is doing. Each glyph in the font is linked to several layers, each having its own colour. When rendered, the layers are placed on top of each other. There’s a monochrome fallback for unsupported systems. I wonder how difficult or easy it is to build an implementation of this. After all, it’s a standard TrueType/OpenType font, with some more tables to read, and glyphs to render in different colour; I feel like mostly everything is ready to start implementing this!
I’ll pass over bitmap images to go directly to vector images. In this solution, we could have a /usr/share/emoji folder with all emoji in individual SVG files, named after their Unicode identifiers. There would be a system-wide system that display one of these SVG files at text size if a character is missing from the used font but available in the folder. Or for characters in the emoji Unicode ranges. Subfolders could also be used for different emoji styles/themes.
An SVG Font is also an interesting way to consider!
Visual design
An emoji display system isn’t much without an emoji set! As far as I know, and not counting the Symbola font and the old Android Emoji font, there are currently three freely licensed emoji sets:
- EmojiOne, licensed under CC-by-sa 4.0 (Github, Commons)
- Noto Color Emoji, licensed under Apache 2.0 (Commons)
- Twemoji, licensed under CC-by 4.0 (Github, Commons)
There was also the Phantom Open Emoji project, but it’s not free anymore and was never entirely completed anyway. You can compare all the sets on this Commons page.

The same three emoji, rendered in Symbola, EmojiOne, Noto Color Emoji, and Twemoji. From emoji.codes.
Noto Color Emoji was designed by Google for the Noto fonts project; I believe it is what is displayed on Android devices. Twemoji was designed by Iconfactory and was open-sourced by Twitter some months ago; They are used in the web version of the service. EmojiOne is relatively new, and was designed by Domin Valida for Ranks; I don’t know of any large usage of it for now, but it’s really made for others to use.
All three are quite qualitative and could be good candidates for a default emoji set on Gnu/Linux. I would say any of them would be good, through EmojiOne has the advantage of not being associated with an existing environment like Android or Twitter, though it may not be the one that works the best at smallest sizes.
Adapting and extending an existing Gnu/Linux icon set, like the classic Tango, to include all emoji could be another source for the designs. I will try to draw up a table matching Freedesktop’s Icon Naming Specification to Unicode emoji. However, I think most required icons will be missing, and I believe most icon sets would be outdated stylistically, and above all not adapted to be displayed at text sizes as small icons.
Finally, we could have a whole new emoji set for Gnu/Linux users! That’s weeks if not months of full-time work, and the best way to get a qualitative and unified style in the first place would be to hire a designer or a team of designers. With visual guidelines, the set could then be expanded by the community. Each distribution could also have their own custom versions of it, matching their desktop feel.
Of course with the time, I’m sure there will be many great community-designed emoji sets like we have and always had themes and icon sets. We just need a first implementation.
Recap
How we should do to get emoji display on Linux:
- In the very short term, installing the Symbola font by default.
- Then, developing a system-wide implementation of either colour fonts, SVG fonts, or characters substitution with SVG images, using one the existing free emoji sets.
- Eventually, making our own emoji sets!
Implement emoji insertion
Once we have working emoji display, we need a way to insert emoji. It probably means having a system-wide UI for browsing, selecting and typing emoji. The dialog would be accessible from any text field, with a keyboard shortcut and/or a contextual menu item. An additional standard UI element could allow developers to display a button, in or close to a text field, for opening the window.
If emoji is considered too anecdotal for a whole dedicated UI, the purpose of the window could be generalised into the insertion of special characters, emoji being one tab of it. It would greatly help inserting non-emoji symbols and foreign characters, what I believe would benefit many users.
Here are some examples of emoji pickers. Most of them sort the emoji into different categories, which is the behaviour recommended by Unicode:
‘The palettes need to be organized in a meaningful way for users. They typically provide a small number of broad categories, such as People, Nature, and so on. These categories typically have 100-200 emoji. Palettes may display the same symbol in multiple categories, to help users find a symbol in any category where they might reasonably expect to find it. More advanced palettes will have long-press enabled, so that people can press-and-hold on an emoji and have a set of related emoji pop up. This allows for faster navigation, with less scrolling through the palette.’

Mac OS X: A small emoji palette can be opened in any text field using a keyboard shortcut.

Mac OS X: Additionally, emoji is available among all other Unicode characters in the Characters window, accessible from a keyboard shortcut and an entry in every Edit menu.

Windows: Emoji is integrated into the virtual keyboard. There’s an emoticon button in one corner turning the keyboard into an emoji picker.

Emoji Helper is a cross-browser add-on and bookmarklet allowing to insert or copy emoji in any in-browser text field.
The palette won’t necessarily be the same across desktop and mobile environments, each following their own UI principles, but it would be great at first to get at least one working implementation of an emoji/characters picker! I’m going to work on designing some ideas for a proposed UI.
Next
There’s no end to this, except that I’d really like to see working emoji on Gnu/Linux! I’ll update the page as I find additional things.
Updates
- 2015-04-01:
-
- There’s a Gnome design project about emoji. It hasn’t been updated since one year. There’s the beginning of a Gnome emoji set derived from Tango, and no UI yet.
-
- Freetype is compatible with fonts embedding PNG images, what Google uses on Android. So installing a non-vector Noto Color Emoji font should be possible! That’s apparently what Firefox OS do. I still think a layered vector colour font, or SVG, would be better, but it’s a great start!
- 2015-04-01: Ubuntu Phone has an emoji keyboard since last month. We’re getting close.
2015-10-01: Some updates, and things I forgot about:
-
- There was another technology for colour fonts, or rather a blend of technologies, that I missed to mention: SVG in OpenType. Mozilla and Adobe are/were working on this. Gecko supports this.
-
- I found this page that nicely sums up the different ways of doing colour fonts: Multicolor fonts by Mike Fortress. It’s a year and a half old though. It also mention an initiative by MPEG to standardise this under the name Open Font Format.
-
- I believe Ubuntu, and Ubuntu-based distributions, now ship with Symbola installed by default. Maybe other distributions are doing this too? It’s a small first step, but at least we can receive messages containing emoji.
-
- The latest Gnome has a new tool for inserting special characters, Characters, which offers a quick access to emoji! I think it’s the first time we can easily input emoji using Linux, so that’s great news. I hope this piece of software is going to be carried to other environment using Gnome applications, like Unity and Cinnamon.
- Mozilla released its own emoji set! It’s designed by Sabrina Smelko and the SVGs and font files are available on Github. For now, it supports Unicode 6 emoji, but version 7 and version 8 emoji are on their way. I believe the license has not been made clear yet. The font doesn’t seem to use SVG in OpenType, but rather the layered glyphs method used by Microsoft, which seems to be supported by Gecko. I’m updating this page as soon as I found out more about this one, as —depending of the license and technology used— it could be a great new candidate for a default integration in Linux systems!
2015-10-07:
-
- The Mozilla Emoji set is… 1. Free! (CC-by 4.0, like Twemoji) 2. Using SVG in Opentype, which simply happens to use colour tables similar to the ones used by Microsoft, hence my mistake. By the way, Gecko does support Microsoft’s layered glyphs natively, which makes for a good example of a free implementation of this method.
-
- Also, let’s forget what I wrote in April about external image files. I’m since convinced that emoji should get implemented as fonts. They are characters. The thing to do is supporting at least one colour font technology, not to build a complicated character substitution with external pictures system.
- Design work on an emoji picker has started at the Gnome project!
2015-10-12:
- Google’s Noto Color Emoji changed its license two weeks ago, switching from Apache 2.0 to SIL Open Font License 1.1.
2015-12-19:
-
- EmojiOne released a new version, the 2016 collection. It includes 1.5K+ new symbols, notably Unicode 8 emoji and human emoji’s skin colours tones, which I believe makes it the first libre emoji set to support that. It’s also available for the first time as a font file! It uses Android’s format, with embedded PNG, and can be used as a substitution to Noto Color Emoji on this system.
-
- On Gnu/Linux however, it couldn’t be installed, as Noto couldn’t. Next step in the research would be to find out how to install an Android colour bitmap font on a standard Gnu/Linux system. Freetype supports it, there’s probably a way to do it and it may be the shortest way to get working colour emoji.
-
- The EmojiOne repository however mentions possible upcoming “Linux Fonts”. I wonder what’s the plan.
- By the way, in a very non-free way, Microsoft’s Segoe UI emoji font works great on Gnu/Linux. Remember how their format provides a monochrome fallback? The user gets this across the system, plus colourful emoji in Gecko applications, Firefox and Thunderbird. If you have a Windows license, copying
seguiemj.ttfto your~/.local/share/fontsis therefore a fine way to get partial colour emoji! This isn’t really the topic of this page however, which is more about getting emoji as a default in distributions than getting it to work on specific computers.
- By the way, in a very non-free way, Microsoft’s Segoe UI emoji font works great on Gnu/Linux. Remember how their format provides a monochrome fallback? The user gets this across the system, plus colourful emoji in Gecko applications, Firefox and Thunderbird. If you have a Windows license, copying
2016-03-08:
-
- A SVG in OpenType font, mainly made from EmojiOne, has been released last week. It supports skin tones, flags and even ‘ZWJ’ sequences. It also provides monochrome fallback as outlined designs. It comes with intructions for installing it on Linux and set it as default. Firefox and Thunderbird get the colourful symbols, and everything else not supporting SVG-in-OT gets the monochromes. Probably the best choice right now.
- Old news but new here: the different ways to make multicolour fonts, Mozilla+Adobe’s embedded SVG, Microsoft’s layered glyphs, and Google’s embedded PNG, are all part of the current OpenType specification (see
SVG,COLRandCBDTtables), released March 2015. These formats could well cohabit in the future. Only Apple’s own embedded bitmaps seem out of the standard.
- Old news but new here: the different ways to make multicolour fonts, Mozilla+Adobe’s embedded SVG, Microsoft’s layered glyphs, and Google’s embedded PNG, are all part of the current OpenType specification (see
2016-03-10:
-
- The EmojiOne font mentioned earlier now has updated instructions. In just one copy-paste in the terminal, you get colour emoji support. Forget Symbola, that’s the new simple and better answer to the ‘how can I see emoji on Linux?’ question. The next steps for bringing this to everyone would be having this font part of the default installations plus, I believe, SVG-in-OT support in Freetype (by the way, support for colour layered glyphs seems to be in progress).
-
- I didn’t wrote about inputting emoji for a while. I didn’t heard of any progress from distributions or environments on that side (tell me if I missed something), but there’s a fairly new emoji picker available here, which I did’t tried yet.
- For Gnome Shell users with the Characters app, and maybe some other desktops working in a similar way, another way to insert emoji is to look it up after pressing the
superkey (make sure ‘Characters’ is on in the ‘Search’ settings). Type a keyword from an emoji name, like ‘winking’ or ‘penguin’, choose a result with up and down arrows and press enter to copy the character in the keyboard. It’s not very visual, but it works quite nicely.
- For Gnome Shell users with the Characters app, and maybe some other desktops working in a similar way, another way to insert emoji is to look it up after pressing the
2016-03-12:
- The author of the EmojiOne font brought up in the two last updates just released a Twemoji font! Same thing, different design.
2016-10-28:
-
- Something I missed earlier this year: there is an EmojiOne browser add-on. Available for Firefox, Opera and Chrome, it adds an emoji picker in your toolbar and also opens from a keyboard shortcut. Quite similar to Emoji Helper mentioned higher, but with non-Apple designs and support for Unicode 9 emojis and Fitzpatrick skin colours.
-
- EmojiOne now provides its own version of an SVG-in-OT font, developed in cooperation with Adobe, with different black and white fallbacks. I have yet to test it.
- I just updated the page front matter with a table of contents and some general info for everyday visitors, more welcoming and useful than the old 2015 article.
2016-10-29: Other things I missed:
-
- Starting version 50, Firefox ships with a full-colour emoji font! If the user haven’t got system-wide emoji set-up, the browser uses its own (see on Bugzilla). Although Mozilla’s own emoji designs were first considered, they were discarded due to being unmaintained and not up-to-date with Unicode. The chosen set is then EmojiOne. A new font version of it has been built especially, EmojiOne COLR (or ‘EmojiOne Mozilla’), which is bundled in the Firefox installation folder. It’s an OpenType font using the COLR/CPAL tables. I believe it isn’t an SVG-in-OT font but rather using multiple layers glyphs (as introduced by Microsoft). Beyond the technical details, what it means for many Linux users is seamless emoji support from their default browser! It isn’t system support, but as the web is the place where most emojis are encountered on a computer, it’s a nice step.
-
- There are therefore three parallel EmojiOne font projects now: Rank’s (and Adobe’s) EmojiOne fonts, eosrei’s EmojiOne font, and Mozilla’s EmojiOne font. The first one provides three formats: Android’s PNG-in-OpenType, Apple raster font format, and above all SVG-in-OpenType ; it also provides the new monochrome fallbacks. The second one is SVG-in-OpenType, with its own auto-generated stroke-only monochrome fallbacks — surely soon to be replaced by the ‘official’ black-and-white designs, and an easy to launch set-up process ; it is the one really destined for system use rather than Web use. The third one is a multi-layered OpenType font — correct me if I’m wrong. A lot of choice for the same emoji designs. I’m curious to see how these projects will evolve.
-
- Another collateral of the Firefox news is the visible end of the Firefox OS Emoji set, introduced a year ago. It was short lived, but it make sense as Firefox OS removed its focus from phones and tablets. It was a nice design, freely licensed moreover. Let’s see if the designer and/or a community project can take over to maintain it and upgrade it for Unicode 9 and future updates.
- It is possible to install Noto Color Emoji PNG-in-OpenType font (and most probably the corresponding version of the aforementioned EmojiOne font) as a system-wide colour emoji font, as long as you have the right
fontconfigfile. See this Ubuntu Next article and this GitHub thread. This is a good option for Chrome/Chromium users and maybe other Webkit/Blink browsers that don’t have support for SVG-in-OpenType. As Freetype does support PNG-in-OT, I wonder how it behaves system-wide.
- It is possible to install Noto Color Emoji PNG-in-OpenType font (and most probably the corresponding version of the aforementioned EmojiOne font) as a system-wide colour emoji font, as long as you have the right
2017-06-17: I haven’t updated this page in a while, and I probably should write a lenghty update. For now though : first, Emoji 5.0, part of the Unicode 10.0 standard, has been released in May, with a batch of novelties; secondly, three major news about our three freely-licensed Emoji sets:
-
- EmojiOne… well, is not free anymore. Version 3.0 has been released with new designs and a commercial license, even if it stays “free” as in “non-paid” for certain limited uses. Version 2.2.7, the last of the “free as in freedom” branch is still available, but there’s no update (like Emoji 5.0 support) to be expected from it, so I think we can forget about this set as a possible choice for Linux systems.
-
- Google/Android’s Emoji, or Noto Color Emoji, got entirely redesigned from scratch. The final new set, which is up to date with Emoji 5.0, is going to be released with Android O at some time later this year. Hopefully it will stay free (still as part of the Noto project?), since the previous design is here also unlikely to get updated.
- Twemoji has been upgraded to version 2.3, with full Emoji 5.0 coverage! It is therefore, as of today, the only freely-licensed Emoji set to be complete and up to date; thank you Twitter. And eosrei’s Twemoji font is now integrating the update too, so installing it is now the prefered method to get modern emoji support on Linux!
2017-08-20: We’re getting there! In Gnome, at least. Thanks to patches in cairo, fontconfig, pango, and GTK+, the next release, Gnome 3.26, will not only support colour fonts displaying everywhere, but will also ship with an Emoji picker in the contextual menu of text fields. Since Gnome is also going to be the default desktop of Ubuntu, a large amount of Linux users are going to get Emoji out of the box!
Have I missed something or made a mistake? Got some news? Write to me 📧