Rxvt의 Xft 글꼴 사양: 클라이언트측 글꼴인가요, 아니면 서버측 글꼴인가요?

Rxvt의 Xft 글꼴 사양: 클라이언트측 글꼴인가요, 아니면 서버측 글꼴인가요?

헤드리스 Gentoo 상자가 있고 그 위에서 X 응용 프로그램을 실행하고 싶지만 Windows PC에서 실행되는 Cygwin Xorg 서버로 디스플레이를 전달하고 싶습니다.

작동하지만 이 경우 X 응용 프로그램에서 사용할 일부 글꼴을 지정하면 실제로 어떤 글꼴이 사용되는지 잘 모르겠습니다. Gentoo 상자에 있는 것(X 응용 프로그램이 실행되는 곳)? 아니면 내 Cygwin에 설치된 것(X 애플리케이션이 표시되는 곳)인가요?

DejaVu Sans Mono예를 들어 , urxvt에서 글꼴을 사용하고 싶다면 ~/.Xresources젠투 상자는 다음과 같습니다:

URxvt*font: xft:DejaVu Sans Mono:size=12

젠투 상자에 글꼴을 설치하고 활성화했습니다. 다음은 출력입니다eselect fontconfig list

  [1]   10-autohint.conf
  [2]   10-no-sub-pixel.conf
  [3]   10-scale-bitmap-fonts.conf *
  [4]   10-sub-pixel-bgr.conf
  [5]   10-sub-pixel-rgb.conf
  [6]   10-sub-pixel-vbgr.conf
  [7]   10-sub-pixel-vrgb.conf
  [8]   10-unhinted.conf
  [9]   11-lcdfilter-default.conf
  [10]  11-lcdfilter-legacy.conf
  [11]  11-lcdfilter-light.conf
  [12]  20-unhint-small-dejavu-sans.conf
  [13]  20-unhint-small-dejavu-sans-mono.conf
  [14]  20-unhint-small-dejavu-serif.conf
  [15]  20-unhint-small-vera.conf *
  [16]  25-unhint-nonlatin.conf
  [17]  30-metric-aliases.conf *
  [18]  30-urw-aliases.conf *
  [19]  40-nonlatin.conf *
  [20]  45-latin.conf *
  [21]  49-sansserif.conf *
  [22]  50-user.conf *
  [23]  51-local.conf *
  [24]  57-dejavu-sans.conf
  [25]  57-dejavu-sans-mono.conf *

그런 다음 젠투 상자에서 xrdb를 실행하여 리소스를 활성화합니다(이렇게 하면 젠투 상자의 글꼴이 사용될 것이라고 믿게 됩니다):

xrdb ~/.Xresources

urxvt를 시작하면 다음과 같이 불평합니다.

urxvt: 기본 글꼴 세트를 로드할 수 없습니다. -fn을 사용하여 유효한 글꼴 세트를 지정하고 중단하십시오.

xdb -query및 의 출력은 appres URxvt동일합니다(아래 두 줄만).

URxvt*font:     xft:DejaVu Sans Mono:size=12
URxvt*scrollBar:        false

글꼴 설치에는 문제가 없다고 생각합니다 fc-list|grep "DejaVu Sans Mono". 출력은 다음과 같습니다.

/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf: DejaVu Sans Mono:style=Bold Oblique
/usr/share/fonts/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book
/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf: DejaVu Sans Mono:style=Bold
/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf: DejaVu Sans Mono:style=Oblique

의 출력은 strace urxvt상당히 깁니다. 다음은 에 지정된 글꼴과 관련이 있는 것으로 보이는 부분입니다 ~/.Xresources.

poll([{fd=6, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=6, revents=POLLOUT}])
writev(6, [{"1\1\t\0\240\17\34\0", 8}, {"xft:DejaVu Sans Mono:size=12", 28}, {"", 0}], 3) = 36
poll([{fd=6, events=POLLIN}], 1, -1)    = 1 ([{fd=6, revents=POLLIN}])
recv(6, "\1\0=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096, 0) = 32
recv(6, 0x817b310, 4096, 0)             = -1 EAGAIN (Resource temporarily unavailable)
recv(6, 0x817b310, 4096, 0)             = -1 EAGAIN (Resource temporarily unavailable)
write(1, "urxvt: ", 7urxvt: )                  = 7
write(1, "unable to load base fontset, ple"..., 77unable to load base fontset, please specify a valid one using -fn, aborting.
) = 77

답변1

글꼴을 표시하기 위한 전통적인 X11 인터페이스는 클라이언트가 X 서버에 메시지를 보내도록 합니다. 기본적으로 "이 문자열을 이 글꼴로 표시"합니다. 따라서 글꼴은 X 서버에 있습니다. X 서버는 로컬 또는 외부에서 글꼴을 로드합니다.XFont 서버(예: xfs). 글꼴 서버는 주로 디스크 공간이 없거나 거의 없는 모니터에 적합합니다. 이는 틈새 사용 사례가 되었습니다. X11 글꼴 문자열(접두사 포함 또는 제외)을 지정하면 x:Rxvt는 레거시 인터페이스를 사용합니다.

기존 X11 인터페이스는 비트맵 글꼴로 제한됩니다. 최신 시스템은 클라이언트 측에서 텍스트를 렌더링하고 결과 비트맵을 서버로 보내는 접근 방식을 사용하는 경향이 있습니다. 접두사를 사용하면 xft:URxvt는 다음을 사용합니다.xft글꼴 렌더링 인터페이스. 클라이언트 컴퓨터에 로드된 글꼴을 기반으로 클라이언트 측에서 렌더링이 수행됩니다.

xrdb -query어떤 리소스가 로드되었는지 확인하려면 실행하세요 . 실행 appres URxvt하여 appres urxvt어떤 리소스가 적용되는지 확인합니다(인스턴스의 리소스가 urxvt클래스의 리소스보다 우선합니다 URxvt). 글꼴 설정이 사용되지 않는 이유 중 하나는 다른 설정(또는 URxvt.font) urxvt*font이 글꼴 설정을 재정의하는 경우입니다.

URxvt가 Xft 지원 없이 컴파일되었을 수 있습니다(컴파일 시간 옵션임). 리소스가 나열되어 있는지 urxvt --help 2>&1 | grep buffered:확인하려면 실행하세요 . 이는 Xft 지원이 있는 경우에만 나타납니다. bufferedXft 지원이 없으면 urxvt는 리소스 값을 fn유효하지 않은 X 글꼴 문자열로 해석합니다.

답변2

xorg-xfd 패키지 설치 문제를 해결했습니다. 나는 Giles가 게시한 답변을 읽고 내 패키지를 나열하기로 결정했습니다. rxvt-unicode 패키지를 빌드하면 libxft가 설치되지만 작동하지 않습니다. 따라서 Xorg에서 사용하는 Xft에 할당된 선택적 종속성을 나열했습니다. Xfd는 X11 핵심 프로토콜이나 libxft를 사용하여 모든 글꼴을 표시하는 일을 담당합니다.

관련 정보