The issue appears on Windows indeed. The problematic font was "Tahoma". See more details at https://bugreports.qt-project.org/browse/QTBUG-41931 (not that many, though). The proposed `fontEngine->doKerning(..)` is used either in the HB-old path in case the shaper item's `kerning_applied` flag appears to be unset after shaping, though there is no similar thing in HB-NG, so I don't think applying additional kerning blindly is a good solution in general. All `doKerning()` method does is loads the kerning pairs from the font's ('k', 'e', 'r', 'n') table and applies kerning metrics. I believe it is quite the same HB does.
Regards, Konstantin 2014-11-04 10:51 GMT+04:00 Behdad Esfahbod <[email protected]>: > Hi Konstantin? > > Which font exactly? > > The rule in HarfBuzz-ng is, if the font has *any* GPOS, then the old-style > kern table is not applied. This is not exactly what OpenType recommends, > but > is a cleaner approach than applying old-style kern if the GPOS table has no > 'kern' feature. > > At any rate, we need to see what font exactly this is happening with, and > what > Uniscribe does. > > IIRC, some fonts shipped with Windows XP or 7 could hit this problem, but > hardly any other font we know about. > > Cheers, > behdad > > PS. If you write to the list, others can chime in. Specifically, Jonathan > knows a lot about these as they highly care about Windows experience. > > On 14-11-03 10:43 PM, Konstantin Ritt wrote: > > Hi Behdad, > > > > > > As you may know, we've switched to HB-NG as of Qt 5.4 alpha, which is a > good > > news, of course. > > However we didn't drop the HB-old path and it is possible to switch to > it, > > which is very handy for comparing the shaping/rendering results between > HB-NG > > and HB-old, BTW. > > > > Now, here is a bug report > https://bugreports.qt-project.org/browse/QTBUG-41931 > > about kerning issue with some fonts. > > I was proposing a quick possible solution w/o expecting it to help... > but it > > helped, so I'm in doubts: > > ~2 years ago you answered that NG supports both old and new style > kerning > > just fine (even better than HB-old) by enabling the kern feature, so my > code > > currently is: > > {code} > > const hb_feature_t features[1] = { > > { HB_TAG('k','e','r','n'), !!kerningEnabled, 0, uint(-1) } > > }; > > const int num_features = 1; > > shapedOk = hb_shape_full(hb_font, buffer, features, num_features, 0); > > {code} > > but then, I don't understand why applying the old-style kerning manually > on > > top of HB's results solves the raised issue. Am I missing something? > > > > Best regards, > > Konstantin > > -- > behdad > http://behdad.org/ >
_______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
