Configure fontconfig para ignorar bitmaps em fontes escalonáveis

12

Eu tenho o Microsoft C-Fonts instalado e eles são maravilhosos. No entanto, o Calibri aparece como uma fonte de bitmap em vários tamanhos. Como eu digo ao fontconfig para proibir que Calibri (e Cambria, etc.) Sejam renderizados a partir dos bitmaps incorporados? Eu já tenho 70-no-bitmaps.confno meu /etc/fonts/conf.d/diretório.

As fontes em questão podem ser extraídas do Visualizador do PowerPoint .

Paul Fisher
fonte
AFAIK essas fontes não são livremente distribuíveis? (Portanto, não posso testá-los.) Mas você tem certeza de que eles usam bitmaps e não desativam o antialiassing?
janc
@JanC As fontes realmente usam bitmaps pré-renderizados.
Paul Fisher

Respostas:

19

/etc/fonts/conf.d/70-no-bitmaps.confrejeita apenas fontes de bitmap, elas não desabilitam os bitmaps incorporados, como é o caso aqui. Não sei por que eles não colocaram a configuração para desativar bitmaps incorporados no mesmo arquivo conf. De qualquer forma, coloque o seguinte em seu ~/.config/fontconfig/conf.d/20-no-embedded.conf(ou, para versões mais antigas do Ubuntu, em ~/.fonts.conf.d/20-no-embedded.conf):

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

Isso desativará o bitmap incorporado para todas as fontes. Se você deseja desativar apenas as fontes selecionadas, adicione o <test>elemento:

<test name="family" compare="contains">
  <string>Calibri</string>
  <string>Cambria</string>
</test>

antes <edit ....

syockit
fonte
Isso deve ser colocado em /etc/fonts/conf.d, ou melhor, em /etc/fonts/conf.avail e vinculado a conf.d, como todos os outros arquivos de configuração? Isso é reservado para os arquivos de configuração fornecidos pela distribuição do ubuntu? Isso importa?
knb
1
@knb por padrão nas configurações do ubuntu / debian, o fontconfig também carrega qualquer coisa ~/.fonts.conf.d/. Então, sugiro que você o coloque lá para evitar interferências nas configurações do sistema. A menos que você queira disponibilizá-lo a todos os usuários, você pode colocá-lo /etc/fonts/conf.dou colocá-lo no availlink simbólico conf.dpara usá-lo quando precisar (você pode excluir o link simbólico quando desejar ativá-lo, vice-versa)
syockit
3
Nas versões atuais do fontconfig, o nome do arquivo deve ser: ~/.fonts.conf.d/20-no-embedded.confele não será carregado se não for prefixado com um número. Execute, por exemplo, FC_DEBUG=1024 geditpara ver se sua configuração está carregada, se não parece ter nenhum efeito.
pascal
@pascal +1 para FC_DEBUG. E não, o número antes do nome não era necessário no 10.04 LTS, apenas o nome .fonts.configera suficiente. A que versão do fontconfig você se refere?
LAFK diz Restabelecer Monica
1

No exemplo que você fornece, você tem o atributo "<string>" mencionado duas vezes na estrofe "<test>". Isso causa um aviso no Ubuntu 13.10 e 14.04. Para eliminar o aviso, a estrofe no arquivo deve se parecer com:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <test name="family" compare="contains">
       <string>Calibri</string>
    </test>
    <test name="family" compare="contains">
       <string>Cambria</string>
    </test>
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>
Paul Lemmons
fonte