Các vấn đề về phông chữ ca cao 24,5 (Inconsolata-dz)


10

Tôi đang cố gắng đặt [Inconsolata-dz] [1] làm phông chữ mặc định của mình thành Emacs. Inconsolata thông thường hoạt động tốt, nhưng phiên bản dz không hoạt động đúng. Hầu hết các chức năng tôi sử dụng tiếp tục ném lỗi này (làm theo tất cả các hướng dẫn trực tuyến về cách đặt phông chữ Emacs):

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

Cuối cùng tôi đã làm cho nó hoạt động bằng cách làm điều này trong init.el:

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

Tôi cũng có cái này init.el, được tạo bởi customize-faces, nhưng nó dường như thay đổi phông chữ thành Helvetica (trừ khi bị ghi đè bởi mã ở trên):

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

Bây giờ vấn đề với mã đầu tiên ở trên là việc thực hiện một Ctrl+N, để tạo một cửa sổ mới sẽ gây ra lỗi tên phông chữ không hợp lệ tương tự.

Tôi đã cài đặt Inconsolata và Inconsolata-dz theo cách tương tự trên máy Mac của tôi. Chỉ là cách cài đặt phông chữ thông thường, mặc định trên OS X.

Có ai biết tôi đang làm gì sai và làm thế nào tôi có thể sử dụng Inconsolata-dz đúng cách không?


1
Để xem những phông chữ nào có sẵn, hãy đánh giá các phần sau trong *Scratch*bộ đệm: (insert (prin1-to-string (x-list-fonts "*"))) Nếu nó không có ở đó, thì nó không có sẵn.
luật

@lawlist Tôi thấy nó ở đó nhưng nó là một cái tên rất dài. Khi tôi dán nó vào thuộc tính set-face ((set-face-attribute 'default nil :family "-*-Inconsolata-g-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1")), tôi nhận được 'đúc khuôn mặt không hợp lệ'. Bất cứ ý tưởng tại sao? Chính xác thì cái tên giả sử là gì? Inconsolata hoạt động nhưng Inconsolata-g và Inconsolata-dz không hoạt động, mặc dù tất cả đều có sẵn và được cài đặt theo cùng một cách. Tôi nghi ngờ đó là dấu gạch ngang trong tên?
darksky

Câu trả lời:


9

Emacs không cho phép các phông chữ có dấu gạch nối trong đó. Tôi sẽ đổi tên phông chữ thành một cái gì đó không chứa dấu gạch nối.

Bạn có thể làm điều này bằng cách sử dụng ttx . Ví dụ: giả sử bạn có một phông chữ có tên Inconsolata-dz for Powerline.otftrong thư mục làm việc hiện tại của bạn:

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

Sau đó, bạn có thể đổi tên otftệp được sản xuất thành bất cứ thứ gì bạn muốn và di chuyển nó vào thư mục phông chữ của bạn.


Bạn có một ví dụ hoặc một liên kết đến một số tài liệu để hỗ trợ niềm tin của bạn rằng " Emacs không cho phép các phông chữ có dấu gạch nối trong đó. "?
luật

5
Vấn đề cụ thể của tôi là tôi đã thấy lỗi "Tên phông chữ không hợp lệ: Inconsolata-g cho Powerline". Tôi đã tìm kiếm mã nguồn Emacs cho "Tên phông chữ không hợp lệ:" và tìm thấy chức năng này . Tôi tin rằng nếu bạn xem xét kỹ font_parse_namechức năng, bạn sẽ thấy phân tích chuỗi XFT bằng cách tách chuỗi tại các dấu gạch nối, giả sử rằng toàn bộ tên phông chữ được chứa giữa hai dấu gạch nối.
sid-kap

1
Cảm ơn rất nhiều @ sid-kap, cuối cùng là một câu trả lời! Tôi chưa bao giờ tìm ra điều này.
darksky

3
Bạn có thể đổi tên phông chữ mà không cần sử dụng ttxcũng như chuyển đổi các tệp phông chữ. Tôi đã đến thăm các tập tin font chữ Inconsolata-g.otf, Inconsolata-g.sfdInconsolata-g.ttfvới Emacsvà thay thế mỗi lần xuất hiện của "Inconsolata-g" và "Inconsolata-d" với "Inconsolata_g" và "Inconsolata_d". Văn bản này cũng xuất hiện xen kẽ với "^ @" như trong "I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ - ^ @ g ^ @ Inconsolata-g "mà tôi đã thay thế là" Tôi ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ _ ^ @ g ^ @Inconsolata_g ". Sau đó tôi đã đổi tên các tên tệp thành Inconsolata_g.*và kéo và thả chúng vào Font Book.app, chúng hoạt động.
armando.sano

@ sid-kap Cảm ơn bạn, hướng dẫn của bạn rất rõ ràng. Câu trả lời chính xác.
Harsh Vardhan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.