Example #1
0
        internal void Read()
        {
            try
            {
                int tableOffset = _fontData.Position;

                version   = _fontData.ReadUShort();
                numTables = _fontData.ReadUShort();
#if DEBUG_
                if (_fontData.Name == "Cambria")
                {
                    Debug - Break.Break();
                }
#endif

                bool success = false;
                for (int idx = 0; idx < numTables; idx++)
                {
                    PlatformId    platformId = (PlatformId)_fontData.ReadUShort();
                    WinEncodingId encodingId = (WinEncodingId)_fontData.ReadUShort();
                    int           offset     = _fontData.ReadLong();

                    int currentPosition = _fontData.Position;

                    // Just read Windows stuff.
                    if (platformId == PlatformId.Win && (encodingId == WinEncodingId.Symbol || encodingId == WinEncodingId.Unicode))
                    {
                        symbol = encodingId == WinEncodingId.Symbol;

                        _fontData.Position = tableOffset + offset;
                        cmap4 = new CMap4(_fontData, encodingId);
                        _fontData.Position = currentPosition;
                        // We have found what we are looking for, so break.
                        success = true;
                        break;
                    }
                }
                if (!success)
                {
                    throw new InvalidOperationException("Font has no usable platform or encoding ID. It cannot be used with PDFsharp.");
                }
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException(PSSR.ErrorReadingFontData, ex);
            }
        }
Example #2
0
        internal void Read()
        {
            try
            {
                int tableOffset = this.fontData.Position;

                this.version   = this.fontData.ReadUShort();
                this.numTables = this.fontData.ReadUShort();

                bool success = false;
                for (int idx = 0; idx < this.numTables; idx++)
                {
                    PlatformId    platformId = (PlatformId)this.fontData.ReadUShort();
                    WinEncodingId encodingId = (WinEncodingId)this.fontData.ReadUShort();
                    int           offset     = this.fontData.ReadLong();

                    int currentPosition = this.fontData.Position;

                    // Just read Windows stuff
                    if (platformId == PlatformId.Win && (encodingId == WinEncodingId.Symbol || encodingId == WinEncodingId.Unicode))
                    {
                        this.symbol = encodingId == WinEncodingId.Symbol;

                        this.fontData.Position = tableOffset + offset;
                        this.cmap4             = new CMap4(this.fontData, encodingId);
                        this.fontData.Position = currentPosition;
                        // We have found what we are looking for, so break.
                        success = true;
                        break;
                    }
                }
                if (!success)
                {
                    throw new InvalidOperationException("Font has no usable platform or encoding ID. It cannot be used with PDFsharp.");
                }
            }
            catch (Exception ex)
            {
                throw new PdfSharpException(PSSR.ErrorReadingFontData, ex);
            }
        }
Example #3
0
        public ushort[] glyphIdArray;    // Glyph index array (arbitrary length)

        public CMap4(FontData fontData, WinEncodingId encodingId)
            : base(fontData, "----")
        {
            this.encodingId = encodingId;
            Read();
        }
Example #4
0
        public ushort[] glyphIdArray;    // Glyph index array (arbitrary length)

        public CMap4(OpenTypeFontface fontData, WinEncodingId encodingId)
            : base(fontData, "----")
        {
            this.encodingId = encodingId;
            Read();
        }
    public ushort[] glyphIdArray;     // Glyph index array (arbitrary length)

    public CMap4(FontImage fontImage, WinEncodingId encodingId)
      : base(fontImage, "----")
    {
      this.encodingId = encodingId;
      Read();
    }
Example #6
0
        public ushort[] glyphIdArray;     // Glyph index array (arbitrary length)

        public CMap4(OpenTypeFontface fontData, WinEncodingId encodingId)
            : base(fontData, "----")
        {
            this.encodingId = encodingId;
            Read();
        }
Example #7
0
    public ushort[] glyphIdArray;     // Glyph index array (arbitrary length)

    public CMap4(FontData fontData, WinEncodingId encodingId)
      : base(fontData, "----")
    {
      this.encodingId = encodingId;
      Read();
    }