public static IContainer GenerateContainer(ILog logger) { if (_testContainer != null) { return(_testContainer); } if (logger == null) { logger = new NoOpLog(); } var headerParser = new FileHeaderParser(logger); var trailerParser = new FileTrailerParser(); var filterProvider = new MemoryFilterProvider(new DecodeParameterResolver(logger), new PngPredictor(), logger); var cmapParser = new CMapParser(); var afmParser = new AdobeFontMetricsParser(); var container = new Container(); container.Register(headerParser); container.Register(trailerParser); container.Register(filterProvider); container.Register(cmapParser); container.Register(afmParser); container.Register(logger); return(container); }
public void CanParseAfmFile() { var input = StringBytesTestConverter.Convert(CourierAfmSnippet, false); var metrics = AdobeFontMetricsParser.Parse(input.Bytes, false); Assert.NotNull(metrics); }
public void CanParseHelveticaAfmFile() { var helvetica = GetResourceBytes("UglyToad.PdfPig.Fonts.Resources.AdobeFontMetrics.Helvetica.afm"); var input = new ByteArrayInputBytes(helvetica); var metrics = AdobeFontMetricsParser.Parse(input, false); Assert.NotNull(metrics); }
public static IContainer GenerateContainer(ILog logger) { if (_testContainer != null) { return(_testContainer); } if (logger == null) { logger = new NoOpLog(); } var headerParser = new FileHeaderParser(logger); var trailerParser = new FileTrailerParser(); var nameParser = new CosNameParser(); var dictionaryParser = new CosDictionaryParser(nameParser, logger); var baseParser = new CosBaseParser(nameParser, new CosStringParser(), dictionaryParser, new CosArrayParser()); var streamParser = new CosStreamParser(logger); var filterProvider = new MemoryFilterProvider(new DecodeParameterResolver(logger), new PngPredictor(), logger); var crossReferenceParser = new CrossReferenceStreamParser(filterProvider); var objectStreamParser = new ObjectStreamParser(logger, filterProvider, baseParser); var dynamicParser = new DynamicParser(logger, baseParser, streamParser, objectStreamParser); var crossReferenceTableParser = new CrossReferenceParser(logger, dictionaryParser, baseParser, streamParser, crossReferenceParser, new CrossReferenceTableParser(), new OldCrossReferenceTableParser(logger, dictionaryParser, baseParser)); var cmapParser = new CMapParser(); var afmParser = new AdobeFontMetricsParser(); var container = new Container(); container.Register(headerParser); container.Register(trailerParser); container.Register(nameParser); container.Register(dictionaryParser); container.Register(baseParser); container.Register(streamParser); container.Register(crossReferenceParser); container.Register(crossReferenceTableParser); container.Register(dynamicParser); container.Register(objectStreamParser); container.Register(filterProvider); container.Register(cmapParser); container.Register(afmParser); container.Register(logger); return(container); }
private static void AddAdobeFontMetrics(string fontName, string afmName, Standard14Font?type = null) { Standard14Names.Add(fontName); Standard14Mapping.Add(fontName, afmName); if (type.HasValue) { BuilderTypesToNames[type.Value] = afmName; } if (Standard14Cache.TryGetValue(afmName, out var metrics)) { Standard14Cache[fontName] = metrics; } try { var assembly = typeof(Standard14).Assembly; var name = $"UglyToad.PdfPig.Fonts.Resources.AdobeFontMetrics.{afmName}.afm"; IInputBytes bytes; using (var memory = new MemoryStream()) using (var resource = assembly.GetManifestResourceStream(name)) { if (resource == null) { throw new InvalidOperationException($"Could not find AFM resource with name: {name}."); } resource.CopyTo(memory); bytes = new ByteArrayInputBytes(memory.ToArray()); } Standard14Cache[fontName] = AdobeFontMetricsParser.Parse(bytes, true); } catch (Exception ex) { throw new InvalidOperationException($"Could not load {fontName} from the AFM files.", ex); } }