web-dev-qa-db-ja.com

Atomエディター:アンチエイリアシングを無効にする

Sublime Text 2をしばらく使用していて、GitHubのAtomエディターに切り替えようとしています。おそらく、私がまだ解決していない唯一の問題はフォントのレンダリングです。 Atomエディターのテキストは非常にぼやけています。

他のすべての場所(Chromeを含む)では、テキストは鮮明で読みやすくなっています。しかし、Atomではありません。比較のために:Atom(1行目)とSublime Text 2(2行目)のテキストレンダリング。

enter image description here

どちらのエディターも、同じフォント(Consolas、サイズ12)とフォントの色でMonokaiテーマを使用しています。

私のOSはWindows8.1 Pro x64で、ClearTypeを無効にしています。現在1.0.11である最新バージョンのAtomを使用しています。

私はすでに広範囲にわたる検索を行い、多くの解決策を見つけましたが、どれもうまくいきませんでした。例: thisthisthis 、および this


[〜#〜]更新[〜#〜]

私はこのトピックに関していくらかの進歩を遂げました。 DirectWriteを無効にすると、テキストはより鮮明になりますが、他の画像やグラフィックはよりギザギザになります。しかし、私は99%の確率でテキストを見ているので、これは問題ではありません。

DirectWriteを無効にする私の解決策は、コマンドプロンプトからAtomを起動するときに--disable-direct-writeを追加することです。ただし、スタートメニュー、タスクバー、またはコンテキストメニューからAtomを開いた場合(「Atomで開く」)は機能しないため、このソリューションには満足できません。

更新された質問--disable-direct-write引数をAtomに永続的に追加して、タスクバーから起動するときに適用されるようにするにはどうすればよいですか? スタートメニューまたはAtomコンテキストメニューで開きます。

7
alesc

--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ノードパッケージも必要です。

3
alesc

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も試してみますオプション。これは、テキストレンダリングの明瞭さを高めるのにも役立つ可能性があります。

2
Breakthrough

ファイルブラウザで開きます。 C:\Users\your-username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\GitHub, Inc次に、Atomを右クリックして、プロパティを選択します。次に、ターゲットの下で、最後に--disable-direct-writeを追加します。 your-usernameをホームフォルダの名前に置き換えてください。また、他のショートカットがある場合は、それらを修正するようにしてください。

Properties

0
juniorRubyist