libvte 유니코드 글꼴 처리

libvte 유니코드 글꼴 처리

다음의 텍스트가 포함된 일부 ANSI 텍스트를 표시하려고 합니다.유니코드 전용 영역. 이 문자를 포함하는 두 개의 글꼴이 있습니다. 첫 번째는 PCF(비트맵) 글꼴이고 두 번째는 첫 번째 글꼴에서 생성되고 정확히 동일한 문자 집합을 포함하는 TTF 글꼴입니다.

PCF 글꼴은 Debian 및 Ubuntu의 "tv-fonts" 패키지에서 사용할 수 있으며 "teletext"라고 합니다. TTF 버전 사용 가능여기.

내 글꼴 중 하나를 사용하도록 터미널을 구성한 다음 cat'ing하여 이 텍스트 파일을 표시했습니다.이 파일.

이렇게 하면 터미널마다 다른 결과가 생성됩니다.

Xterm은 PCF 글꼴만 사용할 수 있습니다. xterm -fg white -bg black -fn teletext올바른 출력이 표시됩니다 .

xterm PCF

터미네이터는 PCF 및 TTF 글꼴을 사용할 수 있습니다. PCF 글꼴을 사용하면 출력이 정확합니다.

터미네이터 PCF

그러나 Terminator에게 TTF 글꼴을 사용하라고 지시하면 출력에서 ​​큰 "BBC" 로고 뒤에 예상치 못한 문자가 포함됩니다.

터미네이터.ttf

문제의 문자는 , 유니코드 0xee20입니다. PCF 및 TTF 글꼴 모두에서는 빈 공간입니다.

xfce4-terminal을 사용해도 결과는 동일합니다. Terminator와 Xfce4 터미널 모두 libvte를 사용합니다.

그래서 내 질문은 다음과 같습니다

  • libvte가 잘못된 문자 모양을 표시하는 이유는 무엇입니까?
  • TTF와 PCF가 다르게 동작하는 이유는 무엇입니까? (두 글꼴 모두 동일한 글리프 세트를 포함한다는 점을 기억하십시오.)

업데이트: 이는 실제로 VTE와 관련이 있는 것이 아니라 Gtk 및 X11 자체와 관련이 있는 것으로 보입니다. 마우스 패드와 같은 텍스트 편집기에서 글꼴을 설정할 때(GtkSourceView 사용) 동일한 결과를 볼 수 있습니다.

답변1

실제로 xterm( 및 xfd)는 이 옵션을 사용하여 트루타입 글꼴을 사용할 수 있습니다 -fa. 후자의 경우 0xee20글꼴에 누락된 것을 확인할 수 있습니다.

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

이를 고려하면 xterm은 누락된 문자 모양을 표시합니다(단 하나의 글꼴만 사용하므로). vte는 아마도 동일한 작업을 수행할 것입니다. 사용 중인 대체 글꼴 중 어느 것도 이 특별한 글꼴을 갖고 있지 않기 때문입니다.사용암호.

xfd비교를 위해 다음은 PCF 글꼴(글리프 포함)을 보여주는 스크린샷입니다.

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

글꼴이 "동일"한지 여부는 글꼴 생성(및 유지 관리) 방법에 따라 다릅니다. TrueType 글꼴의 스크린샷에는 누락된 글리프가 7개 있지만 PCF 글꼴에는 없습니다.

관련 정보