1

我在 C# 中使用 XPS 并以此示例为起点:https ://code.msdn.microsoft.com/windowsdesktop/How-to-Edit-XPS-file-in-WPF-724ef6fb

我稍微修改了示例并为 XPS 文档创建了一个搜索和替换应用程序。

输出看起来不太好:

在此处输入图像描述

将问号复制并粘贴到编辑器效果很好,并给了我正确的字符。

现在我发现当字符不在源 XPS 中而新字符在目标 XPS 中时,在字体中找不到它们(在这里找到这个解释:https ://stackoverflow.com/a/28236296/ 2058139)。

问题的本质在于XPS文档中ODTTF字体的使用。ODTTF 是一种基于原始文档中使用的字体的模糊子集字体。这意味着您不能使用任何不在原始文档中的字符来替换。

有什么解决办法吗?

4

1 回答 1

2

好消息: 您已经准确诊断出您的问题。

坏消息: 嵌入式 ODTTF 确实没有新文本所需的字形。您将需要嵌入新字体。这是一个可怕的 hack,但可以确定使用的原始字体。如果恰好安装了相同的字体,您可以重做字体嵌入过程,生成一个包含您需要的字形的新 ODTTF。不用说,这是一个可怕的 hack,可能会在几个方面严重失败。您如何处理这种情况将在很大程度上取决于您的应用程序的特定用例。

于 2015-11-04T15:56:26.717 回答