나는 이미 다른 답이없는 질문이 문제가 있었다 여기 . 같은 크기의 다른 글꼴의 높이는 같을 것으로 예상되지만 그렇지 않은 것 같으므로이 문제를 해결하기위한 임시 접근 방식을 보여 드리겠습니다.
악센트를 남기고 일반 문자에만 집중하면 일부 글꼴은 다른 글꼴에있는 전체 문자 블록을 생략하기 때문에 다른 모든 문자를 표시하기 위해 다른 글꼴이 필요합니다. 흔하지 않은 문자 (예 : "𝚫")에 하나 이상의 글꼴이 포함되도록하려면 Symbola와 같은 글꼴을 설치하고 유니 코드 글꼴 패키지 의 읽어보기에서 글꼴 목록을 확인하십시오 .
패키지 unicode-fonts
와 여러 가지 좋은 글꼴 을 설치하면 모든 문자가 지원되지만 일부는 emacs에서 높이가 잘못 표시됩니다.
모나코의 높이가 올바르지 않지만 Symbola는 수학 기호 (예 : SUBSET OF OR EQUAL TO ⊆; C-x 8 RET또는 insert-char
다른 문자 사용 또는 테스트)에 대해 올바른 높이를 갖는 것으로 나타납니다 . 필자의 경우, Monaco, Noto Sans Symbols 및 Apple Symbols를 사용하지 않는 것으로 충분했습니다. 저에게 좋은 글꼴은 DejaVu Sans Mono였습니다.
첫 번째는 unicode-fonts
Monaco를 추가하여 사용하지 못하게 할 수 있다는 것입니다 unicode-fonts-skip-fonts
. 다음에 선택한 글꼴은 올바른 높이를 가질 수 있습니다. 또는 의 항목을 수정하여 unicode-fonts
유니 코드 블록 (예 : 수학 연산자와 같이 여기에 모든 블록 목록이 있음 )에 특정 글꼴을 사용하도록 지시 할 수 있습니다 unicode-fonts-block-font-mapping
.
두 번째는를 사용하여 매우 정확한 문자 집합을 위해이 작업을 쉽게 수동으로 수행 할 수 있다는 것 set-fontset-font
입니다. Symbola가 수학 기호 (이 경우 range 0x2100..0x23ff
) 에 적합한 글꼴 인 경우 다음이 작동합니다.
(set-fontset-font t '(#x2100 . #x23ff)
;; this should throw an error if there is no such font
(font-xlfd-name (find-font (font-spec :family "Symbola"))))
나 자신을 수정하는 데 필요한 다른 범위가 있었다 2000..206f
, 27c0..27ff
, 2900..2bff
, 1d400..1d7ff
.
마지막으로 잘못 구성된 문자를 직접 검색 할 필요는 없습니다. unicode-fonts
설치된 것으로 가정하면 다음 기능은 높이가 잘못된 모든 문자 목록을 생성합니다.
(defun debug-unicode-heights (&optional block-name)
"Find all characters in a given block that have incorrect heights.
BLOCK-NAME can be anything that
`unicode-fonts-debug-insert-block' accepts, such as `'all-math',
or a string naming a Unicode block."
(interactive "sBlock name:")
(unless block-name (setq block-name 'all-math))
(let ((buffer (generate-new-buffer (format "debug-unicode-heights:%s" block-name)))
expected-height
bad-characters)
(pop-to-buffer buffer)
(with-current-buffer buffer
(unicode-fonts-debug-insert-block block-name)
(goto-char (point-min))
(setq expected-height (line-pixel-height))
;; (message "Expected height %d" expected-height)
(while (< (point) (point-max))
(if (or (= (line-pixel-height) expected-height)
;; Some characters are invalid, they have no name
;; (their name is just their hex code), and their
;; heights do not matter to us.
(looking-at-p "^.[^\"]*\"#"))
(delete-region (line-beginning-position)
(1+ (line-end-position)))
(push (char-after (line-beginning-position)) bad-characters)
(forward-line))))
;; (display-message-or-buffer buffer)
(apply #'string (reverse bad-characters))))
예를 들면 다음과 같습니다.
M-: (debug-unicode-heights 'all-math)
그리고
M-: (debug-unicode-heights 'all-greek)
모든 나쁜 수학 기호를 표시합니다. 그런 다음 표시되는 글꼴을 검사하고 변경할 수 있습니다.
OS X 10.9.5가 있으므로 글꼴 설정이 사용자의 설정과 다를 수 있습니다. 설치할 필요는 없습니다 unicode-fonts
. set-fontset-font
emacs의 기본 선택이 제대로 작동하지 않을 때마다 원하는 글꼴 선택을 전체적으로 수동으로 지정할 수 있습니다.
추신 대안이 있습니다 : 폰트가 지속적으로 너무 크거나 작을 때, face-font-rescale-alist
이멕스에게 폰트의 크기에 0.95의 계수를 항상 곱 하도록 항목을 추가 할 수 있습니다 :
(add-to-list 'face-font-rescale-alist (cons (font-spec :family "STIXGeneral") 0.95) t)
내가 이것을 시도했을 때, 그것은 제대로 작동하지 않았지만 (나의 버그 보고서는 여기에있다 ), 이것은 또한 가능한 접근법이다.