private void Init() { encoding = ""; fontSpecific = false; fontType = FONT_TYPE_DOCUMENT; PdfName baseFont = font.GetAsName(PdfName.BASEFONT); fontName = baseFont != null?PdfName.DecodeName(baseFont.ToString()) : "Unspecified Font Name"; PdfName subType = font.GetAsName(PdfName.SUBTYPE); if (PdfName.TYPE1.Equals(subType) || PdfName.TRUETYPE.Equals(subType)) { DoType1TT(); } else { PdfName encodingName = font.GetAsName(PdfName.ENCODING); if (encodingName != null) { String enc = PdfName.DecodeName(encodingName.ToString()); String ffontname = CJKFont.GetCompatibleFont(enc); if (ffontname != null) { cjkMirror = BaseFont.CreateFont(ffontname, enc, false); cjkEncoding = enc; uniMap = ((CJKFont)cjkMirror).UniMap; } if (PdfName.TYPE0.Equals(subType)) { isType0 = true; if (!enc.Equals("Identity-H") && cjkMirror != null) { PdfArray df = (PdfArray)PdfReader.GetPdfObjectRelease(font.Get(PdfName.DESCENDANTFONTS)); PdfDictionary cidft = (PdfDictionary)PdfReader.GetPdfObjectRelease(df[0]); PdfNumber dwo = (PdfNumber)PdfReader.GetPdfObjectRelease(cidft.Get(PdfName.DW)); if (dwo != null) { defaultWidth = dwo.IntValue; } hMetrics = ReadWidths((PdfArray)PdfReader.GetPdfObjectRelease(cidft.Get(PdfName.W))); PdfDictionary fontDesc = (PdfDictionary)PdfReader.GetPdfObjectRelease(cidft.Get(PdfName.FONTDESCRIPTOR)); FillFontDesc(fontDesc); } else { ProcessType0(font); } } } } }
private void Init() { encoding = ""; fontSpecific = false; fontType = FONT_TYPE_DOCUMENT; PdfName baseFont = font.GetAsName(PdfName.BASEFONT); fontName = baseFont != null?PdfName.DecodeName(baseFont.ToString()) : "Unspecified Font Name"; PdfName subType = font.GetAsName(PdfName.SUBTYPE); if (PdfName.TYPE1.Equals(subType) || PdfName.TRUETYPE.Equals(subType)) { DoType1TT(); } else { PdfName encodingName = font.GetAsName(PdfName.ENCODING); if (encodingName != null) { String enc = PdfName.DecodeName(encodingName.ToString()); String ffontname = CJKFont.GetCompatibleFont(enc); if (ffontname != null) { cjkMirror = BaseFont.CreateFont(ffontname, enc, false); cjkEncoding = enc; uniMap = ((CJKFont)cjkMirror).UniMap; } if (PdfName.TYPE0.Equals(subType) && enc.Equals("Identity-H")) { ProcessType0(font); isType0 = true; } } } }
private void Init() { encoding = ""; fontSpecific = false; fontType = FONT_TYPE_DOCUMENT; PdfName baseFont = font.GetAsName(PdfName.BASEFONT); fontName = baseFont != null?PdfName.DecodeName(baseFont.ToString()) : "Unspecified Font Name"; PdfName subType = font.GetAsName(PdfName.SUBTYPE); if (PdfName.TYPE1.Equals(subType) || PdfName.TRUETYPE.Equals(subType)) { DoType1TT(); } else if (PdfName.TYPE3.Equals(subType)) { // In case of a Type3 font, we just show the characters as is. // Note that this doesn't always make sense: // Type 3 fonts are user defined fonts where arbitrary characters are mapped to custom glyphs // For instance: the character a could be mapped to an image of a dog, the character b to an image of a cat // When parsing a document that shows a cat and a dog, you shouldn't expect seeing a cat and a dog. Instead you'll get b and a. FillEncoding(null); } else { PdfName encodingName = font.GetAsName(PdfName.ENCODING); if (encodingName != null) { String enc = PdfName.DecodeName(encodingName.ToString()); String ffontname = CJKFont.GetCompatibleFont(enc); if (ffontname != null) { cjkMirror = BaseFont.CreateFont(ffontname, enc, false); cjkEncoding = enc; uniMap = ((CJKFont)cjkMirror).UniMap; } if (PdfName.TYPE0.Equals(subType)) { isType0 = true; if (!enc.Equals("Identity-H") && cjkMirror != null) { PdfArray df = (PdfArray)PdfReader.GetPdfObjectRelease(font.Get(PdfName.DESCENDANTFONTS)); PdfDictionary cidft = (PdfDictionary)PdfReader.GetPdfObjectRelease(df[0]); PdfNumber dwo = (PdfNumber)PdfReader.GetPdfObjectRelease(cidft.Get(PdfName.DW)); if (dwo != null) { defaultWidth = dwo.IntValue; } hMetrics = ReadWidths((PdfArray)PdfReader.GetPdfObjectRelease(cidft.Get(PdfName.W))); PdfDictionary fontDesc = (PdfDictionary)PdfReader.GetPdfObjectRelease(cidft.Get(PdfName.FONTDESCRIPTOR)); FillFontDesc(fontDesc); } else { ProcessType0(font); } } } } }