GSUB Lookup Type 2 (Multiple Substitution) is not implemented. A font cannot expand one glyph into a sequence of several - the opposite direction of Ligature Substitution (Type 4), which is supported. This is what most real-world ccmp decomposition relies on: splitting a precomposed glyph into a base glyph plus combining marks so that mark positioning can work on them.
The ccmp feature is also unreachable from the public API - it has no flag in the GsubFeature enum - so it can neither be requested nor enabled by default, even where the underlying lookups are already supported.
Scope:
- Parse, serialize and subset Lookup Type 2 (
MultipleSubstSubTable).
- Apply it during shaping, before other substitutions.
- Preserve the expanded glyphs through subsetting so the embedded PDF font matches what was measured.
- Add
GsubFeature.Ccmp and enable it by default.
GSUB Lookup Type 2 (Multiple Substitution) is not implemented. A font cannot expand one glyph into a sequence of several - the opposite direction of Ligature Substitution (Type 4), which is supported. This is what most real-world
ccmpdecomposition relies on: splitting a precomposed glyph into a base glyph plus combining marks so that mark positioning can work on them.The
ccmpfeature is also unreachable from the public API - it has no flag in theGsubFeatureenum - so it can neither be requested nor enabled by default, even where the underlying lookups are already supported.Scope:
MultipleSubstSubTable).GsubFeature.Ccmpand enable it by default.