Paint.NET v3.5.2 is on the way – Better font support for Win7/Vista

While I’ve mostly been taking a break from working on Paint.NET in the short term, I have been slowly working on the next minor bugfix release. The biggest change will be with how fonts are handled with DirectWrite, for all Windows 7 and many Vista users.

GDI and DirectWrite differ in the way they organize the available font families that are installed. For example, DirectWrite (and WPF and CSS) list the “Arial” font family, and include “Arial Narrow” and “Arial Black” in that bucket. You can choose those variants by varying the Weight, Style, and Stretch that you request. “Arial Narrow” would be selected by asking for the “Arial” family, and a Stretch value of “Condensed.”

GDI, however, lists “Arial Narrow” and “Arial Black” separately. This is the organization model that most software in Windows follows, starting with Notepad and going all the way to Word. Once you’ve chosen the font family, you use toggle buttons for Bold, Italics, Underline, and Strikeout. It’s a fairly simple model, and even more important is that it is well understood and people are comfortable with it.

Paint.NET now uses DirectWrite when it’s available, on both Windows 7 and Windows Vista. However, due to time constraints, the font family list is presented as-is, with no way to select font faces like Arial Narrow, and no way to configure the Weight, Style, and Stretch properties. In effect, Arial Narrow is unavailable, or “missing”.

The other difference is that DirectWrite does not handle bitmap fonts. This includes old staples like Courier, Terminal, and Fixedsys. These are of limited use in UI nowadays, but can be fun when doing image editing for certain stylistic reasons. Maybe you want to make a funny image with a talking robot, and using a font that looks like it came from a Commodore 64 helps out a lot here. Again, due to time constraints, this missing feature of DirectWrite is also projected directly into the feature set of Paint.NET.

So, I’m happy to say that in the upcoming Paint.NET v3.5.2 will “fix” all of this. For the technical minded, this is actually three fixes. The first is that Paint.NET will always ask GDI for the list of installed fonts, instead of DirectWrite. This ensures that the list in the toolbar includes Arial and Arial Narrow, etc. Second, the initialization code for the font renderer now has a fallback whereby if it asks for “Arial Narrow” and DirectWrite rejects it, that it will then ask DirectWrite to interpret it as a GDI font name (it uses CreateFontFromLOGFONT).

Third, if DirectWrite still refuses to accept the font name, then GDI will be used as an ultimate fallback renderer. This last change actually serves two purposes, the second one being an accidental but helpful corollary. First, it enables bitmap fonts in Paint.NET again. Second, there are many cases where DirectWrite has more strict error handling than GDI, and this has resulted in crashes for some users with some fonts. Now instead of a crash the user will either get GDI to render the font correctly, or GDI will render some generic substitution font like Arial. Neither is optimal, but both are highly preferable to a crash or error message.

A silly robot picture using bitmap fonts, with Arial Narrow highlighted in the font list

Other changes in Paint.NET v3.5.2 include a fix for a nasty memory leak, some bad text kerning when antialiasing is disabled, and some other functionality glitches that crept in.

Paint.NET v3.5.1 is now available

I discussed this update yesterday, and I’ve decided to release it before the weekend.

You can either use the built-in updater, or go to the website and download it. There’s no need to uninstall the old version; that will be taken care of automatically.

Oh! And for those who didn’t check out betas, this will be your first chance to see the background auto-updater in action. I think you’ll find it much more convenient than the in-your-face update process that older versions required you to sit through.

Changes and fixes since v3.5:

  • New: For Windows 7, added taskbar progress reporting for long running operations (effects, adjustments, Image->Resize, save, install)

  • Made some corrections to the French translation
  • Running setup with /auto will no longer launch Paint.NET when it’s done
  • Fixed an issue where Paste into New Image would refuse an image on the clipboard, even if regular Paste would take it
  • Fixed a race condition with Edit->Paste and Image->Resize whereby it would take up 100% CPU and take between 1 minute to 1 hour to finish
  • Fixed an issues with Copy/Paste where it would leave an extra line of transparent pixels on the left, top, right, and/or bottom edges
  • Fixed lag with the paintbrush tool that was being seen on some systems
  • Fixed some issues with the paintbrush and eraser tool being misaligned when zoomed in
  • Fixed a crash that would happen at (seemingly) random times, such as after drawing with the paintbrush tool, on some systems
  • Fixed a minor and obscure rendering glitch with the Move Selected Pixels tool
  • Fixed an issue with glass over Remote Desktop or Windows 7 Virtual PC
  • Fixed a minor glitch whereby the "Unsaved Changes" confirmation dialog could never finish rendering the image thumbnail if one of the Move tools was active

Paint.NET v3.5.1 is coming … small fixes, and more Win7

It’s inevitable that a small “QFE” update is necessary shortly after a big release like Paint.NET v3.5. I’ve been keeping track of the crashes and other issues that have been sent my way, and I have fixes for the most important ones. Some users have reported lag with the paintbrush tool … fixed. Some have been having a really difficult time with Paste gobbling up CPU time and never finishing … fixed. Et. cetera.

In addition, I’ve added a few extra small goodies for Windows 7 users. Namely, many long-running operations will report their progress in the taskbar, like so:

All effects, adjustments, Image->Resize, and the installer itself will do this. The installer is a pretty useful one, in fact. That way you can tell at a glance if it’s done or not. It reports progress, and also uses an overlay icon that updates to reflect whether installation is in-progress, successfully completed, or had an error.

Hopefully in another update I can publish the image list into the superbar’s tab list. However, this will require a bit more work and so it did not make the cut for v3.5.1.

Paint.NET v3.5 (Final) is now available!

Thanks to everyone who helped out with the extensive alpha and beta releases with all the bug reports, crash log submissions, and feedback. It has all been a huge help in creating the best Paint.NET release ever.

As usual, there are two ways to get the new version:

  1. Preferred: Use the built-in updater from within Paint.NET. If you are using version v3.36, simply go to the Help menu and click on “Check for Updates.” For v3.5 alpha/beta, go to the Utilities menu instead of the Help menu. Or, just wait for the update prompt to come up automatically within the next week or so.
  2. Download directly from the website: http://www.getpaint.net/ . There is no need to uninstall the old version; that will be taken care of automatically.

Changes since version 3.36:

  • New: Refreshed user interface with new icons and visual styling. On Windows 7 and Vista, it is enhanced for Aero and “glass”.
  • New effect: Blurs -> Surface Blur, by Ed Harvey
  • New effect: Distort -> Dents, by Ed Harvey
  • New effect: Distort -> Crystalize, by Ed Harvey
  • New: Russian translation.
  • Performance and memory usage have been extensively optimized throughout the entire program.
  • .NET Framework 3.5 SP1 is now required, which has many built-in performance improvements.
  • Disk space usage has been reduced by about 12MB by using NTFS compression on installation files related to staging (.MSI) and diagnostics (.PDB).
  • Compression for .PDN images has been improved.
  • Effect dialog responsiveness has been improved.
  • Images open much faster, especially on single CPU systems.
  • Startup performance on most systems will be better by about 20%.
  • Memory usage has been reduced when more than one image is open.
  • Rendering quality has been greatly improved when zoomed in.
  • The selection outline is no longer animated. Instead of “dancing ants”, a context-sensitive “XOR” stipple pattern is drawn. This has allowed for improved performance and lowered CPU consumption (and longer battery life).
  • The font manager for the Text tool has been completely rewritten, which fixes many problems seen with crashes and missing fonts.
  • On Windows XP, the Text tool has improved reliability and font selection (it uses GDI instead of GDI+).
  • On Windows 7, the Text tool will use DirectWrite (instead of GDI) which gives better performance and greatly improved quality. On Windows Vista, you may install the Platform Update for Windows Vista to enable this feature; otherwise GDI will be used.
  • The toolbar font list has improved usability, rendering quality, and significantly improved performance.
  • The toolbar font list no longer requires an application restart to recognize newly installed fonts.
  • When many fonts are installed, both memory usage and startup performance have been greatly improved.
  • It is now drastically easier to move a very small selection.
  • All installation prerequisites are now installed automatically, such as .NET and Windows Installer.
  • Updates are now downloaded in the background, and installed after you exit the application. In previous versions, this was a foreground task and you could not use Paint.NET while the update was downloaded.
  • Added a “Utilities” menu. Updates, Languages, and Plugin Errors have been moved there.
  • Added a “Manage Fonts” command to the Utilities menu. This will launch the built-in Windows font control panel.
  • Clicking the middle mouse button on an image thumbnail will now close the image.
  • Improved the Unfocus effect.
  • The DirectDraw Surface (.DDS) file type now allows you to select the resampling algorithm for auto-generated mip-maps.
  • A processor that supports SSE is now required (almost all CPUs purchased this decade satisfy this).
  • Fixed an issue with Gaussian Blur and its treatment of alpha values.
  • Fixed a crash with the “Units” selector in the toolbar.
  • Fixed a crash due to an overflow that prevented very large images from working (64-bit only).
  • Fixed many other miscellaneous glitches and crashes.
  • The Korean translation has been removed. Sadly, we were unable to find the resources to complete this.

Enjoy! 🙂

Paint.NET v3.5 Beta 4 (Build 3591) is now available

The translations are done, the last bugs have been ironed out, and Paint.NET v3.5 is a few steps away from prime time. Officially this is a beta, but the final release is imminent.

Update: Looks like I mixed up the Russian translation, and it comes up in English. That will be fixed of course! 🙂

Anyway you can grab it over at the website. If you want the list of changes since Beta 3, you can get those at the forum. Happy Halloween!

Paint.NET v3.5 Beta 3 (Build 3572) is now available

This update is focused on fixing a lot of small issues, ranging from performance to selection clipping. The full changelist, as usual, is over at the forum. Of note, the compression for .PDN files has been improved. For the tech-minded, I switched from the .NET-supplied GZipStream over to SharpZipLib’s GZipInputStream and GZipOutputStream.

At this point, the bar for fixing a bug is quite high. I’m waiting for a few translations to be finalized, but other than that the only bugs I plan to fix are for crashes and data loss.

If you’re seeing a bug that still hasn’t been fixed, and you haven’t reported it, then you should report it. Please don’t assume everyone or anyone else will see it too. I once had someone, after the v2.1 release, post on the forum that some bug still wasn’t fixed after the betas. I asked him if he’d ever reported it. “No, I just assumed you already knew about it.” Well, I didn’t – it was an obscure issue where some ATI multimonitor utility would get confused and force all of Paint.NET’s tool windows to be the wrong sizes. (The fix was actually to delete the ATI utility – honestly, they aren’t necessary after Windows 98 anyway.)

Paint.NET v3.5 Beta 2 (Build 3561) is now available

This update fixes a whole swath of small issues, and even a few larger ones. The full change list is at the forum. As usual, you can either download it over at the forum, or use the built-in updater.

For those new to Paint.NET v3.5 with Beta 1, this is your first chance to try out the new background updater – you can have it download the update without sitting around and waiting for it as a foreground task!

Of note, there’s a new option in the Window menu called “Glass Dialog Buttons.” I really like the glass footers for dialogs and don’t want to give them up, but just enough people have expressed a strong dislike that I decided to make it an option.

Paint.NET v3.5 Beta 1 (Build 3550) is now available!

It’s finally time for the beta, which means things are mostly done and stabilization is now the highest priority.

Go download it at the forum, or get it via the built-in updater from any Paint.NET version. Make sure “Also check for pre-release versions” is enabled – you can ensure this by first clicking Check for Updates (from the Help or Utilities menus), then clicking the Options button.

This beta is the first to include the newly refreshed user interface, with new icons and enhancements for Aero and “glass” (Windows 7 and Vista only). Here’s a taste of that:

(Click for full-size version.)

You can get the full changelist over at the forum.

In addition to the glass in the image thumbnail list, I have added it to the footer of many dialogs. This includes the setup wizard, and dialogs for File->New, Image->Resize, Image->Canvas Size, Choose Tool Defaults, Save Configuration, Layer Properties, Rotate/Zoom, all IndirectUI-based effects (both built-in and plugins), and Help->About.

Here’s a little preview of that:

(Click for full-size image.)

Please note that if you are using the “Windows Classic” theme, or if you are running Windows XP, then Paint.NET v3.5 will look mostly the same as Paint.NET v3.36.

Also, there are some languages for which the “glass footers” will not be enabled. These include Japanese, Chinese, and Korean. The reason for this is purely technical – the text for the buttons does not render correctly. It appears that GDI+ is actually passing through to GDI when rendering those glyphs, and that causes the alpha channel to be overwritten and the text is illegible.

Paint.NET v3.5 now enhanced for Windows 7 with DirectWrite

The latest alpha build of Paint.NET v3.5 will now use DirectWrite instead of GDI for the Text tool if you are running Windows 7. Get it while it’s hot: http://paintdotnet.forumer.com/viewtopic.php?f=46&t=31132

DirectWrite is a new font and text rendering system that comes with Windows 7. In Paint.NET, you’ll see the following benefits:

  • Faster text rendering. This is currently due to important architectural differences from GDI. With DirectWrite, I can render using multiple threads (performance scaling), while also not blocking the UI thread from drawing (mutexing). GDI can only render text on 1 thread at a time, and that also includes the thread responsible for the UI. DirectWrite can also benefit from GPU acceleration when things are set up correctly with Direct2D (Paint.NET only uses the software rasterization capabilities right now, but in the future who knows!).
  • Better quality text rendering. DirectWrite implements what is called “y-direction antialiasing”. The short story is that GDI apparently only does antialiasing on the horizontal axis. It can also position characters with sub-pixel accuracy … in other words, GDI uses integers and DirectWrite uses floating point.

When it comes to performance you can see the difference just by opening Paint.NET, switching to the Text tool, and clicking on the font list dropdown. In GDI you’ll see the font previews slowly trickle into view, and scrolling can get laggy and “stalled” (the difference is very pronounced if you have lots of fonts installed – I have over 2000 on my system). With DirectWrite it’s nearly instantaneous and also very zippy when scrolling. If you type many lines of text onto the canvas, Paint.NET will use up to 1 thread per line for rendering (capped by the number of cores your CPU has), and on a dual- or quad-core system the performance benefit can add up. Systems with more cores/threads/CPUs will see the most benefit for both scenarios (yes, HyperThreading helps).

I tested on a 3.6GHz Core i7 and a 1.6GHz Atom. On both systems, DirectWrite was a big performance improvement.

Also, you can turn off DirectWrite in Paint.NET by launching the program with the /disableDirectWrite command-line parameter. This is quite useful for comparing the two renderers. If you don’t know what a “command-line parameter” is, then don’t worry about it 🙂

Thanks go out to Dwanye Robinson (at Microsoft) for helping out.

Paint.NET v3.36 is now available!

This is mostly a servicing release to make some small improvements and to fix a few important bugs.

You can get it via the built-in updater by going to Help -> Check for Updates, or by going to the website: http://www.getpaint.net/

Enjoy!

List of changes:

  • Improved: Effect rendering should be a little faster now.
  • Changed: Implemented some changes to the "Add Noise" effect that were suggested by a forum member.
  • Changed: The canvas background color is now always #c0c0c0.
  • Changed: The auto-updater should now correctly detect .NET 3.5 and newer, which will help to save bandwidth when Paint.NET v4.0 is released (it will require .NET 3.5).
  • Fixed: Paint.NET now works on a system that has the .NET 3.5 SP1 "Client Profile" installed.
  • Fixed: When zoomed in and the cursor is to the top-left of the image (negative coordinates), the ruler is now highlighted in the correct area. Fixed: The effect rendering system no longer sets the "Tag" property on the configuration dialog.
  • Fixed: Some incorrectly authored plugins would cause a crash when loading their support details (author, copyright, etc.).
  • Fixed: There was a bug in the color wheel for IndirectUI that caused it to show the wrong values at initialization.
  • Fixed: There was a performance problem for effects that used the IndirectUI color wheel control.
  • Fixed: In some rare cases, Paint.NET would crash while shutting down.
  • Fixed: When using the "Fixed Ratio" feature of the Rectangle Selection tool, it would crash if 0 was specified for both the width and height.