我在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是基于原始文档中使用的字体的模糊子集字体。这意味着您不能用于替换原始文档中没有的任何字符。
对此有何解决方案?
答案 0 :(得分:2)
好消息: 您已准确诊断出您的问题。
坏消息: 嵌入式ODTTF确实没有新文本所需的字形。您需要嵌入一个新字体。这是一个糟糕的黑客,但有可能使用determine the original font。如果碰巧安装了相同的字体,您可以重做字体嵌入过程,生成包含所需字形的新ODTTF。毋庸置疑,这是一个可怕的黑客攻击,可能会在几个方面严重失败。您如何处理这种情况将高度依赖于您的应用程序的特定用例。