fontscombining-marksufo

How to use combining characters in UFO 3?


I'm creating a font by writing XML files in the Unified Font Object 3 format.

It's a bit unclear how one would create combining characters in the format, so I was hoping someone could point me in the right direction with a quick example?

In my case, I'm using the private use area of Unicode (U+E000-U+F8FF). For example, I would like U+E000 and U+E001 to display on top of each other if typed one after the other.


Solution

  • This sounds like a bit of term confusion; unicode combining characters are a well-defined thing with a precise meaning, and not related to PUA codepoints (which are basically "unregulated, but codepoint-addressable glyphs). PUA in modern fonts is best avoided, instead relying on GSUB rules to resolve human-typable code sequences to internal glyph ids, and then having GPOS rules that perform the necessary repositioning based on (pairs of) internal ids.

    So it sounds a little like you're trying to figure out how to define the rules that in an OpenType font is GPOS data, for custom positioning of code pairs. If so, that's something you define in a feature definition, in which (for this particular case) you set up GPOS rules to effect the repositioning you need.

    Unfortunately, there are no "quick" examples here: GSUB/GPOS features are anything but quick and easy, and you usually don't write them by hand (things like FontForge, Fontlab, FontCreator, etc. all come with UI for automating parts of, or all of, writing OpenType script/feature/lookup definitions). If you absolutely have to, you're probably going to have to read through the feature documentation several times to understand the precise syntax and which GPOS lookup type you'll need to use.