Xterm은 유니코드 문자를 표시하지 않습니다.

Xterm은 유니코드 문자를 표시하지 않습니다.

광산은 xterm유니코드를 지원합니다. 예를 들어 유로 기호가 표시됩니다.

echo -e '\xe2\x82\xac'

그러나 특정 문자는 표시되지 않습니다.

PL_BRANCH=$'\ue0a0'
echo $PL_BRANCH

다른 터미널(터미네이터)에서는 문자가 올바르게 표시됩니다. 두 터미널 모두에서 동일한 글꼴(Inconsolata)을 사용하고 있습니다.

원인은 무엇이며 해결 방법은 무엇입니까?

답변1

문자가 실제로 지정한 글꼴이 아닙니다. 다음 명령을 사용하여 이를 볼 수 있습니다 xfd.

xfd -fa inconsolata

이는 마지막 코드 포인트가 U+2423임을 보여줍니다. 좀 더 읽어보니 이 문자가 유니코드로 되어 있는 것으로 나타났습니다.사용지역, 그리고 (사실에도 불구하고일부글꼴에서 제공할 수 있음)에는 표준 의미가 없습니다.

~부터2018년 말, xterm은 다양한 TrueType 글꼴을 로드할 수 있지만 현재 사용 가능한 글꼴에는 U+E0A0이 포함되어 있지 않습니다.

사용된 실제 글꼴을 식별할 수 있다면 누군가가 이를 처리할 수 있는 xterm 버전을 지적할 수 있습니까?

글꼴 검색에 영향을 미치는 xterm과 동일한 라이브러리 인터페이스를 사용하지 않는 terminator것에 대한 의견을 해결하기 위해 (둘 다 잘 문서화되어 있지 않습니다). terminator이를 사용하여 strace실제로 어떤 글꼴 파일이 열리는지 확인할 수 있습니다.

예를 들어, 를 사용하여 몇 가지 탐색을 수행 하고 strace내 Debian/테스트에서 이 문자에 대한 OpenOffice 글꼴 중 하나를 엽니다.konsolepterm

2600 화               
2600) = 3                                     
2586 화
2601 화   
2601)=4                 

("OpenSymbol" 시리즈의 파일입니다.)

한편, rxvt-unicode여러 문자가 있는데 해당 문자가 표시되지 않는 것을 발견했습니다.글꼴 스타일이러한 문제를 해결(시도)하기 위해 검색 목록에 추가되었습니다(궁극적으로 글꼴 구성의 문제 반영). 아마도 비슷한 것을 발견하게 될 것입니다(그러나다른) konsole 및 pterm을 지원하는 라이브러리에 있습니다.

답변2

최신 터미널 응용 프로그램은 문자를 알 수 없는 경우 기본 글꼴이 아닌 다른 글꼴을 사용합니다.하지만xterm은 단일 글꼴만 사용합니다(2바이트 문자의 특별한 경우는 제외).

필요한 문자는 OpenSymbol 글꼴의 일부이며 $'\ue0a0'사용할 echo $'\ue0a0'수 있지만 xterm글꼴에 일반 문자가 포함되어 있지 않으므로 사용할 수 없으므로 한 가지 해결책은 필요한 특수 문자가 포함된 패치 글꼴을 사용하고 다음을 사용하는 것입니다.

xterm -fa 'Inconsolata for Powerline'

다음과 같이 글꼴 크기를 설정할 수도 있습니다.

xterm -fa 'Inconsolata for Powerline' -fs 16

~/.Xresources이 설정은 시스템에 다음을 추가하거나 광범위하게 적용하여 현재 사용자에게 적용할 수 있습니다./etc/X11/app-defaults/XTerm

XTerm*faceName: Inconsolata for Powerline

링크:1,2,,4,5그리고6

관련 정보