web-dev-qa-db-fra.com

Powerline Patched Fonts sur OSX 10.9.3 - iTerm2 et Chrome

Je recherche une solution de travail pour le rendu des caractères CPL sous 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é-prépayées avec fontbook fonctionnent partiellement ). Détails inclus ci-dessous.

  1. Existe-t-il une méthode de travail permettant d'obtenir le rendu correct des glyphes sur courant porteur dans iTerm2 sous OSX 10.9.3?
  2. Les glyphes sur courant porteur doivent-ils être rendus correctement dans les pages Web? Aucune idée pourquoi ils ne sont pas et comment je peux le réparer?

Comment fonctionne le rendu de ces caractères (au niveau système/application)? Est-ce différent d'une application à l'autre? En chrome, si la police en cours ne contient pas de liaisons pour les glyphes, Chrome tentera-t-il de rechercher 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 rendent le rendu à l'aide de cette police, quelle que soit la police utilisée?

Caractères de la zone privée Unicode

Si je comprends le fonctionnement des polices correctives 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 avec correctif 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 & Polices Prépayées

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

Agnoster ThemePowerline Documentation

Dans iTerm2 (cela se produit avec toutes les polices powerline que j'ai testées), certains caractères sont rendus, mais d'autres pas:

iTerm2 & zsh

Dans macvim (terminal) avec vim-airline installé, certains caractères sont rendus, mais certains ne le sont pas correctement:

vim-airline

Fontconfig

J'ai désinstallé toutes les polices patchées par Powerline, installé Fontconfig avec homebrew, installé la police Powerline et reconstruit le cache de 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 indiqué qu'elle était installée. Cependant, elle n'apparaissait pas dans FontBook et je ne pouvais pas la sélectionner dans iTerm2.

Après avoir exécuté cela, j'ai supprimé les polices, réanalysé 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 efficace.

Mettre à jour

Cette méthode semble faire que tout fonctionne dans iTerm2, même si je ne suis toujours pas sûr des problèmes de rendu 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écharger, corriger et installer 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
18
nfarrar

Il suffit d’installer la police d’entrée 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 allant à Font Book → View → Show Font Info et consulter le numéro de version.

Avec Terminal.app fonctionne hors de la boîte. Il suffit de sélectionner 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 la case Utiliser une police différente pour le texte non-ASCII.
  • Juste au-dessus, cliquez sur Change Font et sélectionnez Entrée Mono. De plus, vous devez changer Character Spacing → Vertical à 110%. Il semble que Terminal et iTerm2 rendent l'espacement des caractères d'une manière différente.
11
jherran

Il est probable que vous n'avez pas mis à jour bash. OS X est livré avec bash < 4, vous ne pouvez donc pas utiliser les codes unicode printf ou echo -e.

Étapes pour mettre à jour bash avec homebrew:

  1. brew install bash
  2. Trouvez le préfixe de la bash installée par l'homebrew, le mien était /usr/local/Cellar/bash/4.3.30/, mon binaire bash était donc /usr/local/Cellar/bash/4.3.30/bin/bash.
  3. Sudo (vim|nano|emacs|etc) /etc/shells
  4. Récupère le chemin bash et l'ajoute à la fin de la liste(ou remplacez /usr/bin, si vous êtes vraiment courageux.)
  5. chsh
  6. Modifiez la ligne Shell: pour qu'elle corresponde à votre chemin bash.
  7. Redémarrez votre terme.

Et vous devriez être réparé.

1
user246682