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"); } }
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); } }