0

我想SourceCodePro用作我的默认字体,但它不包括波斯语字符,例如#x0600untill范围内的字符#x06FF。我尝试过这样的事情

(set-fontset-font t
          'ascii
          "Source Code Pro-12")
(set-fontset-font t
          (cons (decode-char 'ucs #x0600)
            (decode-char 'ucs #x6FF))
          "Roya-13")

但它没有奏效。我也尝试使用fontset-standardfontset-default喜欢这个

(set-face-font 'default "fontset-default")
 (set-fontset-font "fontset-default"
      'emacs (font-spec :name "Source Code Pro"))
(set-fontset-font "fontset-default"
          'iso-8859-1 (font-spec :name "Source Code Pro"))
(set-face-attribute 'font-lock-comment-face nil
            :family "Inconsolata" :height 140)
(set-fontset-font "fontset-default"
          '(#x0600 . #x06FF) (font-spec :name "Roya:pixelsize=16:foundry=farsiweb:weight=normal:slant=normal:width=normal:scalable=true"))
(set-fontset-font "fontset-default"
          '(#x0750 . #x075F) (font-spec :name "Roya:pixelsize=16:foundry=farsiweb:weight=normal:slant=normal:width=normal:scalable=true"))
(set-fontset-font "fontset-default"
          '(#x08A0 . #x08FF) (font-spec :name "Roya:pixelsize=16:foundry=farsiweb:weight=normal:slant=normal:width=normal:scalable=true"))
(set-fontset-font "fontset-default"
          '(#xFB50 . #xFDFF) (font-spec :name "Roya:pixelsize=16:foundry=farsiweb:weight=normal:slant=normal:width=normal:scalable=true"))
(set-fontset-font "fontset-default"
          '(#xFD70 . #xFEFF) (font-spec :name "Roya:pixelsize=16:foundry=farsiweb:weight=normal:slant=normal:width=normal:scalable=true"))
(set-fontset-font "fontset-default"
          '(#x1EE00 . #x1EEFF) (font-spec :name "Roya:pixelsize=16:foundry=farsiweb:weight=normal:slant=normal:width=normal:scalable=true"))

这也不起作用。

更新: 感谢 @legoscia的指导,使用 `after-make-frame-functions' 使它对我有用

(defun zzgraph/fix-fontset (&optional frame)
(set-fontset-font "fontset-default" 'arabic "Roya"))
(add-hook 'after-make-frame-functions 'zzgraph/fix-fontset)
4

1 回答 1

0

在 Emacs 24 中,您不需要将框架的字体设置为"fontset-default". 只需修改fontset-default就足以改变默认的回退行为。在您发布的片段中,字体:name属性包含许多不属于名称的额外包袱。尝试消除这一点,并仅使用“Roya”。如果您有其他不适合的名为“Roya”的字体,您可能需要包含的不仅仅是字体名称以区分哪种字体,但您应该使用单独的属性来执行此操作,而不是将它们作为:name属性的一部分捆绑在一起。

总而言之:

(set-face-font 'default "SourceCodePro")
(set-fontset-font "fontset-default"
                  '(#x0600 . #x06FF) (font-spec :name "Roya"))
(set-fontset-font "fontset-default"
                  '(#x0750 . #x075F) (font-spec :name "Roya"))
(set-fontset-font "fontset-default"
                  '(#x08A0 . #x08FF) (font-spec :name "Roya"))
(set-fontset-font "fontset-default"
                  '(#xFB50 . #xFEFF) (font-spec :name "Roya"))
(set-fontset-font "fontset-default"
                  '(#x1EE00 . #x1EEFF) (font-spec :name "Roya"))
于 2015-10-14T03:15:58.560 回答