public void saveFile(string path) { array[0].endIndex = 2 + size * 8 + array[0].array.Length; for (int i = 1; i < size; i++) { array[i].endIndex = array[i - 1].endIndex + array[i].array.Length; } MemoryWriter mw = new MemoryWriter(); mw.writeUShort(size); for (int i = 0; i < size; i++) { CXGlyphInfo info = array[i]; mw.writeUShort((ushort)info.code); mw.writeUShort(info.width); mw.writeInt32(info.endIndex); } for (int i = 0; i < size; i++) { mw.writeBytes(array[i].array); } using (FileStream fs = new FileStream(path, FileMode.Create)) { fs.Write(mw.getContent(), 0, mw.getIndex()); } }
public void loadFile(string path) { byte[] content = readFileContent(path); MemoryReader mr = new MemoryReader(content); size = mr.readUShort(); array = new CXGlyphInfo[size]; for (int i = 0; i < size; i++) { CXGlyphInfo info = new CXGlyphInfo(); info.code = (char)mr.readUShort(); info.width = mr.readUShort(); info.endIndex = mr.readInt32(); array[i] = info; } for (int i = 0; i < size; i++) { int bufLen = (array[i].width + 7) / 8 * height; Debug.Assert(bufLen == array[i].endIndex - mr.getIndex()); array[i].array = new byte[bufLen]; mr.readBytes(array[i].array); } }