Я ищу рабочее решение для отрисовки символов Powerline на OSX в iTerm2 и Chrome. Вокруг было много документации, в которой я пытался использовать несколько методов, но пока что ни один из них не работает правильно (хотя частично сшитые шрифты с книгой шрифтов работают частично ). Подробности включены ниже.
- Есть ли рабочий метод для правильной визуализации глифов Powerline в iTerm2 на OSX 10.9.3?
- Должны ли символы Powerline правильно отображаться на веб-страницах? Есть идеи, почему их нет и как я могу это исправить?
Как работает рендеринг этих символов (на уровне системы / приложения)? Отличается ли это от приложения к приложению? В chrome, если текущий шрифт не содержит привязок для глифов, попытается ли chrome найти привязки в другом шрифте, присутствующем в системе, и использовать их? Есть ли способ предоставить привязки для этих символов Юникода на системном уровне, чтобы они отображались с использованием этого шрифта, независимо от используемого шрифта?
Персональные символы Юникода
Если я понимаю, как работают исправленные шрифты, совместимые с Powerline, они связывают масштабируемую графику с конкретными значениями в области частного использования Юникода:
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
Чтобы проверить глифы в терминале, я прочитал, что это должно работать:
echo -e "\ue0a0\ue0a1\ue0a2\ue0b0\ue0b1\ue0b2\ue0b3"
Однако он не работает для меня (OSX 10.9.3, iTerm2, zsh) даже с установленным шрифтом с исправлениями Powerline и iTerm2, настроенным для использования одного из этих шрифтов.
Я пробовал несколько способов установки пропатченных шрифтов:
FontBook & Prepatched Fonts
Я скачал шрифты из Localtog/powerline-fonts и установил их с помощью FontBook. На тех же страницах некоторые глифы отображаются, а другие нет. На других страницах ни один из глифов не отображается:
В iTerm2 (это происходит со всеми протестированными мною шрифтами powerline) некоторые символы отображаются, а другие нет:
В macvim (терминал) с установленным vim-aviation некоторые символы отображаются, но некоторые отображаются неправильно:
Fontconfig
Я удалил все исправленные Powerline шрифты, установил fontconfig с homebrew, установил шрифт powerline и восстановил кэш шрифтов:
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
Шрифт был обнаружен, и fontconfig сказал, что он установлен, однако он не появился в FontBook, и я не смог выбрать его в iTerm2.
После запуска я удалил шрифты, перезапустил fc-cache и удалил fontconfig.
В настоящее время я использую предустановленные шрифты, установленные в книге шрифтов, которые частично работают, но я надеюсь, что кто-то может помочь мне немного лучше разобраться в проблеме, чтобы найти рабочее решение.
Обновить
Этот метод, кажется, заставляет все работать в iTerm2, хотя я все еще не уверен в проблемах рендеринга chrome/system.
FontForge
Установите fontforge с привязками Python:
brew install fontforge --with-python
Установите 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
Скачайте, исправьте и установите шрифт:
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