XPS 文档中的问号

Question Marks in XPS Document

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

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

输出看起来不太好:

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

现在我发现当字符不在源 XPS 中而新字符在目标 XPS 中时,无法在字体中找到它们(在此处找到此解释:)。

The essence of the problem lies in the use of ODTTF fonts in XPS document. The ODTTF is an obfuscated subsetted font based on the fonts used in the original document. This means that you cannot use for the replacement any character that wasn't in the original document.

有什么解决办法吗?

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

坏消息: 嵌入式 ODTTF 确实没有新文本所需的字形。您将需要嵌入新字体。这是一个可怕的 hack,但可能 determine the original font 被使用过。如果碰巧安装了相同的字体,您可以重做字体嵌入过程,生成一个包含您需要的字形的新 ODTTF。不用说,这是一个可怕的黑客攻击,可能会在几个点上严重失败。您如何处理这种情况将在很大程度上取决于您的应用程序的具体用例。