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); } }
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); } }
public ushort[] glyphIdArray; // Glyph index array (arbitrary length) public CMap4(FontData fontData, WinEncodingId encodingId) : base(fontData, "----") { this.encodingId = encodingId; Read(); }
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(); }