2013-05-12 28 views
4

更新在OS的Emacs滾動的Bug X

這個問題從山獅到小牛升級後消失,同時還更新的Emacs從23.4到24.3。

最終更新

用含有

(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文件奇怪圖案

vertical lines

放大圖案之一顯示

magnified one vertical line

這個問題已經存在於Emacs 22,23,和現在的OSX行動幾個版本和包括山獅24。它是一個已知的渲染錯誤?有沒有修復?

無論是建議修改fringes也不linum爲我工作。我還能在哪裏看?

如果我使用默認的白色背景和黑色的前景,這些行要麼不出現或無法察覺(對我來說)。

什麼是最討厭的這個問題是重畫(C-L)不會導致乾淨的文本。

+0

我猜這是字體渲染的問題。嘗試改變爲不同的字體,看看你是否有問題。你在終端中使用emacs嗎? – 2013-05-12 22:28:30

+0

你可能是對的。我找不到問題出現的另一種字體。這隻發生在Apple默認的Monaco字體中。事實上,它們發生在所有大小的摩納哥。但是我當然不希望犧牲一種適合編程的字體,而像摩納哥那樣迅速地呈現字體。 – Calaf 2013-05-12 22:42:06

+0

我做了幾個試驗。該問題至少會出現另一種字體:Menlo。 – Calaf 2013-05-12 23:03:58

回答

1

的問題與OS X的LCD字體平滑之間的算法和Emacs使用來實現滾動算法的相互作用。

下圖顯示字體平滑關閉(左)和上(右)。您將在系統偏好設置\常規中找到該設置。在這兩種情況下,我都用一行滾動了程序。當OS X在打開字體平滑的情況下繪製「@」時,它不僅使用專用於「@」的像素,而且還使用相鄰(空白)字符的藍色像素。

當emacs的滾動,它只改變,它認爲需要修改的字符。如果該字符是空白的並且在滾動後將保持空白,則它不會修改它。這種優化在2013年仍然有效。換句話說,測試兩個字符是空白還是比繪製一個字符便宜。但是這種優化在今天幾乎是不必要的,並且它導致了越野車的顯示。

如果上述假設成立,續集問題就變成是否可以關閉優化。是否有可能要求emacs在每次滾動時重新繪製整個屏幕,或者至少重新繪製與非空白字符相鄰的空白字符。

Font smoothing off (left) and on (right)

一個當然可以簡單地關閉字體平滑。放大的圖像甚至可能暗示非平滑圖像更好。實際上,當字體以其自然(無縮略)大小顯示時,平滑使得字符更清晰易讀,從而無需使用更大的字體。

「c();」兩側的圖案在下面的圖片中與錯誤是一致的。OS X使用左側的藍色像素和右側的紅色/棕褐色像素(可能與顯示器上的RGB模式有關)。滾動時留下的垂直線是藍色還是紅色/棕褐色/磚,取決於它們是否已從滾動字符的左側或右側退出。

blue hints on the left; red hints on the right

更新

的問題現在已經解決了this nightly。由Emacs 24.3.50.1生成的放大c();表明字體平滑與Emacs 24.3.1生成的相同。但是輸出不相同。每兩行文本之間至少有一個額外的水平行像素。