ITerm2とChromeのOSXでパワーラインキャラクターをレンダリングするための実用的なソリューションを探しています。私がいくつかの方法を使用しようとした周りのドキュメントはたくさんありますが、今のところどれも正しく機能していないようです(ただし、フォントブックで事前にパッチされたフォントは部分的には機能します)。詳細は以下に含まれています。
これらのキャラクターのレンダリングはどのように機能しますか(システム/アプリケーションレベル)?アプリケーションごとに異なりますか? Chromeでは、現在のフォントにグリフのバインディングが含まれていない場合、chromeはシステムに存在する別のフォントのバインディングを見つけてそれを使用しようとしますか?にバインディングを提供する方法はありますか?このユニコード文字をシステムレベルで使用して、使用されているフォントに関係なく、そのフォントを使用してレンダリングできるようにしますか?
Powerline互換のパッチが適用されたフォントが機能する方法を理解している場合、それらはスケーラブルなグラフィックスを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
端末でグリフをテストするために、これが機能することを読みました:
echo -e "\ue0a0\ue0a1\ue0a2\ue0b0\ue0b1\ue0b2\ue0b3"
ただし、私(OSX 10.9.3、iTerm2、zsh)は、パワーラインパッチフォントがインストールされていて、iTerm2がこれらのフォントの1つを使用するように構成されている場合でも機能しません。
パッチを当てたフォントをインストールするためにいくつかの方法を試しました:
Localtog/powerline-fonts からフォントをダウンロードし、FontBookを使用してインストールしました。同じページで、一部のグリフはレンダリングされますが、他のレンダリングされません。他のページでは、どのグリフもレンダリングされません。
(ソース: staticflickr.com )
(ソース: staticflickr.com )
ITerm2(これは私がテストしたすべてのパワーラインフォントで発生します)では、一部の文字はレンダリングされますが、他の文字はレンダリングされません。
(ソース: staticflickr.com )
Vim-airlineがインストールされているmacvim(ターミナル)では、一部の文字がレンダリングされますが、一部が正しくレンダリングされません。
(ソース: staticflickr.com )
私はすべてのパワーラインパッチフォントをアンインストールし、homebrewでfontconfigをインストールし、パワーラインフォントをインストールして、フォントキャッシュを再構築しました。
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ですべてを機能させるようですが、クロム/システムレンダリングの問題についてはまだ不明です。
python bindingsを使用してfontforgeをインストールします。
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
Input Mono フォントをインストールするだけで、powerlineが完全にサポートされます。
以下が機能するためには、Input Monoフォントがバージョン1.1である必要があります。 Font Book → View → Show Font Info
にアクセスしてフォントのバージョンを確認し、バージョン番号を確認できます。
Terminal.appはそのまま使用できます。フォントを選択するだけで準備は完了です。
ITerm2では、次の2つを変更する必要があります。
Change Font
をクリックして、[入力モノ]を選択します。さらに、Character Spacing → Vertical
を110%に変更する必要があります。ターミナルとiTerm2は文字間隔を異なる方法でレンダリングしているようです。bash
を更新していない可能性があります。 OS Xには_bash < 4
_が同梱されているため、printf
または_echo -e
_ユニコードコードは使用できません。
bash
をhomebrew
で更新する手順:
brew install bash
_bash
のプレフィックスを見つけてください。私のものは_/usr/local/Cellar/bash/4.3.30/
_だったので、私のbashバイナリは_/usr/local/Cellar/bash/4.3.30/bin/bash
_でした。Sudo (vim|nano|emacs|etc) /etc/shells
/usr/bin
_を置き換えます。)chsh
Shell:
_行をbash
パスに一致するように変更します。そして、あなたは修正されるべきです。