fc-match가 어떻게 일치하는지 알아내는 방법?


18

내가 실행할 때 fc-mach Sans반환 DejaVuSans.ttf: "DejaVu Sans" "Book"하지만 같은 실행 fc-match "Sans "또는 fc-match "Sans 9"반환합니다 unifont.ttf: "unifont" "Medium". 나는 항상 DejaVu Sans를 사용하는 것을 선호하지만 fontconfig가 unifont를 선택하는 이유를 알 수 없습니다. 전역 구성이나 로컬 구성 모두 unifont를 언급하지 않는 것 같습니다 ( grep -ri unifont /etc/fonts/ ~/.fonts.conf아무 것도 반환하지 않음). LC_DEBUG를 가지고 노는 것도 도움이되지 않았습니다. fontconfig가 왜 이런 식으로 작동하는지 정보를 얻는 방법이 있습니까?

답변:


11

간단히 살펴보면 여기에서 제대로 작동하고 DejaVu와 Unifont가 모두 설치되어 있기 때문에 진정한 fontconfig 버그처럼 보입니다.

$ fc-match Sans
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans"
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans "
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans 9"
DejaVuSans.ttf: "DejaVu Sans" "Book"

그러나 자세히 살펴보면 더 자세한 내용을 볼 수 있습니다. 여전히 어딘가에 fontconfig 버그가있을 수 있지만 fc-match아무것도 찾지 못하면 기본값을 반환합니다. 내 시스템에서 기본값은 DejaVu입니다.

$ fc-match uni
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match unifont
Unifont.ttf: "unifont" "Medium"
$ fc-match 4e5zedrkbxp
DejaVuSans.ttf: "DejaVu Sans" "Book"

매뉴얼 페이지 fc-match(1)는 명령이 정확히 일치하지는 않지만 가장 일치한다고 생각하는 것을 반환합니다. 당신은 -a더 간결하거나 더 간결한 것을 볼 수 있습니다 -s:

$ fc-match -s uni # now it also finds unifont
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
n019003l.pfb: "Nimbus Sans L" "Regular"
helvR12-ISO8859-1.pcf.gz: "Helvetica" "Regular"
FreeSans.ttf: "FreeSans" "нормален"
KanjiStrokeOrders.ttf: "KanjiStrokeOrders" "Medium"
Eadui.ttf: "Eadui" "Medium"
Unifont.ttf: "unifont" "Medium"
FreeSerif.ttf: "FreeSerif" "нормален"
cu12.pcf.gz: "ClearlyU" "Regular"
cu-pua12.pcf.gz: "ClearlyU PUA" "Regular"
10x20.pcf.gz: "Fixed" "Regular"

당신은 단순히 당신을 "나사"라고 말하고 그 위에 다른 검색을 추가하여 원하는 방식으로 일치시킬 수 있습니다.

$ fc-match -s uni | grep -i uni
Unifont.ttf: "unifont" "Medium"

그러나 귀하의 질문은 정확히 어떻게 일치하는지에 관한 것입니다. FcFontMatch(3)또한 기본 / 구성된 값을 사용하는지 대략 확인하고 전달 된 검색어를 먼저 수정하는지 확인합니다. 더 깊은 것은 코드검사해야합니다 (위에서 언급 한 기능으로 시작).


5

FontConfig는 일치 기준의 "거리"를 기반으로 특성을 일치시킵니다. 배후에서 무슨 일이 일어나고 있는지 보려면 환경 변수 FC_DEBUG = 3 을 설정하고 검색을 다시 실행하십시오. 도움이 될 수있는 디버깅 정보가 표시됩니다. FontConfig 코드를 읽을 필요는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.