Редактор Atom: отключить сглаживание

2463
alesc

Я уже некоторое время использую Sublime Text 2 и пытаюсь переключиться на редактор Atom в GitHub. Вероятно, единственная проблема, которую я до сих пор не решил, это рендеринг шрифтов. Текст в редакторе Atom очень размытый.

Повсюду (включая Chrome) текст четкий и хорошо читается. Но не для Атома. Для сравнения: отрисовка текста для Atom (первая строка) и Sublime Text 2 (вторая строка).

Редактор Atom: отключить сглаживание

Оба редактора используют тему 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» .

7
Хм, рендеринг текста на моем компьютере с Windows кажется размытым только тогда, когда ClearType ** отключен ** - и, как и вы, установка параметра -webkit-font-smoothing`, похоже, ничего не делает в Windows. Breakthrough 9 лет назад 1
Кроме того, если вам удобно взломать исходный код и перекомпилировать, вы сможете [изменить файл 'atom / src / browser / atom-window.coffee`] (https://github.com/atom/atom/ blob / master / src / browser / atom-window.coffee), изменив параметр `direct-write` на` false`. Это устанавливается в классе `AtomWindow`, поэтому его * можно * изменить также с помощью сценариев (исследуя это сейчас). Breakthrough 9 лет назад 1
Ницца! Надеюсь, вы придумали что-нибудь простое и эффективное. Поскольку новая версия Atom объявляется каждые несколько дней, и если компиляция является сложным процессом, это, вероятно, не будет удобным. Обязательно напишите ответ, чтобы получить награду. alesc 9 лет назад 0

3 ответа на вопрос

3
alesc

I have solved the issue with a custom post-update script, which fixes Registry entries and Start Menu shortcuts in order to add the --disable-direct-write argument.

Shortcuts

As I have stated at @codeSwift4Life's answer, appending --disable-direct-write won't work with shortcuts to the Update.exe process (which is actually a Squirrel program). However, I did found out how to append arguments to the --processStart atom.exe command. See this issue.

Therefore, If you wish to change the Atom shortcut to append --disable-direct-write, you have to change it from:

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

to one of the following lines:

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" 

Context menu

To change the "Open with Atom" context menu, you have to update a few registry entries. Change them from:

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

to:

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

Automated post-update script

But since there are many registry entries and since you have to repeat everything after every update (and updates are very frequent), manual changes aren't feasible.

Therefore I have created an automated post-update script, which updates everything automatically. You just have to run it after every Atom update.

The base of my post-update script was this coffee script, which is actually the stock script that overrides all our manual changes.

You have to change the aforementioned script in the following manner:

Change:

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

to:

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

Change:

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

to:

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

The atomExe variable is defined as following (put it at the top, but after the require lines):

# 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') 

Also, you have to find/replace process.execPath with atomExe. This is needed because the script will be run directly via Node, and the process variable points to Node instead of Atom.

Finally, add the following lines to the end of the script, in order to execute shortcuts and registry updates:

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

The script is executed with coffee squirrel-update.coffee. You should place it into a new subfolder inside the AppData\Local\atom folder. You will also need fs-plus and coffee-script node packages in order to successfully run the script.

2
Breakthrough

Если вам удобно взламывать исходный код 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опцию, которая также может помочь улучшить четкость отображения текста.

Я нашел лучшее решение. Смотрите мой ответ для более подробной информации. alesc 9 лет назад 0
0
juniorRubyist

Откройте в браузере файлов. C:\Users\your-username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\GitHub, IncЗатем щелкните правой кнопкой мыши на Atom, выберите свойства. Затем под цель, добавьте --disable-direct-writeв конце. Убедитесь, что вы заменили your-usernameна имя вашей домашней папки. Также убедитесь, что если есть другие ярлыки, вы их исправите.

свойства

Вы даже пробовали свое решение? Потому что это не работает. Это было первое, что я сделал до того, как написал обновление и установил награду. А также (если это сработало) это единственное решение для запуска Atom из меню «Пуск». Моя основная цель - исправить контекстное меню «Открыть с помощью Atom», которое необходимо обновить в реестре, но оно меняется после каждого обновления Atom. alesc 9 лет назад 0
Временным обходным путем будет переход к `HKEY_CLASSES_ROOT \ * \ shell \ Atom \ command` и добавление` --disable-direct-write` в конец juniorRubyist 9 лет назад 0

Похожие вопросы