Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Noto Emoji Color fontconfig for Konsole
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!--
Noto Mono + Color Emoji Font Configuration.
Currently the only Terminal Emulator I'm aware that supports colour fonts is Konsole.
Usage:
0. Ensure that the Noto fonts are installed on your machine.
1. Install this file to ~/.config/fontconfig/conf.d/99-noto-mono-color-emoji.conf
2. Run `fc-cache`
3. Set Konsole to use "Noto Mono" as the font.
4. Restart Konsole.
-->
<fontconfig>
<match>
<test name="family"><string>Noto Mono</string></test>
<edit name="family" mode="prepend" binding="strong">
<string>Noto Color Emoji</string>
</edit>
</match>
</fontconfig>
@gysi

This comment has been minimized.

Copy link

@gysi gysi commented Feb 28, 2019

I love you, finally it works for me! 👍

@kmahyyg

This comment has been minimized.

Copy link

@kmahyyg kmahyyg commented Mar 5, 2019

Worked fine for me, use font Noto Mono for Powerline, so I can use wttr.in now

@gsfordham

This comment has been minimized.

Copy link

@gsfordham gsfordham commented May 8, 2019

Excellent! Saved me a lot of diggin', ya did!
I'm surprised this was needed, considering xterm didn't require anything special

@magiblot

This comment has been minimized.

Copy link

@magiblot magiblot commented May 17, 2019

The following seems to work for any font:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

    <match target="pattern">
        <test qual="any" name="family"><string>monospace</string></test>
        <edit name="family" mode="append" binding="weak"><string>Noto Color Emoji</string></edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family"><string>serif</string></test>
        <edit name="family" mode="append" binding="strong"><string>Noto Color Emoji</string></edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family"><string>sans-serif</string></test>
        <edit name="family" mode="append" binding="strong"><string>Noto Color Emoji</string></edit>
    </match>

</fontconfig>

I'm not sure about the difference between append and prepend, though.
Inspired by: https://github.com/AndydeCleyre/dotfiles/blob/master/.config/fontconfig/fonts.conf

@jospoortvliet

This comment has been minimized.

Copy link

@jospoortvliet jospoortvliet commented Jul 24, 2019

The first one works, and an adjustment to noto-sans worked. I haven't tested the line from magiblot but I guess it'll work, too - this is really nice, took me forever to find out! Thanks a lot.

@rickysarraf

This comment has been minimized.

Copy link

@rickysarraf rickysarraf commented Aug 21, 2019

THank you. Worked perfect.

@n4n0GH

This comment has been minimized.

Copy link

@n4n0GH n4n0GH commented Oct 13, 2019

The following seems to work for any font:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

    <match target="pattern">
        <test qual="any" name="family"><string>monospace</string></test>
        <edit name="family" mode="append" binding="weak"><string>Noto Color Emoji</string></edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family"><string>serif</string></test>
        <edit name="family" mode="append" binding="strong"><string>Noto Color Emoji</string></edit>
    </match>
    <match target="pattern">
        <test qual="any" name="family"><string>sans-serif</string></test>
        <edit name="family" mode="append" binding="strong"><string>Noto Color Emoji</string></edit>
    </match>

</fontconfig>

I'm not sure about the difference between append and prepend, though.
Inspired by: https://github.com/AndydeCleyre/dotfiles/blob/master/.config/fontconfig/fonts.conf

If you use monospace as a general identifier, the fontconfig will also replace all monospace rendering in your webbrowser and elsewhere, potentially making <code> tags unreadable.

@magiblot

This comment has been minimized.

Copy link

@magiblot magiblot commented Oct 13, 2019

If you use monospace as a general identifier, the fontconfig will also replace all monospace rendering in your webbrowser and elsewhere, potentially making <code> tags unreadable.

I was hoping Noto Color Emoji would be only used where the default font doesn't support a certain emoji. At least this is what seems to be happening for me:

Screenshot_20191013_223423

Notice how glyphs already available in the default font are preserved (which is the desired behaviour for monospace fonts, as emojis are 2 columns wide instead of 1). I wouldn't mind them being replaced in non-monospace font families, but I wasn't able to achieve this.

@n4n0GH

This comment has been minimized.

Copy link

@n4n0GH n4n0GH commented Oct 14, 2019

I'm pretty sure you can achieve your desired result with minimal effort. Check out https://www.freedesktop.org/software/fontconfig/fontconfig-user.html to see what you can actually do with your fontconfigs.

@grubersjoe

This comment has been minimized.

Copy link

@grubersjoe grubersjoe commented May 1, 2020

This works well for me (note the append_last).

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

This comment has been minimized.

Copy link

@SuperSandro2000 SuperSandro2000 commented Aug 2, 2020

Everyone that lands here and wonders why there config is not working:

It is probably overwritten because you forgot to prepend a high priority like 99. You probably want to name the config something like 99-color-emoji.conf and place it under ~/.config/fontconfig/conf.d/99-color-emoji.conf

@vitorpedeo

This comment has been minimized.

Copy link

@vitorpedeo vitorpedeo commented Aug 24, 2020

Thank you! I just switched Noto Sans for JetBrains Mono and it worked perfectly!

@3n-k1

This comment has been minimized.

Copy link

@3n-k1 3n-k1 commented Aug 27, 2020

tried something similar that ended up breaking emacs, but using this config fixed it lol. thanks fam!

@yzhernand

This comment has been minimized.

Copy link

@yzhernand yzhernand commented Oct 24, 2020

I think I got this to work on any monospace font without breaking code blocks. My fork is located here. The major change besides setting the font family to "Monospace" on line 17 as @magiblot did, is setting binding="weak" on line 18 (22 in my fork). I also set mode="append_last" as @grubersjoe did, but I'm not sure if its necessary (seems to work fine for me either with "append_last" or "prepend").

@rulrok

This comment has been minimized.

Copy link

@rulrok rulrok commented Oct 25, 2020

I'm not sure what happened, but @magiblot has finally fixed an issue I had with KDE emoji picker. 🥳🥳🥳

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.