我正在寻找一种在iTerm2和Chrome中在OSX上呈现电力线字符的可行解决方案。我周围有很多文档,我尝试过使用几种方法,到目前为止,似乎都没有一种方法可以正常工作(尽管预先安装有fontbook的字体可以部分起作用)。详细信息如下。
- 是否有一种有效的方法可以使电力线字形在OSX 10.9.3的iTerm2中正确呈现?
- 电力线字形应该在网页中正确呈现吗?知道为什么他们不是我该如何解决吗?
这些字符的渲染如何工作(在系统/应用程序级别)?各个应用程序是否不同?在chrome中,如果当前字体不包含字形的绑定,chrome是否会尝试查找系统上存在的另一种字体的绑定并使用它们?有什么方法可以在系统级别为此unicode字符提供绑定,以便无论使用哪种字体,它们都将使用该字体进行渲染?
Unicode专用区字符
如果我了解电力线兼容的修补字体的工作方式,它们会将可伸缩图形绑定到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"
但是,即使安装了电力线修补字体并将iTerm2配置为使用其中一种字体,它也不适用于我(OSX 10.9.3,iTerm2,zsh)。
我尝试了几种安装修补字体的方法:
FontBook和预先修补的字体
我从Localtog / powerline-fonts下载了字体,并使用FontBook安装了它们。在同一页面上,某些字形会渲染,而其他字形不会渲染。在其他页面上,所有字形都不呈现:
(来源:staticflickr.com)
(来源:staticflickr.com)
在iTerm2中(我测试过的所有电力线字体都会发生这种情况),某些字符会渲染,而其他字符不会渲染:
(来源:staticflickr.com)
在安装了vim-airline的macvim(终端)中,某些字符会渲染,但有些会错误地渲染:
(来源:staticflickr.com)
字体配置
我卸载了所有电力线修补的字体,安装了带有自制程序的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。
我目前正在使用安装在fontbook中的预先修补的字体,该字体可以部分起作用,但是我希望有人可以帮助我更好地理解此问题,以便找到可行的解决方案。
更新资料
尽管我仍然不确定chrome /系统渲染问题,但是这种方法似乎可以使所有功能在iTerm2中正常工作。
FontForge
使用python绑定安装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
Use a different font for non-ASCII text.
检查对我来说很重要。