Tuning the Linux font rendering stack for a more visually pleasing output.
Includes tweaks for FreeType, fontconfig, and other components. See Overall with Details for more information, and Notes for the list of known issues and possible mitigations.
Visual comparison is available on the project's wiki page.
Note that this project is just a collection of tweaks that reflect the author's vision on how font rendering should look like.
Due to the nature of the rendering stack features used in this project being still experimental or even completely not supported by most of the Linux desktop environments (like proper gamma correction and blending), correct rendering cannot be guaranteed in some cases.
Previously known as freetype-envision
As the project grew from simple tweaks to FreeType and started to cover many additional components of linux environments, the decision was made to rename it to something more relevant.
- Improves visibility of the medium and small-sized fonts.
- Adjusts the font environment to support new experimental features of the font rendering stack.
- Keeps the system components and font list intact. No additions or removals, only rendering tweaks.
-
Download the latest release from here (Assets - Source code) and unpack it.
-
Open the terminal in the unpacked directory.
-
Execute the command below with elevated permissions:
You can also set up this project for the current user only, without system-wide access. See User mode.
sudo ./lucidglyph.sh install
-
Reboot to apply the changes.
- Execute the same script from Install section above with elevated
permissions:
sudo ./lucidglyph.sh remove
For all versions after
0.7.0
, it is no longer necessary to use the same version of the script as the installed project for removal. - Reboot to apply the changes.
Follow the steps from the Install section above and the script will request user confirmation to allow the upgrade.
From versions before
0.7.0
:
- Follow the "Remove" section steps using the script exactly the version of the project that is currently installed on the system.
- Now you can install the new version by simply following the "Install" section.
Warning
Experimental feature, expect things not to work as intended. User feedback is greatly appreciated.
User mode allows the project to be installed only for the current user, without any need for elevated permissions (sudo) or system-wide changes. This is very handy for immutable file systems where system-wide changes are forbidden or get overwritten on firmware upgrade.
To activate this mode, pass the --user
(or -u
) argument on main script run:
./lucidglyph.sh --user [COMMAND]
Starting from version 133 (February 2025), Chromium now uses the self-written replacement for FreeType called Fontations, as a new font system, with Skrifa library being responsible for rendering in it.
Skrifa currently lacks any stem-darkening support1, which is one of the crucial parts of the lucidglyph project (see Details).
In Chromium 139.0.7258
the flag that was previously used to turn back the
FreeType rendering backend was completely removed2 with one of the
contributors stating that they "...no longer intend to carry the FreeType
support."3.
There's nothing more I can do here other than suggest switching your browser to Firefox, at least until the Fontations stack matures enough to support the required functionality (mostly stem-darkening).
You can track the progress on this issue here.
While GNOME does use the grayscale anti-aliasing method by default, there are a few Linux distributions that change this setting to the subpixel method, making the font rendering appear incorrect after the tweaks from this project.
This issue is already being tracked, but manual user intervention is still required for now.
Check this report to see if you are being affected by this issue and get a temporary solution.
By default, vanilla KDE Plasma desktop environment does follow the fontconfig rules, including the anti-aliasing settings, but in some cases this behavior gets overwritten, presumably by above-level distro-specific configurations. This causes improper font rendering due to misconfigured anti-aliasing parameters.
This issue is already being tracked, but manual user intervention is still required for now.
Check this report to see if you are being affected by this issue and get a temporary solution.
Rendering dark fonts on light backgrounds (light themes) in Kitty appears to discard most of the applied emboldening (stem-darkening, see Details), making the fonts look thin again.
To remedy this issue, append this modified
text_composition_strategy
parameter to Kitty's user configuration file:
text_composition_strategy 1.7 0
-
Environmental configurations:
-
Stem-darkening (fonts emboldening) for
autofitter
(including custom darkening values),type1
,t1cid
andcff
drivers. This feature improves visibility of the medium and small-sized fonts. Especially helpful on the low pixel density (LowPPI) outputs. More information and usage documentation. -
Disable synthesized bold fonts in Qt-based software. There is an issue that causes bold glyphs to appear heavy in variable fonts. More information: Fedora reports ( #1, #2 ), Qt report.
-
-
Rules for fontconfig:
-
Enforce grayscale anti-aliasing (disable sub-pixel). Grayscale anti-aliasing should be enforced in the system to make the stem-darkening from the above work properly.
-
Reject usage of "Droid Sans" family for Japanese and Chinese characters and force the environment to use other fonts. Stem-darkening does not work well with this typeface, causing characters over-emboldening.
-