Ejemplo n.º 1
0
        public static CoverageTable CreateFrom(BinaryReader reader, long beginAt)
        {
            reader.BaseStream.Seek(beginAt, SeekOrigin.Begin);
            //---------------------------------------------------
            var coverageTable = new CoverageTable();
            //1. format  
            switch (coverageTable._format = reader.ReadUInt16())
            {
                default:
                    throw new NotSupportedException();
                case 1:
                    {
                        //CoverageFormat1 table: Individual glyph indices
                        ushort glyphCount = reader.ReadUInt16();
                        //GlyphID 	GlyphArray[GlyphCount] 	Array of GlyphIDs-in numerical order ***
                        ushort[] orderedGlyphIdList = new ushort[glyphCount];
                        for (int i = 0; i < glyphCount; ++i)
                        {
                            orderedGlyphIdList[i] = reader.ReadUInt16();
                        }
                        coverageTable.orderedGlyphIdList = orderedGlyphIdList;
                    } break;
                case 2:
                    {
                        //CoverageFormat2 table: Range of glyphs
                        ushort rangeCount = reader.ReadUInt16();
                        RangeRecord[] ranges = new RangeRecord[rangeCount];
                        for (int i = 0; i < rangeCount; ++i)
                        {
                            ranges[i] = new RangeRecord(
                                reader.ReadUInt16(),
                                reader.ReadUInt16(),
                                reader.ReadUInt16());
                        }
                        coverageTable.ranges = ranges;
                    }
                    break;

            }
            return coverageTable;
        }
Ejemplo n.º 2
0
 public static CoverageTable[] CreateMultipleCoverageTables(long initPos, short[] offsets, BinaryReader reader)
 {
     int j = offsets.Length;
     CoverageTable[] results = new CoverageTable[j];
     for (int i = 0; i < j; ++i)
     {
         results[i] = CoverageTable.CreateFrom(reader, initPos + offsets[i]);
     }
     return results;
 }