Powerline Patched Fonts pada OSX 10.9.3 - iTerm2 & Chrome

18

Saya mencari solusi yang berfungsi untuk merender karakter powerline di OSX di iTerm2 dan Chrome. Ada banyak dokumentasi di sekitar saya telah berusaha untuk menggunakan beberapa metode, sejauh ini tidak ada yang berfungsi dengan benar (meskipun font yang dilengkapi dengan fontbook sebagian berfungsi). Detailnya termasuk di bawah ini.

  1. Apakah ada metode yang berfungsi untuk membuat mesin terbang Powerline untuk membuat dengan benar di iTerm2 pada OSX 10.9.3?
  2. Haruskah mesin terbang powerline rendering dengan benar di halaman web? Adakah yang tahu mengapa mereka tidak dan bagaimana cara memperbaikinya?

Bagaimana cara rendering karakter ini bekerja (pada level sistem / aplikasi)? Apakah ini berbeda dari satu aplikasi ke aplikasi lainnya? Di chrome, jika font saat ini tidak mengandung binding untuk mesin terbang, akankah chrome berusaha menemukan binding dalam font lain yang ada pada sistem dan menggunakannya? Apakah ada cara untuk memberikan binding untuk karakter unicode ini pada tingkat sistem sehingga mereka akan membuat menggunakan font itu, terlepas dari font yang sedang digunakan?

Karakter Area Pribadi Unicode

Jika saya memahami cara font tambalan yang kompatibel dengan powerline bekerja, mereka mengikat grafik yang dapat diskalakan ke nilai tertentu di area penggunaan pribadi 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

Untuk menguji mesin terbang di terminal, saya telah membaca bahwa ini seharusnya bekerja:

echo -e "\ue0a0\ue0a1\ue0a2\ue0b0\ue0b1\ue0b2\ue0b3"

Namun itu tidak bekerja untuk saya (OSX 10.9.3, iTerm2, zsh) bahkan dengan font powerline-patched yang diinstal dan iTerm2 dikonfigurasi untuk menggunakan salah satu font tersebut.

Saya sudah mencoba beberapa metode untuk menginstal font yang ditambal:

FontBook & Font yang Dipersiapkan

Saya mengunduh font dari Localtog / powerline-fonts dan menginstalnya menggunakan FontBook. Pada halaman yang sama, beberapa mesin terbang membuat tetapi yang lain tidak. Di halaman lain, tidak ada mesin terbang yang membuat:

Tema Agnoster
(sumber: staticflickr.com )

Dokumentasi Powerline
(sumber: staticflickr.com )

Di iTerm2 (ini terjadi dengan semua font powerline yang saya uji), beberapa karakter di-render, tetapi yang lain tidak:

iTerm2 & zsh
(sumber: staticflickr.com )

Dalam macvim (terminal) dengan vim-airline diinstal, beberapa karakter membuat, tetapi beberapa membuat salah:

vim-maskapai
(sumber: staticflickr.com )

Konfigurasi font

Saya mencopot semua font powerline-patched, menginstal fontconfig dengan homebrew, menginstal font powerline, dan membangun kembali cache font:

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

Font terdeteksi dan fontconfig mengatakan itu diinstal, namun tidak muncul di FontBook dan saya tidak dapat memilihnya di iTerm2.

Setelah menjalankan ini, saya menghapus font, reran fc-cache, dan menghapus fontconfig.

Saat ini saya menggunakan font pracetak yang dipasang di fontbook, yang sebagian berfungsi, tetapi saya berharap seseorang dapat membantu saya memahami masalah ini sedikit lebih baik sehingga saya dapat menemukan solusi yang berfungsi.

Memperbarui

Metode ini tampaknya membuat semuanya berfungsi di iTerm2, meskipun saya masih tidak yakin tentang masalah rendering chrome / sistem.

FontForge

Instal fontforge dengan binding python:

brew install fontforge --with-python

Pasang 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

Unduh, tempel & pasang font:

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
sumber

Jawaban:

12

Cukup instal font Input Mono , hadir dengan dukungan penuh ke powerline.

Agar yang berikut berfungsi, font Input Mono harus versi 1.1. Anda dapat memeriksa versi font dengan pergi ke Font Book → View → Show Font Info, dan melihat nomor versi.

Dengan Terminal.app berfungsi di luar kotak. Cukup pilih font dan Anda siap.

Dengan iTerm2, Anda harus memodifikasi beberapa hal:

  • Pergi ke Preferensi → Profil → Teks dan hapus centang `Gunakan font lain untuk teks non-ASCII.
  • Tepat di atas, klik Change Fontdan pilih Input Mono. Selain itu Anda harus berubah Character Spacing → Verticalmenjadi 110%. Tampaknya bahwa Terminal dan iTerm2 membuat spasi karakter dengan cara yang berbeda.
jherran
sumber
Menghapus centang Use a different font for non-ASCII text.membuat semua perbedaan bagi saya.
camomileCase
2

Kemungkinannya adalah Anda belum memperbarui bash. OS X disertakan bersama bash < 4, jadi Anda tidak dapat printfatau tidak echo -ekode kode.

Langkah-langkah untuk memperbarui bashdengan homebrew:

  1. brew install bash
  2. Temukan awalan yang bashdiinstal oleh homebrew, milik saya /usr/local/Cellar/bash/4.3.30/, jadi biner bash saya /usr/local/Cellar/bash/4.3.30/bin/bash.
  3. sudo (vim|nano|emacs|etc) /etc/shells
  4. Dapatkan kata bash path, dan tambahkan ke akhir daftar (atau ganti /usr/bin, jika Anda benar-benar berani.)
  5. chsh
  6. Ubah Shell:jalur agar sesuai dengan bashjalur Anda .
  7. Mulai kembali istilah Anda.

Dan Anda harus diperbaiki.


sumber