禁用Xcode代码编辑器中的文本抗锯齿?

14
使用Xcode时,似乎没有办法将代码编辑器字体设置为锐利(即没有“字体平滑”)。尽管您在“首选项>字体和颜色”的预览区域中看到的可能不同,在实际的代码视图中,它总是平滑/反锯齿。
有一些 问题解决了以前版本的Xcode。它们建议使用defaults write com.apple.dt.Xcode <etc>更改各种设置,但这些对我在Mac OS X 10.8.5上的Xcode 5中的代码视图没有影响。我正在使用一个具有一个Retina和一个非Retina屏幕的双显示设置。
我尝试关闭系统偏好设置中的字体平滑复选框,即“通用”>“使用可用的LCD字体平滑”,但这只影响亚像素渲染...

更新(2014年11月25日):在Mac OS X 10.10.1和Xcode 6.1.1上仍存在问题。使用这些终端命令后,以下是编辑器视图(平滑)和首选项窗口(未平滑)的截图:

defaults write com.apple.dt.Xcode NSFontDefaultScreenFontSubstitutionEnabled -bool YES
defaults write com.apple.dt.Xcode AppleAntiAliasingThreshold 16

Xcode


1
你尝试过像我这样配置一个Retina和一个非Retina显示器吗?对我来说,只使用非Retina显示器就可以正常工作。 - Michael Tsai
@MichaelTsai。我想分享您关于Xcode插件的答案给我的同事,但当他打开页面时,您的答案不见了...请问您为什么删除了那个答案?而且,一个被授予赏金的答案怎么可能被删除呢? - Issam T.
@IssamT。它说版主Bill the Lizard将其删除了,没有给出具体的原因。对我来说,删除一个可能导致解决方案的部分答案,而留下两个明显不起作用的答案,似乎有些奇怪。 - Michael Tsai
@MichaelTsai 这很奇怪。无论如何,谢谢。 - Issam T.
有些字体不允许关闭AA。例如,Menlo似乎是默认字体,但始终具有AA,无论您如何配置。另一方面,Monaco允许非AA渲染,因此也尊重其他人提供的“defaults”行。在终端中,您甚至可以看到哪些字体允许AA,哪些不允许:http://apple.stackexchange.com/a/110764 - Christian
显示剩余7条评论
4个回答

12

从Xcode9.3开始,可以通过运行以下命令并重新启动Xcode来在源代码编辑器中禁用文字抗锯齿:

defaults write com.apple.dt.Xcode NSFontDefaultScreenFontSubstitutionEnabled -bool YES

defaults write com.apple.dt.Xcode SourceEditorDisableAntialiasing -bool YES
重新开启抗锯齿 -
defaults write com.apple.dt.Xcode SourceEditorDisableAntialiasing -bool NO

1
我确认在High Sierra + Xcode 9.4.1上(需要重新启动Xcode)。 - Trevor
@Trevor 谢谢,已更新 :) - Vineet Choudhary
1
在Mojave上无法工作,但在带有Xcode 10的High Sierra上可以运行。 - Андрей Первушин
1
@АндрейПервушин - 我刚在Mojave和Xcode 10上检查了一下 - 对我来说可以工作。 - silverdr
1
xcode 11.3.1,mojave 10.14.6 - 对我来说不起作用。老实说,这真是太他妈的令人沮丧了!!! - boggy
显示剩余2条评论

7

Mike Ash说他能够构建一个Xcode插件,以告诉文本视图使用屏幕字体。看起来这很容易做到,尽管我还没有尝试过。

一般的策略是(来自他的推文)“修补-[NSTextView drawRect:]并执行[[self layoutManager] setUsesScreenFonts: YES];。”

更新(2015-08-14):这是Ash的解释性博客文章和他的插件Xcode项目。如果我将7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90添加到DVTPlugInCompatibilityUUIDs中,它可以在Xcode 6.4上使用。我认为这个问题已经解决了!

更新(2016-06-20):自Xcode 8以来,您不能使用Xcode插件,但是这个用户默认设置可以使用:

defaults write com.apple.dt.Xcode NSFontDefaultScreenFontSubstitutionEnabled -bool YES

谢谢。你赢得了我的悬赏;-)希望他能发表一篇文章告诉我们如何使用它。另外,如果你通过任何方式成功修复了你的Xcode,请通过编辑你的答案让我们知道。如果我在你之前找到解决方法,我也会这样做。 - Issam T.
我可以确认这也适用于XCode 7。0420B86A-AA43-4792-9ED0-6FE0F2B16A13是XCode 7的新UUID。 - boggy
在7.1中,它是7265231C-39B4-402C-89E1-16167C4CC990。必须重新编译插件。 - boggy
我无法在Xcode 7.2中使其工作。我将正确的UUID添加到DVTPlugInCompatibilityUUIDs数组中,但即使重新构建项目并手动将插件添加到正确的文件夹中,在重新启动Xcode时仍然没有任何反应。你有什么想法吗? - mttcrsp
在Xcode 7.2上,无需修改即可正常工作。自c57e1起,手动提供DVTPlugInCompatibilityUUIDs不再必要。(现在由project.pbxproj中的PBXSourcesBuildPhase部分处理。) - StvnW

7

如果您使用的是非Retina显示器,请尝试执行以下命令并重启Xcode:

defaults write com.apple.dt.Xcode NSFontDefaultScreenFontSubstitutionEnabled -bool YES

更新内容:

还需要执行以下命令:

defaults write com.apple.dt.Xcode AppleAntiAliasingThreshold 24

1
谢谢。不幸的是,这在我的混合分辨率双显示器设置中无法工作。 - Michael Tsai
谢谢,你是我的英雄!在Mac Pro上使用Mavericks和Xcode 5非常好用。 - lifjoy
在我的 MacBook Pro 2012(非 Retina)上,使用 Xcode 5.0.2 和 OS X 10.9.1 无法工作。 - Aldrich Co
适用于非Retina显示器Dell P2416D(2560x1440),在OS X 10.11 El Capitan上使用Xcode 7.3。 - Bart van Kuik

2

我不确定之前的版本,但使用Xcode 6.1和Yosemite(OS X 10.10),需要两个命令来在Xcode中禁用局部反锯齿。

首先,如已经说明的,您需要在终端控制台输入以下内容:

defaults write com.apple.dt.Xcode NSFontDefaultScreenFontSubstitutionEnabled -bool YES

其次,第二点:
defaults write com.apple.dt.Xcode AppleAntiAliasingThreshold <some integer value>

相较于在整个操作系统中禁用字体平滑或抗锯齿,这是更可取的做法。虽然最好能够在程序内部提供选项来勾选/取消勾选,但至少这种方法可行。


感谢您的帮助,但这对我没有用。我将字体设置为 Monaco 9。这些命令可以在 Xcode 的字体首选项中使字体看起来符合我的要求,但它们似乎不影响主文本编辑器视图。 - Michael Tsai
@MichaelTsai 你好Michael,能给我更多信息吗?你当前的配置是什么?你现在使用的是Xcode 6.1和Yosemite,还是仍然使用与你问题中相同的配置?你能否在Xcode中按下键盘上的Cmd-Shift-3键,给我一个截图,显示前景中的字体和颜色窗口以及后面的编辑器,这样我就可以看到你在说什么了?不要压缩它,直接上传截图。 - Benjamin R
我已经更新了问题并提供了这些额外的信息。 - Michael Tsai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接