切换到emacs中的其他拆分子窗口时,字体会更改(但不应该更改)

时间:2014-04-20 14:51:32

标签: emacs fonts emacs24

在.emacs中,我为汉字设置了一个更大的字体,但是希望保留平假名和片假名的较小字体:

(set-fontset-font "fontset-default" 'han "Sazanami Gothic:size=18")
(set-fontset-font "fontset-default" '(#x3000 . #x30ff) "Sans")

加载文件等时有效。

当我使用水平分割窗口并切换到其他子窗口时,我要离开的子窗口中平假名的字体有时会变为大字体。是因为unicode范围重叠,并且不遵守定义的顺序?我该如何正确指定范围,即我可以将范围排除在'han之外,还是我需要追捕'han的定义并手动纠正范围?

3 个答案:

答案 0 :(得分:0)

通常,缓冲区背景和缓冲区前景等字体会全局更改 - 基于每帧或所有帧 - 基于每个缓冲区或每个窗口。以下是如何仅影响一个缓冲区的两个示例:

  
(defun buffer-background-red ()
(interactive)
  (setq buffer-face-mode-face `(:background "red"))
  (buffer-face-mode 1))

(defun zoom ()
(interactive)
  (setq buffer-face-mode-face `(:height 375))
  (buffer-face-mode 1))

答案 1 :(得分:0)

作为一种解决方法(未经测试),您可以尝试使用font-lock将不同的 face 应用于相关字符(假设您可以使用正则表达式轻松定位它们以进行字体锁定或一个功能)。面部可以指定字符大小。

答案 2 :(得分:0)

回答我自己的问题:我用'范围

替换了'han(脚本名称符号)
'(#x3400 . #x4dff) '(#x4e00 . #x9fff) '(#x20000 . #x2bfff)

到3个不同的呼叫中的CJK unicode块。这很有效。

显然,使用脚本名称符号和范围重叠字体定义的评估有点不确定,所以我有时会得到一个,有时会得到另一个。