Establezca cada fuente con espacio = 100 como 'monoespaciado'

Establezca cada fuente con espacio = 100 como 'monoespaciado'

Muchas de las fuentes, incluidas las del administrador de paquetes (que actualmente ejecuta Arch System) no incluyen la familia genérica como "serifa", "monoespacio" y "cursivo". Entonces tengo que indicar la familia correcta manualmente (ver tambiénhttps://eev.ee/blog/2015/05/20/i-stared-into-the-fontconfig-and-the-fontconfig-stared-back-at-me/).

Pero para "monoespacio", hay una solución alternativa: todas tienen la propiedad de espaciado de 100. Puedes verificar esto ejecutando fc-list :spacing=100(ver tambiénhttps://unix.stackexchange.com/a/363368/473666). Entonces, la idea es configurar automáticamente cada fuente con este valor de propiedad como "monoespacio"fuente.

Como ejemplo, en la documentación y los archivos de configuración predeterminados, configuran todas las fuentes que no tienen "serifa" y "monoespacio" como "sans-serif" Por aquí:

  <match target="pattern">
    <test qual="all" name="family" compare="not_eq">
            <string>sans-serif</string>
    </test>
    <test qual="all" name="family" compare="not_eq">
            <string>serif</string>
    </test>
    <test qual="all" name="family" compare="not_eq">
            <string>monospace</string>
    </test>
    <edit name="family" mode="append_last">
            <string>sans-serif</string>
    </edit>
  </match>

Entonces, probé esto:

  <match target="pattern">
    <test qual="all" name="spacing" compare="eq"> 
      <int>100</int>
    </test>
    <test qual="all" name="family"  compare="not_eq"> 
      <string>monospace</string>
    </test>
    <edit name="family" mode="append_last"> 
      <string>monospace</string>
    </edit>
  </match>

El resultado:CADALa fuente en el sistema ahora es monoespaciada. Esto también sucede cambiando <int>100</int>por <const>mono</const>. Ya leí man fonts.confmuchos de los archivos de configuración predeterminados enumerados en fc-conflistpero no pude hacerlo funcionar. Probé múltiples combinaciones de propiedades y sus valores, pero el resultado siempre esNINGUNOoCADAla fuente se trata como monoespaciada.

Por ahora, utilicé este comando para generar una lista de fuentes y las agregué todas manualmente: fc-list :spacing=100 | awk -F: '{print $2}' | sort -u. Esta es la primera vez que pregunto algo en Stack Exchange, espero haberlo dejado claro.

Respuesta1

Elimine el argumento qual="all"en la prueba de espaciado. Esto se utiliza para especificar el comportamiento al probar una lista (es decir, familyes una lista de cadenas). Una prueba escalar qual="all"siempre tiene éxito. Eso es un error en fontconfig.

Respuesta2

Necesitaba cambiar mi objetivo de coincidencia a <match target=font>, para poder probar el espaciado; No creo que fontconfig conozca el espaciado en el momento de la coincidencia de patrones.

No he intentado configurar la familia de fuentes todavía, ya que no la necesito, pero una configuración modificada me permite desactivar el antialiasing en GNOME Terminal solo para texto de consola:

<match target="font">
  <test name="spacing" compare="eq">
    <int>100</int>
  </test>
  <test name="prgname" compare="contains">
    <string>gnome-terminal</string>
  </test>
  <edit name="antialias" mode="assign">
    <bool>false</bool>
  </edit>
</match>

Probado en fontconfig versión 2.13.1.

información relacionada