मैं पहले से ही एक अलग अनुत्तरित सवाल में इस समस्या थी यहाँ । मैं एक ही आकार के लिए एक ही आकार में विभिन्न फोंट की उम्मीद करूंगा, लेकिन यह मामला प्रतीत नहीं होता है, इसलिए मैं इसे ठीक करने के लिए अपना तदर्थ दृष्टिकोण दिखाऊंगा।
एक तरफ उच्चारण छोड़ना, और केवल सादे पात्रों पर ध्यान केंद्रित करना, अलग-अलग फ़ॉन्ट सभी विभिन्न वर्णों को केवल इसलिए प्रदर्शित करना आवश्यक है क्योंकि कुछ फ़ॉन्ट वर्णों के पूरे ब्लॉक को छोड़ देते हैं जो अन्य फ़ॉन्ट में मौजूद हैं। यह सुनिश्चित करने के लिए कि असामान्य अक्षर (जैसे ")") में उनके लिए कम से कम एक फ़ॉन्ट है, एक फ़ॉन्ट जैसे सिम्बोला स्थापित करें, और यूनिकोड-फोंट पैकेज की रीडमी में फ़ॉन्ट की सूची देखें ।
यदि आप पैकेज unicode-fonts
और कई अच्छे फोंट स्थापित करते हैं, तो सभी वर्णों का समर्थन किया जाना चाहिए, लेकिन कुछ में गलत तरीके से प्रदर्शित ऊंचाइयां होंगी।
मान लीजिए कि मोनाको में गलत ऊंचाइयां हैं, लेकिन सिंबोला गणितीय प्रतीकों के लिए सही ऊंचाइयों को प्रकट करता है (जैसे कि BS SUQUET OF OR EQUAL TO use; का उपयोग करना C-x 8 RETया insert-char
विभिन्न पात्रों का परीक्षण करना।)। मेरे मामले में, मोनाको, नोटो सैंस सिंबल्स और एप्पल सिंबल का उपयोग करना पर्याप्त नहीं था; मेरे लिए एक अच्छा फ़ॉन्ट DejaVu Sans मोनो था।
पहली बात यह है कि आप unicode-fonts
इसे जोड़कर मोनाको का उपयोग करने से मना कर सकते हैं unicode-fonts-skip-fonts
; इसके बाद जो भी फॉन्ट का चयन करेगा उसकी सही ऊंचाई हो सकती है। वैकल्पिक रूप से, आप unicode-fonts
एक यूनिकोड ब्लॉक के लिए एक विशिष्ट फ़ॉन्ट का उपयोग करना बता सकते हैं (जैसे गणितीय ऑपरेटर; यहां एक प्रविष्टि को संशोधित करके सभी ब्लॉकों की सूची है ) unicode-fonts-block-font-mapping
।
दूसरा यह है कि आप इसे आसानी से उपयोग करके वर्णों के बहुत सटीक सेट के लिए मैन्युअल रूप से कर सकते हैं set-fontset-font
। यदि सिम्बोला गणितीय प्रतीकों के लिए एक अच्छा फ़ॉन्ट है (इस मामले में सीमा 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 की डिफ़ॉल्ट पसंद अच्छी तरह से काम नहीं करती है, तो अपने पसंदीदा फ़ॉन्ट विकल्पों को मैन्युअल रूप से निर्दिष्ट करना संभव है ।
PS एक विकल्प है: जब एक फ़ॉन्ट लगातार बहुत बड़ा / छोटा होता है, तो आप face-font-rescale-alist
Emacs को हमेशा एक गुणक द्वारा उस फ़ॉन्ट के आकार को गुणा करने के लिए एक प्रविष्टि जोड़ सकते हैं , कहते हैं, 0.95, जैसे:
(add-to-list 'face-font-rescale-alist (cons (font-spec :family "STIXGeneral") 0.95) t)
जब मैंने यह कोशिश की, तो यह बिल्कुल सही नहीं था (मेरी बग रिपोर्ट यहाँ है ), लेकिन यह भी एक संभव तरीका है।