Enclosing combining marks

Primary tabs

1 post / 0 new
anagnost's picture
Joined: 17 Jul 2007 - 6:29am
Enclosing combining marks

In the recently released released version of my Old Standard font family I attempted to implement some support for enclosing combining marks, in particular U+20DD. I needed this for Old Cyrillic, where such marks are used to denote large numbers. The implementation looks basically us follows:

  • An anchor point is used to attach the mark to the base character. Currently I don't handle those situations there the base character is too large to fit properly into the enclosing mark.
  • A contextual positioning lookup is applied to increase the base glyph's offset and advance width, so that the mark doesn't overlap the surrounding characters.

Unfortunately I see that with most rendering engines my font doesn't work as expected:

  • Uniscribe just ignores enclosing combining marks and doesn't apply any lookups to them;
  • Most other engines (InDesign, ICU) seem to share the same common problem: when the base glyph is shifted to right, its anchor points are moved not by the XPlacement value specified for the base glyph (as I would expect), but rather by XAdvance. Thus the mark is shifted much further to right than it should be;
  • In InDesign things get even more complicated if there are additional combining marks attached to other anchor points of the same base glyph.

Pango seems to be the only rendering engine which processes my font exactly as expected.

Now the questions:

  • To which feature should I attach my contextual GPOS lookups? Currently I mark them as required, but required GPOS lookups seem to be completely ignored by some engines (ICU, Mellel). Another option is to attach them to the 'kern' feature (as the specification seems to allow contextual kerning), but GPOS kerning is currently ignored by Uniscribe.
  • Is the behavior I have described caused by some bugs in rendering engines, or I am doing something wrong?
  • Should I post my questions also to the OpenType mailing list?