.net 将.fntdata文件转换为.ttf

.net 将.fntdata文件转换为.ttf,.net,fonts,gdi+,.net,Fonts,Gdi+,有人熟悉嵌入式字体的结构吗?在PowerPoint 2007/2010中将字体嵌入演示文稿时使用此选项(与Word 2007/Word 2010中使用的.odttf不同)。基本上,我只想将其转换为.ttf或.odttf文件,以便WPF/Silverlight应用程序可以读取它 本标准的第1部分规定如下: c。该标准规定: application/x-fontdata指定 字体应存储为 位图字体(存储每个字形 作为光栅图像) PowerPoint存储TrueType和 OpenType字体 (,

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

本标准的第1部分规定如下:

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

PowerPoint存储TrueType和 OpenType字体 (, )部分 这种。Word不读也不写 此内容类型无效

知道这一点很有帮助,至少有一个研究方向,但我不确定如何转换,如果可以转换,等等(最好是在.NET中)

现在,我甚至不知道怎么读。我试过Microsoft字体验证程序,但它说它不是有效的字体

要查看这种字体,请进入PowerPoint 2007/2010,创建一张空白幻灯片并添加一个文本框。添加一些文本并将字体更改为“Columer”(例如)。然后,转到Orb(顶部的圆形),单击另存为…,然后在保存按钮旁边单击工具下拉列表,然后单击保存选项。对话框弹出后,在底部选择“在文件中嵌入字体”(无论您选择下面的哪个收音机)。好的,现在保存,你就完成了。现在关闭该文件,并在刚刚保存它的位置找到它。将扩展名从.pptx重命名为.zip,然后将其解压缩。在该文件夹中,转到/ppt/font/,您将在那里找到许多字体。他们谁都可以


有人有什么想法吗?

我从链接页面收集到的信息是
.fntdata
文件只包含光栅化的图示符。这意味着如果必须执行任何缩放,结果可能会很糟糕

第一步显然是提取字形。快速搜索在web上绝对不会得到关于
.fntdata
文件的任何信息。我试着在一个十六进制编辑器中查看一个,但没有任何东西真正弹出(除了字体名称作为字符串)。另外,我完全不知道里面有什么。你或许可以进行实验,看看是否能提取出有用的数据——祝你好运

如果您确实知道如何取出glyph,接下来您只需将它们放入TTF文件中。根据(包括
.ttf
文件),ttf可能包含位图图示符。(具体请参见)。我不认为有一个TTF解析器或编写器的.NET实现,所以您必须从头开始实现规范。再次祝您好运


当然,如果我对只包含光栅化字形的嵌入式字体的看法是正确的,那么所有这些工作的回报都很小——你并没有真正得到字体。我显然不知道您的要求是什么,也不知道您为什么要提取这些字体,但在这种情况下,只需找到原始字体可能更有效。

我想我已经接近您的答案了。此类型的字体采用符合规范的(EOT)格式。您可以在上阅读有关EOT的详细信息

我测试了一些字体,比如Calibri BoldCollinger,按照上面为PowerPoint提供的说明进行操作,然后使用(WEFT)。它们都创建了相同的文件大小,但加密似乎不同——我猜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>

寒冷
@字体{
字体系列:制冷机;
src:url('font1.fntdata');
}
.冷冻机{
字体系列:制冷机;
字体大小:60px;
颜色:#000;
} 
冷啤酒
自由的

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

谢谢你的研究,它给了我比一小时前多一点的知识。是的,这是我需要弄清楚的,因为这是一个转换器应用程序。但男孩,这是令人畏惧的!哦,天哪!哇,我已经有这个问题这么长时间了,我几乎认为这是不可能解决的。这是一个绝妙的见解!让我对此进行一些测试。在HTML中工作得很好。仍在试图弄清楚它是否可以在WPF/Silverlight中使用,但这是巨大的。非常感谢。