18

Я ищу рабочее решение для отрисовки символов Powerline на OSX в iTerm2 и Chrome. Вокруг было много документации, в которой я пытался использовать несколько методов, но пока что ни один из них не работает правильно (хотя частично сшитые шрифты с книгой шрифтов работают частично ). Подробности включены ниже.

  1. Есть ли рабочий метод для правильной визуализации глифов Powerline в iTerm2 на OSX 10.9.3?
  2. Должны ли символы 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. На тех же страницах некоторые глифы отображаются, а другие нет. На других страницах ни один из глифов не отображается:

Agnoster Theme Powerline Документация

В iTerm2 (это происходит со всеми протестированными мною шрифтами powerline) некоторые символы отображаются, а другие нет:

iTerm2 & zsh

В 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

2 ответа2

11

Просто установите шрифт Input Mono , поставляется с полной поддержкой Powerline.

Чтобы следующее работало, шрифт Input Mono должен быть версии 1.1. Вы можете проверить версию шрифта, перейдя в Font Book → View → Show Font Info о шрифте, и посмотрите номер версии.

С Terminal.app работает из коробки. Просто выберите шрифт, и вы готовы.

С iTerm2 вы должны изменить несколько вещей:

  • Перейдите в «Настройки» → «Профили» → «Текст» и снимите флажок «Использовать другой шрифт для текста, не относящегося к ASCII».
  • Чуть выше, нажмите « Change Font и выберите «Ввод моно». Кроме того, вы должны изменить Character Spacing → Vertical на 110%. Кажется, что Terminal и iTerm2 отображают интервал между символами по-другому.
1

Скорее всего, вы не обновили bash . OS X поставляется с bash < 4 так что вы не можете printf или echo -e коды Юникода.

Шаги по обновлению bash с помощью homebrew:

  1. brew install bash
  2. Найдите префикс bash установленного homebrew, мой был /usr/local/Cellar/bash/4.3.30/ , поэтому мой двоичный файл bash был /usr/local/Cellar/bash/4.3.30/bin/bash .
  3. sudo (vim|nano|emacs|etc) /etc/shells
  4. Получите указанный путь bash и добавьте его в конец списка (или замените /usr/bin , если вы действительно смелый).
  5. chsh
  6. Измените строку Shell: в соответствии с вашим путем bash .
  7. Перезапустите свой срок.

И вы должны быть исправлены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .