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

ขณะนี้ปัญหาเกี่ยวกับรหัสแรกข้างต้นคือการทำCtrl+Nเพื่อสร้างหน้าต่างใหม่จะมีข้อผิดพลาดชื่อแบบอักษรที่ไม่ถูกต้องเหมือนกัน

ฉันติดตั้ง Inconsolata และ Inconsolata-dz เช่นเดียวกับใน Mac ของฉัน เป็นวิธีเริ่มต้นปกติของการติดตั้งแบบอักษรบน OS X

ไม่มีใครรู้ว่าสิ่งที่ฉันทำผิดและวิธีการใช้ Inconsolata-dz อย่างถูกต้อง?


1
หากต้องการดูว่าแบบอักษรใดบ้างที่ใช้ได้ให้ประเมินสิ่งต่อไปนี้ใน*Scratch*บัฟเฟอร์: (insert (prin1-to-string (x-list-fonts "*"))) หากไม่มีอยู่แสดงว่าไม่สามารถใช้งานได้
ฏหมาย

@ รายการที่ฉันเห็นมันมี แต่มันเป็นชื่อที่ยาวมาก เมื่อฉันวางลงใน set-face-attribute ((set-face-attribute 'default nil :family "-*-Inconsolata-g-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1"))ฉันได้รับ 'หล่อใบหน้าไม่ถูกต้อง' ความคิดใด ๆ ชื่ออะไรกันแน่ที่ควรจะเป็น Inconsolata ใช้งานได้ แต่ Inconsolata-g และ Inconsolata-dz ไม่ทำงานแม้ว่าพวกเขาจะพร้อมใช้งานและติดตั้งด้วยวิธีเดียวกันทั้งหมด ฉันสงสัยว่ามันเป็นเส้นประในชื่อหรือไม่
darksky

คำตอบ:


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 ในที่สุดก็มีคำตอบ! ฉันไม่เคยคิดออกมานี้
darksky

3
คุณสามารถเปลี่ยนชื่อฟอนต์โดยไม่ต้องใช้ttxหรือไม่แปลงไฟล์ฟอนต์ ผมเข้าเยี่ยมชมไฟล์ตัวอักษรInconsolata-g.otf, Inconsolata-g.sfdและInconsolata-g.ttfด้วยEmacsและแทนที่การเกิดขึ้นของ "Inconsolata-G" และ "Inconsolata-d" กับ "Inconsolata_g" และ "Inconsolata_d" ทุก ข้อความนี้ปรากฏขึ้นพร้อมกับ "^ @" เช่นเดียวกับใน "I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ - ^ @ g ^ @ Inconsolata-g "ซึ่งฉันได้เปลี่ยนเป็น" I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ _ ^ @ g ^ ^ @Inconsolata_g" จากนั้นฉันได้เปลี่ยนชื่อไฟล์เป็นInconsolata_g.*แล้วลากแล้ววางลงFont Book.appซึ่งใช้งานได้
armando.sano

@ sid-kap ขอบคุณคำแนะนำของคุณชัดเจนมาก คำตอบที่ดี
Harsh Vardhan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.