Como usar o Fixedsys no Terminal Gnome, ou onde quer que sejam necessárias fontes monoespaçadas

10

Eu acho que a fonte Fixedsys é uma das fontes monoespaçadas mais legíveis para programação. Ele possui anti-aliasing zero, com linhas verticais com 2 pixels de largura. Perto do ideal para arremessos de pontos atuais do monitor, aos meus olhos (literalmente). Aqui está uma amostra:

Amostra Fixedsys

Após anos de Windows em casa (por motivos familiares) e servidores Linux no trabalho acessados ​​pelo Cygwin no Windows (por motivos de política da empresa), com Fixedsys como o shell e a fonte IDE, finalmente decidi mudar para o Ubuntu em casa.

Eclipse e gedit não são problema, eles aceitam uma versão corrigida da fonte Fixedsys Excelsior TTF que você pode encontrar aqui no comentário # 16 (nome do arquivo: FSEX301-L2.ttf). Mas o Terminal Gnome aceita apenas fontes monoespaçadas.

Embora o Fixedsys Excelsior seja essencialmente monoespaçado, ele contém glifos maiores (principalmente para os idiomas do leste) e também algumas ligaduras. Como aparentemente TODOS os caracteres devem ter a mesma largura para que uma fonte seja reconhecida como monoespaçada, o Fixedsys Excelsior não pode ser selecionado em todos os contextos em que as fontes monoespaçadas são necessárias, incluindo o gnome-terminal.

Então, qual é a maneira mais fácil / limpa de usar um clone do Fixedsys em contextos que aceitam apenas fontes monoespaçadas?

Walter Tross
fonte
BTW, para usar o Fixedsys Excelsior no NetBeans, você deve adicionar -J-Dswing.aatext=falseao netbeans_default_options em /etc/netbeans.conf. Caso contrário NetBeans irá torná-lo "de cor" e embaçada - isso se aplica para o Windows também
Walter Tross
Atualize para o meu comentário anterior: O Netbeans 7.4 no Windows requer -J-Dawt.useSystemAAFontSettings=onque você se livre do anti-aliasing.
Walter Tross
No MacBook Pro eu tenho que trabalhar com a imagem de amostra não é nítida. A fonte Fixedsys parece ter pixels de borda cinza. AFAICT, isso se deve à chamada tela "retina", uma tela de alta resolução que faz com que as imagens no HTML sejam dimensionadas por um fator de dois (sim, eles preferem quebrar o HTML e ter imagens borradas ...). A mesma escala se aplica à própria fonte, estragando-a. Por outro lado, monitores de alta resolução aumentam bastante a legibilidade de todas as fontes, evitando a necessidade do Fixedsys.
Walter Tross

Respostas:

7

Esta é a solução que encontrei. Testei-o exaustivamente várias vezes e uso a fonte resultante em vários locais há mais de 2 anos, mas esteja avisado: algumas partes do procedimento podem estar entre subótimas e completamente erradas.

Antes de perguntar "por que você não disponibiliza a fonte resultante", a resposta é: "porque não tenho certeza se posso fazê-lo". Os direitos autorais das fontes são uma questão complexa.


Faça o download da fonte corrigida do Fixedsys Excelsior (arquivo FSEX301-L2.ttf, no comentário # 16)

Instale o FontForge (por exemplo, a partir do Ubuntu Software Center)

Clique com o botão direito do mouse no FSEX301-L2.ttfarquivo e abra-o com FontForge. Na janela Carregar fontes de bitmap exibida, clique em Não .

Clique em Arquivo → Executar script ... e copie e cole o seguinte na janela que aparece:

SelectAll()
foreach
   if (GlyphInfo("Width") != 80)
      DetachAndRemoveGlyphs()
   else
      b = GlyphInfo("BBox")
      if (b[0] < 0 || b[1] < -30 || b[2] > 80 || b[3] > 130)
         DetachAndRemoveGlyphs()
      endif
   endif
endloop
SelectNone()

Em seguida, selecione FF e clique em OK (levará um tempo, você terá que esperar até a janela Executar script desaparecer)

Clique em Elemento → Informações da fonte ... Nos nomes PS, altere o nome da fonte , o nome da família e o nome para seres humanos , por exemplo, anexando Mono(espaços são permitidos apenas na segunda e na terceira string).

Na mesma janela Informações da fonte , selecione OS / 2 .
No Misc. Na guia, altere a Família PFM para Monoespaço .
Na guia Métricas, defina o Deslocamento da descida do Win e o Deslocamento da descida do HHead como 0 (*) .
Na guia Panose , altere Proportion para Monospaced .

Na mesma janela Informações da fonte , selecione Pesquisas .
No gsub guia, e na GPOS guia, selecione cada linha, por sua vez e clique Excluir .

Na mesma janela Informações da fonte , clique em OK e em Alterar ID exclusivo? janela que aparece, clique em Alterar .

Se desejar, você pode ajustar um ou mais recursos questionáveis ​​do Fixedsys. Por exemplo, o caractere zero é deslocado um pixel para a direita. Para voltar ao centro, clique duas vezes nele e clique em Métricas → Definir LBearing ... , defina LBearing como 10e clique em OK . Você também pode alterar a forma dos caracteres, mas sempre mantenha os pontos de controle em múltiplos de 10 e a largura em 80.

Clique Elemento → Bitmap Strikes Disponível ... , então, na janela que aparece definir tamanhos de pixel para 16e clique OK .

Clique em Arquivo → Gerar fontes ... , escolha um diretório diferente e / ou um nome de arquivo diferente, se necessário, verifique se o formato de saída é TrueType e clique em Salvar . Na janela Em-Size não padrão que aparece, clique em Sim . Na janela Erros detectados que aparece ao lado, clique em Salvar (não se preocupe).

Saia do FontForge ( Arquivo → Sair ). Na janela Fonte alterada que aparece, clique em Não Salvar .


Mova o arquivo gerado para o .fontssubdiretório do diretório inicial (crie-o se ele não existir).

Abra o terminal do Gnome. Clique em Editar → Perfis ... Em um perfil (sugiro que você crie um novo) altere a fonte para Fixedsys Excelsior 3.01-L2 Mono(ou o que você chamou de versão mono do Fixedsys Excelsior), no tamanho 12(que é o único tamanho "verdadeiro" do Fixedsys) . Se desejar, você também pode desativar o texto em negrito. Sugiro texto em preto sobre fundo branco, mas isso é uma questão de gosto.

A variante em negrito dessa fonte é equivalente a repetir o caractere deslocado em um pixel para a direita (é diferente de FSEX301-L2.ttfonde parece suavizado). Não é muito legível - mas você realmente precisa de negrito? Eu não. O problema é apenas naqueles contextos em que negrito não pode ser desativado (nem mesmo, por exemplo, editando o realce da sintaxe), especialmente nos casos em que o espaçamento de caracteres também é incrementado em um pixel, quebrando os alinhamentos (esse não é o caso no gnome -terminal). Ainda não encontrei uma solução para esse último incômodo. Sugestões são bem vindas.


(*): não é necessário desde o lançamento do FontForge em 31/07/2012 (em 14.04 LTS - Trusty Tahr)

Walter Tross
fonte
Para todos os que salvaram e / ou aplicaram esta receita: observe que ela pode ter mudado um pouco nesse meio tempo, a fim de resolver alguns pequenos problemas, e que ainda pode mudar no futuro. Você pode dar uma olhada no histórico de edições.
Walter Tross
Para sua informação, também funciona bem no Windows. Também com o "Fixedsys Excelsior 2.0" (que, na minha opinião, é muito melhor para terminais, pois os caracteres são um pouco menos altos do que no FSEX3). Ótima fonte para PuTTY! (o FSEX inicial e qualquer fonte que é considerada não-monoespaçada faz PuTTY realmente lento quando as atualizações de tela muito frequentemente)
ThiefMaster
O PhpStorm 7.1 no 14.04 não reconhece a fonte que descrevi na minha resposta como fonte monoespaçada, não sei por que :-( Felizmente, se você desmarcar a opção "mostrar apenas fontes monoespaçadas", ainda poderá obtê-lo. o tamanho deve ser 15 ou 16 (eles têm a mesma aparência) em vez de 12. PhpStorm parece ser um pouco buggy para mim ...
Walter Tross
3

Ótima solução de Walter Tross, mas se você não quiser fazer todo o trabalho, aqui está o link para download:

FixedsysExcelsiorIIIb-L2_Mono.ttf

Borjovsky
fonte
1
Obrigado Rafael, o "porquê" está no segundo parágrafo da minha resposta
Walter Tross
Ops! Desculpe ... Falta de atenção ... Corrigido agora.
Borjovsky