classification
Title: IDLE is pixelated on the Macbook Pro with Retina Display
Type: behavior Stage: resolved
Components: IDLE, Tkinter Versions: Python 3.4, Python 3.3, Python 3.2, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: ned.deily Nosy List: Tyler.Crompton, ned.deily, python-dev, wordtech
Priority: normal Keywords:

Created on 2012-08-08 07:20 by Tyler.Crompton, last changed 2013-03-19 18:36 by ned.deily. This issue is now closed.

Files
File name Uploaded Description Edit
Screen Shot 2012-08-08 at 2.07.19 AM.png Tyler.Crompton, 2012-08-08 07:20 Side by side comparison of Terminal and IDLE on the Macbook Pro with Retina Display
Messages (10)
msg167671 - (view) Author: Tyler Crompton (Tyler.Crompton) Date: 2012-08-08 07:20
I think this is more of a Tkinter issue than IDLE but since IDLE uses Tkinter, it inherits this "bug". Many programs that were not developed for the Macbook Pro with Retina Display still look great. Whereas others, look pixelated in some areas (i.e. the current stable release of Google Chrome IIRC (I installed the beta to get around that)), and some are just flat out pixelated everywhere. IDLE falls into the latter category. I know IDLE really has its issues and that few people use it, but it's a cosmetic change that I don't see being too difficult. Then again, I know hardly anything about how it is implemented.
msg167676 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-08-08 08:13
Text rendering in Tkinter applications like IDLE is a service of the underlying Tcl/Tk implementation.  Essentially, all that IDLE does is to pass text in a requested font face and font size through Tkinter to Tcl/Tk which may then use whatever approach it wants to render the text.  IDLE does allow you to select a font face and text size in the IDLE Preferences Font/Tabs tab.  You may want to experiment there to find a satisfactory combination of settings for your use.  If you can't and there is something specific that needs to change, it will almost certainly have to be done by the Tcl/Tk project.  Feel free to reopen this issue if you can identify specific deficiencies in IDLE or Tkinter.
msg176415 - (view) Author: Kevin Walzer (wordtech) Date: 2012-11-26 14:37
This can probably be fixed by setting this key in the app's info.plist file: 

<key>NSHighResolutionCapable</key>
<true/>

Under the hood, Tkinter/Tk-Cocoa uses CoreText to render text, and I understand this to adapt to high-res displays out of the box--as long as the proper key is set in the plist file. 

Only pixmaps/images require special developer handling to display properly on Retina displays. As IDLE does not use any such graphics, it should be fine. 

Can someone file a patch for the info.plist file, or at try editing the app's info.plist file and then testing on a high-res display? I do not have access to a Retina display machine on my system. Here are more details on how to enable the key and test it:

http://apple.stackexchange.com/questions/53717/how-does-eclipse-work-on-new-retina-macbook-pros
msg176424 - (view) Author: Tyler Crompton (Tyler.Crompton) Date: 2012-11-26 16:31
I can confirm that this works. The underscore does not appear when using the default font settings (Courier, size 10). I changed it to Courier New and all is fine. One may also want to increase the font size to 12 as the font is difficult to read when the property list has been fixed. I have no idea where to begin on the patch, though.
msg176425 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-11-26 16:45
Tahnks for the suggestion, Kevin, and for testing, Tyler.  I'll work up a proper patch and may ask you to test it, Tyler, as I also do not have access to a Retina display at the moment.
msg181137 - (view) Author: Roundup Robot (python-dev) Date: 2013-02-02 07:18
New changeset 2274f3196a44 by Ned Deily in branch '2.7':
Issue #15587: Enable Tk high-resolution text rendering on Macs with
http://hg.python.org/cpython/rev/2274f3196a44

New changeset 7dfd84021494 by Ned Deily in branch '3.2':
Issue #15587: Enable Tk high-resolution text rendering on Macs with
http://hg.python.org/cpython/rev/7dfd84021494

New changeset 8fbab6648309 by Ned Deily in branch '3.3':
Issue #15587: merge from 3.2
http://hg.python.org/cpython/rev/8fbab6648309

New changeset d8dcf87b8e49 by Ned Deily in branch 'default':
Issue #15587: merge from 3.3
http://hg.python.org/cpython/rev/d8dcf87b8e49
msg181139 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-02-02 07:28
I've updated the plists for both IDLE.app and the framework Python.app to enable the high-resolution rendering.  That should affect IDLE.app and bin/idle and any other Tkinter-based program, as long as they all are being run from a framework build of Python such as provided by the python.org OS X installers.  Again, since I don't have access to a Retina display Mac, I cannot test the changes myself.  The fixes will appear in the upcoming 2.7.4 and 3.2.4 releases as well as 3.3.1 and 3.4.0.  It would be nice if someone with a Retina Mac could install one or both of the release candidates for 2.7.4 and 3.2.4 when available and report the results of testing.
msg182468 - (view) Author: Tyler Crompton (Tyler.Crompton) Date: 2013-02-20 04:40
I will gladly test the changes. Where would I find these to download?
msg182475 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-02-20 06:43
Thanks, Tyler.  The 2.7.4 and 3.2.4 maintenance releases have been delayed due to some critical issues and so we don't have a new availability date for the first release candidates.  I'll try to remember to ping here when that happens.
msg184659 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-03-19 18:36
I've just run across an easy way to simulate a retina display on my MBP model (http://stackoverflow.com/a/13596261/145403) and have verified that the change in the plist makes a big difference in Tk text rendering, at least with A/S Tcl/Tk 8.5.13.  So I'm going to close this now.  Tyler, once the next releases are out, I'd still be interested to know how it works for you.
History
Date User Action Args
2013-03-19 18:36:48ned.deilysetstatus: pending -> closed

messages: + msg184659
2013-02-20 06:43:41ned.deilysetstatus: open -> pending

messages: + msg182475
2013-02-20 04:40:26Tyler.Cromptonsetstatus: pending -> open

messages: + msg182468
2013-02-02 07:28:01ned.deilysetstatus: open -> pending
versions: + Python 3.4
type: enhancement -> behavior
messages: + msg181139

resolution: fixed
stage: needs patch -> resolved
2013-02-02 07:18:14python-devsetnosy: + python-dev
messages: + msg181137
2012-11-26 16:45:08ned.deilysetstatus: pending -> open
assignee: ned.deily
messages: + msg176425

stage: resolved -> needs patch
2012-11-26 16:31:51Tyler.Cromptonsetstatus: closed -> pending
resolution: not a bug -> (no value)
messages: + msg176424
2012-11-26 14:37:41wordtechsetnosy: + wordtech
messages: + msg176415
2012-08-08 08:13:59ned.deilysetstatus: open -> closed

versions: - Python 2.6, Python 3.1, Python 3.4
nosy: + ned.deily

messages: + msg167676
resolution: not a bug
stage: resolved
2012-08-08 07:20:16Tyler.Cromptoncreate