Estou procurando uma solução que funcione para renderizar caracteres powerline no OSX no iTerm2 e no Chrome. Há muita documentação em torno da qual tentei usar vários métodos, nenhum parece funcionar corretamente até agora (embora as fontes pré-corrigidas com o livro de fontes funcionem parcialmente ). Detalhes incluídos abaixo.
- Existe um método de trabalho para fazer com que os glifos da linha de energia sejam renderizados corretamente no iTerm2 no OSX 10.9.3?
- Os glifos de linha de força devem ser renderizados corretamente nas páginas da web? Alguma idéia de por que não são e como posso corrigi-lo?
Como a renderização desses caracteres funciona (no nível do sistema / aplicativo)? Difere de aplicação para aplicação? 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 utilizá-las? Existe alguma maneira de fornecer ligações para esses caracteres unicode no nível do sistema para que eles sejam renderizados usando essa fonte, independentemente da fonte que está sendo usada?
Caracteres da área privada Unicode
Se eu entendo como as fontes corrigidas compatíveis com powerline funcionam, elas vinculam gráficos escaláveis a valores específicos na área de uso privado 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, ele não funciona para mim (OSX 10.9.3, iTerm2, zsh), mesmo com uma fonte com correção de linha de força instalada e o iTerm2 configurado para usar uma dessas fontes.
Eu tentei vários métodos para instalar as fontes corrigidas:
FontBook e fontes pré-corrigidas
Eu baixei as fontes do 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 de linha de energia que testei), alguns dos caracteres são renderizados, mas outros não:
No macvim (terminal) com o vim-airlines instalado, alguns dos caracteres são renderizados, mas alguns são renderizados incorretamente:
Fontconfig
Desinstalei todas as fontes com correção de linha de força, instalei fontconfig com homebrew, instalei a fonte de linha de força 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 estava instalado, mas não apareceu no FontBook e não foi possível selecioná-lo no iTerm2.
Depois de executar isso, removi as fontes, reran fc-cache e desinstalei o fontconfig.
Atualmente, estou usando as fontes pré-corrigidas instaladas no fontbook, que funcionam parcialmente, mas espero que alguém possa me ajudar a entender um pouco melhor o problema, para que eu possa encontrar uma solução que funcione.
Atualizar
Esse método parece fazer com que tudo funcione no iTerm2, embora ainda não tenha certeza sobre os problemas de renderização do sistema / cromo.
FontForge
Instale o fontforge com ligações python:
brew install fontforge --with-python
Instale o 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
Baixe, corrija e instale a 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
Use a different font for non-ASCII text.
fez toda a diferença para mim.