Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
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;
        }
Ejemplo n.º 5
0
        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);
        }