Existe uma maneira fácil de adicionar fontes?

Existe uma maneira fácil de adicionar fontes?

Depois de perder minha amada instalação do Gentoo há mais de 5 anos devido a uma falha de hardware, fui para o FreeBSD. Achei que este era o próximo passo lógico na minha exploração e uso de sistemas operacionais baseados em código-fonte. Ao ler todos osdocumentação associada para FreeBSD, durante a instalação do XOrg Server, o5.6 - Usando fontes na seção XOrgPegou minha atenção. Tendo percebido que nunca adicionei a linha:

Section "Files"
   FontPath  "/usr/share/fonts/...."
EndSection

para qualquer fonte na minha instalação do Gentoo, agora entendo porque meu DE parecia uma porcaria. Ser um digitador com uma mão deficiente torna mais difícil para mim editar manualmente Files Section, e eu preferiria adicionar fontes manualmente como último recurso. Como tal, existe uma maneira de adicionar a saída fc-list : fileà seção de arquivos xorg.confusando uma ferramenta criada por alguém que ainda não encontrei ou algum script de shell sofisticado, etc., que os leitores aqui são tão bons em criar?

Observação: eu uso nvidia-xconfigpara gerar meu xorg.confarquivo, então está longe da abordagem modular recomendada hoje em dia. Posso misturar e combinar a abordagem conf.d com a configuração gerada, se necessário?

Responder1

Se estou entendendo a pergunta e você tem o vim instalado no sistema (isso vitambém pode funcionar, pois são apenas excomandos)
Executar o comando abaixo em um terminal:

  • leia no arquivo: xorg.conf- obviamente substitua pelo arquivo que você deseja modificar. Nota: este arquivo xorg.confseránãoser modificado, caso algo dê errado com o script.
  • faça alguma manipulação de texto
  • a saída dos comandos será colocada no arquivo:/tmp/temp_xorg.conf

Se após essas operações você estiver satisfeito com o estado, /tmp/temp_xorg.confpoderá copiá-lo para o local do seu arquivo de configuração xorg real e funcional.


execute os comandos

execute isso em um prompt do shell para produzir diretórios fontpaths que estão em um formato que pode ser inserido em um arquivo conf xorg (graças a @meuh por este comando).

fc-list : file | sed -E 's#(.*)/.*#\tFontPath "\1"#' | sort -u > /tmp/filepaths.txt

em seguida, execute este comando, que pegará a saída do comando acima e a inserirá nas seções "Arquivos"

$ vim -e xorg.conf << 'EOF' 
" move cursor to the line with the text: `Section "Files"`
/Section "Files"
" read in the output of `fc-list` at this point
r !fc-list
write /tmp/temp_xorg.conf
EOF

então se, por exemplo, xorg.conffosse assim:

Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Section "Files"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection


Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Após executar o comando acima /tmp/temp_xorg.confdeverá ficar assim:

Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Section "Files"
    FontPath "/home/ubuntu/.fonts"
    FontPath "/usr/share/fonts/opentype/noto"
    FontPath "/usr/share/fonts/opentype/stix"
    FontPath "/usr/share/fonts/opentype/stix-word"
    FontPath "/usr/share/fonts/truetype"
    FontPath "/usr/share/fonts/truetype/abyssinica"
    FontPath "/usr/share/fonts/truetype/ancient-scripts"
    FontPath "/usr/share/fonts/truetype/dejavu"
    FontPath "/usr/share/fonts/truetype/fonts-guru-extra"
    FontPath "/usr/share/fonts/truetype/freefont"
    FontPath "/usr/share/fonts/truetype/kacst"
    FontPath "/usr/share/fonts/truetype/kacst-one"
    FontPath "/usr/share/fonts/truetype/lao"
    FontPath "/usr/share/fonts/truetype/lato"
    FontPath "/usr/share/fonts/truetype/liberation"
    FontPath "/usr/share/fonts/truetype/lohit-punjabi"
    FontPath "/usr/share/fonts/truetype/nanum"
    FontPath "/usr/share/fonts/truetype/openoffice"
    FontPath "/usr/share/fonts/truetype/padauk"
    FontPath "/usr/share/fonts/truetype/sinhala"
    FontPath "/usr/share/fonts/truetype/takao-gothic"
    FontPath "/usr/share/fonts/truetype/tibetan-machine"
    FontPath "/usr/share/fonts/truetype/tlwg"
    FontPath "/usr/share/fonts/truetype/ttf-khmeros-core"
    FontPath "/usr/share/fonts/truetype/ubuntu-font-family"
    FontPath "/usr/share/fonts/type1/gsfonts"
    FontPath "/usr/share/fonts/X11/Type1"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection


Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Responder2

Para a parte de configuração "misturar e combinar" da pergunta - a resposta é "mais ou menos".

A xorg.confpágina man lista as fontes de configuração em ordem de precedência e afirma "Quando a mesma informação é fornecida de mais de uma maneira, o mecanismo de precedência mais alta é usado".

Por observação (já que "mesmas informações" e "mais de uma maneira" não estão claramente definidas na página de manual, na minha opinião), isso significa que você não pode substituir/atualizar uma seção xorg.conf(como Section "Files"para fontes) por um xorg.conf.darquivo, pois isso tem menor precedência. Embora os arquivos de precedência mais baixa sejam lidos e analisados, o conteúdo da seção é silenciosamente desconsiderado para aquelas seções que já existem com precedência mais alta.

O driver atual da Nvidia (396, somente no Linux)fazagora use um xorg.conf.dfragmento, mas apenas para o driver Linux DRM Xorg, ele ainda cria um quase monolítico xorg.confdurante a instalação.

Felizmente, nvidia-xconfigisso não altera esta seção; portanto, se ajudar, você pode comentá-la xorg.confe migrá-la para um ou mais xorg.conf.darquivos. Múltiplas seções duplicadas na mesma precedência, ou seja, todas dentro de um único xorg.conf.ddiretório,fazresultar em valores mesclados conforme esperado.

Uma maneira fácil de gerar as diretivas é:

fc-list -f 'Fontpath "%{file|dirname}"\n' : | sort -u

Isso usa a saída formatada ( -f) de fc-listpara criar as linhas de configuração necessárias, %{file}é o nome do arquivo de cada fonte, |dirnameé umfiltroque gera o nome do diretório (exatamente como o dirnamecomando shell) e, em seguida, sort -upara caminhos exclusivos. Você pode querer reordenar os caminhos se tiver muitas fontes; se tiver versões de bitmap, você pode fazer algo assim para reordenar:

fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=true | sort -u
fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=false | sort -u

Você pode colar essa saída conforme necessário - ou - como exemplo de todas as etapas (como root)

# extract Files section from xorg.conf to a separate conf
sed -n '/^Section..Files/,/^EndSection/p' \
  < /etc/X11/xorg.conf > /etc/x11/xorg.conf.d/10-section-files.conf
# comment out Files section in xorg.conf
sed -i.bak '/^Section..Files/,/^EndSection/ s/^/#/' /etc/X11/xorg.conf

# paths for scalable fonts
( echo 'Section "Files"'; 
  fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=true | sort -u;
  echo 'EndSection' ) > /etc/X11/xorg.conf.d/20-fontpath.conf

# paths for non-scalable fonts
( echo 'Section "Files"'; 
  fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=False | sort -u;
  echo 'EndSection' ) > /etc/X11/xorg.conf.d/30-fontpath-fixed.conf

Reordene e remova duplicatas, se necessário, e reinicie o X.

Para completar, você também pode modificar os caminhos das fontes rapidamente com xset, por exemplo

xset +fp /usr/local/share/fonts/TTF

Verifique os caminhos atuais com xset q. Você pode modificar isso trivialmente para adicionar tais comandos ao seu .xinitrcscript para que os caminhos das fontes persistam independentemente de quaisquer alterações subsequentes na configuração do X e evite reiniciar o X também.

informação relacionada