Atom-Editor: Deaktivieren Sie das Anti-Aliasing

2467
alesc

Ich habe Sublime Text 2 seit einiger Zeit verwendet und versuche, zum GitHub-Atom-Editor zu wechseln. Wahrscheinlich ist das einzige Problem, das ich immer noch nicht gelöst habe, das Rendern von Schriftarten. Der Text im Atom-Editor ist sehr verschwommen.

Überall sonst (einschließlich Chrome) ist der Text scharf und kann gelesen werden. Nicht für Atom. Zum Vergleich: Text-Rendering für Atom (erste Zeile) und Sublime Text 2 (zweite Zeile).

Atom-Editor: Deaktivieren Sie das Anti-Aliasing

Beide Editoren verwenden das Monokai-Design mit derselben Schriftart (Consolas, Größe 12) und Schriftfarbe.

Mein Betriebssystem ist Windows 8.1 Pro x64 und ClearType ist deaktiviert. Ich verwende die neueste Version von Atom, die derzeit 1.0.11 ist.

Ich habe bereits eine umfangreiche Suche durchgeführt und viele Lösungen gefunden, aber keine davon hat funktioniert. Zum Beispiel: das, das, das und das .


AKTUALISIEREN

Ich habe bei dem Thema einige Fortschritte gemacht. Wenn ich DirectWrite deaktiviere, wird der Text schärfer, andere Bilder und Grafiken werden jedoch unregelmäßiger. Aber da ich den Text zu 99% betrachte, ist dies kein Thema.

Meine Lösung zum Deaktivieren von DirectWrite ist das Hinzufügen, --disable-direct-writewenn Atom von der Eingabeaufforderung aus gestartet wird . Ich bin jedoch mit dieser Lösung nicht zufrieden, da sie nicht funktioniert, wenn ich Atom über das Startmenü, die Taskleiste oder das Kontextmenü ("Öffnen mit Atom") öffne.

Aktualisierte Frage : Wie füge ich ein --disable-direct-writeArgument dauerhaft zu Atom hinzu, damit es beim Starten über die Taskleiste, das Startmenü oder das Kontextmenü " Öffnen mit Atom" gilt ?

7
Hmm, das Text-Rendering scheint auf meinem Windows-Computer nur verschwommen zu sein, wenn ClearType ** deaktiviert ist ** - und wie Sie scheint das Einstellen der Option -webkit-font-smoothing unter Windows nichts zu tun. Breakthrough vor 8 Jahren 1
Wenn Sie mit dem Quellcode vertraut sind und neu kompilieren, sollten Sie auch die [atom / src / browser / atom-window.coffee] -Datei ändern können (https://github.com/atom/atom/). blob / master / src / browser / atom-window.coffee), indem Sie die Option "Direktschreiben" in "false" ändern. Dies ist in der `AtomWindow`-Klasse festgelegt, so dass es * möglicherweise * auch möglich ist, das Scripting zu ändern (dies wird jetzt untersucht). Breakthrough vor 8 Jahren 1
Nett! Ich hoffe, Sie haben etwas einfaches und effektives. Da alle paar Tage eine neue Atom-Version angekündigt wird und das Kompilieren ein komplexer Vorgang ist, ist dies wahrscheinlich nicht bequem. Schreiben Sie eine Antwort, um die Prämie zu erhalten. alesc vor 8 Jahren 0

3 Antworten auf die Frage

3
alesc

Ich habe das Problem mit einem benutzerdefinierten Post-Update-Skript gelöst, das Registrierungseinträge und Startmenü-Verknüpfungen korrigiert, um das --disable-direct-writeArgument hinzuzufügen .

Tastenkombinationen

Wie ich bei @ codeSwift4Life's Antwort angegeben habe, funktioniert das Anhängen --disable-direct-writenicht mit Verknüpfungen zu dem Update.exeProzess (was eigentlich ein Eichhörnchenprogramm ist ). Ich habe jedoch herausgefunden, wie man dem --processStart atom.exeBefehl Argumente anhängt . Siehe dieses Problem.

Wenn Sie die Atom-Verknüpfung zum Anhängen ändern möchten --disable-direct-write, müssen Sie sie wie folgt ändern:

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

zu einer der folgenden Zeilen:

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" 

Kontextmenü

Um das Kontextmenü "Öffnen mit Atom" zu ändern, müssen Sie einige Registrierungseinträge aktualisieren. Ändern Sie sie aus:

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

zu:

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

Automatisiertes Skript nach dem Update

Da es jedoch viele Registrierungseinträge gibt und Sie nach jedem Update alles wiederholen müssen (und Updates sehr häufig sind), sind manuelle Änderungen nicht möglich.

Deshalb habe ich ein automatisiertes Post-Update-Skript erstellt, das alles automatisch aktualisiert. Sie müssen es nur nach jedem Atom-Update ausführen.

Die Basis meines Post-Update-Skripts war dieses Kaffeeskript, bei dem es sich tatsächlich um das Standard-Skript handelt, das alle unsere manuellen Änderungen überschreibt.

Sie müssen das vorgenannte Skript auf folgende Weise ändern:

Veränderung:

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

zu:

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

Veränderung:

 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) 

zu:

 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) 

Die atomExeVariable ist wie folgt definiert (oben, aber hinter den requireZeilen):

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

Außerdem müssen Sie Suchen / Ersetzen process.execPathmit atomExe. Dies ist erforderlich, da das Skript direkt über Node ausgeführt wird und die processVariable auf Node statt auf Atom verweist.

Fügen Sie schließlich die folgenden Zeilen am Ende des Skripts hinzu, um Verknüpfungen und Registrierungsaktualisierungen auszuführen:

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

Das Skript wird mit ausgeführt coffee squirrel-update.coffee. Sie sollten es in einem neuen Unterordner im AppData\Local\atomOrdner ablegen. Sie müssen auch fs-plusund coffee-scriptKnoten Pakete, um das Skript erfolgreich auszuführen.

2
Breakthrough

Wenn Sie mit dem Atom-Quellcode vertraut sind, können Sie das direkte Schreiben manuell deaktivieren, indem Sie die folgende Datei im Quellbaum ändern: atom/src/browser/atom-window.coffee

Insbesondere in den Zeilen 29-31:

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

Ich glaube nicht, dass die direct-writeOption für die Skript-API verfügbar ist. Daher müssten Sie Atom manuell ändern und neu kompilieren. Ich würde auch die subpixel-font-scalingOption ausprobieren, die auch dazu beitragen könnte, die Textdarstellung klarer zu gestalten.

Ich habe eine bessere Lösung gefunden. Siehe meine Antwort für weitere Details. alesc vor 8 Jahren 0
0
juniorRubyist

Im Dateibrowser öffnen. C:\Users\your-username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\GitHub, IncKlicken Sie dann mit der rechten Maustaste auf Atom, und wählen Sie Eigenschaften aus. Dann unter Ziel --disable-direct-writeam Ende hinzufügen . Stellen Sie sicher, dass Sie your-usernameden Namen Ihres Heimatordners ersetzen . Stellen Sie außerdem sicher, dass Sie andere Verknüpfungen korrigieren.

Properties

Hast du deine Lösung überhaupt ausprobiert? Weil es nicht klappt. Dies war das erste, was ich gemacht habe, bevor ich das Update geschrieben und die Kopfgeldmenge eingestellt hatte. Und auch (wenn es funktioniert hat) ist dies nur die Lösung, um Atom vom Startmenü aus zu starten. Mein Hauptziel ist es, das Kontextmenü "Öffnen mit Atom" zu korrigieren, das Sie in der Registrierung aktualisieren müssen - es ändert sich jedoch nach jedem Atom-Update. alesc vor 8 Jahren 0
Eine temporäre Lösung wäre die Navigation zu `HKEY_CLASSES_ROOT \ * \ shell \ Atom \ command` und das Hinzufügen von --disable-direct-write am Ende juniorRubyist vor 8 Jahren 0