/**
* Processes a dictionary.
* In case of font dictionaries, the dictionary is processed.
*/
public void UnembedTTF(PdfDictionary dict)
{
// we ignore all dictionaries that aren't font dictionaries
if (!dict.IsFont())
return;
// we only remove TTF fonts
if (dict.GetAsDict(PdfName.FONTFILE2) != null)
{
return;
}
// check if a subset was used (in which case we remove the prefix)
PdfName baseFont = dict.GetAsName(PdfName.BASEFONT);
if (baseFont.GetBytes()[7] == '+')
{
baseFont = new PdfName(baseFont.ToString().Substring(8));
dict.Put(PdfName.BASEFONT, baseFont);
}
// we check if there's a font descriptor
PdfDictionary fontDescriptor = dict.GetAsDict(PdfName.FONTDESCRIPTOR);
if (fontDescriptor == null)
return;
// is there is, we replace the fontname and remove the font file
fontDescriptor.Put(PdfName.FONTNAME, baseFont);
fontDescriptor.Remove(PdfName.FONTFILE2);
}