Emacs框架背景颜色和默认面部背景设置为相等,但在#010101中看起来有所不同

山原原

我将框架背景颜色和默认的脸部背景颜色都设置为#262626:

(add-to-list 'default-frame-alist '(background-color . "#262626"))
(set-face-attribute 'default nil
                    :background "#262626")

尽管如此,它们的渲染略有不同:

残破的渲染。

区别几乎不明显。如果以GIMP或类似的格式查看,则可以看到有文本的背景是#262626,而没有文本(空白行)的背景是#252525。这困扰着我。

奇怪的是,为两个设置#242424时,不会发生相同的事情:

不间断的渲染。

那么,为什么不只使用#242424并完成它呢?我坚持使用#262626,因为我希望Emacs与我的xterms具有相同的颜色,而我的xterms是该颜色,因为它在256色表中为235。我希望在xterm中运行的具有256色功能的应用程序能够准确地再现背景色。

那么,我的问题是:如何使Emacs渲染框架背景和文本背景相同?

(我意识到自己喜欢这件事听起来很疯狂,但是没有理由为什么它不能正常工作并且让我发疯。)

这是Arch Linux上的Emacs 24.3。

山原原

啊哈!我发现了问题。这是一个错误的舍入错误。

  • 这是bzr版本116690(git commit 08885465fcc080f369f0958fcd85e37e28a7526f)。
  • ./autogen.sh, 然后:

    ./configure --prefix=/opt/emacs/usr --sysconfdir=/opt/emacs/etc \
        --libexecdir=/opt/emacs/usr/lib --localstatedir=/opt/emacs/var \
        --with-x-toolkit=gtk3 --with-xft CFLAGS=-g
    
  • 安装目录在下面,/opt/emacs以避免破坏现有安装。

  • make(sudo) make installgdb src/emacs

罪魁祸首功能xg_set_widget_bg在中src/gtkutil.c在第1039行设置一个断点,该断点从浮点颜色值设置背景:

gtk_widget_override_background_color (w, GTK_STATE_FLAG_NORMAL, &bg);

就我而言,第一个呼叫xg_set_widget_bg是无关紧要的。第二个是乐趣发生的地方。戳结构:

Breakpoint 1, xg_set_widget_bg (f=0x1209908, w=0x1658110, pixel=2500134) at gtkutil.c:1039
1039          gtk_widget_override_background_color (w, GTK_STATE_FLAG_NORMAL, &bg);
(gdb) print xbg
$1 = {pixel = 2500134, red = 9764, green = 9764, blue = 9764, flags = 7 '\a', pad = 0 '\000'}
(gdb) print bg
$2 = {red = 0.14898908979934386, green = 0.14898908979934386, blue = 0.14898908979934386, alpha = 1}
(gdb) print bg.red * 0xffff
$3 = 9763.9999999999982
(gdb) print bg.red * 0xff
$4 = 37.992217898832678
(gdb) set bg.red = bg.green = bg.blue = (double)0x26 / 0xff
(gdb) print bg
$5 = {red = 0.14901960784313725, green = 0.14901960784313725, blue = 0.14901960784313725, alpha = 1}
(gdb) print bg.red * 0xffff
$6 = 9765.9999999999982
(gdb) print bg.red * 0xff
$7 = 37.999999999999993

cont,然后看到问题神奇地消失了。调试器非常酷。

如果要查看Emacs如何获取值xbg,请查看xfns.c当您说时(set-background-color "#262626"),Emacs会将每个组件转换为0x2600,然后向X询问最接近的颜色值。在这里是9764(0x2624)。您可以使用进行验证xmag,因为它报告了16位组件。

显然,GTK正在将其像素值缩放为0xff,并且有足够的错误使它四舍五入(最小?)到37(0x25)而不是38(0x26)。文本渲染在其他地方完成,没有相同的问题。

最后,我想这主要是GTK的错。我现在真的不想接触GTK来源,但至少我知道发生了什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Emacs框架背景颜色和默认脸部背景设置为相等,但与#010101有所不同

来自分类Dev

Bootstrap模态在Chrome和Firefox中看起来有所不同

来自分类Dev

Android:画布和视图的颜色看起来有所不同

来自分类Dev

为什么Vim颜色在tmux的内部和外部看起来有所不同?

来自分类Dev

ConstraintWidth_percent在“设计”选项卡和实践中看起来有所不同

来自分类Dev

TIFF16图像在Windows File Viewer和MATLAB中看起来有所不同

来自分类Dev

带有optgroup的样式选择标签在Firefox 40中看起来有所不同

来自分类Dev

数字在iPhone上的Safari中看起来有所不同

来自分类Dev

HTML Css按钮在Firefox中看起来有所不同

来自分类Dev

MS Office文件在LibreOffice中看起来有所不同

来自分类Dev

自定义NavigationBar按钮在iOS 7中看起来有所不同

来自分类Dev

相同的CSS和HTML代码,但在2页上看起来有所不同

来自分类Dev

相同的图像数据在相同的颜色图下看起来有所不同

来自分类Dev

Imageview在不同的大小和密度下看起来有所不同

来自分类Dev

控件在运行时和设计时看起来有所不同

来自分类Dev

Qt GUI在Linux,Mac和Windows上看起来有所不同

来自分类Dev

包含在页面中时,SVG图标看起来有所不同

来自分类Dev

以下代码中的字符指针声明数组看起来有所不同

来自分类Dev

包含在页面中时,SVG图标看起来有所不同

来自分类Dev

自适应网站在移动浏览器中看起来有所不同

来自分类Dev

两个微调器在同一活动中看起来有所不同

来自分类Dev

Android按钮样式在不同的设备(AOSP和Samsung Galaxy)上看起来有所不同

来自分类Dev

JButton字体在不同的PC上看起来有所不同

来自分类Dev

HTML视频在不同的计算机上看起来有所不同

来自分类Dev

iOS使用复选框的切换按钮在不同的浏览器中看起来有所不同

来自分类Dev

为什么Firefox中的Bootstrap 3日期输入与Chrome相比看起来有所不同?

来自分类Dev

为什么在从Netbeans运行的Java应用程序和从Jar运行的Java应用程序中,相同的字体看起来有所不同?

来自分类Dev

Android:AlertDialog在片段上看起来有所不同

来自分类Dev

在iOS中使用时UIImage看起来有所不同

Related 相关文章

  1. 1

    Emacs框架背景颜色和默认脸部背景设置为相等,但与#010101有所不同

  2. 2

    Bootstrap模态在Chrome和Firefox中看起来有所不同

  3. 3

    Android:画布和视图的颜色看起来有所不同

  4. 4

    为什么Vim颜色在tmux的内部和外部看起来有所不同?

  5. 5

    ConstraintWidth_percent在“设计”选项卡和实践中看起来有所不同

  6. 6

    TIFF16图像在Windows File Viewer和MATLAB中看起来有所不同

  7. 7

    带有optgroup的样式选择标签在Firefox 40中看起来有所不同

  8. 8

    数字在iPhone上的Safari中看起来有所不同

  9. 9

    HTML Css按钮在Firefox中看起来有所不同

  10. 10

    MS Office文件在LibreOffice中看起来有所不同

  11. 11

    自定义NavigationBar按钮在iOS 7中看起来有所不同

  12. 12

    相同的CSS和HTML代码,但在2页上看起来有所不同

  13. 13

    相同的图像数据在相同的颜色图下看起来有所不同

  14. 14

    Imageview在不同的大小和密度下看起来有所不同

  15. 15

    控件在运行时和设计时看起来有所不同

  16. 16

    Qt GUI在Linux,Mac和Windows上看起来有所不同

  17. 17

    包含在页面中时,SVG图标看起来有所不同

  18. 18

    以下代码中的字符指针声明数组看起来有所不同

  19. 19

    包含在页面中时,SVG图标看起来有所不同

  20. 20

    自适应网站在移动浏览器中看起来有所不同

  21. 21

    两个微调器在同一活动中看起来有所不同

  22. 22

    Android按钮样式在不同的设备(AOSP和Samsung Galaxy)上看起来有所不同

  23. 23

    JButton字体在不同的PC上看起来有所不同

  24. 24

    HTML视频在不同的计算机上看起来有所不同

  25. 25

    iOS使用复选框的切换按钮在不同的浏览器中看起来有所不同

  26. 26

    为什么Firefox中的Bootstrap 3日期输入与Chrome相比看起来有所不同?

  27. 27

    为什么在从Netbeans运行的Java应用程序和从Jar运行的Java应用程序中,相同的字体看起来有所不同?

  28. 28

    Android:AlertDialog在片段上看起来有所不同

  29. 29

    在iOS中使用时UIImage看起来有所不同

热门标签

归档