유니코드 보충 다국어 평면(평면 1) xterm의 문자 모양

유니코드 보충 다국어 평면(평면 1) xterm의 문자 모양

xterm에 유니코드 보충 다국어 평면(평면 1) 문자를 표시하려고 합니다. 이러한 문자 모양은 U+010000..U+01FFFF(https://unifoundry.com/pub/unifont/unifont-15.0.01/unifont_plane1-15.0.01.bmp).

글꼴은 unifont-15.0.01.hex 및 unifont_upper-15.0.01.hex의 병합 버전으로, bdf로 변환되고 내 .Xresources 파일을 통해 로드됩니다.

*locale: true
*ut8: true
xterm*font: -*-merged-*-*-*-16-*

평면 0(U+0000..U+FFFF) 문자 모양이 작동합니다.

이 게시물과 유사한 로케일 문제일 수 있다고 생각합니다.xterm은 ubuntu 18.04에서 8비트 문자를 표시할 수 없습니다..

나는 시도했지만 LANG=en_US.UTF-8성공 LANG=en_US하지 못했습니다.

편집: LANG=en_US.UTF-8유니코드 보충 다국어 평면(평면 1)을 설정할 때 xterm의 문자 모양이 "이상한 사각형"으로 나타납니다. en-US 로케일로 xterm을 시작하면 LC_ALL=en_US LANG=en-US xterm플랫 1 문자가 표시되지 않거나 잘못 인코딩됩니다.

다른 로케일을 사용해야 합니까? 그렇다면 어느 것이, 어떻게? 또한 "unifont_upper"를 병합하는 대신 대체 항목으로 정의하는 것이 더 낫습니까?

답변1

비트맵 글꼴은 X 라이브러리 인터페이스를 사용합니다.XDrawString16(바라보다소스 코드)은 이름에서 알 수 있듯이 16비트 글꼴 인덱스로 제한됩니다.

가능한XmbDrawString이 제한을 초과하는 것이 가능합니다(그러나 이는 대략적인 맨페이지에서는 단서를 제공하지 않으므로 소스 코드를 연구해야만 확인할 수 있습니다). 보시다시피 이것은 단순한 교체가 아닙니다.이 토론.

가고 싶다면뼈 형태발생 단백질, TrueType 글꼴을 사용해야 합니다.

답변2

xFFFF를 넘어서는 범위에 문제가 있으므로 echo -e "\u1234"?를 사용하여 이 이스케이프 코드를 인쇄하는 간단한 방법이 있을 것 같습니다.

  • \u1234 - 0000-ffff 범위의 유니코드 기호를 인쇄합니다.
  • \U12345678 - 00000000-ffffffff 범위의 유니코드 기호를 인쇄합니다.

관련 정보