Example #1
0
        public static NameTable Read(BinaryReaderFont reader)
        {
            NameTable value = new NameTable {
                format       = reader.ReadUInt16(),
                count        = reader.ReadUInt16(),
                stringOffset = reader.ReadUInt16(),
            };

            value.nameRecord = NameRecord.ReadArray(reader, value.count);
            if (value.format >= 1)
            {
                value.langTagCount  = reader.ReadUInt16();
                value.langTagRecord = LangTagRecord.ReadArray(reader, value.langTagCount);
            }
            long start = reader.Position;

            for (int i = 0; i < value.count; i++)
            {
                NameRecord record = value.nameRecord[i];
                reader.Position = start + record.offset;
                record.text     = reader.ReadString(record.length, GetEncoding(record));
            }
            if (value.format >= 1)
            {
                for (int i = 0; i < value.langTagCount; i++)
                {
                    LangTagRecord record = value.langTagRecord[i];
                    reader.Position = start + record.offset;
                    record.text     = reader.ReadString(record.length, Encoding.BigEndianUnicode);
                }
            }
            return(value);
        }
Example #2
0
        public static LangTagRecord Read(BinaryReaderFont reader)
        {
            LangTagRecord value = new LangTagRecord {
                length = reader.ReadUInt16(),
                offset = reader.ReadUInt16()
            };

            return(value);
        }
Example #3
0
 public static LangTagRecord[] ReadArray(BinaryReaderFont reader, int count)
 {
     LangTagRecord[] array = new LangTagRecord[count];
     for (int i = 0; i < count; i++)
     {
         array[i] = Read(reader);
     }
     return(array);
 }