/// <summary> /// Reads the contents of the "glyf" table from the current position /// in the supplied stream. /// </summary> /// <param name="reader"></param> protected internal override void Read(FontFileReader reader) { GlyphReader builder = new GlyphReader(reader); foreach (int index in reader.IndexMappings.GlyphIndices) { Glyph glyph = builder.ReadGlyph(index); glyphDescriptions[glyph.Index] = glyph; // Parse child glyphs if (glyph.IsComposite) { foreach (int subsetIndex in glyph.Children) { if (this[subsetIndex] == null) { int glyphIndex = reader.IndexMappings.GetGlyphIndex(subsetIndex); this[subsetIndex] = builder.ReadGlyph(glyphIndex); } } } } }