Polices patché Powerline sur OSX 10.9.3 - iTerm2 et Chrome


18

Je recherche une solution de travail pour le rendu des caractères CPL sur OSX dans iTerm2 et Chrome. Il y a beaucoup de documentation autour de laquelle j'ai essayé d'utiliser plusieurs méthodes, aucune ne semble fonctionner correctement jusqu'à présent (bien que les polices pré-corrigées avec le livre de polices fonctionnent partiellement ). Détails inclus ci-dessous.

  1. Existe-t-il une méthode de travail pour obtenir le rendu correct des glyphes CPL dans iTerm2 sur OSX 10.9.3?
  2. Les glyphes Powerline doivent-ils s'afficher correctement dans les pages Web? Une idée pourquoi ils ne le sont pas et comment je peux y remédier?

Comment fonctionne le rendu de ces caractères (au niveau système / application)? Cela diffère-t-il d'une application à l'autre? Dans Chrome, si la police actuelle ne contient pas de liaisons pour les glyphes, Chrome tentera-t-il de trouver les liaisons dans une autre police présente sur le système et de les utiliser? Existe-t-il un moyen de fournir des liaisons pour ces caractères unicode au niveau du système afin qu'ils s'affichent à l'aide de cette police, quelle que soit la police utilisée?

Caractères de zone privée Unicode

Si je comprends le fonctionnement des polices corrigées compatibles Powerline, elles lient les graphiques évolutifs à des valeurs spécifiques dans la zone d'utilisation privée 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

Pour tester les glyphes dans un terminal, j'ai lu que cela devrait fonctionner:

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

Cependant, cela ne fonctionne pas pour moi (OSX 10.9.3, iTerm2, zsh) même avec une police corrigée Powerline installée et iTerm2 configuré pour utiliser l'une de ces polices.

J'ai essayé plusieurs méthodes pour installer les polices corrigées:

FontBook et polices pré-corrigées

J'ai téléchargé les polices de Localtog / powerline-fonts et les ai installées en utilisant FontBook. Sur les mêmes pages, certains glyphes s'affichent, mais pas d'autres. Sur d'autres pages, aucun des glyphes ne rend:

Thème Agnoster
(source: staticflickr.com )

Documentation Powerline
(source: staticflickr.com )

Dans iTerm2 (cela se produit avec toutes les polices Powerline que j'ai testées), certains caractères s'affichent, mais pas tous:

iTerm2 & zsh
(source: staticflickr.com )

Dans macvim (terminal) avec vim-airlines installé, certains caractères s'affichent, mais certains s'affichent incorrectement:

vim-compagnie aérienne
(source: staticflickr.com )

Fontconfig

J'ai désinstallé toutes les polices corrigées Powerline, installé fontconfig avec homebrew, installé la police Powerline et reconstruit le cache des polices:

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

La police a été détectée et fontconfig a dit qu'elle était installée, mais elle n'apparaissait pas dans FontBook et je n'ai pas pu la sélectionner dans iTerm2.

Après avoir exécuté cela, j'ai supprimé les polices, réanimé fc-cache et désinstallé fontconfig.

J'utilise actuellement les polices préinstallées installées dans fontbook, qui fonctionnent partiellement, mais j'espère que quelqu'un pourra m'aider à mieux comprendre le problème afin que je puisse trouver une solution de travail.

Mise à jour

Cette méthode semble faire tout fonctionner dans iTerm2, bien que je ne sois toujours pas sûr des problèmes de rendu de chrome / système.

FontForge

Installez fontforge avec des liaisons python:

brew install fontforge --with-python

Installez 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

Téléchargez, corrigez et installez la police:

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

Réponses:


12

Il suffit d'installer la police Input Mono , fournie avec une prise en charge complète de Powerline.

Pour que les éléments suivants fonctionnent, la police Input Mono doit être la version 1.1. Vous pouvez vérifier la version de la police en accédant à Font Book → View → Show Font Infoet regarder le numéro de version.

Avec Terminal.app fonctionne hors de la boîte. Sélectionnez simplement la police et vous êtes prêt.

Avec iTerm2, vous devez modifier quelques éléments:

  • Allez dans Préférences → Profils → Texte et décochez `Utiliser une police différente pour le texte non ASCII.
  • Juste au-dessus, cliquez sur Change Fontet sélectionnez Input Mono. De plus, vous devez passer Character Spacing → Verticalà 110%. Il semble que Terminal et iTerm2 rendent l'espacement des caractères d'une manière différente.

Décocher a Use a different font for non-ASCII text.fait toute la différence pour moi.
camomileCase

2

Vous n'avez probablement pas mis à jour bash. OS X est fourni avec bash < 4, vous ne pouvez donc pas printfou echo -eunicode les codes.

Étapes de mise à jour bashavec homebrew:

  1. brew install bash
  2. Trouvez le préfixe de bashinstallé par homebrew, le mien l'était /usr/local/Cellar/bash/4.3.30/, donc mon binaire bash l'était /usr/local/Cellar/bash/4.3.30/bin/bash.
  3. sudo (vim|nano|emacs|etc) /etc/shells
  4. Obtenez ce chemin bash et ajoutez-le à la fin de la liste (ou remplacez-le /usr/bin, si vous êtes vraiment courageux.)
  5. chsh
  6. Modifiez la Shell:ligne en fonction de votre bashchemin.
  7. Redémarrez votre mandat.

Et vous devriez être réparé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.