Cocoa Emacs 24.5 Problemas de fuentes (Inconsolata-dz)

10

Estoy tratando de establecer [Inconsolata-dz] [1] como mi fuente predeterminada para Emacs. Inconsolata normal funciona bien, pero la versión dz no funciona correctamente. La mayoría de las funciones que uso siguen arrojando este error (seguí todas las instrucciones en línea sobre cómo configurar la fuente Emacs):

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

Finalmente llegué a trabajar haciendo esto en mi init.el:

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

También tengo esto init.el, que fue generado por customize-faces, pero parece cambiar la fuente a Helvetica (a menos que el código anterior lo anule):

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

Ahora, el problema con el primer código anterior es que hacer un Ctrl+N, para crear una nueva ventana arrojará el mismo error de nombre de fuente no válido.

Instalé Inconsolata e Inconsolata-dz de la misma manera en mi Mac. Solo la forma habitual y predeterminada de instalar fuentes en OS X.

¿Alguien sabe qué estoy haciendo mal y cómo puedo usar Inconsolata-dz correctamente?

cielo oscuro
fuente
1
Para ver qué fuentes están disponibles, evalúe lo siguiente en un *Scratch*búfer: (insert (prin1-to-string (x-list-fonts "*"))) si no está allí, entonces no está disponible.
ley
@lawlist Lo veo allí pero es un nombre muy largo. Cuando lo pegué en set-face-attribute, ((set-face-attribute 'default nil :family "-*-Inconsolata-g-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1"))obtengo 'Invalid face foundry'. Alguna idea de por qué? ¿Cuál es exactamente el nombre que se supone que es? Inconsolata funciona, pero Inconsolata-g e Inconsolata-dz no funcionan, a pesar de que todos están disponibles e instalados de la misma manera. Sospecho que es el guión en el nombre?
darksky

Respuestas:

9

Emacs no permite fuentes que tengan guiones. Cambiaría el nombre de la fuente a algo que no contenga guiones.

Puedes hacer esto usando ttx . Por ejemplo, suponiendo que tenga una fuente nombrada Inconsolata-dz for Powerline.otfen su directorio de trabajo actual:

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

Luego puede cambiar el nombre del otfarchivo producido a lo que desee y moverlo al directorio de fuentes.

sid-kap
fuente
¿Tiene un ejemplo o un enlace a alguna documentación para respaldar su creencia de que " Emacs no permite las fuentes que tienen guiones "?
ley
55
Mi problema específico fue que estaba viendo el error "Nombre de fuente no válido: Inconsolata-g para Powerline". Busqué el código fuente de Emacs para "Nombre de fuente no válido:" y encontré esta función . Creo que si observa cuidadosamente la font_parse_namefunción, encontrará que analiza la cadena XFT dividiéndola en los guiones, suponiendo que el nombre completo de la fuente esté contenido entre dos guiones.
sid-kap
1
Muchas gracias @ sid-kap, finalmente una respuesta! Nunca he descubierto esto.
darksky
3
Puede cambiar el nombre de la fuente sin usar ttxni convertir los archivos de fuente. Visité los archivos de fuentes Inconsolata-g.otf, Inconsolata-g.sfdy Inconsolata-g.ttfcon Emacsy sustituye todas las apariciones de "inconsolata-g" y "inconsolata-d" con "Inconsolata_g" y "Inconsolata_d". Este texto también aparece entremezclado con "^ @" como en "I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ - ^ @ g ^ @ Inconsolata-g ", que he reemplazado como" I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ _ ^ @ g ^ @Inconsolata_g ". Luego Inconsolata_g.*cambié el nombre de los nombres de los archivos como y los arrastré Font Book.app, lo que funcionó.
armando.sano
@ sid-kap Gracias, sus instrucciones fueron muy claras. Gran respuesta.
Harsh Vardhan