같은 글꼴, 같은 이름, 두 가지 다른 파일 형식. Fontconfig는 어느 것을 사용합니까?

같은 글꼴, 같은 이름, 두 가지 다른 파일 형식. Fontconfig는 어느 것을 사용합니까?

원래 질문

다운로드했습니다cozette 글꼴, 여기에는 CozetteVector.ttf및 가 포함됩니다 CozetteVector.otf. 이 두 파일을 에 복사하고 ~/.local/share/fonts실행했습니다 fc-cache -v ~/.local/share/fonts. 이제 실행하면 fc-list | grep -i cozetteTTF 및 OTF 버전이 모두 나열되고 동일한 이름을 갖는 것을 볼 수 있습니다 CozetteVector:style=Regular.

CozetteVector그래픽 프로그램에서 글꼴을 선택할 때 어떤 글꼴이 사용됩니까?

Fontconfig는 이 상황을 어떻게 처리합니까?

두 버전을 모두 사용하면 문제가 발생하거나 충돌이 발생합니까?


이런 일이 발생하는 이유와 누군가가 관심을 가질 수 있는 이유에 대한 추가 배경 정보

Fedora 35에서 글꼴 패키지에는 일반적으로 동일한 글꼴의 OTF 및 TTF 형식이 포함되어 있습니다. 예를 들어 redhat-text-fonts패키지에는 /usr/share/fonts/redhat/RedHatText-LightItalic.otf및 가 포함되어 있습니다 /usr/share/fonts/redhat/RedHatText-LightItalic.ttf.

~/.local/share/fonts또한 에 글꼴을 복사하고 실행하여 수동으로 글꼴을 "설치"했지만 fc-cache -f시스템 제공 패키지를 사용하여 동일한 글꼴을 설치하는 상황도 발생했습니다. 이제 완전히 다른 두 디렉토리에 동일한 글꼴 모음을 정의하는 동일한 글꼴 파일이 있습니다. 파일 이름은 완전히 동일할 수도 있고 일부 변경되었을 수도 있습니다.

종종 중복 항목은 실제로 중복 항목이며 차이점은 중요하지 않습니다. 그러나 이러한 충돌이 문제가 되지 않는 경우도 있습니다. 예를 들어 한 버전은 가변 글꼴이고 다른 버전은 그렇지 않습니다. 또는 한 버전에는 여러 스타일 세트가 포함되어 있고 다른 버전에는 포함되어 있지 않습니다.

답변1

어느?

아마도 글꼴이 스캔되는 순서일 것입니다. 문서 속성을 확인해 보세요.

주문이 불안정한지 확인하기 위해 다음과 같은 방법을 시도해 볼 수도 있습니다.fc-match -f '%{fullname} %{file}\n' CozetteVector

질문?

아니요. 별도의 파일인 한 글꼴 구성은 이를 별도의 글꼴로 처리합니다.

순서는 쿼리를 작성하는 애플리케이션에 따라 달라질 수 있습니다. 이것은참조:font-config 사용자 구성(FreeDesktop 프로젝트)

글꼴 우선순위 변경을 위한 Fontconfig 규칙 예

:) 현상금을 놓쳤고 어쨌든 심층적으로 확인하기 위해 계속 나를 쫓았습니다.

다음은 동일한 유형의 두 글꼴 간의 우선순위를 조작하는 예입니다.

~/.config/fontconfig/conf.d/00-custom.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

 <!-- this drop a font from matching, also allow matching with font type
 <selectfont>
  <rejectfont>
   <pattern>
     <patelt name="family"><string>CozetteVector</string></patelt>
   </pattern>
  </rejectfont>
 </selectfont>
 -->

 <!-- this forces a type
 <match>
  <test name="family">
   <string>CozetteVector</string>
  </test>
  <edit mode="prepend" name="fontformat">
   <string>TrueType</string>
  </edit>
 </match>
 -->

 <!-- this prioritize the last one which appended, this is for TTF then OTF --> 
 <match>
  <test name="family">
   <string>CozetteVector</string>
  </test>
  <edit mode="prepend" name="fontformat">
   <string>CFF</string>
  </edit>
 </match>

<match>
  <test name="family">
   <string>CozetteVector</string>
  </test>
  <edit mode="prepend" name="fontformat">
   <string>TrueType</string>
  </edit>
 </match>

</fontconfig>

글꼴 구성 일치 디버그 및 글꼴 속성 확인

고급 매칭 맨페이지를 볼 수 있습니다. 또한 각 글꼴에 대해 사용 가능한 속성과 해당 값을 사용 fc-match -av ...하거나 이해합니다.FC_DEBUG=1 fc-match ...

노트

  • OTF는 TTF보다 더 발전했습니다. Fontconfig가 TTF보다 OTF를 우선시하더라도 놀라지 않을 것입니다. 그러나 내 주장을 뒷받침할 증거는 없지만 Ubuntu에서 발견한 비활성화된 비트맵 글꼴 유형과 유사한 업스트림 Fontconfig 구성 어딘가에 있는 것으로 의심됩니다.

  • 아치 위키 목록스타일 세트 활성화를 위한 좋은 글꼴 구성 예(아직 테스트해보진 않았습니다)

  • 그건 그렇고, alias이것은 고급 규칙에 대한 매우 강력한 기능입니다. 동일한 글꼴은 각각 고유한 설정을 가진 여러 별칭을 가질 수 있습니다. (아직 테스트해보진 않았습니다)

답변2

나는 올해 초 메일링 리스트 스레드에서 답을 찾았습니다.https://lists.freedesktop.org/archives/fontconfig/2022-January/006860.html

최신 것이 우선권을 갖습니다. 측정됩니다 FC_FONTVERSION. 둘 다 동일한 경우 요소의 순서에 따라 다릅니다. 첫 번째 것이 우선권을 갖습니다.

순서는 사용자 프로필의 디렉터리 순서에 따라 정의되는 것 같습니다. 그 외에는 완전히 임의적이며 사용자의 파일 시스템에 따라 달라질 수 있습니다. 소스 코드를 살펴봤지만 글꼴 파일 목록이 정확히 어디에 생성되는지 알 수 없습니다.

관련 정보