Showing posts with label Infinality. Show all posts
Showing posts with label Infinality. Show all posts

Thursday, April 16, 2015

Fixing Gimp font rendering with fontconfig-infinality

Leading a UI team in my company, I tend to use Gimp tool from time to time. However I had some issue with font rendering in Gimp - it worked really awful for me, especially when rendering a bright color text on the darker background. Consider this:
This is Droid Sans, 50pt for the larger "Shalom" and 18pt for the smaller one - white color. If with the larger font you can see at least some reference to white color, the smaller one looks completely green-ish to me.

Zooming in, I saw that the issue seems to be related to subpixel rendering. You can see that the smaller version of the "Shalom" is "subpixeled to death".
Does everyone in Ubuntu has this problem and lives with it? - It can not be. Using Google powers, I've found that this issue is related to my Infinality font settings. I wrote about Infinality - the FreeType patches and configuration files that make fonts on Linux look like never before. Two years after, I'm still blown away with how good fonts look. Glancing at Windows Cleartype I fill really sorry for Windows users :) But... its doing no good to Gimp font rendering.

So I tried to disabling subpixel rendering system-wide to see if it helps - it does! Now Gimp renders fonts very good!
And the zoomed version:
Nice, aah? Gimp only uses hinting, i.e. adding different tones of the base font color around the main outline of the letters. The Gimp font tool even has a control to manage the amount of hinting or disable it all together. I wish they had a control to just disable subpixel rendering.

So the solution is to disable subpixel rendering for Gimp (and for Gimp only). Easy as it may sound it took me a while to figure out how to do it - font-config system has no generic way to make the application-specific settings. Obviously I did not want to disable it globally, since it clearly crippled the beautiful font rendering I came to love so much:
Two samples of Firefox rendering kubuntu.org. On the right, subpixel rendering is disabled. Look at the difference in zoomed versions - without subpixel rendering letters look more dull and square (especially note the vertical bar of the "K" and "b" letters). Letters on the left look juicy and sharp all together - and that's hard to achieve. Usually its either "juicy but blurry" or "sharp but harsh". Infinality's way of configuring this struck the chord (for me).

Anyways, back to Gimp. After all, I found nice article in ArchLinux wiki - they have a complete article on Infinality with related issues and workarounds and it had a solution to my gimp problem. As another mailing list said, applications may support their own way for overriding font-config configuration. And in fact, gimp does support this by reading ~/.gimp-2.8/fonts.conf file. So I've placed the following into this file:
<fontconfig>
  <match target="font">
    <edit name="rgba" mode="assign">
      <const>none</const>
    </edit>
  </match>
</fontconfig>
(Looks like fontconfig files refer to "subpixel rendering" term just as "rgba"). Now I can enjoy rendering text in Gimp without sacrifices :)

This is the only issue with Infinality that I've encountered so far. Otherwise fonts look so so so so much better to me. If you have issues with Infinality, make sure to check the ArchLinux wiki article on the subject.

Monday, June 17, 2013

Infinality - Linux fonts never looked better

I've got Windows 7 laptop on my new work. I've noticed that Windows rendered fonts better then my KDE box with default font settings. I've refused to believe that Linux cannot render fonts at least as beautiful as Windows does. Experiments with hinting and sub-pixel rendering did not help, so further search led me to the following magnificent project - fontconfig-infanility.
Its basically a patched version of fontconfig with "The purpose of these patches is to freely provide the nicest font rendering of any operating system."
With few commands and X restart, the font rendering is so beautiful, that my eyes still enter "Holy shit!" mode when reading pages on docs.python.org. The font appearance is actually much better then Windows 7 does - Windows fonts are very sharp edge. They make my eyes tired at the end of the day. Infinality fonts are much smoother and at the same time are not blurry.
Try that on your linux box. You would not regret!
sudo add-apt-repository ppa:no1wantdthisname/ppa
sudo apt-get update
sudo apt-get install fontconfig-infinality
Restart your X and you are set.

More reading: