Blog of Raivo Laanemets

Software development and personal stories.

Chrome 59/60+ font rendering in Linux

On 2017-09-03

Chrome 59 on Linux renders fonts differently than the rest of the system. This happens when you use subpixel hinting on your system. Chrome 59+ seems to ignore your settings. It can be fixed by tweaking the FreeType configuration. FreeType is a font rendering system used by most Linux distributions.

The issue can be fixed by setting an environment variable before launching Chrome:

export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
google-chrome

I'm using an Application Launcher in MATE desktop to start Chrome. To automatically set the environment variable, I created a wrapper script chrome-wrapper.sh in my home directory and edited the launcher settings to invoke the wrapper script instead of google-chrome directly. The full contents of the script:

#!/usr/bin/env bash
export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
/opt/google/chrome/google-chrome &

With medium or full hinting this brings back skinny font rendering in the browser. Without the fix, the text looks similar to text on Windows 10.

More information:

Update 2018-11-04

It seems like the font rendering has been broken in versions 69/70 too. The fix seems to be similar (and same works for Chromium, see comments).

Update 2019-01-16

The same workaround is necessary in some Electron (based on Chromium) apps, for example, in the Visual Studio Code text editor.