public FFNT(byte[] Data)
        {
            EndianBinaryReader er = new EndianBinaryReader(new MemoryStream(Data), Endianness.BigEndian);
            Header = new FFNTHeader(er);
            FontInfo = new FINF(er);
            er.BaseStream.Position = FontInfo.TGLPOffset - 8;
            TextureGlyph = new TGLP(er);

            List<CWDH> tmp = new List<CWDH>();
            er.BaseStream.Position = FontInfo.CWDHOffset - 8;
            CWDH Last;
            do
            {
                Last = new CWDH(er);
                tmp.Add(Last);
                if (Last.NextCWDHOffset != 0) er.BaseStream.Position = Last.NextCWDHOffset - 8;
            }
            while (Last.NextCWDHOffset != 0);
            CharWidths = tmp.ToArray();

            List<CMAP> tmp2 = new List<CMAP>();
            er.BaseStream.Position = FontInfo.CMAPOffset - 8;
            CMAP Last2;
            do
            {
                Last2 = new CMAP(er);
                tmp2.Add(Last2);
                if (Last2.NextCMAPOffset != 0) er.BaseStream.Position = Last2.NextCMAPOffset - 8;
            }
            while (Last2.NextCMAPOffset != 0);
            CharMaps = tmp2.ToArray();
            er.Close();
        }
예제 #2
0
        public FFNT(byte[] Data)
        {
            EndianBinaryReader er = new EndianBinaryReader(new MemoryStream(Data), Endianness.LittleEndian);

            try
            {
                Header       = new FFNTHeader(er);
                FontInfo     = new FINF(er);
                TextureGlyph = new TGLP(er);
            }

            finally
            {
                er.Close();
            }
        }
        public FFNT(byte[] Data)
        {
            EndianBinaryReader er = new EndianBinaryReader(new MemoryStream(Data), Endianness.BigEndian);

            Header   = new FFNTHeader(er);
            FontInfo = new FINF(er);
            er.BaseStream.Position = FontInfo.TGLPOffset - 8;
            TextureGlyph           = new TGLP(er);

            List <CWDH> tmp = new List <CWDH>();

            er.BaseStream.Position = FontInfo.CWDHOffset - 8;
            CWDH Last;

            do
            {
                Last = new CWDH(er);
                tmp.Add(Last);
                if (Last.NextCWDHOffset != 0)
                {
                    er.BaseStream.Position = Last.NextCWDHOffset - 8;
                }
            }while (Last.NextCWDHOffset != 0);
            CharWidths = tmp.ToArray();

            List <CMAP> tmp2 = new List <CMAP>();

            er.BaseStream.Position = FontInfo.CMAPOffset - 8;
            CMAP Last2;

            do
            {
                Last2 = new CMAP(er);
                tmp2.Add(Last2);
                if (Last2.NextCMAPOffset != 0)
                {
                    er.BaseStream.Position = Last2.NextCMAPOffset - 8;
                }
            }while (Last2.NextCMAPOffset != 0);
            CharMaps = tmp2.ToArray();
            er.Close();
        }