OSX 10.9.3 上的电力线修补字体 - iTerm2 和 Chrome

nfa*_*rar 20 google-chrome fontconfig powerline-networking iterm2

我正在寻找一种在 iTerm2 和 Chrome 中在 OSX 上渲染电力线字符的有效解决方案。有很多文档围绕着我尝试使用了几种方法,但到目前为止似乎没有一个可以正常工作(尽管带有 fontbook 的预修补字体部分有效)。详情如下。

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

这些字符的渲染如何工作(在系统/应用程序级别)?它是否因应用程序而异?在 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
Run Code Online (Sandbox Code Playgroud)

为了在终端中测试字形,我读到这应该有效:

echo -e "\ue0a0\ue0a1\ue0a2\ue0b0\ue0b1\ue0b2\ue0b3"
Run Code Online (Sandbox Code Playgroud)

但是,即使安装了电源线修补字体并且 iTerm2 配置为使用其中一种字体,它也不适用于我(OSX 10.9.3、iTerm2、zsh)。

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

FontBook 和预修补字体

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

不可知论者主题
(来源:staticflickr.com

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

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

iTerm2 & zsh
(来源:staticflickr.com

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

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

字体配置

我卸载了所有 powerline-patched 字体,用 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
Run Code Online (Sandbox Code Playgroud)

检测到字体并且 fontconfig 说它已安装,但是它没有出现在 FontBook 中,我无法在 iTerm2 中选择它。

运行此程序后,我删除了字体,重新运行 fc-cache,并卸载了 fontconfig。

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

更新

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

字体锻造

使用 python 绑定安装 fontforge:

brew install fontforge --with-python
Run Code Online (Sandbox Code Playgroud)

安装 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
Run Code Online (Sandbox Code Playgroud)

下载、修补和安装字体:

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
Run Code Online (Sandbox Code Playgroud)

jhe*_*ran 12

只需安装Input Mono字体,即可全面支持电力线。

为了使以下内容起作用,Input Mono 字体必须是 1.1 版。您可以通过转到 来检查字体版本Font Book ? View ? Show Font Info,并查看版本号。

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

使用 iTerm2,您必须修改一些内容:

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


小智 3

很可能你还没有更新bash。OS X 附带bash < 4,因此您不能使用printfecho -eunicode 代码。

更新bash步骤homebrew

  1. brew install bash
  2. 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. 重新开始你的任期。

你应该被修复。