libharu/libharu — pull request #54 by amichelic (2014-02-03 11:02:00+00:00)
Title: Embedded TrueType fonts not including all used glyphs

Subsetting TrueType fonts doesn't include all necessary glyphs for composite glyphs. The behaviour can e.g. be seen with umlaut characters when using FreeSans. Happens when a composite glyph references another composite glyph - the glyphs referenced by the second level composite glyph are no longer included in the embedded font.

Example (FreeSans): Adieresis consists of A and dieresis, dieresis consists of two dotaccent glyphs. Generated PDF would not include the definitions for dotaccent (unless included for another reason).

Suggested fix would be to recursively resolve those glyphs - please see the attached commit. Maybe there is a smarter way for resolving the glyphs than jumping forwards and backwards in the font stream?