public int CreateFakeFontSubsets() {
int total = 0;
for (int k = 1; k < xrefObj.Count; ++k) {
PdfObject obj = GetPdfObjectRelease(k);
if (obj == null || !obj.IsDictionary())
continue;
PdfDictionary dic = (PdfDictionary)obj;
if (!ExistsName(dic, PdfName.TYPE, PdfName.FONT))
continue;
if (ExistsName(dic, PdfName.SUBTYPE, PdfName.TYPE1)
|| ExistsName(dic, PdfName.SUBTYPE, PdfName.MMTYPE1)
|| ExistsName(dic, PdfName.SUBTYPE, PdfName.TRUETYPE)) {
String s = GetSubsetPrefix(dic);
if (s != null)
continue;
s = GetFontName(dic);
if (s == null)
continue;
String ns = BaseFont.CreateSubsetPrefix() + s;
PdfDictionary fd = (PdfDictionary)GetPdfObjectRelease(dic.Get(PdfName.FONTDESCRIPTOR));
if (fd == null)
continue;
if (fd.Get(PdfName.FONTFILE) == null && fd.Get(PdfName.FONTFILE2) == null
&& fd.Get(PdfName.FONTFILE3) == null)
continue;
fd = dic.GetAsDict(PdfName.FONTDESCRIPTOR);
PdfName newName = new PdfName(ns);
dic.Put(PdfName.BASEFONT, newName);
fd.Put(PdfName.FONTNAME, newName);
SetXrefPartialObject(k, dic);
++total;
}
}
return total;
}