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); }
public static LangTagRecord Read(BinaryReaderFont reader) { LangTagRecord value = new LangTagRecord { length = reader.ReadUInt16(), offset = reader.ReadUInt16() }; return(value); }
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); }