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


18

我正在寻找一种在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

为了测试终端中的字形,我读到这应该可行:

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中(我测试过的所有电力线字体都会发生这种情况),某些字符会渲染,而其他字符不会渲染:

iTerm2和zsh
(来源:staticflickr.com

在安装了vim-airline的macvim(终端)中,某些字符会渲染,但有些会错误地渲染:

vim航空公司
(来源: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

Answers:


12

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

为了使以下工作正常,Input Mono字体必须为1.1版。您可以转到Font Book → View → Show Font Info,检查字体版本,然后查看版本号。

使用Terminal.app即可使用。只需选择字体就可以了。

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

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

取消Use a different font for non-ASCII text.检查对我来说很重要。
camomileCase16年

2

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

步骤更新bashhomebrew

  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. 重新开始学期。

而且你应该被解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.