您好,
关于您此前反馈的“Microsoft YaHei Mono”和“Aa白桃糖果奶酪体”字体未能被正确使用的问题,我们的开发团队已完成了原因定位,并对产品内部相关代码进行了修正。目前,该修复版本已进入测试阶段。待测试验证通过后,我们将第一时间通知您。
talia.liu wrote:您好,
字体文件中包含多种类型的内部数据表,这些表共同决定了字体的显示效果及功能特性。在先前出现问题的字体中,都存在一类特殊的表未被支持。在本次修复中,我们已针对该类型字体表新增了兼容性支持。例如windows 字体库的常用字体我们都是兼容的,但由于字体类型及内部结构极其多样,如果你们在使用中有其它特殊字体存在问题,你可以提供下字体,我们进一步确认。
using System;
using System.IO;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
Environment.CurrentDirectory = @"C:\Users\Administrator\Desktop";
// Spire.Pdf
var pdf = new PdfDocument();
var page = pdf.Pages.Add();
var trueTypeFont = new PdfTrueTypeFont("甜蜜早安吻", 12f, PdfFontStyle.Regular, true);
page.Canvas.DrawString("Hello China, 你好 中国!", trueTypeFont, PdfBrushes.Black, new PointF(10, 30));
var trueTypeFont2 = new PdfTrueTypeFont("Microsoft YaHei Mono", 12f, PdfFontStyle.Regular, true);
page.Canvas.DrawString("Hello China, 你好 中國!", trueTypeFont2, PdfBrushes.Black, new PointF(10, 50));
pdf.SaveToFile("Spire.Pdf.pdf", Spire.Pdf.FileFormat.PDF);
Console.WriteLine("Spire.Pdf create!");
static void all_fonts()
{
// 1. 要扫描的目录
string[] systemFontDirs = { @"C:\Windows\Fonts" };
string[] customFontDirs = { @"FONT" }; //自定义字体文件夹,例如 @"D:\myFonts"
const string reportFile = "font_report_spire.txt";
string[] ext = { ".ttf", ".ttc", ".otf", ".otc" };
var allDirs = systemFontDirs.Concat(customFontDirs).Where(Directory.Exists).ToArray();
var sb = new StringBuilder();
int total = 0, ok = 0, err = 0;
foreach (var file in allDirs.SelectMany(d =>
ext.SelectMany(e =>
Directory.EnumerateFiles(d, $"*{e}", SearchOption.AllDirectories))))
{
total++;
try
{
PdfTrueTypeFont tf = PdfTrueTypeFont.FromFontFile(file, 20f);
bool isInstalledForAllUsers = file.StartsWith(@"C:\Windows\Fonts\", StringComparison.OrdinalIgnoreCase);
var flag = isInstalledForAllUsers ? "[全局]" : "[当前用户]";
var line = $"[OK ] {tf.Name} ← {file}";
Console.WriteLine(line);
sb.AppendLine(line);
ok++;
}
catch (Exception ex)
{
var line = $"[ERR] {ex.Message} ← {file}";
Console.WriteLine(line);
sb.AppendLine(line);
err++;
}
}
var summary = $"\n========== 统计 ==========\n总计:{total} 成功:{ok} 失败:{err}";
Console.Write(summary);
sb.Append(summary);
File.WriteAllText(reportFile, sb.ToString(), Encoding.UTF8);
Console.WriteLine($"\n报告已写入 {Path.GetFullPath(reportFile)}");
}