spacemacs 中文有完美解决方案吗?org 表格输入中文只有第一个字上屏了,只有我是这样吗?

平台

OS: Ubuntu 18.04.3 LTS

emacs: GNU Emacs 26.3

spacemacs: Release 0.200.13.x

fcitx version: 4.2.9.6

sogou: v2.3.1.0112

请教各位大佬

不知道在这两个问题上发费了多少时间,google 一搜前几页都被打开过。故来论坛请教。(注册新账号,收不到邮件- -,我还以为是因为QQ邮箱的问题,换 163 还是不行,最后通过 github 登录,也是难啊)

1. 中文字体

在 GUI 上中文字体有完美的解决方案吗?

调整了字体选择的优先级。目前来看,org-mode 中标题的中文字是没有问题的,可以正常放大,也没有日文字型。但是,,,普通文本中,还是有日文字型。比如下图,“将”和“直”:

image

说明标题和正文都不是一种字体?很迷啊

我知道网上的解决方案都是设置中文字体,但是这种方法,标题中的字体不能正常缩放,至少我试过的很多方法,包括 chinese layer 也不能缩放。

你们是怎么解决的?

2. org mode 表格中不能连续输入中文

比如,我输入“中国”两个字,只有“中”字会正确的上屏,没有后面的“国”。

Peek%202019-10-30%2012-23

在其他地方输入都没有碰到什么问题,唯独在 org 表格中输入。

搞了半天找到一个替代方案,使用 pyim,在 org 表格中可以正常一次输入多个汉字。

然而,稍稍试用,感觉不太好用,并不能替代搜狗。所以就是其他时候都用搜狗,表格中用 pyim,怎一个蛋疼了得!!!

另,表格中文对齐,是在论坛上找到的解决方案,单独设置表格字体。感谢!!!

你们有遇到这个问题吗?怎么解决的?

我使用 emacs 就是想舒舒服服的用 org mode 啊。结果 org 还没用的怎么样,时间全给 emacs 了。

难啊

你可以先装个cnfonts,配置好后,中英文表格对齐和字体缩放都没问题。 输入法我看你是用拼音 ,可以用pyim+liberime+rime,据说效果非常好。(我是五笔,享受不了这种福利)

没有用过Spacemacs,但是我在GNU Emacs底下是这样启动Emacs的。

env LANG=zh_CN.UTF-8 emacs

可以参考Fcitx ArchWiki。对能不能输入的问题,你有试过这个方法吗?如果试过,还不行,那我也没办法了。如果可以,建议改动.desktop文件中Exec的那一行,类似于下面的样子,我自己的情况是/usr/local/share/applications/emacs.desktop

[Desktop Entry]
Name=Emacs
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=env LANG=zh_CN.UTF-8 emacs %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupWMClass=Emacs
Keywords=Text;Editor;

至于字形的问题,这个可能就不是Emacs的问题了,你检查一下自己的64-language-selector-prefer.conf里面日文和中文的相对位置是不是中文在前,日文在后。我的是这个样子的。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<alias>
		<family>sans-serif</family>
		<prefer>
			<family>Noto Sans CJK SC</family>
			<family>Noto Sans CJK TC</family>
			<family>Noto Sans CJK HK</family>
			<family>Noto Sans CJK JP</family>
			<family>Noto Sans CJK KR</family>
		</prefer>
	</alias>
	<alias>
		<family>serif</family>
		<prefer>
			<family>Noto Serif CJK SC</family>
			<family>Noto Serif CJK TC</family>
			<family>Noto Serif CJK JP</family>
			<family>Noto Serif CJK KR</family>
		</prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer>
			<family>Noto Sans Mono CJK SC</family>
			<family>Noto Sans Mono CJK TC</family>
			<family>Noto Sans Mono CJK HK</family>
			<family>Noto Sans Mono CJK JP</family>
			<family>Noto Sans Mono CJK KR</family>
		</prefer>
	</alias>
</fontconfig>

如果使用英文界面,这个文件的默认顺序是下面这个样子的,所以经常看到很多字用的是日文的字形,比方说“门”。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<alias>
		<family>sans-serif</family>
		<prefer>
			<family>Noto Sans CJK JP</family>
			<family>Noto Sans CJK KR</family>
			<family>Noto Sans CJK SC</family>
			<family>Noto Sans CJK TC</family>
			<family>Noto Sans CJK HK</family>
		</prefer>
	</alias>
	<alias>
		<family>serif</family>
		<prefer>
			<family>Noto Serif CJK JP</family>
			<family>Noto Serif CJK KR</family>
			<family>Noto Serif CJK SC</family>
			<family>Noto Serif CJK TC</family>
		</prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer>
			<family>Noto Sans Mono CJK JP</family>
			<family>Noto Sans Mono CJK KR</family>
			<family>Noto Sans Mono CJK SC</family>
			<family>Noto Sans Mono CJK TC</family>
			<family>Noto Sans Mono CJK HK</family>
		</prefer>
	</alias>
</fontconfig>
2 个赞

pyim支持五笔

嗯,我知道,我一直在用

感谢你的回复!

我试过你所说的方法,在我的电脑上行不通。

使用环境变量,org 的表格中也是不能正常输入,我电脑原本也是 zh_cn. 只要不是 org 表格,其他地方都没有问题。

我就是调整了优先级之后,标题的文字正常了,可普通文本还是有日文字型。"64-*"这个文件我修改过。不知道还有没有其他地方要修改的,很迷啊

反正我Emacs里面的字体配置如下,没用过Spacemacs,不知道通不通用,兼不兼容。

(dolist (script '(han cjk-misc bopomofo))
  (set-fontset-font "fontset-default" script
                    (font-spec :family "Noto Sans Mono CJK SC")))
                    ;; (font-spec :family "Microsoft YaHei" :size 15.0)))

;; (dolist (script '(latin cyrillic greek))
;;   (set-fontset-font "fontset-default" script
;;                  (font-spec :family "Consolas" :size 13.2)))

;; (set-fontset-font "fontset-default" 'kana "Meiryo")

;; (set-fontset-font "fontset-default" 'hangul "Malgun Gothic")

(set-fontset-font "fontset-default" 'symbol "Symbola" nil 'append)

;; General Punctuation: http://www.unicode.org/charts/PDF/U2000.pdf
;; Geometric Shapes: http://www.unicode.org/charts/PDF/U25A0.pdf
;; Arrows: http://www.unicode.org/charts/PDF/U2190.pdf
(dolist (target '((#x2000 . #x206f) (#x25c6 . #x25c7) (#x2190 . #x2193)))
  (set-fontset-font "fontset-default" target
                    (font-spec :family "DejaVu Sans Mono"
                               :size 11.0)
                    nil 'prepend))

;; (set-fontset-font "fontset-default" '(#x2000 . #x206f)
;;                   (font-spec :family "DejaVu Sans Mono"
;;                              :size 11.0)
;;                   nil 'prepend)

;; Mathematical operators: http://www.unicode.org/charts/PDF/U2200.pdf
(set-fontset-font "fontset-default" '(#x2200 . #x22ff)
                  "DejaVu Sans" nil 'prepend)

cnfonts 配置好了!谢谢啦~

pyim+liberime+rime 这套组合,没有尝试,虽然 rime 的大名听说过。但 linux 下搜狗用着也没什么问题,唯独 org 表格不能输入多个字,win10 用自带输入法。

pyim 我用的最简单的配置,才能正常使用,使用作者推荐的配置,不能输入中文,也不知道哪里出了问题。

  (require 'pyim)
  (require 'pyim-basedict) ; 拼音词库设置,五笔用户 *不需要* 此行设置
  (pyim-basedict-enable)   ; 拼音词库,五笔用户 *不需要* 此行设置
  (setq default-input-method "pyim")
  (global-set-key (kbd "C-\\") 'toggle-input-method)

pyim 使用能明显感觉到卡顿、延迟。所以不想再折腾这个组合了,时间成本。。。

老哥是 cnfonts 的作者?

使用 gui 设置,中文字体列表不全,系统明明有的字体比如“思源”系列,gui 里标注“NA”。

还是修改了“profile”文件才用上了“Noto Sans Mono CJK SC”字体。

谢谢!

我现在使用 cnfonts 进行配置后,中文字体没有问题了。

就是 org 表格输入还是不行哟。换整套输入法,这个成本太高了~~~

这个问题我也在 ubuntu 下遇到过, 现在姑且算是解决了.

首先确定这就是 spacemacs 的锅, 而且 gui 和终端都有 org-mode 表格里面搜狗输入法上屏只上一个字的问题.

最后偶然发现一个奇妙的方法可以解决这个问题 !!

org-mode 表格的每一个格子, 都是由左右两条竖线围起来的 |一个格子|, 如果表格是自动补全生成而不是自己敲的, 那么左右两条竖线会隔的比较开, 这个时候你去格子中间打字 |   这   |, 就会遇到输入法只有一个字上屏的问题. 可是, 如果你贴着右边竖线打字 |      这里|, 输入法就可以正常上屏. :joy:

有点羡慕那些字母语言国家的开发人员.:disappointed_relieved:

机器比较差内存少且用拼音输入的话,可以用以下设置优化速度,

    ;; use memory efficient pyim engine
   (setq pyim-dcache-backend 'pyim-dregcache)

外置中文输入法的体验是比不上 pyim 的,并且 rime 的可玩性很高,对得起它的时间成本,胜过关掉云联想的搜狗(有云的搜狗就是个流氓)

现在liberime的主要问题是编译麻烦, 大多数linux发行版的 emacs 都没有开启动态模块功能,所以需要手动编译 emacs,相对就罗嗦了, 只能等到 emacs 27 了

是否可以考虑让emacs core 直接合并librime的代码?

可能性不大吧?

可以开个投票

你看一下 echo area 那有没有什么提示,之前好像遇到过是 org-babel 什么 error,然后我把 org 重新删了升级一下就可以了。

我试了一下,我这也可以。。。

算解决拉。谢谢~~~

好的,再折腾 pyim 的时候试试。

好奇问问,外部输入法也挺好用啊,如果不遇到我这个问题的话。fcitx.el 也可以切换输入法。

为什么大家还喜欢内部输入法?