public override PdfStream GetFullFontStream()
{
if (builtinFont || !embedded)
return null;
RandomAccessFileOrArray rf = null;
try {
string filePfb = fileName.Substring(0, fileName.Length - 3) + "pfb";
if (pfb == null)
rf = new RandomAccessFileOrArray(filePfb, true);
else
rf = new RandomAccessFileOrArray(pfb);
int fileLength = (int)rf.Length;
byte[] st = new byte[fileLength - 18];
int[] lengths = new int[3];
int bytePtr = 0;
for (int k = 0; k < 3; ++k) {
if (rf.Read() != 0x80)
throw new DocumentException(MessageLocalization.GetComposedMessage("start.marker.missing.in.1", filePfb));
if (rf.Read() != PFB_TYPES[k])
throw new DocumentException(MessageLocalization.GetComposedMessage("incorrect.segment.type.in.1", filePfb));
int size = rf.Read();
size += rf.Read() << 8;
size += rf.Read() << 16;
size += rf.Read() << 24;
lengths[k] = size;
while (size != 0) {
int got = rf.Read(st, bytePtr, size);
if (got < 0)
throw new DocumentException(MessageLocalization.GetComposedMessage("premature.end.in.1", filePfb));
bytePtr += got;
size -= got;
}
}
return new StreamFont(st, lengths, compressionLevel);
}
finally {
if (rf != null) {
try {
rf.Close();
}
catch {
// empty on purpose
}
}
}
}