web-dev-qa-db-ja.com

OSX 10.9.3上のPowerlineパッチフォント-iTerm2&Chrome

ITerm2とChromeのOSXでパワーラインキャラクターをレンダリングするための実用的なソリューションを探しています。私がいくつかの方法を使用しようとした周りのドキュメントはたくさんありますが、今のところどれも正しく機能していないようです(ただし、フォントブックで事前にパッチされたフォントは部分的には機能します)。詳細は以下に含まれています。

  1. OSX 10.9.3上のiTerm2で電力線グリフを正しくレンダリングするための実用的な方法はありますか?
  2. 電力線のグリフはWebページで正しくレンダリングされますか?なぜそうでないのか、どうすれば修正できるのか?

これらのキャラクターのレンダリングはどのように機能しますか(システム/アプリケーションレベル)?アプリケーションごとに異なりますか? Chromeでは、現在のフォントにグリフのバインディングが含まれていない場合、chromeはシステムに存在する別のフォントのバインディングを見つけてそれを使用しようとしますか?にバインディングを提供する方法はありますか?このユニコード文字をシステムレベルで使用して、使用されているフォントに関係なく、そのフォントを使用してレンダリングできるようにしますか?

Unicodeプライベートエリア文字

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つを使用するように構成されている場合でも機能しません。

パッチを当てたフォントをインストールするためにいくつかの方法を試しました:

FontBook&事前パッチ済みフォント

Localtog/powerline-fonts からフォントをダウンロードし、FontBookを使用してインストールしました。同じページで、一部のグリフはレンダリングされますが、他のレンダリングされません。他のページでは、どのグリフもレンダリングされません。

Agnoster Theme
(ソース: staticflickr.com

Powerline Documentation
(ソース: staticflickr.com

ITerm2(これは私がテストしたすべてのパワーラインフォントで発生します)では、一部の文字はレンダリングされますが、他の文字はレンダリングされません。

iTerm2 & zsh
(ソース: staticflickr.com

Vim-airlineがインストールされているmacvim(ターミナル)では、一部の文字がレンダリングされますが、一部が正しくレンダリングされません。

vim-airline
(ソース: staticflickr.com

Fontconfig

私はすべてのパワーラインパッチフォントをアンインストールし、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ですべてを機能させるようですが、クロム/システムレンダリングの問題についてはまだ不明です。

FontForge

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
18
nfarrar

Input Mono フォントをインストールするだけで、powerlineが完全にサポートされます。

以下が機能するためには、Input Monoフォントがバージョン1.1である必要があります。 Font Book → View → Show Font Infoにアクセスしてフォントのバージョンを確認し、バージョン番号を確認できます。

Terminal.appはそのまま使用できます。フォントを選択するだけで準備は完了です。

ITerm2では、次の2つを変更する必要があります。

  • [設定]→[プロファイル]→[テキスト]に移動し、[非ASCIIテキストに別のフォントを使用する]チェックボックスをオフにします。
  • すぐ上のChange Fontをクリックして、[入力モノ]を選択します。さらに、Character Spacing → Verticalを110%に変更する必要があります。ターミナルとiTerm2は文字間隔を異なる方法でレンダリングしているようです。
12
jherran

bashを更新していない可能性があります。 OS Xには_bash < 4_が同梱されているため、printfまたは_echo -e_ユニコードコードは使用できません。

bashhomebrewで更新する手順:

  1. _brew install bash_
  2. Homebrewによってインストールされたbashのプレフィックスを見つけてください。私のものは_/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. 任期を再開します。

そして、あなたは修正されるべきです。

2
user246682