public CMap(CharacterIdentifierSystemInfo info, int type, int wMode, string name, string version, IReadOnlyDictionary <int, string> baseFontCharacterMap, IReadOnlyList <CodespaceRange> codespaceRanges, IReadOnlyList <CidRange> cidRanges, IReadOnlyList <CidCharacterMapping> cidCharacterMappings) { if (cidCharacterMappings == null) { throw new ArgumentNullException(nameof(cidCharacterMappings)); } Info = info; Type = type; WritingMode = (WritingMode)wMode; Name = name; Version = version; BaseFontCharacterMap = baseFontCharacterMap ?? throw new ArgumentNullException(nameof(baseFontCharacterMap)); CodespaceRanges = codespaceRanges ?? throw new ArgumentNullException(nameof(codespaceRanges)); CidRanges = cidRanges ?? throw new ArgumentNullException(nameof(cidRanges)); maxCodeLength = CodespaceRanges.Max(x => x.CodeLength); minCodeLength = CodespaceRanges.Min(x => x.CodeLength); var characterMappings = new Dictionary <int, CidCharacterMapping>(); foreach (var characterMapping in cidCharacterMappings) { characterMappings[characterMapping.SourceCharacterCode] = characterMapping; } CidCharacterMappings = characterMappings; }
public Type0CidFont(ICidFontProgram fontProgram, NameToken type, NameToken subType, NameToken baseFont, CharacterIdentifierSystemInfo systemInfo, FontDescriptor descriptor, IReadOnlyDictionary <int, decimal> widths) { this.fontProgram = fontProgram; Type = type; SubType = subType; BaseFont = baseFont; SystemInfo = systemInfo; var scale = 1 / (decimal)(fontProgram?.GetFontMatrixMultiplier() ?? 1000); FontMatrix = TransformationMatrix.FromValues(scale, 0, 0, scale, 0, 0); Descriptor = descriptor; Widths = widths; }
public Type2CidFont(NameToken type, NameToken subType, NameToken baseFont, CharacterIdentifierSystemInfo systemInfo, FontDescriptor descriptor, ICidFontProgram fontProgram, VerticalWritingMetrics verticalWritingMetrics, IReadOnlyDictionary <int, decimal> widths) { Type = type; SubType = subType; BaseFont = baseFont; SystemInfo = systemInfo; Descriptor = descriptor; this.fontProgram = fontProgram; this.verticalWritingMetrics = verticalWritingMetrics; this.widths = widths; // TODO: This should maybe take units per em into account? var scale = 1 / 1000m; FontMatrix = TransformationMatrix.FromValues(scale, 0, 0, scale, 0, 0); }
public Type0CidFont(ICidFontProgram fontProgram, NameToken type, NameToken subType, NameToken baseFont, CharacterIdentifierSystemInfo systemInfo, FontDescriptor descriptor, VerticalWritingMetrics verticalWritingMetrics, IReadOnlyDictionary <int, double> widths, double?defaultWidth) { this.fontProgram = fontProgram; this.verticalWritingMetrics = verticalWritingMetrics; this.defaultWidth = defaultWidth; Type = type; SubType = subType; BaseFont = baseFont; SystemInfo = systemInfo; var scale = 1 / (double)(fontProgram?.GetFontMatrixMultiplier() ?? 1000); FontMatrix = TransformationMatrix.FromValues(scale, 0, 0, scale, 0, 0); Descriptor = descriptor; Widths = widths; }
public Type2CidFont(NameToken type, NameToken subType, NameToken baseFont, CharacterIdentifierSystemInfo systemInfo, FontDescriptor descriptor, ICidFontProgram fontProgram, VerticalWritingMetrics verticalWritingMetrics, IReadOnlyDictionary <int, double> widths, double?defaultWidth, CharacterIdentifierToGlyphIndexMap cidToGid) { Type = type; SubType = subType; BaseFont = baseFont; SystemInfo = systemInfo; Descriptor = descriptor; this.fontProgram = fontProgram; this.verticalWritingMetrics = verticalWritingMetrics; this.widths = widths; this.defaultWidth = defaultWidth; this.cidToGid = cidToGid; // TODO: This should maybe take units per em into account? var scale = 1 / (double)(fontProgram?.GetFontMatrixMultiplier() ?? 1000); FontMatrix = TransformationMatrix.FromValues(scale, 0, 0, scale, 0, 0); }