求教:Windows 下 输入法输入的字母 和 fringe bitmap 如何正确缩放?

最近为了项目方便转到了 Windows 下。踩了一些坑后,就剩缩放这一块的问题实在没找到什么解决办法。需要高手来指点一下。

屏幕是4k的hidpi屏幕。emacs 下普通字体能正常缩放,但有一些元素,如 fringe bitmap,和输入法输入时的字母没有正确的缩放,只有正常的 1/4 大小。把屏幕分辨率设置成1080p时,这部分组件的大小比例正常。

而在 Linux pgtk 下这些部分是不需要设置,开箱就能正确缩放的。

其中输入法这一块比较致命,有些影响使用了。

截图如下:

输入法:
屏幕截图 2023-09-04 133226

窗口最右侧的 fringe bitmap:
屏幕截图 2023-09-04 132631

有没有 Windows 下的高手来指点一下,如何正确设置这些元素的缩放?

emacs-rime

这问题目前无解,在意就用 emacs-rime

换成搜狗输入法然后输入模式取消单行模式就行

fringe indicator的缩放问题可以试试这个包emacs-fringe-scale,主要功能就是给define-fringe-bitmap添加一个hook,在定义的时候就将bitmap缩放,但是这个包有一个缺陷,一些builtin bitmap并不是通过elisp来定义的而是通过c,我不太清楚怎么去调用他们的值,就很笨地将这些builtin bitmaps用elisp的函数重新定义了一次(

(setq builtin-bitmaps
      ' ((question-mark [#x3c #x7e #xc3 #xc3 #x0c #x18 #x18 #x00 #x18 #x18])
	 (exclamation-mark [#x18 #x18 #x18 #x18 #x18 #x18 #x18 #x00 #x18 #x18])
	 (left-arraw [#x18 #x30 #x60 #xfc #xfc #x60 #x30 #x18])
	 (right-arrow [#x18 #x0c #x06 #x3f #x3f #x06 #x0c #x18])
	 (up-arrow [#x18 #x3c #x7e #xff #x18 #x18 #x18 #x18])
	 (down-arrow [#x18 #x18 #x18 #x18 #xff #x7e #x3c #x18])
	 (left-curly-arrow [#x3c #x7c #xc0 #xe4 #xfc #x7c #x3c #x7c])
	 (right-curly-arrow [#x3c #x3e #x03 #x27 #x3f #x3e #x3c #x3e])
	 (left-triangle [#x03 #x0f #x1f #x3f #x3f #x1f #x0f #x03])
	 (right-triangle [#xc0 #xf0 #xf8 #xfc #xfc #xf8 #xf0 #xc0])
	 (top-left-angle [#xfc #xfc #xc0 #xc0 #xc0 #xc0 #xc0 #x00])
	 (top-right-angle [#x3f #x3f #x03 #x03 #x03 #x03 #x03 #x00])
	 (bottom-left-angle [#x00 #xc0 #xc0 #xc0 #xc0 #xc0 #xfc #xfc])
	 (bottom-right-angle [#x00 #x03 #x03 #x03 #x03 #x03 #x3f #x3f])
	 (left-bracket [#xfc #xfc #xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xfc #xfc])
	 (right-bracket [#x3f #x3f #x03 #x03 #x03 #x03 #x03 #x03 #x3f #x3f])
	 (filled-rectangle [#xfe #xfe #xfe #xfe #xfe #xfe #xfe #xfe #xfe #xfe #xfe #xfe #xfe])
	 (hollow-rectangle [#xfe #x82 #x82 #x82 #x82 #x82 #x82 #x82 #x82 #x82 #x82 #x82 #xfe])
	 (hollow-square [#x7e #x42 #x42 #x42 #x42 #x7e])
	 (filled-square [#x7e #x7e #x7e #x7e #x7e #x7e])
	 (vertical-bar [#xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xc0 #xc0])
	 (horizontal-bar [#xfe #xfe])))

(dolist (bitmap builtin-bitmaps)
  (define-fringe-bitmap (car bitmap) (cadr bitmap)))

上面糊的这些贴在调用包和包的函数后应该就能生效了。(没有在windows上试过,这是我之前在linux上的配置)

感谢!我去研究一些这个包


牛逼,成了!

确实,取消单行是一个好办法。

楼上提的emacs-rime也是一个办法,但我还是希望emacs和其他程序能保持一致吧。

楼主用的输入法是什么,微软拼音?换个支持高分屏的输入法设置一下字体大小就可以了 image