Substituição de fonte com ~ / .fonts.conf

18

Estou tentando usar o ~ / .fonts.conf para substituir o Helvetica pelo Droid Sans, eis o conteúdo do arquivo:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign"><string>Droid Sans</string></edit>
  </match>
</fontconfig>

mas não importa o quê, nada parece acontecer. Tentei executar o fc-cache, fiz o check-in /etc/fonts/conf.de descobri o 50-user.confque parece chamar explicitamente configurações específicas do usuário.

o que estou perdendo?

obrigado

EDIT: após a investigação, descobri que outras regras /etc/fonts/conf.dsobrescrevem a configuração do usuário, vinculando user.confpara 00-user.confajudou. Ainda assim, é apenas um sucesso parcial, já que posso especificar quais fontes devem ser substituídas, mas a substituta de minha escolha é ignorada: em outras palavras, posso Helveticainvalidar e o sistema volta para a próxima fonte (ou seja, no navegador, ela pega a próxima fonte especificada na folha de estilos; se não houver nenhuma, ela será exibida sem o padrão serifa).

Matteo Riva
fonte
Eu vim aqui porque estava prestes a realizar algo semelhante. Esperemos que alguém tem uma resposta ...
Ludwig Weinzierl
Ainda está procurando uma resposta.
Capi Etheriel 11/03/10

Respostas:

16

Eu acho que o atributo de ligação estava faltando na sua configuração. (veja também fonts-conf ). Dependendo da sua outra configuração, uma ligação "igual" ou "forte" provavelmente pode funcionar, enquanto "fraca" pode não dar o que você deseja.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="same"><string>Droid Sans</string></edit>
  </match>
</fontconfig>
frenkx
fonte
11
Trabalhou para mim. Parece que adicionar o bindingatributo fez a diferença. Estou usando o fontconfig-2.8.0.
MaoPU
Isso funcionou para mim
miloshadzic
3

Eu acho que o mecanismo de alias funcionaria para isso:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
Geoff Reedy
fonte
11
<alias> não é apenas para substituir fontes não instaladas?
MaoPU
@MaoPU: Eu pensei a mesma coisa, mas depois de ler a documentação, ele me levou a acreditar que esse comportamento está configurado. <accept>tem precedência quando a fonte não está instalada, <prefer>tem precedência, independentemente da fonte estar instalada.
JM Becker
/ \ Não, na verdade não existe, a menos que o .confarquivo que contém esta regra seja lido primeiro.
Marc.2377 10/12
Hmm - dito isso , funciona se binding="strong"for usado junto com o <alias>elemento!
Marc.2377 10/12
0

"Fc-list" mostra realmente "Helvetica"? O que diz o fc-match? Na minha caixa (F-12), recebo:

 >fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

Talvez você precise adicionar a fonte com alias à sua substituição também.

vasquez
fonte
0

Encontrei um problema semelhante ao tentar usar o apelido Helvetica como família sem serifa. Para qualquer pessoa que esteja com o mesmo problema, observe a configuração do sistema na /etc/fonts/conf.d/qual conterá links para arquivos do /etc/fonts/conf.avail. Eu tive que remover muitos desses aliases para obter um comportamento determinístico.

j605
fonte