帮助FontConfig发现隐藏的字体。
运行脚本help-fontconfig-discover-hidden-fonts-for.sh以刷新fontconfig中可用的字体列表:
$ ./help-fontconfig-discover-hidden-fonts-for.sh [name] [cache]
脚本采用两个参数:
对于订阅服务的隐藏缓存文件夹中的每个隐藏字体,该脚本在FontConfig已知的位置中创建一个符号链接,并在带有给定服务名称的子文件夹中。
例如,如果您订阅了称为fontyli的虚拟字体订阅服务,该服务将其局部作为隐藏字体文件存储在文件夹中~/Library/Application Support/Fontitious/.fonts/ ,则需要在字体订阅中每次更改后调用脚本,为:
$ ./help-fontconfig-discover-hidden-fonts-for.sh fontitious
~/Library/Application Support/Fontitious/.fonts
我正在Macos Catalina上使用此脚本;在运行脚本并重新启动每个应用程序后,隐藏的字体在GIMP,Krita,Inkscape和Scribus中成功列出。
Inkscape 1.x ships its own version of fontconfig, with a restricted configuration which requires a bit more work: if the folder ~/Library/Application Support/org.inkscape.Inkscape is found, an extra configuration file, 00-load-xdg-fonts.conf is created in org.inkscape.Inkscape/config/fontconfig/conf.d/ by the script, to allow loading fonts from the与Gimp,Krita和Scribus开箱即用的本地位置。
字体订阅服务倾向于将其字体存储在订户的本地驱动器上,因为隐藏的文件夹中的隐藏文件。
递归扫描字体文件夹时,FontConfig默默地忽略了任何隐藏的文件或文件夹。当将其明确包含在fontconfig配置中时,仍然可以让fontconfig考虑隐藏的字体文件夹,例如~/.fonts 。但是当前没有办法使fontconfig考虑隐藏的字体文件。
源代码明确滤除以a开头的任何文件名. :
while ((e = readdir (d)))
{
if (e->d_name[0] != '.' && strlen (e->d_name) < FC_MAX_FILE_LEN)
{
strcpy ((char *) base, (char *) e->d_name);
if (!FcStrSetAdd (files, file_prefix)) {
ret = FcFalse;
goto bail2;
}
}
}
- fontconfig/src/fcdir.c,第256–266行
该项目通过在FontConfig中配置的本地文件夹之一的子文件夹中为隐藏字体文件创建符号链接来提供简单的解决方法。
EricBréchemier
Creative Commons CC0“无权保留权利”