2010-07-14 861 views
2

是否有人熟悉嵌入字体的结构.fntdata?当将字体嵌入到演示文稿中时(这与在Word 2007/Word 2010中使用的.odttf不同),将用于PowerPoint 2007/2010。基本上,我只是想将其转换为.ttf或.odttf文件,以便WPF/Silverlight应用程序可以读取它。将.fntdata文件转换为.ttf文件

以下的标准状态的One page

℃。该标准规定 application/x-fontdata指定 字体应该作为 位图字体存储(每个字形作为栅格图像存储为 )。

PowerPoint中存储TrueType和在 这种类型的部件 OpenType字体 (Embed-Open-Type-FormatMicro-Type-Exp-Format)。 Word不读取或写入 此内容类型。

这有助于知道至少有一个研究方向,但我不知道该如何转换,如果可以转换等等。 NET)。

现在,我甚至不知道如何阅读它。我试过Microsoft Font Validator,但它说它不是一个有效的字体。

要查看此类字体,请转到PowerPoint 2007/2010,创建一个空白幻灯片并添加一个文本框。添加一些文本并将字体更改为“Chiller”(例如)。然后,转到(顶部是圆形的东西),点击另存为...,然后旁边的保存按钮点击工具下拉菜单,然后点击保存选项。一旦弹出对话框,在底部选择在文件中嵌入字体(与您选择的无线电无关。好的,现在保存,你就完成了。现在关闭文件,并在刚刚保存的位置找到它。重命名从.pptx.zip的扩展名,然后将其解压缩。在该文件夹中,转至/ppt/fonts/,您将在那里找到许多字体。他们中的任何人都会做。

有没有人有任何想法?

回答

2

我想我已经接近你的答案了。这种字体的Embedded Open Type(EOT)格式遵循PowerPoint Binary File Format规范。您可以在W3C's Embedded Open Type (EOT) file format上阅读更多关于EOT的详细信息。

我测试了几个字体针对这一点,像宋体粗体冷水机,既做你上面给的PowerPoint中的说明,然后还用Microsoft Web Embedding Fonts Tool(纬)。他们都创建了相同的文件大小,但加密似乎不同 - 我猜WEFT正在应用一些不同的加密,因为它是如何为特定网站构建EOT的。上面的W3C页面可能有更多关于加密的细节。

好消息是,至少在网页中,您可以使用PowerPoint生成的“按原样”。在PowerPoint中嵌入字体我创建了冷水机字体是font1.fntdata嵌入式的时候,我只是把那和使用它创建了一个网页,它的工作只是罚款:

<html> 
    <head> 
     <title>Chill</title> 
     <style type="text/css"> 
     @font-face{ 
     font-family: Chiller; 
     src: url('font1.fntdata'); 
     } 
     .Chiller{ 
     font-family: Chiller; 
     font-size:60px; 
     color:#000; 
     } 
     </style> 
    </head> 
    <body> 
     <div class="Chiller">Cold Beer</div> 
     Free! 
    </body> 
</html> 

我还没有去测试这些是否可以直接在WPF/Silverlight中使用,但至少现在你知道你在处理什么。

+0

o em jee!哇,我有这个问题很长一段时间,我几乎认为这是不可能解决的。这是卓越的洞察力!让我对此进行一些测试。 – 2010-07-30 22:22:07

+0

在HTML中效果很好。仍然试图找出它是否可以在WPF/Silverlight中使用,但这是巨大的。谢谢! – 2010-07-31 06:30:53

1

我从链接页面收集的是.fntdata文件仅包含栅格化字形。这意味着如果需要执行任何缩放,结果可能会很难看。

第一步显然是提取字形。快速搜索对于.fntdata文件在网络上完全没有任何影响。我试图在十六进制编辑器中看到一个,但没有真正弹出(除字体名称作为字符串)。此外,TrID完全不知道那里有什么。您可能可以尝试并查看是否可以提取任何有用的数据–祝您好运。

如果你确实弄清楚了如何去掉字形,接下来你只需要把它们放到一个TTF文件中。根据OpenType file spec(涵盖.ttf文件),TTF可能包含位图字形。 (具体见EBDT table)。我不认为有一个TTF解析器或编写器的.NET实现,所以你必须从头开始实现规范。我再次祝你好运。

当然,如果我只左右含有光栅化字型的嵌入字体正确的,那么所有这些工作将是非常小的收益–你不是真的得到的字体。我显然不知道你的要求是什么,或者你为什么试图提取这些字体,但这可能是一种只是找到原始字体更有效的情况。

+0

感谢您研究这个问题,它比我在一个小时前知道的知识多一点。是的,这是我需要弄清楚,因为它是一个转换器应用程序。但男孩是令人畏惧的! – 2010-07-27 08:31:01