public override GlyphBitmapData ReadBitmapData(BinaryReaderFont reader, int glyphId, int index) { reader.Position += imageSize * index; return(GlyphBitmapData.Read( reader, header.imageFormat, (int)imageSize )); }
public static GlyphBitmapData[] ReadArray(BinaryReaderFont reader, ushort imageFormat, int byteSize, int count) { GlyphBitmapData[] array = new GlyphBitmapData[count]; for (int i = 0; i < count; i++) { array[i] = Read(reader, imageFormat, byteSize); } return(array); }
public override GlyphBitmapData ReadBitmapData(BinaryReaderFont reader, int glyphId, int index) { if (index < 0 || index >= numGlyphs - 1) { return(null); } long start = reader.Position; reader.Position = position + index; GlyphIdOffsetPair offset0 = GlyphIdOffsetPair.Read(reader); GlyphIdOffsetPair offset1 = GlyphIdOffsetPair.Read(reader); int byteSize = offset1.offset - offset0.offset; reader.Position = start + offset0.offset; return(GlyphBitmapData.Read( reader, header.imageFormat, byteSize )); }
public override GlyphBitmapData ReadBitmapData(BinaryReaderFont reader, int glyphId, int index) { if (index < 0 || index >= count - 1) { return(null); } long start = reader.Position; reader.Position = position + index; uint offset0 = reader.ReadUInt32(); uint offset1 = reader.ReadUInt32(); uint byteSize = offset1 - offset0; reader.Position = start + offset0; return(GlyphBitmapData.Read( reader, header.imageFormat, (int)byteSize )); }
public static void DrawGlyph(RendererContext context) { EBLCTable EBLC = context.Font.Tables.EBLC; EBDTTable EBDT = context.Font.Tables.EBDT; //Bitmap bitmap = context.Bitmap; BitmapSize size = EBLC.GetBitmapSize(context.FontSize, context.FontSize); //Console.WriteLine("bitDepth: {0}", size.bitDepth); //Console.WriteLine("subTables.Length: {0}", size.subTables.Length); //for (int i = 0; i < size.subTables.Length; i++) { // Console.WriteLine("subTables {0}: {1}", i, size.subTables[i]); //} //Console.WriteLine("flags: {0}", size.flags); //GlyphBitmapData data = EBDT.bitmapData[0x53F8]; GlyphBitmapData data = EBDT.GetGlyphBitmapData(size.index, context.GlyphId); if (data == null) { data = EBDT.GetGlyphBitmapData(size.index, 0); } if (data == null) { context.X += context.FontSize; return; } //GlyphBitmapData data = EBDT.bitmapData[0x835]; switch (data.format) { case 1: GlyphBitmapData1 data1 = data as GlyphBitmapData1; //Console.WriteLine("data7: {0}", data7); DrawImageData( context, size.bitDepth, data1.smallMetrics, data1.imageData ); break; case 2: GlyphBitmapData2 data2 = data as GlyphBitmapData2; //Console.WriteLine("data7: {0}", data7); DrawImageData( context, size.bitDepth, data2.smallMetrics, data2.imageData ); break; case 5: DrawBitmapData5(context, size, data as GlyphBitmapData5); break; case 6: GlyphBitmapData6 data6 = data as GlyphBitmapData6; //Console.WriteLine("data7: {0}", data); DrawImageData( context, size.bitDepth, data6.bigMetrics, data6.imageData ); break; case 7: GlyphBitmapData7 data7 = data as GlyphBitmapData7; //Console.WriteLine("data7: {0}", data7); DrawImageData( context, size.bitDepth, data7.bigMetrics, data7.imageData ); break; case 8: break; case 9: break; } //context.X += context.FontSize; }