예제 #1
0
        protected static Font[] ParseTTC(BinaryReaderFont reader)
        {
            TTCHeader ttcHeader = TTCHeader.Read(reader);

            Font[] fonts = new Font[ttcHeader.numFonts];
            //Console.WriteLine(ttcHeader);
            for (int i = 0; i < ttcHeader.numFonts; i++)
            {
                uint fontOffset = ttcHeader.offsetTable[i];
                reader.Position = fontOffset;
                fonts[i]        = Font.Read(reader);
            }
            return(fonts);
        }
예제 #2
0
        public static TTCHeader Read(BinaryReaderFont reader)
        {
            TTCHeader value = new TTCHeader();

            value.ttcTag = reader.ReadTag();
            if (value.ttcTag != Tag)
            {
                throw new System.Exception(
                          string.Format("Parse error: ttcTag is not valid. {0}", value.ttcTag)
                          );
            }
            value.majorVersion = reader.ReadUInt16();
            value.minorVersion = reader.ReadUInt16();
            value.numFonts     = reader.ReadUInt32();
            value.offsetTable  = reader.ReadUInt32Array((int)value.numFonts);
            if (value.majorVersion >= 2)
            {
                value.dsigTag    = reader.ReadUInt32();
                value.dsigLength = reader.ReadUInt32();
                value.dsigOffset = reader.ReadUInt32();
            }
            return(value);
        }