以编程方式了解当前字体是否具有电力线补丁

enr*_*cis 4 vim fonts zsh fish

我将 vim 与vim-airline一起使用,它可以使用修补字体来获得额外的效果。

vim 航空公司

我还使用fishshell(如果您想阅读zsh此处,因为它相当于分析),其主题也使用修补字体。

我在线保存我的点文件并在不同的系统中使用它们。但在其中一些中我没有修补字体。我真的很想拥有通用的点文件,例如,如果当前字体未修补,则不使用需要修补字体的主题。同样在我的文件中vimrc,我禁用了 vim-airline 的修补字符,因为这个。

有没有一种方法可以以编程方式知道当前使用的字体是否是修补过的字体,以便可以编写完美适合所有情况的通用点文件?

rom*_*inl 5

在 Vim 中,您需要直接询问终端模拟器当前正在使用什么字体。确切的方法肯定会因终端和操作系统的不同而有所不同。如果可能的话。

如果您的所有系统上都有它,您可以使用lsof它来查找给定程序当前使用的字体:

$ lsof | grep iTerm | grep '\.\(otf\|ttf\)'
Run Code Online (Sandbox Code Playgroud)

在 GVim/MacVim 中,您将检查当前字体名称是否与某些模式匹配,例如:

if &guifont =~? 'powerline'
    " do something
else
    " do something else
endif
Run Code Online (Sandbox Code Playgroud)

假设您的字体的文件名包含该模式

但不可能保证powerline文件名中包含实际的“powerline 字体”,同样也不可能保证powerline文件名中包含的字体是实际的“powerline 字体”。

使用如下命令检查Powerline字体中某处是否存在字符串会更安全:

$ xxd ~/Downloads/FuraMono-Bold\ Powerline.otf | grep Powerline
Run Code Online (Sandbox Code Playgroud)

但这是假设:

  • xxd可用,
  • 您可以从终端模拟器或 GVim/MacVim 收集的任何信息中导出实际字体的路径。

对于像“电力线字体”这样肤浅的东西来说,有很多假设,而且似乎需要做很多工作。