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

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

В другом месте (включая Chrome) текст острый и ОК для чтения. Но не для Atom. Для сравнения: рендеринг текста для Atom (первая строка) и Sublime Text 2 (вторая строка).

 введите описание изображения здесь>> </a> </p>

<p> Оба редактора используют тему Monokai с тем же шрифтом (Consolas, размер 12) и цвет шрифта. </p>

<p> Моя ОС - это Windows 8.1 Pro x64, и я отключил ClearType. Я использую последнюю версию Atom, которая в настоящее время 1.0.11. </p>

<p> Я уже провел обширный поиск и нашел множество решений, но никто из них не работал. Например: <a href= это , this , this и this .


UPDATE

Я сделал некоторый прогресс по этой теме. Если я отключу DirectWrite, текст станет более резким, но другие изображения и графика станут более неровными. Но поскольку я смотрю на текст в 99% случаев, это не проблема.

Мое решение отключить DirectWrite - добавить --disable-direct-write при запуске Atom из командной строки. Однако я не удовлетворен этим решением, поскольку он не работает, когда я открываю Atom из меню «Пуск», «Панель задач» или «Контекстное меню» («Открыть с помощью Atom»).

Обновленный вопрос : как я могу постоянно добавлять аргумент --disable-direct-write для Atom, чтобы он применялся при запуске с Панель задач , Меню «Пуск» или Открыть с помощью Atom .

7 голосов | спросил alesc 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 07 Sep 2015 21:24:34 +0300 2015, 21:24:34

2 ответа


3

Я решил проблему с помощью специального сценария пост-обновления, который исправляет записи реестра и ярлыки меню «Пуск», чтобы добавить код --disable-direct-write.

Комбинации клавиш

Как я уже сказал при ответе @ codeSwift4Life, добавление --disable-direct-write не будет работать с ярлыками в Update.exe (фактически это белка ). Тем не менее, я сделал выяснил, как добавлять аргументы в команду --processStart atom.exe. См. этот вопрос.

Поэтому, если вы хотите изменить ярлык Atom для добавления --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"

Контекстное меню

Чтобы изменить контекстное меню «Открыть с атомом», вам необходимо обновить несколько записей реестра. Измените их:

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.execPath с помощью atomExe. Это необходимо, потому что скрипт будет запускаться напрямую через Node, а переменная process указывает на узел вместо Atom.

Наконец, добавьте следующие строки в конец скрипта, чтобы выполнять ярлыки и обновления реестра:

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

Сценарий выполняется с помощью coffee squirrel-update.coffee. Вы должны поместить его в новую подпапку внутри папки AppData\Local\atom. Вам также понадобится fs-plus и coffee-script node пакетов для успешного запуска скрипта.

ответил alesc 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 26 Sep 2015 18:55:39 +0300 2015, 18:55:39
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, что также может помочь повысить прозрачность рендеринга текста.

ответил Breakthrough 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 25 Sep 2015 19:48:01 +0300 2015, 19:48:01

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132