xdm/xlogin의 스웨덴어 유니코드 문자

xdm/xlogin의 스웨덴어 유니코드 문자

XDM 로그인 화면을 현지화하기로 결정했지만 스웨덴어 문자가 깨졌습니다.

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

나는 다음과 같은 목적으로 Debian Wheezy를 사용합니다./etc/X11/xdm/Xresources

Xcursor.theme:whiteglass

xlogin*login.translations: #재정의 \
        CtrlR: 표시() 중단\n\
        F1: 세션 매개변수 설정(안전 장치) 완료 필드()\n\
        삭제: delete-character()\n\
        왼쪽: 문자를 뒤로 이동()\n\
        오른쪽: 문자를 앞으로 이동()\n\
        홈: 처음으로 이동()\n\
        end: end()로 이동\n\
        CtrlKP_Enter: set-session-argument(failsafe) 종료 필드()\n\
        KP_Enter: set-session-argument() 종료 필드()\n\
        CtrlReturn: set-session-argument(failsafe) 종료 필드()\n\
        반환: set-session-argument() 종료 필드()

!xlogin*인사말: CLIENTHOST까지 V\303\244lkommen
xlogin*인사말: CLIENTHOST까지 Välkommen
xlogin*name 프롬프트: 답변:
!xlogin*fail: 기분이 좋아요!
xlogin*fail: Fel lösenord!

!xlogin*greetFace: Inconsolata:size=16
!xlogin*얼굴: Inconsolata:size=14
!xlogin*promptFace: Inconsolata:size=14
!xlogin*failFace: Inconsolata:size=20
xlogin*greetFace -*-fixed-r-*--*-200-*-*-*-*-iso8859-15
xlogin*failFace -*-fixed-r-*--*-200-*-*-*-*-iso8859-15
xlogin*promptFace -*-fixed-r-*--*-200-*-*-*-*-iso8859-15
xlogin*face -*-fixed-r-*--*-200-*-*-*-*-iso8859-15

xlogin*테두리 너비: 0
xlogin*프레임폭: 0
xlogin*innerFramesWidth: 0
xlogin*shd 색상: grey30
xlogin*hi 색상: grey90
xlogin*배경: 회색
!xlogin*전경: 진한 녹색
xlogin*인사색상: 검정색
xlogin*실패 색상: 빨간색
*전경: 검정색
*배경: #fffff0

xlogin*로고 파일 이름:/home/stemid/heart.xpm
xlogin*useShape: true
xlogin*logoPadding: 10

XConsole.text.Geometry: 480x130
XConsole.verbose: 참
XConsole*iconic: 참
XConsole* 글꼴: 고정됨

선택기*형상: 700x500+300+200
선택기 *allowShellResize: false
Chooser*viewport.forceBars: true
선택기 *label.Font:*-신세기 교과서-Bold-i-Normal-*-240-*
Chooser*label.label: CLIENTHOST의 XDMCP 호스트 메뉴
선택기*목록.글꼴:-*-*-medium-r-normal-*-*-230-*-*-c-*-iso8859-1
선택기 *Command.font: *-new Century schoolbook-bold-r-normal-*-180-*

/etc/X11/xdm/Xsetup

#!/bin/sh
#
# 이 스크립트는 로그인 위젯을 표시하기 전에 루트로 실행됩니다.
내보내기_언어=sv_SE
내보내기 LANG=sv_SE
내보내기LC_ALL=sv_SE

xsetroot-solid "#002b36"

수면 10 && import -w root /home/stemid/.login_screen.jpg &
chown Stemid:stemid /home/stemid.login_screen.jpg &

처음에는 환경에서 sv_SE.UTF-8을 사용해 보았지만 두 로케일이 모두 Debian locale-gen에서 활성화되었습니다.

~/.xsession

내보내기_언어=sv_SE
내보내기 LANG=sv_SE
내보내기LC_ALL=sv_SE

테스트 -f ~/.Xresources && xrdb ~/.Xresources

xsetroot-solid "#002b36"

xscreensaver - 스플래시 없음 &
쥐약을 실행한다

또한 .profile에서 로케일 설정을 시도했습니다.

데비안은 일반적으로 xorg.conf를 필요로 하지 않지만 그 안에 두 개의 파일을 만들었습니다 /etc/X11/xorg.conf.d. 하나는 시냅틱스 터치패드용이고 다른 하나는 글꼴 경로용입니다.

"파일"섹션
모듈 경로 "/usr/lib/xorg/modules/"
글꼴 경로 "/usr/share/fonts/X11/misc/"
글꼴 경로 "/usr/share/fonts/X11/TTF/"
글꼴 경로 "/usr/share/fonts/X11/OTF"
글꼴 경로 "/usr/share/fonts/X11/Type1/"
글꼴 경로 "/usr/share/fonts/X11/100dpi/"
글꼴 경로 "/usr/share/fonts/X11/75dpi/"
글꼴 경로 "/usr/share/fonts/X11/misc/artwiz-aleczapka-se-1.3/"
끝 부분

또한 스웨덴어를 특별히 지원하는 글꼴을 설치해 보았지만 xfontsel의 줄을 사용하여 Xresources에서 사용할 수 없습니다.

xlsfonts에는 새로운 artwiz 글꼴을 포함하여 내가 기대하는 모든 글꼴이 나열되어 있습니다. 제가 보기에는 글꼴 문제가 아니라 인코딩 문제인 것 같습니다.

또한 세 가지 설정을 모두 적용하여 X를 다시 시작해 보았습니다 dpkg-reconfigure locales. 이것들은 제가 활성화하고 각각을 기본값으로 테스트한 유일한 3개의 로케일입니다.

  • sv_SE
  • sv_SE.ISO-8859-1
  • sv_SE.ISO-8859-15
  • sv_SE.UTF-8

답변1

귀하의 환경이 그런 식으로 설정되어 있더라도 xdm이 UTF-8을 지원하지 않는 것 같습니다. 문자열의 해석과 문자열에 포함될 수 있는 인코딩을 처리하는 것은 여전히 ​​애플리케이션에 달려 있습니다.

이 문제를 해결하기 위해 utf8로 인코딩된 문자열을 제거하고 해당 ISO-8859-15 문자열로 대체했습니다(사용할 iso-8859-15 시퀀스 목록을 얻을 수 있음 man iso_8859-15). 그래서 이것은 나에게 효과가 있는 것 같습니다:

xlogin*greeting: V\344lkommen till CLIENTHOST
xlogin*namePrompt: Anv\344ndare:
xlogin*fail: Fel l\366senord!

이는 또한 Xsetup에서 아무 것도 설정할 필요가 없다는 것을 의미합니다(처음에는 sv_SE.utf8을 사용해 보았습니다).

답변2

äLatin-1은 \303\244UTF-8 입니다 ä. 분명히 디스플레이 관리자는 문자열을 Latin-1로 해석하고 있지만 편집자는 UTF-8을 사용합니다.

한 가지 해결책은 이러한 리소스를 UTF-8에서 Latin-1로 다시 인코딩하는 것입니다. X 리소스는 문자열이 아닌 바이트 문자열입니다. 어떤 인코딩에 포함되어 있는지 결정하는 것은 애플리케이션에 달려 있습니다.

또 다른 해결책은 xlogin에 UTF-8을 사용하도록 지시하는 것입니다. Latin-1을 사용하도록 구성했습니다. 인코딩 표시가 없는 로케일은 sv_SE이전 버전과의 호환성을 위해 Latin-1 인코딩을 사용합니다. 이 줄을 /etc/X11/xdm/Xsetup다음으로 변경하십시오.

export LC_CTYPE=sv_SE.UTF-8

LC_MESSAGES(오류 및 정보 메시지), LC_COLLATE(정렬 순서, 그러나 xlogin에서는 아무 작업도 수행할 수 없을 것 같습니다) 및 LC_TIME(날짜 및 시간 형식)을 설정하고 싶을 수도 있습니다 . 또는 변수에 의해 재정의 LANG되지 않는 한 모든 항목을 설정하는 set 입니다. LC_xxx설정은 LC_ALL모든 로캘 범주를 이 값으로 강제 설정하며 여기서는 필요하지 않으며 LANGUAGE언어를 사용할 수 없는 경우 대체 언어를 지정하려는 경우에만 유용합니다.

관련 정보