굵은 글꼴로 표시되는 이유는 무엇입니까?


9

너무 짜증나 ...

텍스트가 굵게 표시되도록 한 줄의 텍스트가면이 바뀌면 줄의 높이가 단일 픽셀만큼 증가합니다. 이미지와 함께 가장 잘 표시됩니다.

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

왜 이런거야? 어떻게 방지합니까?


요청에 따라 플랫폼에 대한 정보 :

  • amd64의 데비안 GNU / 리눅스 sid (불안정)
  • Emacs는 XFCE 4.12에서 libgtk-3.so.0 (gtk 3.14.5)을 사용합니다.

8pt, 9pt, 10pt 및 11pt에서 다음 글꼴을 시도했습니다.

  • 데자뷰 산스 모노
  • 데자뷰 산스
  • 데자뷰 세리프
  • 드로이드 산스 모노
  • 해방 모노

이 문제는 DejaVu Sans Mono 및 DejaVu Sans에서만 발생하며 9pt 및 10pt에서만 발생합니다. (위 이미지는를 보여줍니다 DejaVu Sans Mono-9.)


2
공백 을 두기 전에 defunexample의면 속성을 살펴보고 defunexample 사이에 공백을 놓은 후 각 단어를 다시 살펴 봐야합니다 . 원하는 위치에 커서를 놓고를 입력하면됩니다 C-u C-x =. 데펀에 영향을주는 얼굴 또는 예에 영향을주는 얼굴에 보이는 동작의 원인이되는 속성이 서로 다를 수 있습니다 (예 : 전경의 기본 색상 이외). 면 속성은 사용자가 사용자 지정할 수 있습니다.
lawlist

질문에 운영 체제 및 창 관리자를 추가하고 Emacs가 사용하는 GUI (예 : Gtk2, Gtk3 등)에 대한 정보를 추가 할 수 있습니까?
lunaryorn

@lawlist : 감사합니다. 공백을 사용하면 글꼴 잠금 기능 이름 얼굴이 적용되어 높이가 지정되지 않습니다 (따라서 기본값을 가정합니까?). 공간이 없으면 얼굴이 적용되지 않습니다 (따라서 다시 기본값을 가정합니까?) 기본값은 테마에서 :height 90(9pt)로 설정됩니다.
edam 2016 년

@lawlist : 좀 더 조사 .... 테마 :weight bold에서 from을 제거 / 추가 / 제거 / 추가하고 font-lock-function-name-face(테마의 custom-theme-set-faces명령을 다시 실행 ) defun줄 높이 가 1px 변경되는 것을 볼 수 있습니다 ! 확실히 그것을 일으키는 대담한 속성이라고 생각합니다.
edam 2016 년

귀하의 의견에 따르면 귀하가 선택한 글꼴 패밀리는 굵은 속성의 높이가 다르므로 점 크기를 천천히 줄여서 시행 착오를 수동으로 줄이지 않으면 변경할 수 없습니다. 또는 굵게 적용 할 때 키가 변하지 않는 패밀리를 선택하십시오. 버퍼의 시각적 효과와 관련된 다양한 이유로 개인적으로 더 이상 커스텀 테마에서 굵게 또는 밑줄을 사용하지 않습니다. 현재 줄에 밑줄을 만들면 오버레이로 이루어집니다. 대담하게, 나는 단순히 강한 마젠타, 노랑, ...와 같은 강한 색상을 사용합니다.
lawlist

답변:


2

DejaVu에서 글꼴 높이는 해당 포인트 크기에서 변경됩니다. 두 일반 글꼴과 굵은 글꼴 사이의 글꼴 높이 정보는 동일해야하므로 서로 다릅니다.

내가 사용하는 DejaVu Sans Mono 10 글꼴은 글꼴 높이를 보통과 굵은 글꼴 사이에서 변경하지 않습니다. 내 .emacs에서 설정했습니다.(set-frame-font "DejaVu Sans Mono-10")

그래서 당신은 (Emacs 25의 font-info)을 통한 "DejaVu Sans 10"글꼴에 대한 정보와 비교할 내용이 있습니다 :

(font-info "DejaVu Sans Mono-10")
["-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1" 
"DejaVu Sans Mono:pixelsize=13:foundry=unknown:weight=normal:slant=normal:
width=normal:spacing=100:scalable=true" 13 17 0 0 0 8 13 4 8 8 
"/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf" (opentype ((DFLT ...) )))]

후속 정보를 기반으로 편집 :

위의 글꼴 정보에서 글꼴 높이 17을 표시하고 높이 15 (일반) 또는 16 (굵게)을보고합니다. 이맥스 25에는 3 0 이후에 추가 글꼴 정보가 있습니다. 특히 글꼴 하강은 4입니다.

DejaVu Sans Mono 및 Bold 변형을 사용하는 Emacs 24 또는 25에서는 문제가 없지만 가장 간단한 방법은 일반 및 굵게 사이의 너비 (font-info로 표시됨)를 변경하지 않는 글꼴 및 크기를 사용하는 것입니다. 또는 DejaVu 이외의 다른 것.

이 문제의 원인은 라이브러리 중 하나 일 수 있습니다 (내 gtk는 libgtk-x11-2.0.so.0입니다). 그러나이 특정 라이브러리 일지 의심됩니다. 또한 ttf 파일 또는 패키지인지 의심하십시오. 자유형 렌더링이 더 가능성이 높습니다 (libfreetype.so.6이 있습니다). DejaVu는 다른 글꼴과 마찬가지로 크기가 조정되므로 DejaVu가 작성된 방식에 따라 계산 오류가 발생하는 이유는 일부 크기에서는 작동하지만 다른 크기에서는 작동하지 않는 이유를 설명합니다.

문제가 Emacs에만 해당되는지 여부를 확인하기 위해 굵은 프롬프트가있는 터미널 창과 줄 간격이없는 터미널 창 두 개를 표시 할 수 있습니다. Emacs와 다른 경우 렌더링 및 / 또는 글꼴과 관련이 있습니다.

emacs를 컴파일하면 거기에 문제가있을 수 있습니다.


이것은 작동하지 않았습니다 ... ( DejaVu Sans Mono-9BTW 를 사용하고있었습니다 ). 위의 설명을 업데이트하겠습니다 ...
edam

모드 라인 글꼴은 동일합니다. Mono 10은 같은 동작을 보여 주지만 8과 11pr은 그렇지 않습니다! 글꼴 렌더링과 관련이 있으며 정상 및 굵게 표시되는 다른 행 높이와 관련이 있습니다. Emacs는 fontconfig를 사용합니까?
edam

1
Emacs는 fontconfig를 사용하지 않으며 일반적으로 글리프 선택과 관련하여 다소 독창적 입니다.
wasamasa 2016 년

(font-info "DejaVu Sans Mono-10")나에게 준다 ["-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1" "DejaVu Sans Mono:pixelsize=13:foundry=unknown:weight=normal:slant=normal:width=normal:spacing=100:scalable=true" 13 15 0 0 0]. 나는 또한 fonts-dejavu-core설치했다 ttf-dejavu-core. 둘 다 DejaVuSansMono.ttf(다른 디렉토리에 있지만 동일한 파일이기 때문에 이것이 중요하다는 것을 알지 못합니다). 나는 또한 Height: 98얼굴에서 나옵니다 (위의 문제를 나타내는 DajaVu Sans Mono-10을 사용할 때). 나는 더 이상 제안에 열려 있습니다! :)
edam 2016 년

글꼴 정보 매개 변수 중 일부가 다릅니다. "13 15 .."가있는 동안 "13 17 ..."이 있습니다. 그리고 당신이 function-for-function font-info를 얻으면 17 (me) 대 15 (you)의 차이가 키임을 알 수 있습니다. 높이를 17로 변경해보십시오.
rocky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.