Venam, a Unix enthusiast and founder of the nixers community, writes deep articles on Unix internals, audio, fonts, and desktops.
HN commenters praise the posts as great and incredible, citing the ones on Time on Unix, PipeWire, hostname resolution, and fonts.
This is a great post. I love messing with fonts on Linux, but I ended up with settings that work great for me years ago, so I don't do it much any more. (The game changer was when many of the infinality patches were rolled into fontconfig, so you don't need to build it yourself any more to get great rendering.)
The most important takeaways if you're on Linux:
1. Make sure you have autohint=false (except for individually chosen fonts that might need it). You don't want the renderer ignoring the individual font's hinting information and trying to do it itself: results are usually quite bad.
2. Make sure you have the correct subpixel rendering for your screen (usually rgb) and enable the lcdfilter. I prefer "lcdlight". Comparison of different lcdfilter settings here: http://www.spasche.net/files/lcdfiltering/
3. Consider disabling hinting entirely. I hate it. On a high DPI screen, you don't need hinting at all, because the edges of a glyph will already align very closely with the pixels. On a low DPI screen, especially as you get down closer to 96 dpi, the amount of distortion needed to align the font with the grid completely mangles it. You might think there's a sweet spot where hinting makes sense, but I've never seen one.
The article actually has a picture illustrating this beautifully: look how much better the unhinted rendering is than the hinted one! https://venam.nixers.net/blog/assets/fun_with_fonts/ftdiff_v40.png
If you do disable hinting, you should also change…
they absolutely can. Glibc's NSS (https://venam.nixers.net/blog/unix/2020/11/01/resolving-a-hostname.html) won't work and that's a good thing because putting domain name resolution in libc was a braindead idead from the very beginning.
Domain name resolution behaviour should be program-controllable, not system-controllable (and thankfully we are starting to see a bit of sanity with web browsers which do bypass libc's domain name resolution) and especially not plug-in based which causes BS like things working differently whether avahi is installed or not.
Note however that this will only work for simple non-gui apps. GUI apps generally need to load opengl drivers (which are shared objects) - thus you'd need to choose at link time which GL driver you want to use... which is not a practical thing to do.
https://venam.nixers.net and nixers.net
I have two main feeds, one is about Unix, really deep articles. And I got usual life stuff and philosophy-related articles. I always try to take new perspectives when I write. The second link is to the nixers community.
Nice post yesterday about the next generation Linux audio system. I've been using Pipewire on my desktop for a while and it's been working well.
https://venam.nixers.net/blog/unix/2021/06/23/pipewire-under-the-hood.html
Do you have any performance benchmark comparing with FreeType or Blend2D?
Do you plan on adding a utility library to make working with XCB easier? e.g: https://venam.nixers.net/blog/unix/2018/09/02/fonts-xcb.html
Reminds me of the incredible Time on Unix[1] article.
1. https://venam.nixers.net/blog/unix/2020/05/02/time-on-unix.html