我认为您想要的是拥有 Glyphs 元素而不是路径。问题是 Glyphs 元素要求您指定字体文件的 URI。此外,Glyphs 元素通过索引将字形引用到字体文件中(可能会发生生成 Glyphs 元素的转换器 - 如 Microsoft XPS Document Writer - 使用字体子集文件的索引:因此这些索引可能不是正确的索引与原始字体文件中定义的字形相同)。我已经能够使用我自己的 PDF 到 XAML 转换工具以两种方式“解决”这个问题。
1. 方法:在生成的 XAML 代码中嵌入 BASE64 编码的字体子集文件,并让应用程序实现一个类,该类在加载时将嵌入的字体子集文件提取和解码到临时位置,并将有效的 URI 传递给将该临时文件返回给 XAML 加载程序。
或者,2. 方法:已经与我的应用程序一起安装了大多数字体文件,并且再次添加我的应用程序的一些支持,在加载 XAML 代码时将字体名称替换为已安装字体文件的 URI。第二种方法的问题是字形索引需要正确映射到安装的字体文件,这可能不是那么简单。(您可以在我的博客上找到为这种加载方式生成的示例文件的链接:特别是查看文件truncatedcone-xaml.txt)
简而言之:这两种解决方案都需要一个特殊的 PDF 到 XAML 转换器并得到加载应用程序的支持。我想这样做而不是仅仅将我的 PDF 转换为路径的原因是我的应用程序是一个共享白板:因此我希望我的矢量图形尽可能小。(在大多数情况下,转换为路径往往会使 XAML 代码炸毁 10 倍或更多)。
我正在考虑实施第三种方法:这将包括为每个只使用一次的字形生成轮廓然后通过我的应用程序添加支持,以与必须生成的 Glyphs 元素所做的非常相似的方式转换和定位这些字形轮廓。优点是生成的 XAML 仍然相对较小(与上述第二种方法相比),不需要与应用程序一起安装相关的字体文件,也不需要将字形索引从子集文件映射到安装的字体文件。我还没有认真尝试实现这一点的原因有两个:首先,我目前的(第二种)方法已经很好地满足了我目前的需要;其次,这第三种方法在加载和/或渲染方面可能存在性能问题。