幫助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“無權保留權利”