golang
Google 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_DEBUG
127(각 비트마다 의미가 있음)로 설정하면 점수를 볼 수 있습니다. 다음은 일반 글꼴과 기울임꼴 글꼴을 비교한 발췌문입니다.
정기적인:
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"