private int ReadUnsignedShort(RandomAccessFileOrArray stream) { if (isBigEndian) { return(stream.ReadUnsignedShort()); } else { return(stream.ReadUnsignedShortLE()); } }
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"); }