Atom 编辑器:禁用抗锯齿

Atom 编辑器:禁用抗锯齿

我已经使用 Sublime Text 2 一段时间了,现在正尝试切换到 GitHub 的 Atom 编辑器。我可能唯一还没有解决的问题是字体渲染。Atom 编辑器中的文本是非常模糊的。

在其他地方(包括 Chrome),文本清晰易读。但 Atom 不行。比较:Atom(第一行)和 Sublime Text 2(第二行)的文本渲染。

在此处输入图片描述

两个编辑器都使用 Monokai 主题,并使用相同的字体(Consolas,12 号)和字体颜色。

我的操作系统是 Windows 8.1 Pro x64,并且已禁用 ClearType。我正在使用最新版本的 Atom,目前是 1.0.11。

我已经进行了广泛的搜索并找到了很多解决方案,但都没有奏效。例如:, 和


更新

我在这个话题上取得了一些进展。如果我禁用 DirectWrite,那么文本会变得更清晰,但其他图像和图形会变得更粗糙。但由于我 99% 的时间都在看文本,所以这不是问题。

我禁用 DirectWrite 的解决方案是--disable-direct-write在从命令提示符启动 Atom 时添加。但是,我对这个解决方案并不满意,因为当我从“开始”菜单、任务栏或上下文菜单(“使用 Atom 打开”)打开 Atom 时,它不起作用。

更新的问题:如何永久添加--disable-direct-write参数到 Atom,以便它在从启动时应用任务栏开始菜单或者使用 Atom 打开上下文菜单。

答案1

我已经使用自定义的更新后脚本解决了该问题,该脚本修复了注册表项和开始菜单快捷方式以添加参数--disable-direct-write

快捷方式

正如我在@codeSwift4Life的回答中所说,附加功能--disable-direct-write不适用于该Update.exe过程的快捷方式(这实际上是松鼠程序)。然而,我做过了解如何将参数附加到--processStart atom.exe命令。请参阅问题。

因此,如果您希望将 Atom 快捷方式更改为 append --disable-direct-write,则必须将其从:

C:\Users\USERNAME\AppData\Local\atom\Update.exe --processStart atom.exe

更改为以下其中一行:

C:\Users\USERNAME\AppData\Local\atom\Update.exe --processStart atom.exe -a "--disable-direct-write"
C:\Users\USERNAME\AppData\Local\atom\Update.exe --processStart atom.exe --process-start-args "--disable-direct-write"

上下文菜单

要更改“使用 Atom 打开”上下文菜单,您必须更新一些注册表项。将它们从以下位置更改:

X:\Path\to\atom\app-1.0.xx\atom.exe "%V"

到:

X:\Path\to\atom\app-1.0.xx\atom.exe "%V" --disable-direct-write

自动更新后脚本

但由于注册表项太多,而且你必须重复一切每次更新后(更新非常频繁),手动更改是不可行的。

因此我创建了一个自动更新后脚本,它可以自动更新所有内容。你只需在每次 Atom 更新后运行它即可。

我的更新后脚本的基础是这个咖啡脚本,这实际上是覆盖我们所有手动更改的库存脚本。

您必须按以下方式更改上述脚本:

改变:

createShortcuts = (callback) ->
  spawnUpdate(['--createShortcut', exeName], callback)

到:

createShortcuts = (callback) ->
  spawnUpdate(['--createShortcut', exeName, '--process-start-args', '--disable-direct-write'], callback)

改变:

  installMenu = (keyPath, arg, callback) ->
    args = [keyPath, '/ve', '/d', 'Open with Atom']
    addToRegistry args, ->
      args = [keyPath, '/v', 'Icon', '/d', process.execPath]
      addToRegistry args, ->
        args = ["#{keyPath}\\command", '/ve', '/d', "#{process.execPath} \"#{arg}\""]
        addToRegistry(args, callback)

到:

  installMenu = (keyPath, arg, callback) ->
    args = [keyPath, '/ve', '/d', 'Open with Atom']
    addToRegistry args, ->
      args = [keyPath, '/v', 'Icon', '/d', atomExe]
      addToRegistry args, ->
        args = ["#{keyPath}\\command", '/ve', '/d', "#{atomExe} \"#{arg}\" --disable-direct-write"]
        addToRegistry(args, callback)

变量atomExe定义如下(放在顶部,但在行之后require):

# Get the latest version of atom.exe
parentDir = fs.listSync('..').filter (x) -> x.indexOf('app-') > -1;
[..., atomDir] = parentDir
atomExe = path.join(path.resolve(atomDir), 'atom.exe')

另外,您必须查找/替换process.execPathatomExe这是必需的,因为脚本将直接通过 Node 运行,并且process变量指向 Node 而不是 Atom。

最后,将以下几行添加到脚本末尾,以执行快捷方式和注册表更新:

# Update shortcuts, install context menu
updateShortcuts ->
  installContextMenu ->

该脚本使用 执行coffee squirrel-update.coffee。您应该将其放入AppData\Local\atom文件夹内的新子文件夹中。您还需要fs-pluscoffee-script节点包才能成功运行该脚本。

答案2

如果您愿意破解 Atom 源代码,则可以通过修改源树中的以下文件手动禁用直接写入:atom/src/browser/atom-window.coffee

具体来说,在第29-31行:

  'web-preferences':
    'direct-write': true
    'subpixel-font-scaling': false

我不认为该direct-write选项已公开给脚本 API,因此您必须手动修改并重新编译 Atom。我也会尝试该subpixel-font-scaling选项,它也可能有助于提高文本渲染清晰度。

答案3

在文件浏览器中打开。C:\Users\your-username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\GitHub, Inc然后右键单击 Atom,选择属性。然后在目标下,--disable-direct-write在末尾添加。确保用your-username你的主文件夹名称替换。此外,如果还有其他快捷方式,请确保修复它们。

特性

相关内容