OSX 10.9.3 上的 Powerline 修补字体 - iTerm2 和 Chrome

OSX 10.9.3 上的 Powerline 修补字体 - iTerm2 和 Chrome

我正在寻找一种在 OSX 上使用 iTerm2 和 Chrome 渲染电力线字符的有效解决方案。有很多文档,我尝试使用几种方法,到目前为止似乎都没有正常工作(尽管使用字体簿预先修补了字体部分作品)。 详细信息如下。

  1. 有没有一种可行的方法可以让电力线字形在 OSX 10.9.3 上的 iTerm2 中正确呈现?
  2. 电力线字形是否应在网页中正确呈现?知道为什么它们不正常吗?我该如何修复它?

这些字符的渲染是如何进行的(在系统/应用程序级别)?不同应用程序之间是否有所不同?在 Chrome 中,如果当前字体不包含字形的绑定,Chrome 是否会尝试在系统中现有的另一种字体中查找绑定并使用它们?有没有办法在系统级别为这些 un​​icode 字符提供绑定,以便无论使用哪种字体,它们都将使用该字体进行渲染?

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"

但是,即使安装了 powerline-patched 字体并且 iTerm2 配置为使用其中一种字体,它对我来说也不起作用(OSX 10.9.3、iTerm2、zsh)。

我尝试了几种安装修补字体的方法:

FontBook 和预修补字体

我从Localtog/powerline 字体并使用 FontBook 安装它们。在相同的页面上,一些字形会呈现,但其他则不会。在其他页面上,没有任何字形会呈现:

Agnoster 主题
(来源:staticflickr.com

电力线文档
(来源:staticflickr.com

在 iTerm2 中(我测试过的所有电力线字体都会发生这种情况),有些字符可以呈现,但其他字符则不会:

iTerm2 和 zsh
(来源:staticflickr.com

在安装了 vim-airline 的 macvim(终端)中,一些字符可以呈现,但有些字符呈现不正确:

vim 航空公司
(来源:staticflickr.com

字体配置

我卸载了所有 powerline 修补的字体,用 homebrew 安装了 fontconfig,安装了 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。

我目前正在使用安装在 fontbook 中的预修补字体,它部分可以工作,但我希望有人可以帮助我更好地理解这个问题,这样我就可以找到一个可行的解决方案。

更新

这种方法似乎一切在 iTerm2 中工作,尽管我仍然不确定 chrome/系统渲染问题。

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

答案1

只需安装输入单声道字体,完全支持电力线。

为了使以下操作有效,输入 Mono 字体必须是 1.1 版。您可以前往Font Book → View → Show Font Info并查看版本号来检查字体版本。

Terminal.app 开箱即用。只需选择字体即可。

使用 iTerm2,您必须修改几件事:

  • 转到首选项 → 配置文件 → 文本并取消选中“对非 ASCII 文本使用不同的字体”。
  • 在上面,单击Change Font并选择输入单声道。此外,您还必须更改Character Spacing → Vertical为 110%。似乎 Terminal 和 iTerm2 以不同的方式呈现字符间距。

答案2

您可能尚未更新bash。OS X 附带有bash < 4,因此您无法printfecho -eunicode代码。

bash更新步骤homebrew

  1. brew install bash
  2. bash找到homebrew 安装的的前缀,我的是/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. 重新开始你的任期。

你就应该被修复了。

相关内容