XTerm이 *일부* 유니코드 문자를 올바르게 표시하지 않습니까?

XTerm이 *일부* 유니코드 문자를 올바르게 표시하지 않습니까?

XTerm과 유니코드에 대한 일반적인 질문이 없습니다. 대부분의 경우 모든 것이 작동합니다. 이것은 훌륭하게 작동합니다:

$ echo "¿dónde está la llama?"
¿dónde está la llama?

이와 같이:

$ echo -e "\xE2\x98\xA0"

하지만이것실패하다:

$ echo -e "\xE2\xA4\xB7"

예상되는 출력(⤷, 일명) 대신화살표는 아래를 가리키다가 오른쪽으로 휘어집니다.) 그 끔찍한 상자를 받았어요. 나는 현재 다음을 사용하고 있습니다 :

xterm*faceName: Hack Regular:size=12:antialias=true

이것은 제가 사용하고 있는 것과 동일한 글꼴이며 gnome-terminal동일한 문자를 올바르게 표시합니다. 나는 또한 다양한 다른 고정 폭 글꼴(Droid Sans Mono, DejaVu Sans Mono, Liberation Mono)을 사용하여 동일한 작업을 시도했습니다. 이 글꼴은 모두 XTerm에서 동일하게 작동하지만 다른 곳에서는 잘 작동합니다. 실제로 \u2620올바르게 표시되는 문자와 \u2937잘못 표시되는 문자 사이를 살펴보면 XTerm에서 올바르게 표시되지 않는 것처럼 보이는 문자가 많이 있습니다.

$ python
>>> for x in range(0x2620, 0x2938):
...    print(unichr(x))

나는 여기서 무슨 일이 일어나고 있는지 이해하고 싶습니다. XTerm 디스플레이에 문제가 있는 이유는 무엇입니까?일부이 캐릭터는 있지만 다른 캐릭터는 아닌가요?

답변1

약식: xterm 사용법하나의글꼴(2폭 문자의 특수한 경우 제외)을 사용하는 반면, 다른 터미널에서는 추가 글꼴을 사용합니다(그리고 그들은그것들요청한 글꼴에 없는 문자의 글꼴).

긴: 당신이 관심 있는 역할은아니요처럼 보이는 글꼴의 일부폰트해킹티데비안에서. 누락된 코드는 0x2937이며 사용된 코드 xfd -fa hack는 글꼴에서 제공되지 않는 것을 확인할 수 있습니다 (힌트: 페이지의 첫 번째 코드는 0x29입니다).87):

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

글꼴에 대한 간단한 설명은 용도를 알려줍니다.

주름이 없습니다. 속임수가 없습니다. Hack은 수작업으로 마무리되고 시각적으로 균형이 잡혀 코드의 주요 얼굴이 됩니다.

("코드"는 일반적으로 POSIX 문자 집합과 사람들이 좋다고 생각하는 주석이기 때문에) 아마도 작을 것입니다. 이 예에는 평소보다 POSIX가 아닌 문자가 더 많습니다. ASCII+Latin1로 시작:

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

글꼴에는 수백 개의 글리프가 있습니다(절반 이상이 적은 수의 글리프를 표시하지만 이를 표시하려면 수십 개의 스크린샷이 더 필요합니다). 예를 들어 두 번째 페이지에 대한 부분 지원은 다음과 같습니다.

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

댓글을 보고 gnome-terminal을 추적한 결과 다음과 같은 글꼴 파일이 로드된 것을 발견했습니다.

/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMono.ttf
/usr/share/fonts/truetype/ttf-bitstream-vera/VeraMoBd.ttf
/usr/share/fonts/truetype/ttf-bitstream-vera/VeraSeBd.ttf
/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf

0x2937은 마지막 항목에서 제공됩니다. 실제 세부정보는 구성에 따라 다를 수 있습니다.

관련 정보