Пример #1
0
        protected void CreateTableDirectory()
        {
            tables = new SortedList <string, TableData>();
            int id     = ByteArrayToInt(rfarray, directoryOffset, 4);
            int nindex = directoryOffset + 4;

            if (id != 0x00010000)
            {
                throw new Exception("The font is not a truetype font");
            }
            int num_tables = ByteArrayToUShort(rfarray, nindex, 2);

            nindex = nindex + 2;
            nindex = nindex + 6;

            for (int k = 0; k < num_tables; ++k)
            {
                string tag = StreamUtil.ByteArrayToString(rfarray, nindex, 4);
                nindex = nindex + 4;
                int checksum = ByteArrayToInt(rfarray, nindex, 4);
                nindex = nindex + 4;
                int location = ByteArrayToInt(rfarray, nindex, 4);
                nindex = nindex + 4;
                int length = ByteArrayToInt(rfarray, nindex, 4);
                nindex      = nindex + 4;
                tables[tag] = new TableData(tag, location, length, checksum);
            }
        }
Пример #2
0
        public void LoadFromStream(Stream nstream)
        {
#if REPMAN_COMPACT
            using (MemoryStream mems = StreamUtil.StreamToMemoryStream(nstream))
            {
                string nstring = StreamUtil.ByteArrayToString(mems.ToArray(), System.Convert.ToInt32(mems.Length), true);
                Clear();
                StringBuilder nline = new StringBuilder();
                foreach (char c in nstring)
                {
                    if (c != (char)13)
                    {
                        if (c == (char)10)
                        {
                            Add(nline.ToString());
                            nline = new StringBuilder();
                        }
                        else
                        {
                            nline.Append(c);
                        }
                    }
                }
                string aline = nline.ToString();
                if (aline.Length > 0)
                {
                    Add(aline);
                }
            }
#else
            using (MemoryStream mems = StreamUtil.StreamToMemoryStream(nstream))
            {
                mems.Seek(0, SeekOrigin.Begin);
                StreamReader nreader = new StreamReader(nstream, Encoding.UTF8);
                if (nreader.EndOfStream)
                {
                    string nstring = StreamUtil.ByteArrayToString(mems.ToArray(), System.Convert.ToInt32(mems.Length), true);
                    nstring = nstring.Replace((char)65279 + "", "");
                    Clear();
                    StringBuilder nline = new StringBuilder();
                    foreach (char c in nstring)
                    {
                        if (c != (char)13)
                        {
                            if (c == (char)10)
                            {
                                Add(nline.ToString());
                                nline = new StringBuilder();
                            }
                            else
                            {
                                nline.Append(c);
                            }
                        }
                    }
                    string aline = nline.ToString();
                    if (aline.Length > 0)
                    {
                        Add(aline);
                    }
                }
                else
                {
                    //string nstring = Encoding.UTF8.GetString(mems.ToArray());
                    // StreamUtil.ByteArrayToString(mems.ToArray(),System.Convert.ToInt32(mems.Length),true);
                    Clear();

                    while (!nreader.EndOfStream)
                    {
                        string nline = nreader.ReadLine().Trim();
                        if (nline.Length > 0)
                        {
                            Add(nline);
                        }
                    }
                }
            }
#endif
        }