Dear Shusaku,

> For example, the following glyph sequence is input.  B is a glyph in
> Base Coverage Table, M is a glyph in Mark Coverage Table
> and m is a mark glyph defined by GDEF.
> 
>     B m M
> 
> The implementation of HarfBuzz finds B as base of M even though there
> is m between B and M. If m is not a mark glyph, B and M
> are not matched. I tried to find out the reason of the behavior in the
> specification, but could not.  Can anyone teach me why
> such behavior is needed?  The link to the related discussion log is enough.

In the OpenType spec under the GPOS Lookup Type 4 there is this start to a 
paragraph:

To identify the base glyph that combines with a mark, the text-processing 
client must look backward in the glyph string from the mark to the preceding 
base glyph.

Unfortunately, the English here is ambiguous. It could be saying that the 
immediately preceding glyph is tested and if it is a base, then attachment 
occurs. As per only the sequence B M would result in attachment and therefore 
you would have to say to skip marks for it to find that immediately preceding 
glyph is base. I would suggest that this is the more common use of something 
like 'the preceding glyph'. But 'preceding' may mean the first glyph looking 
backwards that meets the requirement of being a base. In this case, it is the 
latter interpretation. But I would suggest that if this sentence could be 
rewritten without using the word 'preceding', then things would be a lot 
clearer.

Yours,
Martin
_______________________________________________
HarfBuzz mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to