Curiosity is bliss    Archive    Feed    About    Search

Julien Couvreur's programming blog and more

Tablet PC's Ink interoperability...


... or its lack thereof.

The Tablet PC SDK offers a wide range of APIs to capture and manipulate ink. Ink can be exchanged using various persistence formats, via the Ink.Save and Ink.Load methods.
The four persistence formats are InkSerializedFormat, Base64InkSerializedFormat, Gif and Base64Gif.
See at the end of this entry for details on each.
The summary is that none is really interoperable, as a ink persisted in these formats can't be loaded as ink and ink can't be persisted to these formats on non-Microsoft platforms.

I still can't figure out is why Microsoft keeps creating new closed formats like this. Is it on purpose, or is it because they think having a documented format is more work (now and also in the future in terms of support and backward compatility)?
Maybe the Jot standard (a specification for an ink storage and interchange format) to which Microsoft collaborated is old or didn't apply well to the new Tablet PC technologies, but it could either have been refreshed or a new specification could have been created.
I thought Microsoft had made the turn and was now facing competitors on better grounds: having the best product, with the most productive and secure experience. Locking people and competitors out of their own ink certainly shows that the mentality change hasn't completely taken place yet.

I wish Microsoft would rely on its great ink technologies and research to win markets and mindshare, rather than persisting to include the exchange formats in their arsenal against the competition.

Ink persistence formats
InkSerializedFormat: The MSDN references pages for Ink persistence unfortunately have broken links for the "Ink Serialized Format" (ISF) format, but it is basically yet another undocumented proprietary binary format to store the ink.

Base64InkSerializedFormat: The base64 encoding of ISF can be used to persist the ink into XML, as suggested on MSDN. Except that it really isn't XML, in the spirit (wrapping a binary blob with XML doesn't make it more interoperable)...

Gif: The gif format is quite interesting, as it is a regular gif image representing the ink drawing, that also contains the ink in a serialized format (probably ISF again) in the gif's extensions. This allows ink-enabled platforms to handle the ink as ink, while allowing the other platforms to default to displaying the image.
Although it uses a smart fallback strategy, I don't consider this format to be interoperable, because not all the data can be extracted and this format can't be generated on non-Microsoft platforms.

Base64Gif: The gif format can also be base64-encoded for storing the extended image in text streams like XML or HTML.


The ISF 'link' (mentioned above) on MSDN got fixed over the week-end. It turns out it isn't a real link, it just triggers a little tooltip that explain that ISF is an optimized binary format... so no new information.

Unrelated, a piece of research on ink beautifying for chinese calligraphy on Tablet PC:
I just wish the program and/or source were distributed along with the article :-(

Posted by: Dumky (June 24, 2003 11:35 PM) ______________________________________

I am looking for a way to capture ink in an applet and would like it to match the ISF format on my tablet. Any more insights into the ISF format?

Posted by: Eric Stephens (July 11, 2003 07:36 AM) ______________________________________

Unfortunately, I still haven't found information on the ISF format, even after trying some internal channels.
You can find an example of C# applet to capture ink here ( ). It will only work on a Tablet PC or possibly Windows box with the Tablet PC SDK installed. Also, you'll need to tweak the security permissions to get it to work, but other than that it works fine.

Posted by: Dumky (July 11, 2003 10:58 AM)
comments powered by Disqus