Muitas das fontes, incluindo aquelas do gerenciador de pacotes (atualmente executando um Arch System) não incluem a família genérica como "serifa","monoespaçado" e "cursiva". Então tenho que indicar a família correta manualmente (veja tambémhttps://eev.ee/blog/2015/05/20/i-stared-into-the-fontconfig-and-the-fontconfig-stared-back-at-me/).
Mas pelo "monoespaçado", há uma solução alternativa: todas elas têm a propriedade de espaçamento de 100. Você pode verificar isso executando fc-list :spacing=100
(veja tambémhttps://unix.stackexchange.com/a/363368/473666). Portanto, a ideia é definir automaticamente cada fonte com esse valor de propriedade como "monoespaçado" Fonte.
Por exemplo, nos arquivos de configuração padrão e na documentação, eles definem todas as fontes que não possuem "serifa" e "monoespaçado" como "sem serifa" Por aqui:
<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>
Então, eu tentei isso:
<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>
O resultado:TODOfonte no sistema agora é monoespaçada. Isso também acontece mudando <int>100</int>
para <const>mono</const>
. Eu já li man fonts.conf
muitos dos arquivos de configuração padrão listados, fc-conflist
mas não consegui fazê-lo funcionar. Tentei várias combinações de propriedades e seus valores, mas o resultado sempre éNENHUMouTODOa fonte é tratada como monoespaçada.
Por enquanto, usei este comando para gerar uma lista de fontes e adicionei todas manualmente: fc-list :spacing=100 | awk -F: '{print $2}' | sort -u
. É a primeira vez que pergunto algo no Stack Exchange, espero ter conseguido deixar claro.
Responder1
Remova o argumento qual="all"
no teste de espaçamento. Isto é usado para especificar o comportamento ao testar uma lista (ou seja, family
é uma lista de strings). Um teste escalar qual="all"
sempre é bem-sucedido. Isso é um bug no fontconfig.
Responder2
Eu precisava mudar meu alvo de correspondência para <match target=font>
, para testar o espaçamento; Não acho que o fontconfig conheça o espaçamento no momento da correspondência do padrão.
Ainda não tentei definir a família de fontes, pois não preciso dela, mas uma configuração modificada me permitiu desativar o antialiasing no Terminal GNOME apenas para texto do console:
<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>
Testado no fontconfig versão 2.13.1.