[HarfBuzz] Unified Text Layout Engine?

Andreas Vox avox at scribus.info
Thu Feb 1 12:20:48 PST 2007


Am 01.02.2007 um 20:38 schrieb Eric Mader:

> Hi Behdad,
>
> The ICU LayoutEngine uses an abstract base class to represent fonts  
> and so is independent of any particular font format or OS. (Though  
> the model in the base class assumes that a font contains tables w/  
> four-byte names. ;-)
>
> I've thought for some time that the Indic shaper code in ICU is too  
> fragile. When I wrote it, I though I could get away with a single  
> routine to analyze and tag all Indic scripts. Since then, I've  
> found out that there are lots of script-specific exceptions and  
> it's sometimes hard to fix one script without breaking any of the  
> others...
>
> A couple of years ago I talked w/ Owen Taylor about rewriting the  
> code to have a (potentially) different shaper for each script. At  
> that time I thought that almost all the bugs were fixed and it  
> wasn't worth the effort. Subsequent experience has shown this  
> belief to be optimistic. :-)

So if neither Pango nor ICU like their own Indic shapers, maybe Qt  
can provide
theirs? Is their any news regarding copyright transfer?

> As you probably know, Microsoft changed the spec. for Indic  
> OpenType fonts for Vista. As soon as they publish the new spec.  
> we'll  have to adapt our shaper to deal with the new fonts. I don't  
> know all the details of what's required yet, but it looks like the  
> shaper may have to "probe" the 'GSUB' table w/ trial lookups to  
> determine, for example, which characters have pre- and post-base  
> forms.

Does MS have a rationale for this change?

> The ICU LayoutEngine has a few other tricks in it that HarfBuzz  
> might want. For example, it uses a "canned" 'GSUB' table to do  
> presentation form based shaping of Arabic text if there's no 'GSUB'  
> table in the font.

Sounds cool.

> There's some similar code the deal with canonical forms. For  
> example, if the input text contains "a" followed by umlaut and the  
> font contains an a-umlaut glyph, it will substitute that. Also, if  
> the input text contains an a-umlaut character and the font does not  
> have a glyph for a-umlaut, it will substitute an "a" followed by an  
> umlaut. This produces better rendering of the "basic" scripts if  
> there's no 'GSUB' table.

That's also a canned GSUB table?

I think canned tables would be easy to integrate with HarfBuzz since
presumely they don't contain ICU specific data structures...?

/Andreas



More information about the HarfBuzz mailing list