xterm은 일반 문자 대신 이탤릭체를 표시합니다.

xterm은 일반 문자 대신 이탤릭체를 표시합니다.

golangGoogle Go 글꼴을 사용자로 설치했습니다 .

  • 나는 go*.ttf~/.fonts를 넣었다
  • 나는 달렸다fc-cache -fv

이제 다음을 제외한 모든 곳에서 새 글꼴을 사용할 수 있습니다.xterm

$ fc-match gomono
GoMono-Regular.ttf: "GoMono" "Regular"
$ xterm -fa gomono

나는 얻다

여기에 이미지 설명을 입력하세요.

보시다시피, xterm글꼴의 기울임꼴 변형을 가져오는 중... gomono예를 들어 다른 프로그램에서 이것을 사용했는데 emacs, 물론 일반 로마 글꼴도 가져옵니다...

제가 뭔가를 놓치고 있는 걸까요, 아니면 그 제품만의 특이한 점인가요 xterm?

저는 xterm정말 훌륭하고 오래된 데비안 sid를 사용하고 있습니다 xterm.

답변1

사실 이것은 xterm이 해결할 수 없는 Fontconfig의 특이한 점입니다. 글꼴 모음을 추가 매개변수로 대체한다고 생각할 수 있는 일부 다른 응용 프로그램에서는 몇 가지 개선 사항이 있을 수 있습니다.

당신이 달리면

xterm -report-fonts -fa 'gomono'

로드된 내용이 정확히 표시됩니다.

Loaded XftFonts(gomono[normal])
                first char:    32
                last char:     64258
                missing-chars: 63567
                present-chars: 660
        Go Mono-8
        familylang=en
        style=Italic
        stylelang=en
        fullname=Go Mono Italic
        fullnamelang=en
        slant=100
        weight=80
        width=100
        pixelsize=10.6712
        spacing=100
        foundry=b&h
        antialias=True
        hintstyle=3
        hinting=True
        verticallayout=False
        autohint=False
        globaladvance=True
        file=/users/tom/.fonts/gomono/Go-Mono-Italic.ttf

그리고글꼴 구성 사용 설명서110이라고 해 예경사. Fontconfig는 다음 파일 목록을 확인합니다 gomono.

Go-Bold-Italic.ttf
Go-Bold.ttf
Go-Italic.ttf
Go-Medium-Italic.ttf
Go-Medium.ttf
Go-Mono-Bold-Italic.ttf
Go-Mono-Bold.ttf
Go-Mono-Italic.ttf
Go-Mono.ttf
Go-Regular.ttf

내부 채점 시스템을 기반으로 기울임꼴 글꼴을 선호합니다. 환경 변수를 FC_DEBUG127(각 비트마다 의미가 있음)로 설정하면 점수를 볼 수 있습니다. 다음은 일반 글꼴과 기울임꼴 글꼴을 비교한 발췌문입니다.

정기적인:

 slant: 100001  0(i)(s),  100(i)(w)
 weight: 20001  100(i)(s),  80(i)(w)
 width: 1  100(i)(s),  100(i)(w)
 lang: 1001  "en-US"(s),  aa|af|av|ay|be|bg|bi|br|bs|ca|ce|ch|co|cs|cy|da|de|el|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|hr|hu|ia|id|ie|ik|io|is|it|ki|kl|kum|la|lb|lez|lt|lv|mg|mh|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|os|pl|pt|rm|ro|ru|se|sel|sk|sl|sma|smj|smn|so|sq|sr|ss|st|sv|sw|tk|tl|tn|tr|ts|uk|uz|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|ms|na|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(w)
 fontversion: 2.14735e+12  2147483647(i)(s),  131269(i)(w)
 decorative: 1  FcFalse(s),  FcFalse(w)
Score 0 0 1 1001 1002 0 0 0 100001 20001 1 1 0 0 0 2.14735e+12
Font 21 Pattern has 20 elts (size 20)
        family: "Go Mono"(w)
        familylang: "en"(w)
        style: "Regular"(w)
        stylelang: "en"(w)
        fullname: "Go Mono"(w)  
        fullnamelang: "en"(w)
        slant: 0(i)(w)
        weight: 80(i)(w)
        width: 100(i)(w)
        spacing: 100(i)(w)
        foundry: "b&h"(w)   
        file: "/users/tom/.fonts/gomono/Go-Mono.ttf"(w)   

이탤릭체:

 slant: 1  0(i)(s),  0(i)(w)
 weight: 80001  100(i)(s),  180(i)(w)
 width: 1  100(i)(s),  100(i)(w)
 spacing: 1  100(i)(s),  100(i)(w)   
 lang: 1001  "en-US"(s),  aa|af|av|ay|be|bg|bi|br|bs|ca|ce|ch|co|cs|cy|da|de|el|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|hr|hu|ia|id|ie|ik|io|is|it|ki|kl|kum|la|lb|lez|lt|lv|mg|mh|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|os|pl|pt|rm|ro|ru|se|sel|sk|sl|sma|smj|smn|so|sq|sr|ss|st|sv|sw|tk|tl|tn|tr|ts|uk|uz|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|ms|na|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(w)
 fontversion: 2.14735e+12  2147483647(i)(s),  131269(i)(w)
 decorative: 1  FcFalse(s),  FcFalse(w)
Score 0 0 1 1001 1002 1 0 0 1 80001 1 1 0 0 0 2.14735e+12 
Font 20 Pattern has 19 elts (size 19)
        family: "Go Mono"(w)
        familylang: "en"(w)
        style: "Italic"(w)
        stylelang: "en"(w)
        fullname: "Go Mono Italic"(w)
        fullnamelang: "en"(w)
        slant: 100(i)(w)
        weight: 80(i)(w)
        width: 100(i)(w)
        foundry: "b&h"(w)
        file: "/users/tom/.fonts/gomono/Go-Mono-Italic.ttf"(w)

마침내

 slant: 1  0(i)(s),  0(i)(w)
 weight: 20001  100(i)(s),  80(i)(w)
 width: 1  100(i)(s),  100(i)(w)
 lang: 2001  "en-US"(s),  (w)
 fontversion: 2.14748e+12  2147483647(i)(s),  0(i)(w)
 decorative: 1  FcFalse(s),  FcFalse(w)
Score 0 0 1001 2001 1002 0 0 0 1 20001 1 1 0 0 0 2.14748e+12
Best score 0 0 1 1001 1002 0 0 0 100001 20001 1 1 0 0 0 2.14735e+12
Pattern has 19 elts (size 19)
        family: "Go Mono"(w)
        familylang: "en"(w)  
        style: "Italic"(w)  
        stylelang: "en"(w) 
        fullname: "Go Mono Italic"(w)
        fullnamelang: "en"(w)
        slant: 100(i)(w)
        weight: 80(i)(w)
        width: 100(i)(w)
        foundry: "b&h"(w)
        file: "/users/tom/.fonts/gomono/Go-Mono-Italic.ttf"(w)

항목 8과 9(0부터 계산)만 다릅니다.원천fcmatch.c)는 다음 숫자에 대한 점수를 향상(낮추기)하는 마지막으로 확인한 글꼴을 선택합니다.

        for (i = 0; i < PRI_END; i++)
        {   
            if (best && bestscore[i] < score[i])
                break;
            if (!best || score[i] < bestscore[i])
            {   
                for (i = 0; i < PRI_END; i++)
                    bestscore[i] = score[i];
                best = s->fonts[f];
                break;
            }
        }

내 추적에서는 간격과 너비를 세부 사항의 결정 요소로 사용하여 기울임꼴 글꼴로 표시됩니다. 현재 소스코드를 보면 다른 기능도 체크되어 있는 것을 볼 수 있는데(그래서 세부 내용은 다를 수 있음) 기본 알고리즘은 동일합니다.

약간의 조사를 통해 고정 너비 글꼴을 사용하라는 xterm의 요구 사항으로 인해 Fontconfig의 문제가 발생했다는 사실이 밝혀졌습니다. 옵션은 다음과 같습니다(참조사용자 매뉴얼):

  proportional    spacing         0
  dual            spacing         90
  mono            spacing         100
  charcell        spacing         110

아니면 선택하지 않은 상태로 두세요. 비례 글꼴을 선택하면 보기에 좋지 않지만 xterm 소스 코드에서 제한을 제거하는 것이 가장 확실한 해결책입니다. Fontconfig에는 이미 모드에 있는 설정을 재정의할 수 있는 방법이 없습니다.

이것은 xterm의 버그가 아니라 해결 방법입니다. 이 spacing=mono속성을 사용한 원래 변경 사항이 xterm에 추가되었습니다.2000년 11월저자: Keith Packard(그는 또한 Xft 및 Fontconfig의 원저자이기도 합니다).

다음을 수행하여 글꼴 구성의 오류를 쉽게 보여줄 수 있습니다.

fc-match 'Go Mono:spacing=monospace'

이것은 나에게 준다

Go-Mono-Italic.ttf: "Go Mono" "Italic"

관련 정보