유니 코드 문자가 올바르게 렌더링되지 않는 이유


19

배경:

  • 프롬프트에 유니 코드 문자가 있습니다 (기본적으로 git status markers)
  • 아치 리눅스에서 xfce로 urxvt를 실행하고 있습니다.
  • .Xresources 줄을 통해 지정된 Powerline 글꼴에 DejaVu Sans Mono를 사용하고 있습니다.

    URxvt*font: xft:DejaVu Sans Mono for Powerline:pixelsize=14

urxvt를 시작할 때 유니 코드 문자가 올바르게 렌더링되지 않습니다.

예를 들어

●으로 렌더링

그러나 urxvt첫 번째 터미널에서 새 것을 시작하면 모든 것이 올바르게 렌더링됩니다.

두 터미널 사이의 환경에는 차이가없는 것으로 보입니다.

첫 번째 호출과 중첩 된 호출의 차이점은 무엇입니까? 'outer'인스턴스에서 글꼴이 올바르지 않은 것 같지만 실행중인 X 창의 글꼴을 확인하는 방법을 잘 모르겠습니다

업데이트 : 로케일이 xfce4의 앱 실행기에서 올바르게 설정되지 않은 것 같지만 아마도 첫 번째 터미널 내부의 쉘은 자체 로케일을가집니다. 두 쉘 모두 동일한 로케일을 의미합니다.

첨가

export LANG=en_GB.UTF-8

xfce4를 시작하기 전에 .xinitrc로 수정하면 문제가 해결됩니다. 나는 이것이 아니다 의심 올바른 방법 하지만 그것은 나에게 충분합니다.

스크린 샷은 문제를 보여줍니다.

여기에 이미지 설명을 입력하십시오

참고 : serverfault.com 에서이 질문을 옮겼습니다.이 사이트가 더 적합하기를 바랍니다.


X는 어떻게 시작합니까? "첫번째"터미널을 어떻게 시작합니까? 이 두 환경은 환경이 다른 것 같습니다.
Ярослав Рахматуллин

LC_ALL=ru_RU.utf8 urxvt현재 X 세션에서 실행하십시오 . 러시아어 (및 다른 유니 코드) 문자가 올바른 경우 환경이 C 로캘에서 실행 중일 수 있습니다. 로케일 설정을 확인하십시오 xfce. 예를 들어 시작한 경우 다음 .xinitrc과 같이 실행하기 전에 로케일을 설정하십시오 LANG=ru_RU.utf8 exec startxfce4.
Alexander I.Grafov

나는 같은 문제가 있었다. 내가 startx를 시작하는 방식으로 인해 발생했습니다. "exec startx"를 수행하는 대신 내 .zprofile에서 "startx"를 수행했습니다
Samir Sadek

답변:


12

문제의 원인이 무엇인지 확실하지 않지만 아래 단계가 도움이 될 수 있습니다.

  1. 로케일이 올바르게 설정되었는지 확인

    $ 로케일
    LANG = ko_KR.UTF-8
    LC_CTYPE = "en_US.UTF-8"
    LC_NUMERIC = "en_US.UTF-8"
    LC_TIME = "en_US.UTF-8"
    LC_COLLATE = "en_US.UTF-8"
    LC_MONETARY = "en_US.UTF-8"
    LC_MESSAGES = "en_US.UTF-8"
    LC_PAPER = "en_US.UTF-8"
    LC_NAME = "en_US.UTF-8"
    LC_ADDRESS = "en_US.UTF-8"
    LC_TELEPHONE = "en_US.UTF-8"
    LC_MEASUREMENT = "en_US.UTF-8"
    LC_IDENTIFICATION = "en_US.UTF-8"
    LC_ALL = en_US.UTF-8
    
  2. /etc/locale.gen에서 원하는 로케일을 활성화하고 실행하십시오. locale-gen

    $ cat /etc/locale.gen | 그립 UTF
    en_US.UTF-8 UTF-8
    nb_NO.UTF-8 UTF-8
    ru_RU.UTF-8 UTF-8
    
  3. 원하는 글꼴을로드 할 수 있는지 확인하십시오

    $ xset + fp / usr / share / fonts / 키릴 자모
    fc 캐시
    확인할 fc-list #

  4. "첫 번째 터미널"을 시작하기 전에 .Xdefaults (또는 이와 유사한)의 설정을 적용하십시오.
    xrdb ~ / .Xdefaults


이것은 분명히 로케일과 관련이 있으므로 (질문에 대한 내 업데이트 참조) 올바른 방향으로 나를 가리키면서이 대답을 수락하십시오. nk.
sw1nn

~ / .bash_profile (~ / .zprofile)에 로케일 설정을 넣는 것은 끔찍한 아이디어는 아니지만 ~ / .xinitrc도 작동합니다.
Ярослав Рахматуллин

가상 터미널에 로그인하면 (즉, X없이) 모두 작동합니다. 쉘 비트는 X에, 그것의 특정을 잘 작동한다
sw1nn

X (또는 startxfce)가 프로파일에서 LANG & co를 읽지 않는 비 로그인 쉘에서 시작 되었기 때문일 수 있습니다. bash의 경우 ~ / .bashrc를 사용하여 비 로그인 쉘에 대한 항목을 설정할 수 있습니다. 그러나 내가 말했듯이 ~ / .xinitrc에 로케일 설정 및 기타 변수를 남겨 두는 데 아무런 문제가 없습니다.
Ярослав Рахматуллин

이 문제는 문자 간격이 너무 가깝기 때문에 모든 문자에 영향을 줄 수 있습니다. 예를 들어, set URxvt.letterSpace: -10및 모든 문자가 상자로
표시됨

0

나에게 그것은 urxvt의 전력선 글리프 문제입니다. 로케일을 설정하면 localectl set-locale LANG=en_AU.UTF-8문제 전력선 글꼴이 적어도 문제 가 해결 된다는 것을 알았습니다 (다른 글꼴은 시도하지 않았습니다).

urxvt 전력선 기호

그것은 작동하지 않았지만 en_US.UTF-8, 그것을 재현 할 수 있기 때문에 확신합니다 ... 지금은 이상합니다 ...하지만 지금은 작동합니다.

출처

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.