Cocoa Emacs 24.5 Yazı Tipi Sorunları (Inconsolata-dz)


10

Emacs varsayılan yazı tipi olarak [Inconsolata-dz] [1] ayarlamaya çalışıyorum. Düzenli Inconsolata iyi çalışıyor, ancak dz sürümü düzgün çalışmıyor. Kullandığım çoğu işlev bu hatayı atmaya devam ediyor (Emacs yazı tipini nasıl ayarlayacağınızla ilgili tüm talimatları çevrimiçi olarak izledi):

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

Sonunda benim bunu yaparak işe aldım init.el:

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

Ayrıca init.el, tarafından oluşturulan bu var customize-faces, ama Helvetica için yazı tipi değiştirmek gibi görünüyor (yukarıdaki kod tarafından geçersiz kılınmadıkça):

(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")))))

Şimdi yukarıdaki ilk kod ile ilgili sorun, Ctrl+Nyeni bir pencere oluşturmak için, bir geçersiz yazı tipi adı hatası atmak olacaktır.

Inconsolata ve Inconsolata-dz'yi aynı şekilde Mac bilgisayarıma kurdum. OS X'te yazı tiplerini kurmanın normal, varsayılan yolu.

Ne yaptığımı ve Inconsolata-dz'yi nasıl düzgün bir şekilde kullanabileceğimi bilen var mı?


1
Hangi yazı tiplerinin kullanılabilir olduğunu görmek için, bir *Scratch*arabellek içinde aşağıdakileri değerlendirin : (insert (prin1-to-string (x-list-fonts "*"))) Orada değilse, o zaman kullanılamaz.
lawlist

@lawlist Orada görüyorum ama çok uzun bir isim. Set-face-özniteliğine yapıştırdığımda ((set-face-attribute 'default nil :family "-*-Inconsolata-g-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1")), 'Geçersiz yüz dökümhanesi' alıyorum. Neden herhangi bir fikir? İsim tam olarak ne olmalı? Inconsolata çalışıyor ancak Inconsolata-g ve Inconsolata-dz, hepsi aynı şekilde kullanılabilir ve kurulmuş olsalar da çalışmıyor. Bu isimdeki çizgi olduğunu sanıyorum?
darksky

Yanıtlar:


9

Emacs, içinde tire bulunan yazı tiplerine izin vermez. Yazı tipini tire içermeyen bir adla yeniden adlandırırdım.

Bunu ttx kullanarak yapabilirsiniz . Örneğin, Inconsolata-dz for Powerline.otfgeçerli çalışma dizininizde bir yazı tipiniz olduğunu varsayarsak :

# 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"

Ardından, üretilen otfdosyayı istediğiniz gibi yeniden adlandırabilir ve yazı tipi dizininize taşıyabilirsiniz.


" Emacs, içinde tire bulunan yazı tiplerine izin vermiyor " inancınızı desteklemek için bir örneğiniz veya bağlantınız var mı?
kanun listesi

5
Benim özel sorunum "Geçersiz yazı tipi adı: Inconsolata-g for Powerline" hatasını görüyordum. "Geçersiz yazı tipi adı:" için Emacs kaynak kodunu aradım ve bu işlevi buldum . Eğer font_parse_nameişleve dikkatlice bakarsanız , tüm font adının iki tire arasında bulunduğunu varsayarak, XFT dizesini kısa çizgilere bölerek ayrıştırdığını göreceksiniz.
sid-kap

1
@ Sid-kap'a çok teşekkürler, sonunda bir cevap! Bunu hiç çözemedim.
darksky

3
Yazı ttxtipi dosyalarını kullanmadan veya dönüştürmeden yazı tipini yeniden adlandırabilirsiniz . Ben font dosyaları ziyaret Inconsolata-g.otf, Inconsolata-g.sfdve Inconsolata-g.ttfile Emacsve "Inconsolata_g" ve "Inconsolata_d" ile "Inconsolata-g" ve "Inconsolata d" her olay yerini aldı. Bu metin ayrıca "I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ - ^ @ g'deki gibi" ^ @ "ile karıştırılmış olarak görünür. ^ @ Inconsolata-g "yerine" I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ _ ^ @ g ^ @Inconsolata_g". Daha sonra dosya adlarını yeniden adlandırdım Inconsolata_g.*ve sürükleyip bıraktım Font Book.app, işe yaradı.
armando.sano

@ sid-kap Teşekkür ederim, talimatlarınız çok açıktı. Mükemmel cevap.
Harsh Vardhan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.