public void CanReadBinaryEncryptedPortionOfFullPfb() { // TODO: support reading in these pfb files var bytes = GetFileBytes("Raleway-Black.pfb"); Type1FontParser.Parse(new ByteArrayInputBytes(bytes), 0, 0); }
private Union <Type1FontProgram, CompactFontFormatFontProgram> ParseFontProgram(FontDescriptor descriptor, bool isLenientParsing) { if (descriptor?.FontFile == null) { return(null); } if (descriptor.FontFile.ObjectKey.Data.ObjectNumber == 0) { return(null); } try { if (!(pdfScanner.Get(descriptor.FontFile.ObjectKey.Data).Data is StreamToken stream)) { return(null); } var bytes = stream.Decode(filterProvider); // We have a Compact Font Format font rather than an Adobe Type 1 Font. if (stream.StreamDictionary.TryGet(NameToken.Subtype, out NameToken subTypeName) && NameToken.Type1C.Equals(subTypeName)) { var str = OtherEncodings.BytesAsLatin1String(bytes.ToArray()); var cffFont = compactFontFormatParser.Parse(new CompactFontFormatData(bytes)); return(Union <Type1FontProgram, CompactFontFormatFontProgram> .Two(cffFont)); } var length1 = stream.StreamDictionary.Get <NumericToken>(NameToken.Length1, pdfScanner); var length2 = stream.StreamDictionary.Get <NumericToken>(NameToken.Length2, pdfScanner); var font = type1FontParser.Parse(new ByteArrayInputBytes(bytes), length1.Int, length2.Int); return(Union <Type1FontProgram, CompactFontFormatFontProgram> .One(font)); } catch { if (!isLenientParsing) { throw; } } return(null); }
public void OutputCmbx10Svgs() { var bytes = GetFileBytes("CMBX10"); var result = Type1FontParser.Parse(new ByteArrayInputBytes(bytes), 0, 0); var builder = new StringBuilder("<!DOCTYPE html><html><head></head><body>"); foreach (var charString in result.CharStrings.CharStrings) { Assert.True(result.CharStrings.TryGenerate(charString.Key, out var path)); builder.AppendLine(path.ToFullSvg()); } builder.Append("</body></html>"); File.WriteAllText("cmbx10.html", builder.ToString()); }
private Union <Type1Font, CompactFontFormatFontCollection> ParseFontProgram(FontDescriptor descriptor) { if (descriptor?.FontFile == null) { return(null); } if (descriptor.FontFile.ObjectKey.Data.ObjectNumber == 0) { return(null); } try { if (!(pdfScanner.Get(descriptor.FontFile.ObjectKey.Data)?.Data is StreamToken stream)) { return(null); } var bytes = stream.Decode(filterProvider, pdfScanner); // We have a Compact Font Format font rather than an Adobe Type 1 Font. if (stream.StreamDictionary.TryGet(NameToken.Subtype, out NameToken subTypeName) && NameToken.Type1C.Equals(subTypeName)) { var cffFont = CompactFontFormatParser.Parse(new CompactFontFormatData(bytes)); return(Union <Type1Font, CompactFontFormatFontCollection> .Two(cffFont)); } var length1 = stream.StreamDictionary.Get <NumericToken>(NameToken.Length1, pdfScanner); var length2 = stream.StreamDictionary.Get <NumericToken>(NameToken.Length2, pdfScanner); var font = Type1FontParser.Parse(new ByteArrayInputBytes(bytes), length1.Int, length2.Int); return(Union <Type1Font, CompactFontFormatFontCollection> .One(font)); } catch { // ignored. } return(null); }
private Type1Font ParseType1Font(FontDescriptor descriptor, bool isLenientParsing) { if (descriptor?.FontFile == null) { return(null); } if (descriptor.FontFile.ObjectKey.Data.ObjectNumber == 0) { return(null); } try { var stream = pdfScanner.Get(descriptor.FontFile.ObjectKey.Data).Data as StreamToken; if (stream == null) { return(null); } var bytes = stream.Decode(filterProvider); var font = type1FontParser.Parse(new ByteArrayInputBytes(bytes)); return(font); } catch { if (!isLenientParsing) { throw; } } return(null); }
public void CanReadHexEncryptedPortion() { var bytes = GetFileBytes("AdobeUtopia.pfa"); parser.Parse(new ByteArrayInputBytes(bytes), 0, 0); }
public void CanReadFontWithCommentsInOtherSubrs() { var bytes = GetFileBytes("CMR10"); Type1FontParser.Parse(new ByteArrayInputBytes(bytes), 0, 0); }
public void CanReadAsciiPart() { var bytes = GetFileBytes("CMBX12"); Type1FontParser.Parse(new ByteArrayInputBytes(bytes), 0, 0); }
public void CanReadEncryptedPortion() { var bytes = GetFileBytes("CMCSC10"); Type1FontParser.Parse(new ByteArrayInputBytes(bytes), 0, 0); }
public void CanReadCharStrings() { var bytes = GetFileBytes("CMBX10.pfa"); Type1FontParser.Parse(new ByteArrayInputBytes(bytes), 0, 0); }
public void CanRead() { var bytes = StringBytesTestConverter.Convert(Cmbx12, false); parser.Parse(bytes.Bytes); }