ale*_*esc 7 fonts anti-aliasing text-editors windows-8.1 atom-editor
我一直在使用 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。
我已经进行了广泛的搜索并找到了很多解决方案,但都没有奏效。例如:this、this、this和this。
更新
我在这个话题上取得了一些进展。如果我禁用 DirectWrite,则文本会变得更加清晰,但其他图像和图形会变得更加锯齿状。但因为我 99% 的时间都在看文本,所以这不是问题。
我禁用 DirectWrite 的解决方案是在--disable-direct-write
从命令提示符启动 Atom 时添加。但是,我对这个解决方案并不满意,因为当我从开始菜单、任务栏或上下文菜单(“用 Atom 打开”)打开 Atom 时它不起作用。
更新的问题:如何--disable-direct-write
向 Atom永久添加参数,以便在从Taskbar、Start Menu或Open with Atom上下文菜单启动时应用。
我已经使用自定义更新后脚本解决了该问题,该脚本修复了注册表项和“开始”菜单快捷方式以添加参数--disable-direct-write
。
快捷方式
正如我在 @codeSwift4Life 的回答中所述,附加操作--disable-direct-write
不适用于Update.exe
进程的快捷方式(这实际上是一个Squirrel程序)。但是,我确实找到了如何将参数附加到--processStart atom.exe
命令中。看到这个问题。
因此,如果您希望将 Atom 快捷方式更改为append --disable-direct-write
,则必须将其更改为:
C:\Users\USERNAME\AppData\Local\atom\Update.exe --processStart atom.exe
Run Code Online (Sandbox Code Playgroud)
到以下行之一:
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"
Run Code Online (Sandbox Code Playgroud)
上下文菜单
要更改“使用 Atom 打开”上下文菜单,您必须更新一些注册表项。将它们更改为:
X:\Path\to\atom\app-1.0.xx\atom.exe "%V"
Run Code Online (Sandbox Code Playgroud)
到:
X:\Path\to\atom\app-1.0.xx\atom.exe "%V" --disable-direct-write
Run Code Online (Sandbox Code Playgroud)
自动更新后脚本
但由于有很多注册表项,并且每次更新后都必须重复所有操作(并且更新非常频繁),因此手动更改是不可行的。
因此,我创建了一个自动更新后脚本,它会自动更新所有内容。您只需在每次 Atom 更新后运行它即可。
我的更新后脚本的基础是这个咖啡脚本,它实际上是覆盖我们所有手动更改的库存脚本。
您必须按以下方式更改上述脚本:
改变:
createShortcuts = (callback) ->
spawnUpdate(['--createShortcut', exeName], callback)
Run Code Online (Sandbox Code Playgroud)
到:
createShortcuts = (callback) ->
spawnUpdate(['--createShortcut', exeName, '--process-start-args', '--disable-direct-write'], callback)
Run Code Online (Sandbox Code Playgroud)
改变:
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)
Run Code Online (Sandbox Code Playgroud)
到:
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)
Run Code Online (Sandbox Code Playgroud)
该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')
Run Code Online (Sandbox Code Playgroud)
另外,您必须查找/替换process.execPath
为atomExe
. 这是必需的,因为脚本将直接通过 Node 运行,并且process
变量指向 Node 而不是 Atom。
最后,将以下行添加到脚本末尾,以执行快捷方式和注册表更新:
# Update shortcuts, install context menu
updateShortcuts ->
installContextMenu ->
Run Code Online (Sandbox Code Playgroud)
该脚本使用 执行coffee squirrel-update.coffee
。您应该将其放入AppData\Local\atom
文件夹内的新子文件夹中。您还需要fs-plus
和coffee-script
节点包才能成功运行脚本。
归档时间: |
|
查看次数: |
2568 次 |
最近记录: |