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新しいウィンドウを作成するためにを実行すると、同じ無効なフォント名エラーがスローされることです。

Macに同じ方法でInconsolataとInconsolata-dzをインストールしました。OS Xにフォントをインストールする通常のデフォルトの方法です。

誰かが私が間違っていること、そしてInconsolata-dzを適切に使用する方法を知っていますか?


1
使用可能なフォントを確認するには、*Scratch*バッファで 次のことを評価し(insert (prin1-to-string (x-list-fonts "*"))) ます。存在しない場合、使用できません。
弁護士

@lawlist私はそこにそれを見ますが、それは非常に長い名前です。set-face-attributeに貼り付けたところ((set-face-attribute 'default nil :family "-*-Inconsolata-g-normal-normal-normal-*-*-*-*-*-m-0-iso10646-1"))、「Invalid face foundry」が表示されました。何かアイデアはありますか?名前は正確には何であると想定されていますか?Inconsolataは機能しますが、Inconsolata-gとInconsolata-dzはすべて利用可能で同じ方法でインストールされていても機能しません。名前のダッシュだと思う?
darksky 2015

回答:


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ではハイフンが含まれているフォントは許可されていません」という信念を裏付ける例やドキュメントへのリンクはありますか?
法律家、16

5
私の特定の問題は、「無効なフォント名:PowerlineのInconsolata-g」というエラーが表示されていたことでした。Emacsのソースコードで「無効なフォント名:」を検索したところ、この関数が見つかりました。font_parse_name関数を注意深く見ると、フォント名全体が2つのハイフンの間に含まれていると想定して、XFT文字列をハイフンで分割して解析することがわかると思います。
sid-kap

1
@ sid-kap、どうもありがとうございました。私はこれを考え出したことがありません。
darksky 16

3
ttxフォントファイルを使用したり変換したりせずに、フォントの名前を変更できます。私は、フォントファイルを訪問しInconsolata-g.otfInconsolata-g.sfdInconsolata-g.ttfしてEmacsおよび「Inconsolata_g」と「Inconsolata_d」と「Inconsolata-G」と「Inconsolata-D」のすべての発生を置き換えます。このテキストは、「I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @-^ @ g」のように、「^ @」と混在して表示されます。 「I ^ @ n ^ @ c ^ @ o ^ @ n ^ @ s ^ @ o ^ @ l ^ @ a ^ @ t ^ @ a ^ @ _ ^ @ g ^」に置き換えた^ @ Inconsolata-g @Inconsolata_g」。次に、ファイル名をに変更し、Inconsolata_g.*それらをFont Book.appにドラッグアンドドロップしました。
armando.sano 2017年

@ sid-kapありがとう、あなたの指示は非常に明確でした。すばらしい答えです。
Harsh Vardhan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.