2015-11-04 98 views
1

我与XPS玩弄于C#和使用这个例子作为一个起点:https://code.msdn.microsoft.com/windowsdesktop/How-to-Edit-XPS-file-in-WPF-724ef6fb问号XPS文档

我修改的例子一点,创造了一个搜索和替换应用XPS文档。

输出看起来不是很好:

enter image description here

复制并粘贴问号的编辑工作得很好,给了我正确的字符。

现在我已经发现,当字符不在源XPS中并且新字符在目标XPS中时,它们不能在字体中找到(在此处找到此解释:https://stackoverflow.com/a/28236296/2058139)。

问题的实质在于在XPS文档中使用ODTTF字体。 ODTTF是基于原始文档中使用的字体的混淆子集字体。这意味着您不能用于替换原始文档中未包含的任何字符。

任何解决方案?

+0

它似乎已经有一个搜索/替换它。因此,撤消你的代码更改,然后再次运行。 – Will

+0

我不明白你的答案。你是什​​么意思? – rmnblm

+0

您链接的应用程序具有搜索/替换功能。如果它有效,你确实破坏了它。恢复您的更改,并再次运行。 – Will

回答

2

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

坏消息: 嵌入式ODTTF确实没有您的新文本所需的字形。您将需要嵌入一个新的字体。这是一个可怕的黑客攻击,但它可能可以使用determine the original font。如果恰好安装了相同的字体,则可以重新执行字体嵌入过程,生成一个包含所需字形的新ODTTF。毋庸置疑,这是一种可怕的黑客攻击,可能会在几个方面严重失败。您如何处理这种情况将高度依赖于您的应用程序的特定用例。