Cocoa Emacs 24.5 Випуски шрифтів (Inconsolata-dz)


10

Я намагаюся встановити [Inconsolata-dz] [1] як мій шрифт за замовчуванням на Emacs. Звичайна Inconsolata працює добре, але версія dz працює неправильно. Більшість функцій, які я використовую, продовжують кидати цю помилку (дотримуйтесь усіх інструкцій в Інтернеті щодо встановлення шрифту 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, але, схоже, змінить шрифт на Helvetica (якщо це не буде замінено кодом вище):

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

Тепер проблема з першим кодом вище полягає в тому, що виконуючи a Ctrl+N, для створення нового вікна буде випущена та сама помилкова помилка імені шрифту.

Я встановив Inconsolata та Inconsolata-dz однаково на своєму Mac. Просто звичайний спосіб за замовчуванням встановлення шрифтів на OS X.

Хтось знає, що я роблю неправильно і як я можу правильно використовувати Inconsolata-dz?


1
Щоб побачити, які шрифти доступні, оцініть наступне в *Scratch*буфері: (insert (prin1-to-string (x-list-fonts "*"))) Якщо його немає, то він недоступний.
законник

@lawlist Я бачу це там, але це дуже довга назва. Коли я вставив його в атрибут set-face ((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 для Powerline". Я шукав вихідний код Emacs для "Недійсне ім'я шрифту:" і знайшов цю функцію . Я вважаю, що якщо уважно подивитись на font_parse_nameфункцію, ви побачите, що аналізує рядок XFT, розділяючи її на дефіси, припускаючи, що вся назва шрифту міститься між двома дефісами.
sid-kap

1
Дякую @ sid-kap, нарешті відповідь! Я ніколи цього не з'ясовував.
темний

3
Ви можете перейменувати шрифт, не використовуючи ttxі не перетворюючи файли шрифтів. Я відвідав файли шрифтів Inconsolata-g.otf, Inconsolata-g.sfdі Inconsolata-g.ttfз Emacsі замінити всі входження «Inconsolata-г» і «Inconsolata-D» з «Inconsolata_g» і «Inconsolata_d». Цей текст також видається переплутаним з "^ @", як у "I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ ^ ^ l ^ @ a ^ @ t ^ @ a ^ @ - ^ @ g ^ @ Inconsolata-g ", яку я замінив на" I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ ^ ^ l ^ @ a ^ @ t ^ @ a ^ @ _ ^ @ g ^ @Inconsolata_g ". Потім я перейменував назви файлів у Inconsolata_g.*та перетягував їх у Font Book.app, що спрацювало.
armando.sano

@ sid-kap Дякую, ваші вказівки були дуже зрозумілі. Чудова відповідь.
Жорсткий Вардан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.