Rendering Emoji in Linux Terminals

Following on from my post about getting TUIs in CentOS 7 to use Unicode I thought I should write a short piece on how to actually get those characters to render in Linux terminals.

Many Linux distributions have a font in their repositories that supports Unicode characters which is part of the “Noto” font group, but this sometimes isn’t installed by default, or not set up to replace the missing emoji in other fonts. So, the first step is installing it. In Ubuntu you want to install “fonts-noto-color-emoji” using apt and in Fedora and CentOS this is “google-noto-emoji-fonts” using dnf or yum.

You may find when you restart your terminal after this that emoji characters “just work”. But if they don’t you need to set up these as fallbacks for when the characters are missing. To do this you need to create the file ~/.config/fontconfig/conf.d/99-noto-mono-color-emoji.conf (you may need to create the directory too) and add the following contents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
  <match target="pattern">
    <test qual="any" name="family"><string>monospace</string></test>
    <edit name="family" mode="append" binding="strong">
      <string>Noto Color Emoji</string>

For this to take effect you will need to run fc-cache -vf and restart your terminal application. You can now see and use emoji in your favourite terminal application!

Published by


Lead Software Engineer / Manager for the MariaDB Corporation and an Open Source Software advocate.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.