특정 언어/스크립트의 문자 글꼴 모음을 변경하려면 Fontconfig를 사용하시겠습니까?

특정 언어/스크립트의 문자 글꼴 모음을 변경하려면 Fontconfig를 사용하시겠습니까?

저는 Arch Linux, Deepin Desktop을 사용하고 있습니다. 나는 사용하고있다노토 세리프내 표준 글꼴이지만 아랍어 문자는 마음에 들지 않습니다. 그래서 내 목표는 아랍어 문자에만 사용되는 다른 글꼴을 사용하는 것입니다.

내가 시도한 것은 다음과 같습니다. /etc/fonts/conf.d/다음 내용으로 새 구성 파일을 만들었습니다 .

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test name="lang" compare="contains">
            <string>ar</string>
        </test>
        <test qual="any" name="family">
            <string>sans-serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Naskh Arabic</string>
        </edit>
    </match>

    <match target="pattern">
        <test name="lang" compare="contains">
            <string>ar</string>
        </test>
        <test qual="any" name="family">
            <string>serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Naskh Arabic</string>
        </edit>
    </match>
</fontconfig>

나는 그 다음 도망쳤다 fc-cache -r. 그러나 이것은 작동하지 않습니다. 동일한 글꼴이 여전히 사용되고 실행 중은 이전과 동일하게 fc-match반환됩니다 .NotoSerif-Regular.ttf: "Noto Serif" "Regular"

답변1

많은 Noto 글꼴은 아랍어 스크립트를 지원한다고 시스템에 보고하며 부분적으로 지원합니다. 이 글꼴 중 하나는우르두어어떤 이유로든 아랍어 텍스트를 지원하는 다른 글꼴보다 우선순위가 높은 글꼴입니다.

당신은 할 수선호하다다음과 같이 특정 글꼴이 다른 글꼴보다 선호됩니다.

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

<alias>
  <family>sans-serif</family>
  <prefer>
   <family>Noto Sans</family>
   <family>Noto Naskh Arabic</family>
  </prefer>
 </alias>

 <alias>
  <family>serif</family>
  <prefer>
   <family>Noto Serif</family>
   <family>Noto Naskh Arabic</family>
  </prefer>
 </alias>

 <alias>
  <family>monospace</family>
  <prefer>
   <family>Noto Sans Mono</family>
   <family>Noto Naskh Arabic</family>
  </prefer>
 </alias>

</fontconfig>

글꼴의 위치가 높을수록 인기가 높습니다. 이 경우에는 Noto Naskh Arabic다른 아랍어 스크립트 글꼴을 선호합니다.

물론 원하는 언어나 글꼴로 이 작업을 수행할 수 있습니다.

어떤 이유로든 에 있는 사용자 프로필만 작동합니다 ~/.config/fontconfig/fonts.conf. 환경 변수는 $XDG_CONFIG_HOME홈 디렉터리 .config내의 디렉터리 로 설정되어야 하므로 $HOME/.config.

그런 다음 구성을 다시 작성하여 적용해야 합니다 fc-cache. 새로 실행된 애플리케이션에만 새 구성이 표시됩니다. 변경 사항을 전체적으로 적용하려면 X 서버 또는 데스크탑을 다시 시작하십시오.

편집하다:로케일을 일치시키면 일부 사이트에서는 아랍어 UTF-8 문자를 표시할 때 로케일을 사용하기 ar때문에 모든 사이트에서 작동하지 않습니다 .en

로 시작하는 구성 파일을 읽고 읽으면 /etc/fonts/conf.d이것이 정답이라는 것을 알 수 있습니다.README[30-40]

웹사이트에 Serif 글꼴이 필요하다고 가정해 보겠습니다. Fontconfig는 먼저 목록을 반복하고 Noto Serif아랍어 문자를 찾으면 목록의 두 번째 글꼴을 사용합니다. Noto Naskh Arabic그리고 해당 글꼴이 아랍어 스크립트를 지원하는 것을 발견하면 해당 글꼴을 사용합니다.

관련 정보