GetCompatibleFont() public static method

public static GetCompatibleFont ( String enc ) : String
enc String
return String
コード例 #1
0
ファイル: DocumentFont.cs プロジェクト: rrossenbg/vprint
        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);
                        }
                    }
                }
            }
        }
コード例 #2
0
ファイル: DocumentFont.cs プロジェクト: mohsenmetn/itextsharp
        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;
                    }
                }
            }
        }
コード例 #3
0
        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);
                        }
                    }
                }
            }
        }