2017-11-26 15 views
1

최근 리눅스에서 fontconfig을 사용하여 serif, sans-serif 및 monospaced 글꼴의 시스템 기본 글꼴을 설정하는 방법을 알아 냈습니다.fontconfig에서 유니 코드 범위/코드 포인트 당 글꼴을 설정하는 방법은 무엇입니까?

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

<match> 
    <test qual="any" name="family"><string>serif</string></test> 
    <edit name="family" binding="strong" mode="prepend_first"> 
    <string>Gentium</string> 
    <string>Sun-ExtA</string> 
    <string>HanaMinA</string> 
    <string>HanaMinB</string> 
    </edit> 
    </match> 

</fontconfig> 

binding="strong" mode="prepend_first" 속성이 일치하는 규칙이 다른 설정보다 우선 있는지 확인하고 글꼴 이름의 순서는 폰트하지 않는 경우 보장 : 기본적으로 다음과 같은 내용으로 ~/.config/fontconfig/fonts.conf에 XML 구성 파일을 저장 주어진 코드 포인트/문자를 포함하면 목록의 다음 글꼴이 시도됩니다 (이 목록은 위에서 아래로 적용됩니다. 실제로는 나중에 바인딩되는 더 강력한 논리 여야합니다.).

이 구성의 중요한 점은 텍스트 편집기와 터미널 에뮬레이터에서 모두 잘 작동한다는 것입니다.

그러나 여전히 nag가 있습니다. 주어진 글꼴에 주어진 글리프가 포함되어 있지만 다른 글꼴이 해당 코드 포인트에 우선 할 수있는 경우가 많습니다. 예를 들어 Sun-ExtA은 CJK 문자의 기본 글꼴이지만 CJK가 아닌 문자가 많이 포함되어 있으며 문제가되는 글리프가 있습니다.

한다고 가정 내가 Sun-ExtA에서 〇 U+3007 IDEOGRAPHIC NUMBER ZERO의 모양을 좋아하지 않아 오히려 그것을위한 HanaMinA을 사용, 어떻게 내가 fontconfig으로 그렇게 할 수 있을까? 분명히 HanaMinA에 대한 항목의 우선 순위를 Sun-ExtA 이상으로 지정할 수는 없습니다. 두 글꼴 모두에 포함 된 글리프의 모두에 영향을 미치므로 분명히 우선 순위를 지정할 수 없습니다.

내 직감 요소 <charset> 포함하는 용액합니다 ( fontconfig user documentation에 따른 "이 요소는 적어도 하나 개 유니 코드 코드 포인트 이상의 요소 보유") (및/또는 <range>을 "이 요소가 있어야한다는 것이다 범위 표현의 두 요소를 보유하고 있습니다 "- 아마도 유니 코드 코드 포인트의 범위를 나타낼 수 있습니다. 하지만 이러한 요소를 사용하는 방법에 대한 단 하나의 예는 찾을 수 없습니다.

단일 유니 코드 코드 포인트 또는 코드 포인트 범위에 특정 글꼴을 사용하도록 fontconfig를 구성 할 수 있습니까?

답변

0
사용 fontconfig 라이브러리의 특정 로케일에 대한 글꼴을 홍보 할 수

:

글꼴이 원하지 않는 전에 공통 라틴어/그리스어/키릴 후 추진되도록 fontconfig 라이브러리 우선 순위의 신중한 사용이 필요합니다

<match> 
    <test name="lang"> 
     <string>[RFC-3066 language code]</string> 
    </test> 
    <test name="family"> 
     <string>[genericname]</string> 
    </test> 
    <edit name="family" mode="prepend"> 
     <string>[fontname]</string> 
    </edit> 
    </match> 
    <alias> 
    <family>[fontname]</family> 
    <default> 
     <family>[genericname]</family> 
    </default> 
    </alias> 
글꼴 (CJK 라틴 글립 문자는 끔찍한 경향이 있기 때문에).

물론,이 재정의가 필요한 로케일에서 읽고 쓸 때 소프트웨어 환경이 fontconfig에 신호를 보낼 수 있다고 가정합니다.

0

<edit> 태그에 <minus> 요소를 포함하여 검색 패턴을 사용하면 문자 세트에서 뺄셈을 허용합니다.

<match target="scan"> 
    <test name="family" compare="not_eq"> 
    <string>VL Gothic</string> 
    </test> 
    <edit name="charset" mode="assign"> 
    <minus> 
     <name>charset</name> 
     <range> 
     <int>0x0021</int> 
     <int>0x00FF</int> 
     </range> 
    </minus> 
    </edit> 
</match> 

비슷한을 :

주로 글꼴에서 "나쁜"또는 버그가 문자를 제거하지만, 계속 진행하기 위해 설계되었습니다, 당신은 당신이 사용하고자하는 일 이외의 모든 글꼴과 일치하는 <test>을 쓸 수 있습니다 구성을 사용하여 글꼴에서 전체 lang을 제거 할 수도 있습니다.

내가 알기로는 지금까지는 아무 것도 증명되지 않았다. 알아 냈다. from a redhat bug