fc-match의 일치 여부를 확인하는 방법은 무엇입니까?

fc-match의 일치 여부를 확인하는 방법은 무엇입니까?

실행하면 fc-mach Sans반환되지만 다음과 같이 실행 DejaVuSans.ttf: "DejaVu Sans" "Book"하면 반환됩니다 . 나는 항상 DejaVu Sans를 사용하는 것을 선호하지만, Fontconfig가 unifont를 선택하는 이유를 이해하지 못합니다. 전역 구성이나 로컬 구성 모두 unifont( 아무것도 반환하지 않음)를 언급하지 않는 것 같습니다. LC_DEBUG를 사용해도 나에게는 도움이 되지 않았습니다. Fontconfig가 이런 방식으로 작동하는 이유에 대한 정보를 얻을 수 있는 방법이 있습니까?fc-match "Sans "fc-match "Sans 9"unifont.ttf: "unifont" "Medium"grep -ri unifont /etc/fonts/ ~/.fonts.conf

답변1

잠깐 살펴보니, 여기에서는 잘 작동하고 DejaVu와 Unifont가 설치되어 있기 때문에 실제 글꼴 구성 버그처럼 보입니다.

$ 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"

그러나 자세히 살펴보면 더 자세한 내용을 볼 수 있습니다. 어딘가에 여전히 글꼴 구성 오류가 있을 수 있지만 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)또한 기본값/구성된 값을 사용하는지 대략적으로 확인하고, 전달한 검색어를 먼저 수정하는지 명시적으로 확인합니다. 더 깊은 내용을 위해서는코드 확인(위에서 언급한 기능부터 시작하세요)

답변2

FontConfig는 일치 기준으로부터의 "거리"를 기준으로 속성을 일치시킵니다. 비하인드 스토리가 궁금하시다면환경 변수 설정FC_DEBUG=3을 입력하고 검색을 다시 실행하세요. 그러면 유용할 수 있는 디버깅 정보가 표시됩니다. FontConfig 코드를 읽을 필요는 없습니다.

관련 정보