TL; DR: मज़बूती से कहने का एक सरल तरीका क्या है: कंसोल को डिफ़ॉल्ट फ़ॉन्ट के रूप में उपयोग करें, कंसोल द्वारा असमर्थित वर्णों के लिए FreeMono और दोनों द्वारा असमर्थित वर्णों के लिए सिम्बोला?
चूंकि मेरा मुख्य प्रोग्रामिंग फ़ॉन्ट उन सभी गणितीय प्रतीकों को कवर नहीं करता है जिनकी मुझे आवश्यकता है, मैं शुरू में नीचे दिए गए फ़ॉन्ट फॉलबैक को सेट करता हूं:
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
दुर्भाग्य से इसने मेरे मुख्य फ़ॉन्ट का समर्थन करने वाले कुछ पात्रों के लिए फ़ॉन्ट भी बदल दिया, इसलिए मैंने इसे बदल दिया
(set-fontset-font t 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
यदि मेरी समझ सही है, तो यह सुनिश्चित करना चाहिए कि कंसोल को संभाल सकने वाले वर्णों को FreeMono द्वारा नियंत्रित नहीं किया जा सकता है, जब तक कि FreeMono उनके पास नहीं है, इस स्थिति में उन्हें Symbola का उपयोग करके प्रदर्शित किया जाना चाहिए। यह मेरी समझ भी t
है जो "fontset-default"
ऊपर की तरह ही करता है।
दुर्भाग्य से, अभी भी ऐसे मामले थे जहां सही फ़ॉन्ट का चयन नहीं किया गया था; मैंने पाया कि बदल रहा है
(set-fontset-font t 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font t 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font t 'unicode (font-spec :name "Symbola") nil 'append)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font "fontset-startup" 'unicode (font-spec :name "Symbola") nil 'append)
बेहतर काम किया है, लेकिन हमेशा नहीं: का उपयोग कर फ़ॉन्ट आकार बदल रहा है
(set-face-attribute 'default nil :height some-size)
नए फोंटसेट बनाए जाने के कारण, कमियां नजरअंदाज कर दी गईं।
मेरा वर्तमान समाधान करना है
(set-fontset-font fontset 'unicode (font-spec :name "Consolas") nil)
(set-fontset-font fontset 'unicode (font-spec :name "FreeMono") nil 'append)
(set-fontset-font fontset 'unicode (font-spec :name "Symbola") nil 'append)
प्रत्येक फॉन्टेट ( fontset-list
) पर, प्रत्येक फ़ॉन्ट आकार बदलने के बाद।
फ़ॉन्ट फ़ॉलबैक सेट करने का उचित तरीका क्या है?
नोट : परीक्षण के प्रयोजनों के लिए, यहां कुछ गणित वर्ण हैं: ℕ𝓟⧺×≠≥≤±¬∨∧∃∀λ⟿⟹⊥⊤⊢
संदर्भ : फोंट पर मैनुअल को संशोधित करता है और फोंट को संशोधित करता है
fontset
गलत तरीके से सोच रहे हैं । Emacs वास्तव में यह प्रदर्शित करने वाले प्रत्येक वर्ण के लिए जाँच नहीं करता है कि कोई फ़ॉन्ट जानता है कि उसे कैसे प्रदर्शित करना है या नहीं। यह भी कम्प्यूटेशनल रूप से गहन होगा। तो प्रति se "fallback" तंत्र नहीं है। आपको अपने डिफ़ॉल्ट फ़ॉन्ट को सेट करना चाहिए और फिर अलग-अलग फ़ॉन्ट का उपयोग करके प्रदर्शित करने के लिए कुछ श्रेणियों में डिफ़ॉल्ट फ़ॉन्ट को मैन्युअल रूप से संशोधित करना चाहिए। यह प्रक्रिया मैनुअल है या शायद पैकेज unicode
मदद कर सकता है।