That's got to be considered a bug (and not just the misspelling of "decomposition"). Specifications really should use precise language, especially when the term "character" has a different, well-defined meaning in the context. I suggest writing this out in full, or rewording. (Starting a new thread so @Peter Constable and others can find it.)John Hudson said:@Simon Cozens I think Paul Nelson, whom I am pretty sure wrote the <ccmp> feature description, used 'character' as shorthand for 'the default glyph mapped to the character in the cmap table'. The point is that <ccmp> is processed very early in layout, so the input is expected to be default glyph IDs from the cmap table (but possibly output from preceding <locl> feature). But yes, as noted, <ccmp> is a GSUB feature like any other, working entirely in glyph space.
Comments
[With regard to norms for specifications, for a long time in the late 90s and early 2000s it wasn't generally agreed whether the OTL feature descriptions were to be considered part of the OT spec or a kind of informative appendix. I don't think that really became clear until the ISO Open Font Format process included the feature registry.]
"Function: To minimize the number of glyph alternates, it is sometimes desired to decompose the default glyph for a character into two glyphs. Additionally, it may be preferable to compose default glyphs for two characters into a single glyph for better glyph processing. This feature permits such composition/decompostion. The feature should be processed as the first feature processed, and should be processed only when it is called."
I'm not going to do any major work on feature descriptions at this time, but hopefully this helps on this issue.
"Function: To minimize the number of glyph alternates, it is sometimes desirable to decompose the default glyph for a character into two or more glyphs. Additionally, it may be preferable to compose default glyphs for two or more characters into a single glyph for better glyph processing. This feature permits such composition/decompostion. The feature should be processed as the first feature processed, and should be processed only when it is called."