Exemplo n.º 1
0
        private void LoadLocalFont(string fontPath, SvgWindow ownedWindow, SvgFontFaceElement fontFace)
        {
            if (string.IsNullOrWhiteSpace(fontPath) || !File.Exists(fontPath))
            {
//                Trace.WriteLine("Private font not found: " + fontPath);
                return;
            }

            string fileExt = Path.GetExtension(fontPath);

            if (string.Equals(fileExt, ".svg", StringComparison.OrdinalIgnoreCase) ||
                string.Equals(fileExt, ".svgz", StringComparison.OrdinalIgnoreCase))
            {
                SvgDocument document = new SvgDocument(ownedWindow);

                document.Load(fontPath);
                var svgFonts = document.SvgFonts;

                if (svgFonts != null && svgFonts.Count != 0)
                {
                    foreach (var svgFont in svgFonts)
                    {
                        if (fontFace != null && fontFace.HasAttribute("unicode-range"))
                        {
                            svgFont.SetAttribute("unicode-range", fontFace.GetAttribute("unicode-range"));
                        }

                        var fontNode = this.ImportNode(svgFont, true);
                        this.DocumentElement.AppendChild(fontNode);

//                        this.SvgFonts.Add(svgFont);
                    }
                }

                document = null;
            }
            else if (string.Equals(fileExt, ".ttf", StringComparison.OrdinalIgnoreCase) ||
                     string.Equals(fileExt, ".otf", StringComparison.OrdinalIgnoreCase))
            {
                Debug.Assert(false, "Testing files with this format");
            }
            else if (string.Equals(fileExt, ".woff", StringComparison.OrdinalIgnoreCase) ||
                     string.Equals(fileExt, ".woff2", StringComparison.OrdinalIgnoreCase))
            {
                Debug.Assert(false, "Testing files with this format");
            }
        }
Exemplo n.º 2
0
        private void LoadLocalFont(string fontPath, SvgWindow ownedWindow, SvgFontFaceElement fontFace)
        {
            if (string.IsNullOrWhiteSpace(fontPath) || !File.Exists(fontPath))
            {
//                Trace.WriteLine("Private font not found: " + fontPath);
                return;
            }

            string fileExt = Path.GetExtension(fontPath);

            if (string.Equals(fileExt, ".svg", StringComparison.OrdinalIgnoreCase) ||
                string.Equals(fileExt, ".svgz", StringComparison.OrdinalIgnoreCase))
            {
                SvgDocument document = new SvgDocument(ownedWindow);

                document.Load(fontPath);
                var svgFonts = document.SvgFonts;

                if (svgFonts != null && svgFonts.Count != 0)
                {
                    foreach (var svgFont in svgFonts)
                    {
                        if (fontFace != null && fontFace.HasAttribute("unicode-range"))
                        {
                            svgFont.SetAttribute("unicode-range", fontFace.GetAttribute("unicode-range"));
                        }

                        var fontNode = this.ImportNode(svgFont, true);
                        this.DocumentElement.AppendChild(fontNode);

//                        this.SvgFonts.Add(svgFont);
                    }
                }

                document = null;
            }
            else if (string.Equals(fileExt, ".woff", StringComparison.OrdinalIgnoreCase) ||
                     string.Equals(fileExt, ".woff2", StringComparison.OrdinalIgnoreCase))
            {
                if (_fontFamilies == null)
                {
                    _fontFamilies = new List <SvgFontFamily>();
                }

                var woffParser = new SvgWoffParser();
                if (woffParser.Import(fontPath))
                {
                    string fontExportPath = woffParser.DefaultExportPath;
                    if (File.Exists(fontExportPath))
                    {
                        var fontFamily = new SvgFontFamily(true, fontExportPath, fontPath);
                        _fontFamilies.Add(fontFamily);
                    }
                    else
                    {
                        fontExportPath = woffParser.GetExportPath();
                        if (woffParser.Export(fontExportPath))
                        {
                            var fontFamily = new SvgFontFamily(true, fontExportPath, fontPath);

                            _fontFamilies.Add(fontFamily);
                        }
                    }
                }
            }
            else if (string.Equals(fileExt, ".ttf", StringComparison.OrdinalIgnoreCase) ||
                     string.Equals(fileExt, ".otf", StringComparison.OrdinalIgnoreCase))
            {
                if (_fontFamilies == null)
                {
                    _fontFamilies = new List <SvgFontFamily>();
                }
                var fontFamily = new SvgFontFamily(false, fontPath);

                _fontFamilies.Add(fontFamily);
            }
            else if (string.Equals(fileExt, ".ttc", StringComparison.OrdinalIgnoreCase) ||
                     string.Equals(fileExt, ".otc", StringComparison.OrdinalIgnoreCase))
            {
                if (_fontFamilies == null)
                {
                    _fontFamilies = new List <SvgFontFamily>();
                }
                var fontFamily = new SvgFontFamily(false, fontPath);

                _fontFamilies.Add(fontFamily);
            }
        }