Mit Powerline gepatchte Schriftarten unter OSX 10.9.3 - iTerm2 & Chrome

21415
nfarrar

Ich suche nach einer funktionierenden Lösung zum Rendern von Powerline-Zeichen unter OSX in iTerm2 und Chrome. Es gibt eine Menge Dokumentation, die ich verwendet habe. Ich habe versucht, mehrere Methoden zu verwenden. Bisher scheint keine richtig zu funktionieren (obwohl vorgefertigte Schriftarten mit Fontbook teilweise funktionieren). Details enthalten unten.

  1. Gibt es eine Arbeitsmethode, damit die Powerline-Glyphen in iTerm2 unter OSX 10.9.3 korrekt dargestellt werden?
  2. Sollten die Powerline-Glyphen in 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 in Chrome die aktuelle Schriftart keine Bindungen für die Glyphen enthält, wird Chrome versuchen, die Bindungen in einer anderen im 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 mit dieser Schriftart unabhängig von der verwendeten Schriftart gerendert werden?

Unicode-Zeichen für den privaten Bereich

Wenn ich die Funktionsweise von Powerline-kompatiblen Patch-Schriftarten verstehe, binden sie skalierbare Grafiken an bestimmte Werte im privaten Unicode-Verwendungsbereich:

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 gepatchte Schriftart installiert ist und iTerm2 für die Verwendung einer dieser Schriftarten konfiguriert ist.

Ich habe verschiedene Methoden zum Installieren der gepatchten Schriftarten ausprobiert:

FontBook & vorgefertigte Schriftarten

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

Agnoster-Thema Powerline-Dokumentation

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

iTerm2 & zsh

In macvim (Terminal), auf dem vim-airline installiert ist, werden einige der Zeichen gerendert, andere jedoch nicht korrekt:

Fluggesellschaft

Fontconfig

Ich habe alle mit Powerline gepatchten Schriftarten deinstalliert, fontconfig mit Homebrew installiert, die Powerline-Schriftart installiert und den Schriftcache 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 gab an, dass sie installiert wurde. Sie wurde jedoch nicht in FontBook angezeigt und konnte in iTerm2 nicht ausgewählt werden.

Nachdem ich das ausgeführt hatte, entfernte ich die Schriftarten, erstellte fc-cache erneut und deinstallierte fontconfig.

Ich verwende derzeit die vorgefertigten Schriftarten, die in fontbook installiert sind, was teilweise funktioniert, aber ich hoffe, dass mir jemand helfen kann, das Problem etwas besser zu verstehen, sodass ich eine funktionierende Lösung finden kann.

Aktualisieren

Diese Methode scheint alles in iTerm2 zum Laufen zu bringen, obwohl ich mir bei Chrom / System-Rendering-Problemen immer noch nicht sicher 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 

Schrift 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 
19

2 Antworten auf die Frage

11
jherran

Installieren Sie einfach die Eingabe-Mono- Schriftart, die Powerline vollständig unterstützt.

Um das Folgende zu funktionieren, muss die Eingabe-Mono-Schriftart Version 1.1 sein. Sie können die Version der Schriftart überprüfen, indem Sie zu gehen Font Book → View → Show Font Infound die Versionsnummer anzeigen.

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

Mit iTerm2 müssen Sie einige Dinge ändern:

  • Gehen Sie zu Voreinstellungen → Profile → Text und deaktivieren Sie die Option `Verwenden Sie eine andere Schriftart für Nicht-ASCII-Text.
  • Klicken Sie oben auf Change Fontund wählen Sie Input Mono. Zusätzlich müssen Sie Character Spacing → Verticalauf 110% wechseln . Es scheint, dass Terminal und iTerm2 den Zeichenabstand auf unterschiedliche Weise darstellen.
Deaktivieren Sie die Option "Verwenden Sie eine andere Schriftart für Nicht-ASCII-Text." camomileCase vor 7 Jahren 0
1
Thomas Ross

Möglicherweise haben Sie nicht aktualisiert bash. OS X wird mit ausgeliefert bash < 4, Sie können also keine printfoder echo -eUnicode-Codes verwenden.

Schritte zum Aktualisieren bashmit homebrew:

  1. brew install bash
  2. Finde das Präfix der bashvon Homebrew installierten, meine 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 den bash-Pfad und fügen Sie ihn am Ende der Liste ein (oder ersetzen Sie ihn /usr/bin, wenn Sie wirklich mutig sind.)
  5. chsh
  6. Ändern Sie die Shell:Zeile entsprechend Ihrem bashPfad.
  7. Starten Sie Ihren Begriff neu.

Und du solltest repariert werden.