Powerline Patched Fonts no OSX 10.9.3 - iTerm2 e Chrome

19

Estou procurando uma solução funcional para renderizar personagens powerline no OSX no iTerm2 e no Chrome. Há muita documentação ao redor. Tentei usar vários métodos, nenhum parece funcionar corretamente até agora (embora as fontes pré-instaladas com fontbook parcialmente funcionem). Detalhes incluídos abaixo.

  1. Existe um método de trabalho para obter os glifos da linha de energia para renderizar corretamente no iTerm2 no OSX 10.9.3?
  2. Os glifos da linha de alta tensão devem ser renderizados corretamente nas páginas da web? Alguma idéia de por que eles não são e como eu posso consertar isso?

Como a renderização desses caracteres funciona (em um nível de sistema / aplicativo)? Diferencia-se de aplicativo para aplicativo? No chrome, se a fonte atual não contiver ligações para os glifos, o chrome tentará encontrar as ligações em outra fonte presente no sistema e usá-las? Existe alguma maneira de fornecer ligações para esses caracteres unicode em um nível de sistema para que eles sejam renderizados usando essa fonte, independentemente da fonte que está sendo usada?

Caracteres de área privada do Unicode

Se eu entendi como funcionam as fontes com patch compatíveis com o powerline, elas vinculam gráficos escalonáveis a valores específicos na área de uso particular do unicode:

U+E0A0     Version control branch
U+E0A1     LN (line) symbol
U+E0A2     Closed padlock
U+E0B0     Rightwards black arrowhead
U+E0B1     Rightwards arrowhead
U+E0B2     Leftwards black arrowhead
U+E0B3     Leftwards arrowhead

Para testar os glifos em um terminal, li que isso deve funcionar:

echo -e "\ue0a0\ue0a1\ue0a2\ue0b0\ue0b1\ue0b2\ue0b3"

No entanto, isso não funciona para mim (OSX 10.9.3, iTerm2, zsh), mesmo com uma fonte com patch powerline instalada e o iTerm2 configurado para usar uma dessas fontes.

Eu tentei vários métodos para instalar as fontes corrigidas:

Catálogo de Fontes & Fontes pré-pagas

Eu baixei as fontes de Localtog / powerline-fonts e as instalei usando o FontBook. Nas mesmas páginas, alguns dos glifos são renderizados, mas outros não. Em outras páginas, nenhum dos glifos processa:

No iTerm2 (isso acontece com todas as fontes powerline que testei), alguns dos caracteres são renderizados, mas outros não:

Nomacvim(terminal)comvim-airlineinstalado,algunsdoscaracteressãorenderizados,masalgunssãorenderizadosincorretamente:

Fontconfig

Eu desinstalei todas as fontes com patch powerline, instalei o fontconfig com o homebrew, instalei a fonte powerline e reconstruí o cache da fonte:

wget -P ~/.fonts/ https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf
wget -P ~/.config/fontconfig/conf.d/ https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
fc-cache -vf ~/.fonts

A fonte foi detectada e o fontconfig disse que ela foi instalada, no entanto, ela não apareceu no FontBook e não foi possível selecioná-la no iTerm2.

Depois de executar isso, eu removi as fontes, reran fc-cache e desinstalei o fontconfig.

No momento, estou usando as fontes prepatched instaladas no fontbook, o que funciona parcialmente, mas espero que alguém possa me ajudar a entender o problema um pouco melhor para que eu possa encontrar uma solução de trabalho.

Atualizar

Este método parece fazer com que tudo funcione no iTerm2, embora eu ainda não tenha certeza dos problemas de renderização do sistema / chrome.

FontForge

Instale o fontforge com ligações de python:

brew install fontforge --with-python

Instalar powerline-fontpatcher:

mkdir -p ~/.local/src
git clone https://github.com/Lokaltog/powerline-fontpatcher.git ~/.local/src/powerline-fontpatcher
cd ~/.local/src/powerline-fontpatcher && python setup.py install && cd
export powerline_symbols=~/.local/src/powerline-fontpatcher/fonts/powerline-symbols.sfd

Download, patch & instalar fonte:

wget http://sourceforge.net/projects/sourcecodepro.adobe/files/SourceCodePro_FontsOnly-1.017.zip
unzip SourceCodePro_FontsOnly-1.017.zip

find SourceCodePro_FontsOnly-1.017/TTF -name \*.ttf -exec powerline-fontpatcher --source-font=$powerline_symbols --no-rename {} \;
mv *.ttf /Library/Fonts
    
por nfarrar 01.06.2014 / 18:10

2 respostas

11

Basta instalar a fonte Input Mono , com suporte completo para powerline.

Para que o seguinte funcione, a fonte Input Mono deve ser a versão 1.1. Você pode verificar a versão da fonte acessando Font Book → View → Show Font Info e verificar o número da versão.

Com o Terminal.app funciona imediatamente. Basta selecionar a fonte e você está pronto.

Com o iTerm2, você precisa modificar algumas coisas:

  • Vá para Preferências → Perfis → Texto e desmarque a opção "Usar uma fonte diferente para texto não ASCII".
  • Logo acima, clique em Change Font e selecione Entrada Mono. Além disso, você precisa alterar Character Spacing → Vertical para 110%. Parece que o Terminal e o iTerm2 processam o espaçamento de caracteres de uma maneira diferente.
por 05.12.2014 / 15:46
1

Provavelmente você não atualizou bash . O OS X é fornecido com bash < 4 , portanto você não pode usar printf ou echo -e de códigos unicode.

Etapas para atualizar bash com homebrew :

  1. brew install bash
  2. Encontre o prefixo do bash instalado pelo homebrew, o meu foi /usr/local/Cellar/bash/4.3.30/ , então meu binário bash foi /usr/local/Cellar/bash/4.3.30/bin/bash .
  3. sudo (vim|nano|emacs|etc) /etc/shells
  4. Obtenha o caminho bash e adicione-o ao final da lista (ou substitua /usr/bin , se você for realmente corajoso).
  5. chsh
  6. Altere a linha Shell: para corresponder ao seu caminho bash .
  7. Reinicie seu termo.

E você deve ser corrigido.

    
por 23.11.2014 / 16:44