protected void CreateNewStringIndex(int Font)
{
String fdFontName = fonts[Font].name+"-OneRange";
if (fdFontName.Length > 127)
fdFontName = fdFontName.Substring(0,127);
String extraStrings = "Adobe"+"Identity"+fdFontName;
int origStringsLen = stringOffsets[stringOffsets.Length-1]
- stringOffsets[0];
int stringsBaseOffset = stringOffsets[0]-1;
byte stringsIndexOffSize;
if (origStringsLen+extraStrings.Length <= 0xff) stringsIndexOffSize = 1;
else if (origStringsLen+extraStrings.Length <= 0xffff) stringsIndexOffSize = 2;
else if (origStringsLen+extraStrings.Length <= 0xffffff) stringsIndexOffSize = 3;
else stringsIndexOffSize = 4;
OutputList.Add(new UInt16Item((char)((stringOffsets.Length-1)+3))); // count
OutputList.Add(new UInt8Item((char)stringsIndexOffSize)); // offSize
foreach (int stringOffset in stringOffsets)
OutputList.Add(new IndexOffsetItem(stringsIndexOffSize,
stringOffset-stringsBaseOffset));
int currentStringsOffset = stringOffsets[stringOffsets.Length-1]
- stringsBaseOffset;
//l.Add(new IndexOffsetItem(stringsIndexOffSize,currentStringsOffset));
currentStringsOffset += ("Adobe").Length;
OutputList.Add(new IndexOffsetItem(stringsIndexOffSize,currentStringsOffset));
currentStringsOffset += ("Identity").Length;
OutputList.Add(new IndexOffsetItem(stringsIndexOffSize,currentStringsOffset));
currentStringsOffset += fdFontName.Length;
OutputList.Add(new IndexOffsetItem(stringsIndexOffSize,currentStringsOffset));
OutputList.Add(new RangeItem(buf,stringOffsets[0],origStringsLen));
OutputList.Add(new StringItem(extraStrings));
}