Sublime Text 2をしばらく使用していて、GitHubのAtomエディターに切り替えようとしています。おそらく、私がまだ解決していない唯一の問題はフォントのレンダリングです。 Atomエディターのテキストは非常にぼやけています。
他のすべての場所(Chromeを含む)では、テキストは鮮明で読みやすくなっています。しかし、Atomではありません。比較のために:Atom(1行目)とSublime Text 2(2行目)のテキストレンダリング。
どちらのエディターも、同じフォント(Consolas、サイズ12)とフォントの色でMonokaiテーマを使用しています。
私のOSはWindows8.1 Pro x64で、ClearTypeを無効にしています。現在1.0.11である最新バージョンのAtomを使用しています。
私はすでに広範囲にわたる検索を行い、多くの解決策を見つけましたが、どれもうまくいきませんでした。例: this 、 this 、 this 、および this 。
[〜#〜]更新[〜#〜]
私はこのトピックに関していくらかの進歩を遂げました。 DirectWriteを無効にすると、テキストはより鮮明になりますが、他の画像やグラフィックはよりギザギザになります。しかし、私は99%の確率でテキストを見ているので、これは問題ではありません。
DirectWriteを無効にする私の解決策は、コマンドプロンプトからAtomを起動するときに--disable-direct-write
を追加することです。ただし、スタートメニュー、タスクバー、またはコンテキストメニューからAtomを開いた場合(「Atomで開く」)は機能しないため、このソリューションには満足できません。
更新された質問:--disable-direct-write
引数をAtomに永続的に追加して、タスクバーから起動するときに適用されるようにするにはどうすればよいですか? 、スタートメニューまたはAtomコンテキストメニューで開きます。
--disable-direct-write
引数を追加するために、レジストリエントリとスタートメニューのショートカットを修正するカスタムの更新後スクリプトで問題を解決しました。
ショートカット
@ codeSwift4Lifeの回答で述べたように、--disable-direct-write
を追加しても、Update.exe
プロセス(実際には Squirrel プログラム)へのショートカットでは機能しません。しかし、私didは、--processStart atom.exe
コマンドに引数を追加する方法を見つけました。 this の問題を参照してください。
したがって、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"
コンテキストメニュー
「OpenwithAtom」コンテキストメニューを変更するには、いくつかのレジストリエントリを更新する必要があります。それらを以下から変更します。
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ではなくNodeを指すため、これが必要です。
最後に、ショートカットとレジストリの更新を実行するために、スクリプトの最後に次の行を追加します。
# Update shortcuts, install context menu
updateShortcuts ->
installContextMenu ->
スクリプトはcoffee squirrel-update.coffee
で実行されます。 AppData\Local\atom
フォルダー内の新しいサブフォルダーに配置する必要があります。スクリプトを正常に実行するには、fs-plus
およびcoffee-script
ノードパッケージも必要です。
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
も試してみますオプション。これは、テキストレンダリングの明瞭さを高めるのにも役立つ可能性があります。