Finalmente fontes legíveis no openSUSE Leap 42.1

Trabalhar com informações erradas dificilmente produz bom resultado. Sempre pensei que o pacote freetype2 do openSUSE vinha com subpixel rendering. Porque o panaca aqui via no pacote fonte o arquivo freetype2-subpixel.patch contendo:

Index: freetype-2.5.4/include/config/ftoption.h
===================================================================
--- freetype-2.5.4.orig/include/config/ftoption.h
+++ freetype-2.5.4/include/config/ftoption.h
@@ -92,7 +92,7 @@ FT_BEGIN_HEADER
   /* This is done to allow FreeType clients to run unmodified, forcing     */
   /* them to display normal gray-level anti-aliased glyphs.                */
   /*                                                                       */
-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
+#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
 
 
   /*************************************************************************/
@@ -604,7 +604,7 @@ FT_BEGIN_HEADER
   /*   This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be    */
   /*   defined.                                                            */
   /*                                                                       */
-/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */
+#define TT_CONFIG_OPTION_SUBPIXEL_HINTING
 
 
   /*************************************************************************/

Imaginava eu: ahh, está ativo.

Só que não estava. Na seção %prep de freetype2.spec tem isto:

%define enable_subpixel_rendering 0
%setup -q -n freetype-%{version} -a 1
%patch1 -p1
%patch308961 -p 1
%patch202 -p1
%if %{enable_subpixel_rendering}
%patch200 -p1
%endif

Aquele %define ali é o causador do sofrimento. Maldito!

Este post no fórum do openSUSE esclareceu a questão.

Daí a solução veio fácil. Adicionar um repositório contendo uma compilação da libfreetype.so.6 com subpixel rendering.

# zypper ar -f -n 'namtrac FreeType' http://download.opensuse.org/repositories/home:/namtrac:/subpixel/openSUSE_Leap_42.1/ namtrac-subpixel
# zypper -n --gpg-auto-import-keys dup
# sed -i '/^USE_LCDFILTER=/ s/lcdnone/lcddefault/' /etc/sysconfig/fonts-config
# sed -i '/^USE_RGBA=/ s/none/rgb/' /etc/sysconfig/fonts-config
# fonts-config

No GNOME Tweak Tool, em "Fontes", configure "Suavização" como Rgba. Ajuste "Sugestões" a gosto (no GNOME 3.20 o padrão mudou de medium para slight). A diferença é dramática. As capturas de tela abaixo foram feitas com as modificações aplicadas.

GNOME Tweak Tool → Fontes

YaST2 → Sistema → Editor do /etc/sysconfig
Esta configuração (junto com USE_RGBA) já foi feita via linha de comando (ver acima)

/etc/sysconfig/fonts-config é um (útil) SUSEismo, que ajusta a bagunça de /etc/fonts para nós. Sobre ela, o GNOME aplica sua configuração. GNU/Linux e suas peculiaridades.

Os patches infinality são aplicados no pacote. No arquivo /etc/profile.d/infinality-settings.sh (cujo conteúdo está todo comentado) diz que, a partir da versão 2.6.2-1 (no momento o pacote usa a 2.6.3-3), o estilo "ultimate3" é habilitado internamente por padrão. Não conheço o funcionamento desse negócio. Fica assim, está de bom tamanho.

Comentários