I had earlier said I would dump QtWebKit and use a Cairo/Curl backed WebKit. But after evaluating 3 WebKit flavors, I’m now deciding to stick with QtWebKit. I’ve successfully compiled and run the following:

  • Apple’s WebKit : CoreGraphics, Core Foundation Network
  • QtWebKit : No external dependencies, except Qt of course.
  • Windows Cairo/Curl : All GPL libraries only

Apple’s WebKit
Why use it: Looked really cool, especially the font rendering. Easy to build with Cygwin or Visual Studio Express.

Why not: Using CoreGraphics and CFNetwork has license issues. Safari-Beta crashed more often than not. No toolkit available. On Windows you have to build your application using COM. The “Cool” font rendering may make the text difficult to read.

QtWebKit
Why use it: Was the easiest to compile. Install Qt, Install MingW or Visual Studio Express. 3rd party libraries are already there to be found. Complete application toolkit. Easily portable. It looks just as good as Cairo (to my surprise.)

Why not: DOM is not exposed to your application. Font layout problems (See Calendar screenshots). QMessageBox crash - Javascript Alerts would crash. The last to are just bugs that can be handled.

Windows/Cairo/Curl
Why use it: All GPL libraries. Least memory usage.

Why not: No toolkit. COM programing on windows. Slow.

WebKit/GTK
Would have been nice to test this but I couldn’t get it to build on Windows.

I had though Cairo/Freetype combination would result in better Font rendering. But Qt’s font rendering (which was using Native calls) was just at par with Cairo and FreeType. Apple probably did something special to make their font rendering look really cool.

I’m deciding to use QtWebKit for mainly these two reasons. It provided me with a complete toolkit to finish a prototype really quickly. It compiled easily and quickly. Which means hacking away the bugs and improving rendering quality can be done easily. SVG rendering sucks (see Clock screenshot). But a quick setRenderingHints(ANTIALIAS) made it look really nice.

Calendar Widget