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.
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?
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:
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:
Dans iTerm2 (cela se produit avec toutes les polices powerline que j'ai testées), certains caractères sont rendus, mais d'autres pas:
Dans macvim (terminal) avec vim-airline installé, certains caractères sont rendus, mais certains ne le sont pas correctement:
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.
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.
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
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:
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.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
:
brew install bash
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
.Sudo (vim|nano|emacs|etc) /etc/shells
/usr/bin
, si vous êtes vraiment courageux.)chsh
Shell:
pour qu'elle corresponde à votre chemin bash
.Et vous devriez être réparé.