Gepatchte Powerline-Schriften unter OSX 10.9.3 - iTerm2 & Chrome

18

Ich suche nach einer funktionierenden Lösung zum Rendern von Powerline-Zeichen unter OSX in iTerm2 und Chrome. Es gibt eine Menge Dokumentation, bei der ich versucht habe, verschiedene Methoden zu verwenden. Bisher scheint keine richtig zu funktionieren (obwohl vorab gepatchte Schriften mit Fontbook teilweise funktionieren). Details dazu weiter unten.

  1. Gibt es eine Arbeitsmethode, mit der Powerline-Glyphen in iTerm2 unter OSX 10.9.3 korrekt gerendert werden können?
  2. Sollten die Powerline-Glyphen auf Webseiten korrekt dargestellt werden? Irgendeine Idee, warum sie nicht sind und wie ich es reparieren kann?

Wie funktioniert das Rendern dieser Zeichen (auf System- / Anwendungsebene)? Unterscheidet es sich von Anwendung zu Anwendung? Wenn die aktuelle Schriftart in Chrome keine Bindungen für die Glyphen enthält, versucht Chrome dann, die Bindungen in einer anderen auf dem System vorhandenen Schriftart zu finden und diese zu verwenden? Gibt es eine Möglichkeit, Bindungen für diese Unicode-Zeichen auf Systemebene bereitzustellen, damit sie unabhängig von der verwendeten Schriftart mit dieser Schriftart gerendert werden?

Unicode-Zeichen für den privaten Bereich

Wenn ich die Funktionsweise von Powerline-kompatiblen gepatchten Schriftarten verstehe, binden sie skalierbare Grafiken an bestimmte Werte im Bereich für den privaten Gebrauch von 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

Um die Glyphen in einem Terminal zu testen, habe ich gelesen, dass dies funktionieren sollte:

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

Es funktioniert jedoch nicht für mich (OSX 10.9.3, iTerm2, zsh), auch wenn eine mit Powerline-Patches versehene Schriftart installiert und iTerm2 für die Verwendung einer dieser Schriftarten konfiguriert ist.

Ich habe verschiedene Methoden zum Installieren der gepatchten Schriften ausprobiert:

FontBook & Prepatched Fonts

Ich habe die Fonts von Localtog / Powerline-Fonts heruntergeladen und mit FontBook installiert. Auf den gleichen Seiten werden einige der Glyphen gerendert, andere jedoch nicht. Auf anderen Seiten wird keine der Glyphen gerendert:

Agnoster-Thema
(Quelle: staticflickr.com )

Powerline-Dokumentation
(Quelle: staticflickr.com )

In iTerm2 (dies geschieht mit allen von mir getesteten Powerline-Schriftarten) werden einige Zeichen gerendert, andere jedoch nicht:

iTerm2 & zsh
(Quelle: staticflickr.com )

In macvim (terminal) mit installierter vim-airline werden einige der Zeichen zwar gerendert, andere jedoch falsch:

Vim-Airline
(Quelle: staticflickr.com )

Fontconfig

Ich habe alle Powerline-gepatchten Schriften deinstalliert, fontconfig mit homebrew installiert, die Powerline-Schrift installiert und den Schriften-Cache neu erstellt:

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

Die Schriftart wurde erkannt und fontconfig meldet, dass sie installiert wurde. Sie wurde jedoch nicht in FontBook angezeigt, und ich konnte sie in iTerm2 nicht auswählen.

Nachdem ich dies ausgeführt habe, habe ich die Schriftarten entfernt, den fc-Cache erneut ausgeführt und fontconfig deinstalliert.

Ich verwende derzeit die in fontbook installierten vorab gepatchten Schriftarten, die teilweise funktionieren. Ich hoffe jedoch, dass mir jemand helfen kann, das Problem ein wenig besser zu verstehen, damit ich eine funktionierende Lösung finden kann.

Aktualisieren

Diese Methode scheint alles in iTerm2 zum Laufen zu bringen, obwohl ich mir bei Problemen mit der Wiedergabe von Chrom / System immer noch unsicher bin.

FontForge

Installieren Sie fontforge mit Python-Bindungen:

brew install fontforge --with-python

Installieren Sie den 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

Schriftart herunterladen, patchen und installieren:

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
nfarrar
quelle

Antworten:

12

Installieren Sie einfach die Input Mono- Schriftart und die Powerline wird vollständig unterstützt.

Damit das Folgende funktioniert, muss die Input Mono-Schriftart Version 1.1 sein. Sie können die Schriftartversion überprüfen, indem Sie auf gehen Font Book → View → Show Font Infound die Versionsnummer anzeigen.

Mit Terminal.app klappt das sofort. Wählen Sie einfach die Schriftart und Sie sind bereit.

Mit iTerm2 müssen Sie einige Dinge ändern:

  • Gehen Sie zu Einstellungen → Profile → Text und deaktivieren Sie `Für Nicht-ASCII-Text eine andere Schriftart verwenden.
  • Klicken Sie oben auf Change Fontund wählen Sie Input Mono. Zusätzlich muss Character Spacing → Verticalauf 110% gewechselt werden. Scheint, dass Terminal und iTerm2 Zeichenabstände auf andere Weise rendern.
jherran
quelle
Das Deaktivieren Use a different font for non-ASCII text.machte den Unterschied für mich.
CamomileCase
2

Möglicherweise haben Sie nicht aktualisiert bash. Im Lieferumfang von OS X bash < 4ist daher kein printfoder ein echo -eUnicode-Code enthalten.

Schritte zum Aktualisieren bashmit homebrew:

  1. brew install bash
  2. Finde das Präfix des bashvon Homebrew installierten, meins war /usr/local/Cellar/bash/4.3.30/, also war meine Bash-Binärdatei /usr/local/Cellar/bash/4.3.30/bin/bash.
  3. sudo (vim|nano|emacs|etc) /etc/shells
  4. Holen Sie sich diesen Bash-Pfad und fügen Sie ihn am Ende der Liste hinzu (oder ersetzen Sie ihn /usr/bin, wenn Sie wirklich mutig sind.)
  5. chsh
  6. Ändern Sie die Shell:Linie entsprechend Ihrem bashPfad.
  7. Starten Sie Ihre Amtszeit neu.

Und du solltest repariert werden.


quelle