Ejemplo n.º 1
0
 public override GlyphBitmapData ReadBitmapData(BinaryReaderFont reader, int glyphId, int index)
 {
     reader.Position += imageSize * index;
     return(GlyphBitmapData.Read(
                reader,
                header.imageFormat,
                (int)imageSize
                ));
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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
                       ));
        }
Ejemplo n.º 4
0
        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
                       ));
        }
Ejemplo n.º 5
0
        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;
        }