Powerline пропатченные шрифты на OSX 10.9.3 - iTerm2 & Chrome

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) даже с установленным шрифтом с исправлением линии электропередачи и iTerm2, настроенным для использования одного из этих шрифтов.

Я пробовал несколько способов установки пропатченных шрифтов:

FontBook & Prepatched Fonts

Я скачал шрифты из Localtog / powerline-fonts и установил их с помощью FontBook. На тех же страницах некоторые глифы отображаются, а другие нет. На других страницах ни один из глифов не отображается:

Agnoster Theme
(источник: staticflickr.com )

Powerline Документация
(источник: staticflickr.com )

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

iTerm2 & zsh
(источник: staticflickr.com )

В macvim (терминал) с установленным vim-aviation некоторые символы отображаются, но некоторые отображаются неправильно:

ВИМ-авиакомпании
(источник: staticflickr.com )

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
nfarrar
источник

Ответы:

12

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

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

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

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

  • Перейдите в «Настройки» → «Профили» → «Текст» и снимите флажок «Использовать другой шрифт для текста, не относящегося к ASCII».
  • Чуть выше, нажмите Change Fontи выберите Input Mono. Кроме того, вы должны изменить Character Spacing → Verticalна 110%. Похоже, что Terminal и iTerm2 отображают интервал между символами по-другому.
jherran
источник
Снятие галочки Use a different font for non-ASCII text.имело для меня значение.
РомашкаCase
2

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

Шаги для обновления bashс homebrew:

  1. brew install bash
  2. Найдите префикс bashустановленного homebrew, мой был /usr/local/Cellar/bash/4.3.30/, так что мой бинарный файл был /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. Перезапустите свой срок.

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


источник