글꼴의 두께나 일반 스타일을 재정의하고 싶습니다. 다음 구성을 사용하면 일반 가중치/스타일을 "medium"으로 재정의할 수 있지만 "normal" 스타일("regular"와 동일한 가중치를 가짐)은 여전히 "medium" 대신 "regular"로 고정됩니다.
<fontconfig>
<alias>
<family>sans</family>
<prefer><family>Roboto</family>
</prefer>
</alias>
<match target="pattern">
<test name="style" qual="any" compare="eq"><string>normal</string></test>
<edit name="style" mode="assign" binding="strong"><string>medium</string></edit>
</match>
<match target="pattern">
<test name="weight" qual="any" compare="eq"><int>80</int></test>
<edit name="weight" mode="assign" binding="strong"><int>100</int></edit>
</match>
</fontconfig>
결과는 다음과 같습니다.
$ fc-match "Roboto: normal"
Roboto-Regular.ttf: "Roboto" "Regular"
$ fc-match "Roboto: regular"
Roboto-Medium.ttf: "Roboto" "Medium"
저는 "보통" 스타일을 미디엄으로 커버하고 싶습니다. 이것이 작동하지 않는 이유와 수행 방법은 무엇입니까?
답변1
그 이유는 normal
스타일/무게가 아니라 너비 정의이기 때문입니다.
[root@ArchTestVM ~]# fc-pattern "Roboto: normal"
Pattern has 2 elts (size 16)
family: "Roboto"(s)
width: 100(i)(s)
[root@ArchTestVM ~]# fc-pattern "Roboto: regular"
Pattern has 2 elts (size 16)
family: "Roboto"(s)
weight: 80(i)(s)
[root@ArchTestVM ~]# fc-pattern "Roboto: medium"
Pattern has 2 elts (size 16)
family: "Roboto"(s)
weight: 100(i)(s)
[root@ArchTestVM ~]# fc-pattern "Roboto: normal:medium"
Pattern has 3 elts (size 16)
family: "Roboto"(s)
weight: 100(i)(s)
width: 100(i)(s)
"Roboto:Normal" 모드에는 가중치 또는 계열 정의가 포함되어 있지 않으므로 Normal로 매핑됩니다.
너비를 일치시키고 가중치를 변경하는 것이 가능하지만 아마도 원하는 것이 아닐 수도 있습니다.
<match target="pattern">
<test name="width" qual="any" compare="eq"><int>100</int></test>
<edit name="weight" mode="assign" binding="strong"><int>100</int></edit>
</match>
<match target="pattern">
<test name="weight" qual="any" compare="eq"><int>80</int></test>
<edit name="weight" mode="assign" binding="strong"><int>100</int></edit>
</match>
[root@ArchTestVM ~]# fc-match "Roboto: normal"
SourceCodePro-Medium.otf: "Source Code Pro" "Medium"
[root@ArchTestVM ~]# fc-match "Roboto: normal:bold"
SourceCodePro-Medium.otf: "Source Code Pro" "Medium"
[root@ArchTestVM ~]# fc-pattern "Roboto: normal"
Pattern has 2 elts (size 16)
family: "Roboto"(s)
width: 100(i)(s)
[root@ArchTestVM ~]# fc-pattern "Roboto: normal:bold"
Pattern has 3 elts (size 16)
family: "Roboto"(s)
weight: 200(i)(s)
width: 100(i)(s)
너비가 100으로 정의되어 있으므로 굵게를 중간으로 변경할 수 있습니다.
아니면 기본 가중치를 변경하는 방법을 찾고 있습니까(패턴에 가중치가 100으로 정의되지 않은 경우)?
편집하다. 너비 대신 가중치로 명시적으로 지정하더라도 작동하지 않습니다.
[root@ArchTestVM ~]# fc-match "Roboto: weight=normal"
Fontconfig error: Unexpected constant name `normal' used for object `weight': should be `width'
Unable to parse the pattern
너비 80에는 일반 단어가 있지만 너비 100에는 다른 단어가 없고 키워드를 구별할 수 있기 때문에 이는 의미가 있습니다. 문제는 <const>
문서에 따라 태그의 "일반" 별칭을 "일반"으로 허용하는 이유입니다.