Existe uma maneira fácil de adicionar fontes?

4

Depois de perder meu amado 5+ anos de instalação do Gentoo em uma falha de hardware, eu fui ao FreeBSD. Eu senti que este era o próximo passo lógico na minha exploração e uso de sistemas operacionais baseados em fontes. Ao ler toda a documentação associada ao FreeBSD , ao instalar o servidor XOrg, o 5.6 - Usando fontes na seção XOrg me chamou a 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 eu entendo porque meu DE parecia uma porcaria. Sendo um datilógrafo com deficiência, torna-se mais difícil editar o Files Section manualmente, e eu preferiria adicionar fontes manualmente como último recurso. Como tal, existe uma maneira de adicionar a saída de fc-list : file à seção Arquivos de xorg.conf usando uma ferramenta criada por alguém que eu ainda não encontrei, ou algum script de shell sofisticado, etc, que os leitores aqui são tão bons crafting?

Nota : eu uso nvidia-xconfig para gerar meu arquivo xorg.conf , 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?

    
por eyoung100 12.04.2017 / 08:31

2 respostas

0

Se eu estou entendendo a pergunta, e você tem o vim instalado no sistema (isso pode funcionar com vi também, pois são apenas ex de comandos)
Executando o comando abaixo em um terminal, irá:

  • leia no arquivo: xorg.conf - obviamente substitua isso pelo arquivo que você deseja modificar. Nota: este arquivo xorg.conf não será 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 estas operações, você estiver satisfeito com o estado de /tmp/temp_xorg.conf , você pode copiá-lo para o local do seu verdadeiro arquivo de configuração do xorg.

executa os comandos

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

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

em seguida, execute este comando, que pegará a saída do comando acima e o 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, por exemplo, xorg.conf ficou 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

Depois de executar o comando acima, /tmp/temp_xorg.conf deve 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
    
por 12.04.2017 / 11:10
0

Para a configuração "misturar e combinar" parte da pergunta - a resposta é "meio que".

A página xorg.conf man lista as origens de configuração na ordem de precedência e afirma "Quando as mesmas informações são fornecidas de mais de uma maneira, o mecanismo de precedência mais alto é usado".

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

O atual driver da Nvidia (396, somente no Linux) faz agora usa um fragmento xorg.conf.d , mas somente para o driver Linux DRM Xorg, ele ainda cria um xorg.conf quase monolítico durante instalação.

Felizmente, nvidia-xconfig não altera esta seção, por isso, se isso ajudar, você poderá comentá-la em xorg.conf e migrá-la para um ou mais arquivos xorg.conf.d . Múltiplas seções duplicadas na mesma precedência, ou seja, tudo dentro de um único diretório xorg.conf.d , faz resultar em valores mesclados como 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-list para criar as linhas de configuração necessárias, %{file} é o nome do arquivo de cada fonte, |dirname é um filtro que gera a saída nome do diretório (exatamente como o comando dirname shell), então sort -u para caminhos exclusivos. Você pode querer reordenar os caminhos se você tiver muitas fontes, se você tem 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 um 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 da fonte rapidamente com xset , por exemplo

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

Verifique os caminhos atuais com xset q . Você poderia modificá-lo para adicionar esses comandos ao seu script .xinitrc , para que os caminhos da fonte persistam independentemente de quaisquer alterações subseqüentes na configuração do X, e salve a reinicialização do X também.

    
por 02.10.2018 / 20:08