Fonts
確定哪些字型已被 fontconfig 列入黑名單?
有沒有類似的東西
fc-list
,它會列出被fontconfig明確列入黑名單/拒絕的字型檔?
不,我認為除非重新實現 fontconfig 的整個解析邏輯,否則不會有。當您將字型列入黑名單時,應用程序(包括
fc-list
)根本看不到它們。如果您檢查 source,則沒有日誌記錄,沒有(額外的)調試,也沒有鉤子。
也就是說,它是一個簡單的 fontconfig 更新檔來記錄匹配和拒絕:
--- src/fccfg.c.orig 2018-10-04 18:55:53.000000000 +0100 +++ src/fccfg.c 2018-10-04 19:15:46.000000000 +0100 @@ -2349,9 +2349,16 @@ { int i; - for (i = 0; i < patterns->nfont; i++) - if (FcListPatternMatchAny (patterns->fonts[i], font)) - return FcTrue; + printf("!check for <%s>:\n", + FcPatternFormat((FcPattern *)font,(FcChar8 *)"%{file}")); + for (i = 0; i < patterns->nfont; i++) { + FcPatternPrint(patterns->fonts[i]); + if (FcListPatternMatchAny (patterns->fonts[i], font)) { + printf("!pattern match %i of %i\n",i,patterns->nfont); + return FcTrue; + } + } + if (patterns->nfont) printf("!pattern does not match\n"); return FcFalse; } @@ -2359,10 +2366,19 @@ FcConfigAcceptFont (FcConfig *config, const FcPattern *font) { - if (FcConfigPatternsMatch (config->acceptPatterns, font)) - return FcTrue; - if (FcConfigPatternsMatch (config->rejectPatterns, font)) - return FcFalse; + if (FcConfigPatternsMatch (config->acceptPatterns, font)) { + printf("!accepting file by pattern: "); + printf("%s\n",FcPatternFormat((FcPattern *)font,(FcChar8 *)"%{file}")); + return FcTrue; + } + if (FcConfigPatternsMatch (config->rejectPatterns, font)) { + printf("!rejecting file by pattern: "); + printf("%s\n",FcPatternFormat((FcPattern *)font,(FcChar8 *)"%{file}")); + return FcFalse; + } + printf("!default accept: %s\n", + FcPatternFormat((FcPattern *)font,(FcChar8 *)"%{file}")); + return FcTrue; }
以上內容完全適用於 fontconfig-2.11.95,這是我最近發現的來源。
FC_DEBUG
列印到 stderr,上面的列印到 stdout 以避免交錯輸出問題(FcPatternPrint()
列印到 stdout)。該程式碼位於 中
libfontconfig.so
,您可以使用以下內容測試結果:LD_PRELOAD=src/.libs/libfontconfig.so.1.9.1 fc-list
並假設您的配置中有任何有趣的東西,您應該會看到結果。
fontconfig
具有可以使用環境變數啟用的調試跟踪。這可能比您想要的級別低(沒有好的報告),但資訊就在那裡。該功能在使用者手冊的調試應用程序中進行了描述:
為了幫助診斷字型和應用程序問題,在建構 fontconfig 時啟用了大量的內部調試。它由**
FC_DEBUG
**環境變數控制。該變數的值被解釋為一個數字,該值中的每一位控制不同的調試消息。進一步閱讀:
- 我盯著字型配置,字型配置又盯著我(2015)
- $$ Fontconfig $$設置字型跟踪調試輸出的環境變數?(2003)