systemdjournalctl: consultar o diário do systemdudevO X Window System (X11) é o padrão de fato para interfaces gráficas do usuário no Unix. O X é baseado em rede, permitindo que aplicativos iniciados em um host sejam exibidos em outro host conectado em qualquer tipo de rede (LAN ou Internet). Este capítulo apresenta informações básicas sobre a configuração do X e explica como usar as fontes no SUSE® Linux Enterprise Desktop.
Na maioria dos casos, o X Window System não precisa de nenhuma configuração. O hardware é detectado dinamicamente durante a inicialização do X. Portanto, o uso do xorg.conf foi descontinuado. Se você ainda tiver que especificar opções personalizadas para mudar o comportamento do X, poderá modificar os arquivos de configuração em /etc/X11/xorg.conf.d/.
É possível categorizar as fontes no Linux em duas partes:
Apresenta uma descrição matemática; por exemplo, instruções sobre como desenhar a forma de um glifo. Dessa forma, cada glifo pode ser dimensionado a tamanhos arbitrários sem perder a qualidade. Antes de usar a fonte (ou glifo), as descrições matemáticas devem ser transformadas em raster (grade). Este processo é denominado rasterização de fonte. As dicas de fonte (embutidas na fonte) melhoram e otimizam o resultado da renderização de determinado tamanho. A rasterização e as dicas são feitas com a biblioteca FreeType.
Os formatos comuns no Linux são PostScript Type 1 e Type 2, TrueType e OpenType.
Compostas por uma matriz de pixels designados para um tamanho de fonte específico. As fontes de bitmap são extremamente rápidas e simples de se renderizar. Porém, em comparação com as fontes vetoriais, as fontes de bitmap não podem ser dimensionadas sem perda de qualidade. Sendo assim, essas fontes são normalmente distribuídas em tamanhos diferentes. Atualmente, as fontes de bitmap ainda são usadas no console do Linux e, algumas vezes, em terminais.
No Linux, o Portable Compiled Format (PCF) ou Glyph Bitmap Distribution Format (BDF) são os formatos mais comuns.
A aparência dessas fontes pode ser influenciada por dois aspectos principais:
a escolha de uma família de fontes adequada e
a renderização da fonte com um algoritmo que atinja resultados agradáveis aos olhos do receptor.
O último ponto só será relevante no caso de fontes vetoriais. Embora os dois pontos acima sejam altamente subjetivos, alguns padrões devem ser criados.
Os sistemas de renderização de fonte do Linux são compostos por várias bibliotecas com relações diferentes. A biblioteca básica de renderização de fonte é a FreeType (http://www.freetype.org/), que converte glifos de fonte de formatos suportados em glifos de bitmap otimizados. O processo de renderização é controlado por um algoritmo e seus parâmetros (que podem estar sujeitos a questões de patente).
Cada programa ou biblioteca que usa FreeType deve consultar a biblioteca Fontconfig (http://www.fontconfig.org/). Essa biblioteca combina a configuração da fonte dos usuários e do sistema. Quando um usuário altera a configuração de Fontconfig, essa alteração resulta em aplicativos compatíveis com Fontconfig.
A forma OpenType mais sofisticada, necessária para scripts como Arabic, Han ou Phags-Pa e outro tipo de processamento de texto de nível mais elevado, fica sob a responsabilidade de Harfbuzz (http://www.harfbuzz.org/) ou Pango (http://www.pango.org/), para citar alguns exemplos.
Para ter uma visão geral sobre as fontes que estão instaladas no sistema, execute os comandos rpm ou fc-list. Os dois apresentam uma boa resposta, mas podem retornar uma lista diferente, dependendo do sistema e da configuração do usuário:
rpm
Chame rpm para ver quais pacotes de software com fontes estão instalados no sistema:
rpm -qa '*fonts*'
Cada pacote de fontes deve satisfazer essa expressão. No entanto, o comando pode retornar alguns falsos positivos, como fonts-config (que não é uma fonte e nem inclui fontes).
fc-list
Chame fc-list para ter uma visão geral sobre as famílias de fontes que podem ser acessadas e saber se elas estão instaladas no sistema ou no diretório pessoal:
fc-list ':' family
fc-list
O comando fc-list é um agrupador da biblioteca Fontconfig. É possível consultar uma variedade de informações interessantes do Fontconfig ou, para ser mais preciso, de seu cache. Consulte man 1 fc-list para obter mais detalhes.
Para saber a aparência de uma família de fontes instalada, use o comando ftview (pacote ft2demos) ou visite http://fontinfo.opensuse.org/. Por exemplo, para exibir a fonte FreeMono no ponto 14, use ftview da seguinte forma:
ftview 14 /usr/share/fonts/truetype/FreeMono.ttf
Se precisar de mais informações, acesse http://fontinfo.opensuse.org/ para saber quais estilos (regular, negrito, itálico, etc.) e linguagens são suportados.
Para consultar a fonte que será usada quando determinado padrão for especificado, use o comando fc-match.
Por exemplo, se o padrão já tiver uma fonte instalada, o fc-match retornará o nome do arquivo, a família de fontes e o estilo:
tux > fc-match 'Liberation Serif'
LiberationSerif-Regular.ttf: "Liberation Serif" "Regular"Se a fonte desejada não existir no sistema, as regras de correspondência da Fontconfig serão aplicadas para tentar encontrar as fontes disponíveis mais parecidas. Ou seja, a sua solicitação é substituída:
tux > fc-match 'Foo Family'
DejaVuSans.ttf: "DejaVu Sans" "Book"A Fontconfig suporta áliases: um nome é substituído por outro nome de família. Um exemplo comum é com nomes genéricos, como “sans-serif”, “serif” e “monospace”. Esses nomes de álias podem ser substituídos por nomes reais de família ou até mesmo por uma lista preferencial de nomes de família:
tux > for font in serif sans mono; do fc-match "$font" ; done
DejaVuSerif.ttf: "DejaVu Serif" "Book"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"O resultado pode variar no sistema de acordo com as fontes que estão instaladas.
A Fontconfig sempre retorna uma família real (se pelo menos uma estiver instalada) de acordo com a solicitação especificada, a mais parecida possível. A “similaridade” depende das métricas internas da Fontconfig e das configurações de usuário ou administrador da Fontconfig.
Para instalar uma nova fonte, os seguintes métodos principais estão disponíveis:
Instalar manualmente os arquivos de fonte, como *.ttf ou *.otf, em um diretório de fontes conhecido. Se precisar ser um diretório de todo o sistema, use o padrão /usr/share/fonts. Para instalação em seu diretório pessoal, use ~/.config/fonts.
Para sair dos padrões, a Fontconfig permite escolher um diretório diferente. Informe a Fontconfig usando o elemento <dir>. Consulte a Seção 18.1.5.2, “Conhecendo o XML da Fontconfig” para obter os detalhes.
Instalar as fontes usando o zypper. Muitas fontes já estão disponíveis como um pacote, seja em sua distribuição do SUSE ou no repositório M17N:fonts (http://download.opensuse.org/repositories/M17N:/fonts/). Adicione o repositório à sua lista usando o seguinte comando. Por exemplo, para adicionar um repositório para o SLE 12:
sudo zypper ar
http://download.opensuse.org/repositories/M17N:/fonts/SLE_12/M17N:fonts.repoPara procurar o NOME_DA_FAMÍLIA_DE_FONTES use este comando:
sudo zypper se 'FONT_FAMILY_NAME*fonts'
Dependendo do meio de renderização e do tamanho da fonte, o resultado pode não ser satisfatório. Por exemplo, um monitor médio atual possui resolução de 100 dpi que torna os pixels grandes demais e os glifos pesados.
Há diversos algoritmos disponíveis para lidar com resoluções baixas, como suavização (atenuação da escala de cinzas), dicas (ajuste à grade) ou renderização de subpixel (triplicação da resolução em uma direção). Esses algoritmos também podem ser diferentes entre um formato de fonte e outro.
A renderização de subpixel não é usada em distribuições do SUSE. Embora a FreeType2 suporte esse algoritmo, ele envolve várias patentes que vencem no fim do ano de 2019. Portanto, a configuração das opções de renderização de subpixel na Fontconfig não terá nenhum efeito, exceto se o sistema tiver a biblioteca FreeType2 com a renderização de subpixel compilada.
Pela Fontconfig, é possível selecionar um algoritmo de renderização para cada fonte separadamente ou para um conjunto de fontes.
sysconfig #
O SUSE Linux Enterprise Desktop vem com uma camada do sysconfig acima do Fontconfig. Este é um ótimo ponto de partida para testar a configuração da fonte. Para mudar as configurações padrão, edite o arquivo de configuração /etc/sysconfig/fonts-config. (ou use o módulo sysconfig do YaST). Após editar o arquivo, execute fonts-config:
sudo /usr/sbin/fonts-config
Reinicie o aplicativo para tornar o efeito visível. Lembre-se das seguintes questões:
Alguns aplicativos precisam ser reiniciados. Por exemplo, o Firefox sempre lê a configuração de Fontconfig de tempos em tempos. As guias recém-criadas ou recarregadas acessam as novas configurações de fontes posteriormente.
O script fonts-config é chamado automaticamente após cada instalação ou remoção de pacote (do contrário, trata-se de um bug do pacote de software de fontes).
Cada variável sysconfig pode ser temporariamente anulada e substituída pela opção de linha de comando fonts-config. Consulte fonts-config --help para obter os detalhes.
Há diversas variáveis sysconfig que podem ser alteradas. Consulte man 1 fonts-config ou a página de ajuda do módulo sysconfig do YaST. As seguintes variáveis são alguns exemplos:
Considere FORCE_HINTSTYLE,
FORCE_AUTOHINT, FORCE_BW,
FORCE_BW_MONOSPACE,
USE_EMBEDDED_BITMAPS e
EMBEDDED_BITMAP_LANGAGES
Uso PREFER_SANS_FAMILIES,
PREFER_SERIF_FAMILIES,
PREFER_MONO_FAMILIES e
SEARCH_METRIC_COMPATIBLE
A lista a seguir mostra alguns exemplos de configuração, começando das fontes “mais legíveis” (mais contraste) até as fontes “mais bonitas” (mais suavizadas).
Prefira as fontes de bitmap usando as variáveis PREFER_*_FAMILIES
. Siga o exemplo na seção de Ajuda dessas variáveis. Observe que essas fontes são renderizadas em preto e branco, e não suavizadas, e que as fontes de bitmap estão disponíveis em vários tamanhos. Considere usar
SEARCH_METRIC_COMPATIBLE="no"
para desabilitar as substituições de nome de família orientadas por compatibilidade de métrica.
As fontes escaláveis renderizadas sem suavização podem produzir resultados parecidos com as fontes de bitmap, enquanto mantêm a escalabilidade da fonte. Use fontes com dicas bem elaboradas, como as famílias Liberation. Não há muitas opções de fontes com dicas bem elaboradas. Defina a seguinte variável para forçar este método:
FORCE_BW="yes"
Somente renderize fontes monoespaçadas sem suavização, do contrário, use as configurações padrão:
FORCE_BW_MONOSPACE="yes"
Todas as fontes são renderizadas com suavização. As fontes com dicas bem elaboradas serão renderizadas com o BCI (byte code interpreter — intérprete de código de byte), e o restante com o autohinter (hintstyle=hintslight). Deixe todas as variáveis sysconfig relevantes com a configuração padrão.
Use as fontes no formato CFF. Elas também podem ser consideradas mais legíveis do que as fontes TrueType padrão, por causa das atuais melhorias na FreeType2. Faça um teste com elas seguindo o exemplo de PREFER_*_FAMILIES. É possível torná-las mais escuras e colocá-las em negrito com:
SEARCH_METRIC_COMPATIBLE="no"
já que são renderizadas por hintstyle=hintslight, por padrão. Considere usar também:
SEARCH_METRIC_COMPATIBLE="no"
Mesmo para uma fonte com dicas bem elaboradas, use o autohinter da FreeType2. Ele pode gerar um resultado mais espesso com contraste menor e, às vezes, um pouco mais difuso. Defina a seguinte variável para ativá-lo:
FORCE_AUTOHINTER="yes"
Use FORCE_HINTSTYLE para controlar o nível de dicas.
O formato de configuração da Fontconfig é o eXtensible Markup Language (XML). Estes exemplos não são uma referência completa, e sim uma visão geral. Você encontra detalhes e outras inspirações no man 5 fonts-conf ou em /etc/fonts/conf.d/.
O arquivo de configuração central do Fontconfig é /etc/fonts/fonts.conf, que, além de outras coisas, inclui todo o diretório /etc/fonts/conf.d/. Para personalizar a Fontconfig, há dois lugares para você fazer as mudanças:
Mudanças de todo o sistema.
Edite o arquivo /etc/fonts/local.conf (por padrão, ele inclui um elemento fontconfig vazio).
Mudanças específicas do usuário.
Edite o arquivo ~/.config/fontconfig/fonts.conf. Coloque os arquivos de configuração da Fontconfig no diretório ~/.config/fontconfig/conf.d/.
As mudanças específicas do usuário sobregravam qualquer configuração de todo o sistema.
O arquivo ~/.fonts.conf está marcado como descontinuado e não deve mais ser usado. Use agora o ~/.config/fontconfig/fonts.conf.
Cada arquivo de configuração precisa ter um elemento fontconfig. Dessa forma, o arquivo mínimo terá a seguinte aparência:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- Insert your changes here --> </fontconfig>
Se os diretórios padrão não forem suficientes, insira o elemento dir com o respectivo diretório:
<dir>/usr/share/fonts2</dir>
A Fontconfig procura as fontes repetidamente.
É possível escolher os algoritmos de renderização de fonte com o seguinte trecho da Fontconfig (consulte o Exemplo 18.1, “Especificando algoritmos de renderização”):
<match target="font"> <test name="family"> <string>FAMILY_NAME</string> </test> <edit name="antialias" mode="assign"> <bool>true</bool> </edit> <edit name="hinting" mode="assign"> <bool>true</bool> </edit> <edit name="autohint" mode="assign"> <bool>false</bool> </edit> <edit name="hintstyle" mode="assign"> <const>hintfull</const> </edit> </match>
É possível testar várias propriedades de fontes. Por exemplo, o elemento <test> pode testar a família de fontes (conforme mostrado no exemplo), o intervalo de tamanhos, o espaçamento, o formato da fonte, etc. Quando <test> é completamente abandonado, todos os elementos <edit> são aplicados a cada fonte (mudança global).
<alias> <family>Alegreya SC</family> <default> <family>serif</family> </default> </alias>
<alias> <family>serif</family> <prefer> <family>Droid Serif</family> </prefer> </alias>
<alias> <family>serif</family> <accept> <family>STIXGeneral</family> </accept> </alias>
As regras do Exemplo 18.2, “Substituições de álias e nome de família” criam uma PFL (prioritized family list — lista prioritária de famílias). Dependendo do elemento, são executadas ações diferentes:
<default> da Regra 1
Esta regra adiciona um nome da família serif ao fim da PFL.
<prefer> da Regra 2
Esta regra adiciona “Droid Serif” logo antes da primeira ocorrência de serif na PFL, sempre que Alegreya SC estiver presente na PFL.
<accept> da Regra 3
Esta regra adiciona o nome da família “STIXGeneral” logo depois da primeira ocorrência do nome da família serif na PFL.
Juntando tudo isso, quando os trechos ocorrem na ordem Regra 1, Regra 2 e Regra 3 e o usuário solicita “Alegreya SC”, a PFL é criada conforme mostrado na Tabela 18.1, “Gerando a PFL com base nas regras de Fontconfig”.
Nas métricas da Fontconfig, o nome da família tem maior prioridade sobre os outros padrões, como estilo, tamanho, etc. A Fontconfig verifica qual família está instalada no sistema. Se “Alegreya SC” estiver instalada, a Fontconfig a retornará. Do contrário, ela solicitará “Droid Serif”, etc.
Tenha cuidado. Quando a ordem dos trechos da Fontconfig é modificada, a Fontconfig poderá retornar resultados diferentes, conforme mostrado na Tabela 18.2, “Resultados da geração da PFL com base nas regras da Fontconfig com a ordem modificada”.
Pense no álias <default> como uma classificação ou inclusão deste grupo (se não estiver instalado). Conforme mostrado no exemplo, <default> sempre deve preceder os áliases <prefer> e <accept> deste grupo.
A classificação <default> não se limita aos áliases genéricos serif, sans-serif e monospace. Consulte /usr/share/fontconfig/conf.avail/30-metric-aliases.conf para ver um exemplo complexo.
O seguinte trecho da Fontconfig no Exemplo 18.3, “Substituições de álias e nome de família” cria um grupo serif. Cada família desse grupo poderá substituir outras famílias, caso ainda não exista uma fonte instalada.
<alias> <family>Alegreya SC</family> <default> <family>serif</family> </default> </alias> <alias> <family>Droid Serif</family> <default> <family>serif</family> </default> </alias> <alias> <family>STIXGeneral</family> <default> <family>serif</family> </default> </alias> <alias> <family>serif</family> <accept> <family>Droid Serif</family> <family>STIXGeneral</family> <family>Alegreya SC</family> </accept> </alias>
A prioridade é aplicada seguindo a ordem do álias <accept>. Da mesma forma, é possível usar os áliases <prefer> mais fortes.
O Exemplo 18.2, “Substituições de álias e nome de família” é expandido pelo Exemplo 18.4, “Substituições de álias e nome de família”.
<alias> <family>serif</family> <accept> <family>Liberation Serif</family> </accept> </alias>
<alias> <family>serif</family> <prefer> <family>DejaVu Serif</family> </prefer> </alias>
A configuração expandida do Exemplo 18.4, “Substituições de álias e nome de família” leva à seguinte evolução da PFL:
|
Ordem |
PFL atual |
|---|---|
|
Solicitação |
|
|
| |
|
| |
|
| |
|
| |
|
|
Caso haja várias declarações <accept> para o mesmo nome genérico, a declaração que for analisada por último “vencerá”. Se possível, não use <accept> após o usuário (/etc/fonts/conf.d/*-user.conf) ao criar uma configuração de todo o sistema.
Caso haja várias declarações <prefer> para o mesmo nome genérico, a declaração que for analisada por último “vencerá”. Se possível, não use <prefer> antes do usuário na configuração de todo o sistema.
Cada declaração <prefer> sobregrava as declarações <accept> para o mesmo nome genérico. Se o administrador quiser dar ao usuário liberdade total para utilizar <accept>, e não apenas <prefer>, ele não deverá usar <prefer> na configuração de todo o sistema. Por outro lado, os usuários utilizam mais o <prefer>, portanto, isso não pode ser restritivo, já que constatamos também o uso de <prefer> nas configurações de todo o sistema.
Instale os pacotes xorg-docs para obter informações mais detalhadas sobre o X11. O man 5 xorg.conf apresenta mais informações sobre o formato da configuração manual (se necessário). Mais informações sobre o desenvolvimento do X11 podem ser encontradas na home page do projeto, em http://www.x.org.
Os drivers estão nos pacotes xf86-video-*, por exemplo xf86-video-nv. Muitos dos drivers incluídos nesses pacotes estão descritos em detalhes na página de manual relacionada. Por exemplo, se você usar o driver nv, encontre mais informações sobre ele em man 4 nv.
Informações sobre drivers de terceiros devem estar disponíveis em /usr/share/doc/packages/<nome_do_pacote>. Por exemplo, a documentação de x11-video-nvidiaG03 está disponível em /usr/share/doc/packages/x11-video-nvidiaG03 após a instalação do pacote.