4

更新

这个问题在从 Mountain Lion 升级到 Mavericks 后消失了,同时也将 Emacs 从 23.4 更新到 24.3。

结束更新

使用 .emacs 文件包含

(set-foreground-color "white")
(set-background-color "black")

(setq mouse-wheel-scroll-amount '(1 ((shift) . 1) ((control) . nil)))
(setq mouse-wheel-progressive-speed nil)

当我以减小的步长向上或向下滚动时,我看到了奇怪的图案

垂直线

放大其中一种图案显示

放大一条垂直线

这个问题已经出现在Emacs 22、23 和现在的 24 版本的 OSX 中——直到并包括 Mountain Lion。这是一个已知的渲染错误吗?有解决办法吗?

修改边缘linum的建议都不适合我。我还能在哪里看?

如果我使用默认的白色背景和黑色前景,这些线条要么不会出现,要么无法察觉(对我来说)。

这个问题最讨厌的是重绘(Cl)不会产生干净的文本。

4

1 回答 1

1

该问题与 OS X 的 LCD 字体平滑算法和 emacs 用于实现滚动的算法之间的交互有关。

下图显示关闭(左)和打开(右)字体平滑。您将在系统偏好设置\常规中找到此设置。在这两种情况下,我都将程序滚动了一行。当 OS X 在字体平滑打开的情况下绘制“@”时,它不仅使用专用于“@”的像素,还使用相邻(空白)字符的蓝色像素。

emacs 滚动时,只修改它认为需要修改的字符。如果字符为空白且滚动后仍为空白,则不会对其进行修改。这种优化在 2013 年仍然有效。换句话说,测试两个字符是否为空白仍然比绘制一个字符便宜。但是今天几乎不需要这种优化,它会导致显示错误。

如果上述假设成立,那么接下来的问题就变成了是否可以关闭优化。是否可以要求emacs在每次滚动时重绘全屏,或者至少重绘与非空白字符相邻的空白字符。

字体平滑关闭(左)和打开(右)

当然可以简单地关闭字体平滑。放大的图像甚至可能表明未平滑的图像更好。在实践中,当字体以其自然(未放大)大小出现时,平滑使字符更加清晰易读,从而无需使用更大的字体。

"c();" 两边的模式 下图中与该错误一致。OS X 在左侧使用蓝色像素,在右侧使用红色/棕褐色像素(这可能与显示器上的 RGB 模式有关)。滚动时留下的垂直线是蓝色或红色/棕褐色/砖形,具体取决于它们是从滚动字符的左侧还是右侧脱落。

左侧的蓝色提示; 右侧的红色提示

更新

现在这个问题在这个 nightly中得到了解决。Emacs 24.3.50.1 产生的放大c();显示字体平滑与 Emacs 24.3.1 产生的一致。但输出并不相同。每两行文本之间至少有一条额外的水平像素线。

于 2013-05-15T16:19:11.440 回答