Font con patch Powerline su OSX 10.9.3 - iTerm2 e Chrome


18

Sto cercando una soluzione funzionante per il rendering di personaggi powerline su OSX in iTerm2 e Chrome. C'è molta documentazione in giro che ho tentato di utilizzare diversi metodi, nessuno sembra funzionare correttamente finora (anche se i caratteri precompilati con fontbook funzionano parzialmente ). Dettagli inclusi di seguito.

  1. Esiste un metodo di lavoro per ottenere il rendering corretto dei glifi powerline in iTerm2 su OSX 10.9.3?
  2. I glifi powerline devono essere visualizzati correttamente nelle pagine Web? Qualche idea sul perché non lo siano e come posso ripararlo?

Come funziona il rendering di questi personaggi (a livello di sistema / applicazione)? Differisce da un'applicazione all'altra? In Chrome, se il carattere corrente non contiene collegamenti per i glifi, Chrome tenterà di trovare i collegamenti in un altro carattere presente sul sistema e utilizzarli? Esiste un modo per fornire i collegamenti per questi caratteri unicode a livello di sistema in modo che vengano visualizzati utilizzando quel tipo di carattere, indipendentemente dal tipo di carattere utilizzato?

Personaggi Unicode area privata

Se capisco come funzionano i caratteri patchati compatibili con powerline, associano la grafica scalabile a valori specifici nell'area di utilizzo privato 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

Per testare i glifi in un terminale, ho letto che dovrebbe funzionare:

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

Tuttavia non funziona per me (OSX 10.9.3, iTerm2, zsh) anche con un font con patch powerline installato e iTerm2 configurato per utilizzare uno di quei font.

Ho provato diversi metodi per installare i caratteri corretti:

FontBook e font preconfezionati

Ho scaricato i caratteri da Localtog / powerline-fonts e li ho installati usando FontBook. Sulle stesse pagine, alcuni dei glifi vengono visualizzati, ma altri no. Su altre pagine, nessuno dei glifi rende:

Tema di Agnoster
(fonte: staticflickr.com )

Documentazione Powerline
(fonte: staticflickr.com )

In iTerm2 (questo accade con tutti i font powerline che ho testato), alcuni dei personaggi vengono renderizzati, ma altri no:

iTerm2 e zsh
(fonte: staticflickr.com )

In macvim (terminale) con vim-compagnia aerea installata, alcuni dei personaggi vengono visualizzati, ma alcuni vengono visualizzati in modo errato:

vim-aerea
(fonte: staticflickr.com )

fontconfig

Ho disinstallato tutti i font con patch powerline, installato fontconfig con homebrew, installato il font powerline e ricostruito la cache dei font:

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

Il font è stato rilevato e fontconfig ha affermato che è stato installato, tuttavia non è stato visualizzato in FontBook e non sono stato in grado di selezionarlo in iTerm2.

Dopo averlo eseguito, ho rimosso i caratteri, rieseguito fc-cache e disinstallato fontconfig.

Attualmente sto usando i caratteri preimpostati installati nel libro dei font, che funzionano parzialmente, ma spero che qualcuno possa aiutarmi a capire un po 'meglio il problema in modo da trovare una soluzione funzionante.

Aggiornare

Questo metodo sembra far funzionare tutto in iTerm2, anche se non sono ancora sicuro dei problemi di rendering di Chrome / System.

FontForge

Installa fontforge con i collegamenti python:

brew install fontforge --with-python

Installa 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

Scarica, patch e installa font:

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

Risposte:


12

Basta installare il font Input Mono , viene fornito con il supporto completo per powerline.

Affinché le seguenti funzioni, il carattere Input Mono deve essere la versione 1.1. Puoi controllare la versione del carattere andando su Font Book → View → Show Font Infoe guardare il numero di versione.

Con Terminal.app funziona subito. Basta selezionare il carattere e sei pronto.

Con iTerm2, devi modificare un paio di cose:

  • Vai su Preferenze → Profili → Testo e deseleziona `Usa un carattere diverso per il testo non ASCII.
  • Appena sopra, fai clic su Change Fonte seleziona Input Mono. Inoltre, devi passare Character Spacing → Verticalal 110%. Sembra che Terminal e iTerm2 rendano la spaziatura dei caratteri in modo diverso.

Deselezionare ha Use a different font for non-ASCII text.fatto la differenza per me.
camomilla

2

È probabile che tu non abbia aggiornato bash. OS X viene fornito con bash < 4, quindi non è possibile printfo echo -eunicode i codici.

Passaggi per l'aggiornamento bashcon homebrew:

  1. brew install bash
  2. Trova il prefisso bashdell'installato da homebrew, il mio era /usr/local/Cellar/bash/4.3.30/, quindi il mio binario bash lo era /usr/local/Cellar/bash/4.3.30/bin/bash.
  3. sudo (vim|nano|emacs|etc) /etc/shells
  4. Ottieni il detto percorso bash e aggiungilo alla fine dell'elenco (o sostituiscilo /usr/bin, se sei davvero coraggioso).
  5. chsh
  6. Cambia la Shell:linea in modo che corrisponda al tuo bashpercorso.
  7. Riavvia il termine.

E dovresti essere riparato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.