I have a simple Python PIL script that's render some list of unicode symbols with FreeSerif font, which is have the most full unicode support (about 65k glyph)

but in reality Arch Linux with last version of KDE Plasma can render more

meanwhile as main OS font i'm using Noto - which is have very poor coverage

can someone explain why?

enter image description here

Asian symbols with plain simple Noto Sans ( not CJK! )

enter image description here

  • 1
    It's helpful for your understanding to get that 'Linux' isn't involved much, that's the kernel, your question is more likely related to how Xorg or wayland the desktops you target render the fonts. While 'linux' is a useful catchall term for the collection of software and kernel that makes up most distributions, it's not very useful when you are talking about specifics that involve various components of that collection. "linux' per se is usually no more than 5% or so of the operating desktop or server. Maybe at the pure console level the actual kernel is closer, I don't know the details there.
    – Lizardx
    Oct 12, 2021 at 17:04

1 Answer 1


With a dedicated font rendering script, we can expect it to render only the specified font.

However, either on KDE (with kcharselect) or Gnome, (with gnome-characters), we have an application which load some fonts to cover a larger charset.

  • but how OS handle with it? how can i get it all and render as jpg
    – Yu Da Chi
    Oct 12, 2021 at 18:49
  • The application uses different libraries (Pango, Fontconfig) to search available fonts, their charset and behaves the best as then can. You have a /etc/fonts (and especially /etc/fonts/conf.d) directory which indicates all the fonts to open. The command fc-cat (from the fontconfig subsystem) shows you the available fonts which their charset. Note that a /var/cache/fontconfig directory contains a cache, then fontconfig doesn't have to open each fontfile. Oct 12, 2021 at 19:22
  • See also freedesktop.org/wiki/Software/fontconfig : [Fontconfig can] identify the set of fonts required to completely cover a set of languages.. Oct 12, 2021 at 19:35
  • i guess that it; found in conf.d/README; generic aliases, map generic->family; i imagine it just like that lol, simple brute force and mapping together, that's why i still have some blanks in kcharselect tool =) thanks!
    – Yu Da Chi
    Oct 12, 2021 at 20:41
  • You can type strace -f kcharselect 2>&1 | grep /var/cache You will see that the application loads all the cache at the startup. When you type strace -f kcharselect 2>&1 | grep truetype, you will see that some truetype fonts are loaded when they are needed. Note that fontconfig only says to the application your needed font is .... You need a library like Pango or Freetype to render your glyphs. Oct 12, 2021 at 20:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .