예제 #1
0
 private int ReadUnsignedShort(RandomAccessFileOrArray stream)
 {
     if (isBigEndian)
     {
         return(stream.ReadUnsignedShort());
     }
     else
     {
         return(stream.ReadUnsignedShortLE());
     }
 }
예제 #2
0
        private void Putchartab()
        {
            int count = lastchar - firstchar + 1;

            int[] ctabs = new int[count];
            input.Seek(chartab);
            for (int k = 0; k < count; ++k)
            {
                ctabs[k] = input.ReadUnsignedShortLE();
            }
            int[] back = new int[256];
            if (charset == 0)
            {
                for (int i = firstchar; i <= lastchar; ++i)
                {
                    if (Win2PSStd[i] != 0)
                    {
                        back[Win2PSStd[i]] = i;
                    }
                }
            }
            /* Put out the header */
            output.Write("StartCharMetrics");
            Outval(count);
            output.Write('\n');
            /* Put out all encoded chars */
            if (charset != 0)
            {
                /*
                 * If the charset is not the Windows standard, just put out
                 * unnamed entries.
                 */
                for (int i = firstchar; i <= lastchar; i++)
                {
                    if (ctabs[i - firstchar] != 0)
                    {
                        Outchar(i, ctabs[i - firstchar], null);
                    }
                }
            }
            else
            {
                for (int i = 0; i < 256; i++)
                {
                    int j = back[i];
                    if (j != 0)
                    {
                        Outchar(i, ctabs[j - firstchar], WinChars[j]);
                        ctabs[j - firstchar] = 0;
                    }
                }
                /* Put out all non-encoded chars */
                for (int i = firstchar; i <= lastchar; i++)
                {
                    if (ctabs[i - firstchar] != 0)
                    {
                        Outchar(-1, ctabs[i - firstchar], WinChars[i]);
                    }
                }
            }
            /* Put out the trailer */
            output.Write("EndCharMetrics\n");
        }