कोको Emacs 24.5 फ़ॉन्ट समस्याएँ (Inconsolata-dz)


10

मैं Emacs के लिए अपने डिफ़ॉल्ट फ़ॉन्ट के रूप में [Inconsolata-dz] [1] सेट करने की कोशिश कर रहा हूं। रेग्युलर इंकोनसोलता ठीक काम करता है, लेकिन डीज़ संस्करण ठीक से काम नहीं कर रहा है। मेरे द्वारा उपयोग किए जाने वाले अधिकांश फ़ंक्शन इस त्रुटि को फेंकते रहते हैं (Emacs फ़ॉन्ट सेट करने के लिए सभी निर्देशों का ऑनलाइन पालन किया जाता है)

set-face-attribute: Invalid font name: "-*-Inconsolata-dz-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1"

मैं अंत में यह करने के लिए अपने काम से मिल गया init.el:

(setq initial-frame-alist '((font . "Inconsolata-dz-13")))
(setq default-frame-alist '((font . "Inconsolata-dz-13")))

मेरे पास यह भी है init.el, जो द्वारा उत्पन्न किया गया था customize-faces, लेकिन यह फ़ॉन्ट को हेवेटिका में बदलने के लिए लगता है (जब तक कि ऊपर दिए गए कोड द्वारा ओवरराइड नहीं किया जाता है):

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(custom-safe-themes
   (quote
    ("e16a771a13a202ee6e276d06098bc77f008b73bbac4d526f160faa2d76c1dd0e"
     "d677ef584c6dfc0697901a44b885cc18e206f05114c8a3b7fde674fce6180879"
     "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4"
     default))))

(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:inherit nil :stipple nil :inverse-video nil
             :box nil :strike-through nil :overline nil
             :underline nil :slant normal
             :weight normal :height 140 :width normal
             :foundry "nil" :family "Inconsolata-dz")))))

अब ऊपर दिए गए पहले कोड के साथ मुद्दा यह है कि Ctrl+Nएक नई विंडो बनाने के लिए, एक ही अमान्य फ़ॉन्ट नाम त्रुटि को फेंक देगा।

मैंने Inconsolata और Inconsolata-dz को अपने मैक पर उसी तरह स्थापित किया। बस ओएस एक्स पर फोंट स्थापित करने का नियमित, डिफ़ॉल्ट तरीका।

क्या किसी को पता है कि मैं क्या गलत कर रहा हूं और कैसे मैं इनकंसोलता-डीज़ का उपयोग ठीक से कर सकता हूं?


1
फ़ॉन्ट क्या उपलब्ध हैं, यह देखने के लिए, *Scratch*बफर में निम्नलिखित का मूल्यांकन करें : (insert (prin1-to-string (x-list-fonts "*"))) यदि यह नहीं है, तो यह उपलब्ध नहीं है।
18

@lawlist मैं इसे वहां देखता हूं लेकिन यह बहुत लंबा नाम है। जब मैंने इसे सेट-फेस-एटिट्यूड में पेस्ट किया ((set-face-attribute 'default nil :family "-*-Inconsolata-g-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1")), तो मुझे 'अमान्य फेस फाउंड्री' मिली। कोई विचार क्यों? क्या वास्तव में नाम माना जाता है? Inconsolata काम करता है, लेकिन Inconsolata-g और Inconsolata-dz काम नहीं करते हैं, भले ही वे सभी उपलब्ध हैं और उसी तरह स्थापित हैं। मुझे संदेह है कि यह नाम में डैश है?
डार्कस्की

जवाबों:


9

Emacs उन फोंट की अनुमति नहीं देता है, जिनमें हाइफ़न हैं। मैं फ़ॉन्ट का नाम बदलकर ऐसी चीज़ रखूँगा जिसमें हाइफ़न नहीं है।

आप ttx का उपयोग करके ऐसा कर सकते हैं । उदाहरण के लिए, मान लें कि आपके पास Inconsolata-dz for Powerline.otfअपनी वर्तमान कार्यशील निर्देशिका में एक फ़ॉन्ट है :

# Convert the font to ttx format (an xml-like font format)
ttx "Inconsolata-dz for Powerline.otf"

# Replace all instances of "Inconsolata-dz" with "InconsolataDZ" in the ttx file
sed -i 's/Inconsolata-dz/InconsolataDZ/g' "Inconsolata-dz for Powerline.ttx"

# Convert the resulting ttx file back to an otf file. 
# (Will create a file called "Inconsolata-dz for Powerline#1.otf".)
ttx "Inconsolata-dz for Powerline.ttx"

फिर आप उत्पादित otfफ़ाइल का नाम जो भी चाहें उसे बदल सकते हैं और इसे अपने फोंट निर्देशिका में स्थानांतरित कर सकते हैं।


क्या आपके पास अपने विश्वास का समर्थन करने के लिए कुछ दस्तावेज़ों का एक उदाहरण या एक लिंक है कि " Emacs उन फोंट की अनुमति नहीं देता है जिनके पास हाइफ़न हैं। "
कानून

5
मेरी विशिष्ट समस्या यह थी कि मुझे "अमान्य फ़ॉन्ट नाम: Inconsolata-g for Powerline" त्रुटि दिखाई दे रही थी। मैंने "अमान्य फ़ॉन्ट नाम:" के लिए Emacs स्रोत कोड खोजा और इस फ़ंक्शन को पाया । मेरा मानना ​​है कि यदि आप font_parse_nameफ़ंक्शन को ध्यान से देखते हैं , तो आप पाएंगे कि XFT स्ट्रिंग को हाइफ़न पर विभाजित करके, यह मानते हुए कि पूरा फ़ॉन्ट नाम दो हाइफ़न के बीच समाहित है।
सिड-कप

1
बहुत बहुत धन्यवाद @ sid-kap, आखिरकार एक जवाब! मैं यह कभी नहीं लगा है।
अंधेरा

3
आप ttxफ़ॉन्ट फ़ाइलों का उपयोग किए बिना और न ही फ़ॉन्ट का नाम बदल सकते हैं । मैं फ़ॉन्ट फ़ाइलों का दौरा किया Inconsolata-g.otf, Inconsolata-g.sfdऔर Inconsolata-g.ttfसाथ Emacsऔर "Inconsolata-जी" और "Inconsolata-डी" "Inconsolata_g" और "Inconsolata_d" के साथ की प्रत्येक पुनरावृत्ति बदल दिया। यह पाठ "^ @" के साथ "I ^ @ @ @ ^ ^ c @ @ ^ ^ @ n ^ @ @ ^ ^ @ o ^ @ @ ^ ^ @ a ^ @ t ^ @ @ ^ - ^ @ g में भी मिला हुआ है। ^ @ Inconsolata-g "जिसे मैंने" I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ @ a @ @ ^ ^ a @ @ _ ^ @ g ^ के रूप में प्रतिस्थापित किया है। @Inconsolata_g "। मैंने तब Inconsolata_g.*फिल्मनामों का नाम बदलकर उन्हें ड्रैग-एंड-ड्रॉप कर दिया Font Book.app, जिसमें काम किया।
आर्मंडो.सैनो

@ sid-kap धन्यवाद, आपके निर्देश बहुत स्पष्ट थे। बहुत बढ़िया जवाब।
हर्षवर्धन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.