광산은 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 글꼴 중 하나를 엽니다.konsole
pterm
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