by Michael S. Kaplan, published on 2010/03/22 07:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2010/03/22/9979228.aspx
Okay, today we're gonna do a twofer!
First, regular reader and "friend of SIAO" Jan Kučera asked, over in the Suggestion Box:
Greetings! What references (and advices) would you suggest to someone considering implementing a complex script rendering engine? (on a platform where there is no such available of course :-))
Jan
Yikes!
I suppose you would want to hear me recommend Imitrex for the migraines such work will surely cause? :-)
The only advice I can really give is to look at the specs for fonts like the OpenType specification; in parts like the various appendices that go into the kinds of things that fonts can expect from the various shaping engines.
That will be a huge effort.
Heck, it is a huge effort, in Uniscribe.
Maybe if you don't care for needles you can try to use Motrin or Tylenol, instead. There will be many headaches in the future, there....
Okay, moving on to number two. :-)
Over in the Suggestion Box, alexcohn asked:
I would like to find a way to enable Uniscribe bidi support in Windows Mobile. The available solutions by 3rd parties are expensive and use dangerous hooks all around the system. Furthermore, they are not standard, and it is a burden on aplication developers to look for glitches with each one of these tools.
What does it take to build Uniscribe - enabled smartphone? If it requires special licensing, who may be a relevant point of contact in Microsoft?
Well, the main thing it takes is a CE platform on the device that includes the Uniscribe component.
For example you can see the CE 5.0 instructions in the Creating a Complex Scripts-enabled Run-Time Image topic, with the 6.0 version of that same topic right here.
That topic even has a list of supported locales, a table that is the same in both versions:
Locale | HKL value |
---|---|
Arabic | 00000401 |
Hebrew | 0000040D |
Thai | 0000041E |
Hindi | 00010439 |
Tamil | 00000449 |
Kanada | 0000044B |
Gujarati | 00000447 |
Telugu | 0000044A |
Punjabi | 00000446 |
Marathi | 0000044E |
This suggests that this is a port of the XP RTM version of Uniscribe to the CE platform that is in 5.0 (the Uniscribe updates for Bengali and Malayalam came in XP SP2, asnd the ones for other languages such as Oriya came in Vista -- not sure if those were ported).
Now as a special note, CE Uniscribe does not do surrogate support like its desktop ancestor does, as discussed in Working With Unicode Surrogates. If that is what you were looking for, you won't need Uniscribe after all....
But the problem if you aren't building your own CE for a device is that it seems like none of the OEMs ever chose to include this component.
Unless someone knows of a device that chose to include it?
Now note that none of this applies to the upcoming version, which has had no solid information on this topic discussed....
Pavanaja U B on 22 Mar 2010 9:40 PM:
It is a very sad state of affairs that Win CE 5.0 has given the support for opentype rendering way back. But none of the device manufacturers thought to include it in the device.
What will be the situation with Windows Phone 7?
Another interesting development: Silverlight 4 RC has now Indic/opentype rendering. Does it uses Uniscribe? Or has it it's own rendering engine? If it has it's own rendering engine, then it is a good news in a way. The reason is that SL is now avilable for most platforms including mobile phones.
-Pavanaja
Michael S. Kaplan on 22 Mar 2010 10:37 PM:
No idea about 7 -- nothing has been said yet.
I agree it sucks that no OEMs ever picked up the Uniscribe component....
But SL4? It must be using the underlying system, not any inbuilt support (SL does not do Indic itself AFAIK, yet).
Pavanaja U B on 23 Mar 2010 4:42 AM:
SL 4 RC does support Indic. Read this - http://timheuer.com/blog/archive/2010/03/15/whats-new-in-silverlight-4-rc-mix10.aspx#language
Mike Dimmick on 23 Mar 2010 6:40 AM:
The set of components included in Windows Mobile is strictly circumscribed by Microsoft. There is a base set of components the OEM MUST include, the rest mostly they MUST NOT include, with only a very few that they MAY include (e.g. the GPS stack, we discovered). It was done that way to ensure software portability between different Windows Mobile devices. Many of the components are a bit different from the standard Windows CE box - Windows Mobile hasn't had a proper released Windows CE version number since WM 2003 (CE 4.20), WM 5.0 was 'CE 5.01' etc.
There are custom Windows CE platforms put together by OEMs, some of which run on identical hardware to Windows Mobile devices, but these are generally for industrial/enterprise use rather than for sale to end-users. I'm working right now with Motorola's MC9090-G (over $2500 per unit!) which is available either with Windows Mobile (5.0, 6.0, 6.1) or Motorola's custom Windows CE 5.0 platform. It still doesn't include Uniscribe, though.
I suspect Windows Phone 7 will not have any native/unmanaged code support. It's so much easier to sandbox managed code - something becoming increasingly important as the phone heads into an ever-more-hostile environment.
In my opinion Windows Mobile is likely to simply stagnate. There might be a few 6.5 patch releases but nothing further.
Michael S. Kaplan on 23 Mar 2010 8:20 AM:
Yes, but Uniscribe *is* of the components any system builder can add -- I pointed to the way how!
Michael S. Kaplan on 23 Mar 2010 8:22 AM:
That's pretty exciting about Silverlight, actually! :-)
Pavanaja U B on 23 Mar 2010 9:16 PM:
Yesterday I did some experimentation with SL 4 RC using Expression Blend 4 Trial. What I found is that it's Indic input handling and rendering seems to be similar to what experience I am having with Notepad (Notepad, ie, Windows and Word, ie, Office have different behaviours). It looks like that SL is using uniscribe.
-Pavanaja
Michael S. Kaplan on 23 Mar 2010 9:24 PM:
Actually, it turns out it's using the same kind of engine as WPF rather than the Uniscribe, but they are much more similar in the Indics than in ones like Arabic....
Jan Kučera on 18 Apr 2010 5:23 AM:
First of all, thanks for getting to these topics. Actually I was not expecting much more than Yikes! :) Thanks for the tip, it definitely makes sense to look at this from the other point. When the time I will have to do some similar attempt comes.
Second, I have a very strong feeling that if Microsoft included Uniscribe in the MUST include group for OEMs, no one would ever demur, if they even noticed it. I guess it won't happen ever anyway, will it...
Which is a pitty for Microsoft I think - lots of home-made Indic enabling solutions on mobile phones were presented on the INFITT conference, but no single interest for Windows Mobile platform, which is actually the only one eventually capable of supporting it!