Languages: English | 简体中文
Brings Apple’s vibrant color emoji to Linux, Windows, and the web.
This project is for educational purposes only. All Apple Color Emoji assets and designs belong to Apple Inc., and Apple is a registered trademark of Apple Inc. in the U.S. and other countries. Using a font from a different operating system may have licensing implications; that responsibility is on you.
- Linux - A TTF font and release packages for Debian/Ubuntu, Fedora/RHEL, and Arch-based systems.
- Windows - A TTF font configured to replace Segoe UI Emoji.
- Web - A browser-oriented font build with GSUB shaping, unicode-range splitting, and generated
@font-faceCSS.
- Smaller emoji in some Linux apps - Certain applications may render emoji at a smaller size than expected. This may be related to how the font is built or how specific toolkits handle color fonts. We're still investigating a fix.
- Qt applications - Some Qt-based apps may not render the emoji correctly or at all due to how Qt handles color font tables.
Download the .deb from Releases and install it:
sudo dpkg -i fonts-apple-color-emoji.deb
# or
sudo apt install ./fonts-apple-color-emoji.debDownload the .rpm from Releases and install it:
sudo dnf install ./fonts-apple-color-emoji.rpm
# or
sudo rpm -i fonts-apple-color-emoji.rpmDownload the .pkg.tar.zst from Releases and install it:
sudo pacman -U ttf-apple-emoji.pkg.tar.zstGrab AppleColorEmoji-Linux.ttf from the repo’s releases (or build it yourself). Put it in your user font folder:
mkdir -p ~/.local/share/fonts
cp AppleColorEmoji-Linux.ttf ~/.local/share/fonts/So that apps actually use it for emoji, fontconfig has to prefer Apple Color Emoji. Two things help:
-
Emoji family - In
/etc/fonts/conf.d/60-generic.conf(or your distro’s equivalent), find the<alias>for<family>emoji</family>. In the<prefer>list inside it, make sure<family>Apple Color Emoji</family>is first. It’s often already in the list; if so, move it to the very front. If it’s not there, add it at the top so it’s chosen before Noto, Segoe, etc. -
Your own config - Create
~/.config/fontconfig/fonts.conf(create the directory if it doesn’t exist). You can copy the repo’sfonts.confinto that path. It tells fontconfig to prefer Apple Color Emoji for serif, sans-serif, and monospace, and to use it when an app asks for Noto Color Emoji.
Then clear the font cache: fc-cache -fv.
Download the Windows build from releases or build with configs/windows.yaml. The font is set up to replace Segoe UI Emoji.
Important: The font file cannot be installed by double-clicking. You must replace the system font file manually using the steps below.
Back up the original C:\Windows\Fonts\seguiemj.ttf first, then replace it. From an elevated Command Prompt you can try a direct copy; if Windows has the file locked, use this instead:
takeown /f "C:\Windows\Fonts\seguiemj.ttf"
icacls "C:\Windows\Fonts\seguiemj.ttf" /grant administrators:F
del "C:\Windows\Fonts\seguiemj.ttf"
copy "AppleColorEmoji-Windows.ttf" "C:\Windows\Fonts\seguiemj.ttf"Then restart so all apps pick up the new font.
Build the web recipe:
python cli.py -c configs/web.yaml --output output/AppleColorEmoji.ttfThis writes chunked font files such as AppleColorEmoji[1].ttf plus AppleColorEmoji.css next to the output path. Serve all generated files from the same directory and include the CSS:
<link rel="stylesheet" href="/fonts/AppleColorEmoji.css">Then opt in where you want Apple Color Emoji to be considered:
.emoji {
font-family: "Apple Color Emoji", system-ui, sans-serif;
}The generated CSS uses unicode-range, so browsers only request the chunks needed for the emoji on a page. If you move the font files away from the CSS file, update the src: URLs in the generated CSS.
Most people can skip this for Linux and Windows and use the CI-built fonts from the releases. If you want to build the converted font yourself, or you need the web output:
What you need
- Python 3.12+
- fonttools -
pip install -r requirements.txt - Apple Color Emoji.ttc - We don’t provide the font; you can get it from macOS. If you run the script on a Mac, leave the input argument empty and it will use the default TTC path.
On a Mac the default input path is /System/Library/Fonts/Apple Color Emoji.ttc, so you only need to choose a recipe and output:
pip install -r requirements.txt
python cli.py -c configs/linux.yaml --output output/AppleColorEmoji-Linux.ttf
python cli.py -c configs/windows.yaml --output output/AppleColorEmoji-Windows.ttf
python cli.py -c configs/web.yaml --output output/AppleColorEmoji.ttfIf your TTC is somewhere else, or you’re on Linux and copied the file over:
python cli.py -c configs/linux.yaml --input "/path/to/Apple Color Emoji.ttc" --output output/AppleColorEmoji-Linux.ttfConfig-driven builds always require --output; --input defaults to the macOS path. The recipe owns build behavior, so Windows, Linux, and web outputs are selected by choosing a YAML file, not by passing target-specific flags.
Unicode emoji sequence data lives in sequences/. The Unicode files can be refreshed manually:
python tools/update_emoji_data.py --version latest
# or pin a release
python tools/update_emoji_data.py --version 17.0You can also refresh the Unicode sequence files before a build:
python cli.py -c configs/web.yaml --output output/AppleColorEmoji.ttf --update-sequences
python cli.py -c configs/windows.yaml --output output/AppleColorEmoji-Windows.ttf --update-sequences 17.0sequences/project-sequences.txt is project-owned and is not downloaded from Unicode.
This project would not be possible without the hard work, contributions, and knowledge shared by all contributors.
Thanks also to people whose work outside this repository helped shape the project, including @win0err’s Linux installation notes and @jjjuk’s emoji-win work.
The code in this repository is licensed under the MIT License. Apple Color Emoji assets are not included in this license.