我遇到了一个使用编码字体信息的网站。 我试图通过Base64 Endoder/Decoder Web服务将这种编码字体转换为二进制文件,但我找不到生成文件的格式。
Here是已编码的CSS内容(内容太大,无法在此处复制/粘贴)。
谢谢!
[编辑]
请不要推测我想做什么。
我正在询问有关base64代码是如何伪造的以及我缺少的能够逆转该过程的问题,这意味着我不理解其中的所有内容。这些技术通常用于具有自定义字体的网页,并且与直接在CSS文件中引用的原始字体文件相比似乎有一些改进。我完全清楚所涉及的字体是商业字体,不能自由使用。
这场辩论是偏离主题的,停止拖钓。
答案 0 :(得分:35)
1)找到完整的字体声明,例如data:font/opentype;base64,AaBbCcDdEeFf0123456789==
2)复制编码数据部分;排除前导类型声明和逗号。
删除此data:font/opentype;base64,
你想要这个:AaBbCcDdEeFf0123456789==
3)解码数据并保存为二进制编码文件。 不要解码数据并手动将结果粘贴到文本编辑器中。使用http://www.motobit.com/util/base64-decoder-encoder.asp选择"解码Base64字符串中的数据"和"导出到二进制文件"选项。
4)使用纯文本编辑器查看文件。文件的前3或4个字母可能是" woff"," otf"或" ttf"。这是您的实际文件类型。
答案 1 :(得分:4)
将data:application/font-woff;base64,d09GRgABAA.....
粘贴到浏览器(理想情况下为Chrome)地址栏中。它将下载该文件,使用适当的文件扩展名重命名该文件。这适用于任何字体文件。
答案 2 :(得分:3)
这是一个有趣的问题,尽管它是吸引海盗猎人的磁铁。我将专注于技术问题并尝试提供一些见解。
查看OP的文件,里面有六种字体。每一个基本上都是一个CSS规则;这是示例文件中的第一个:
@font-face {
font-family: "p22-underground-1";
font-style: normal;
font-weight: 400;
src: url("data:font/opentype;base64,d09GRk9...yn4b8C3JEZAA==");
}
这告诉您识别字体需要知道的一切。您可以看到其名称( p22-underground-1 )的样式(正常),权重( 400 )和类型( opentype) )。
至于将base64中的字体解码为二进制文件,你需要取base64位(如上图d09GRk9...yn4b8C3JEZAA==
所示,注意中心的体积已被移除以节省空间)并用base64解码器,如Motobit或编写程序。
如果您使用的是Linux,则可以使用base64 -d <file>
来实现相同的目标。
如果解码失败,base64字符串也可能是percent-escaped。 OP的例子并非如此,但据我所知至少有一个site。
您可以通过查找base64字符串中的百分比%
来检查此问题。如果百分比字符是唯一的非valid base64字符,那么您可以尝试在解码之前解除字符串。
有一个web site你可以做到这一点,或者对于Linux上的人来说,命令行方法如下所示(有很多方法可以做到这一点;这个使用Perl):
perl -MURI::Escape -lne 'print uri_unescape($_)' < file.b64_escaped > file.b64
我在Ruby中编写了一个小工具,它使用上述技术获取网址并将任何嵌入字体转储到文件中,这样我就可以说它们可以正常工作。
答案 3 :(得分:2)
CSS明确指出mimetype为font/opentype
...字体采用OpenType(.otf
)格式。
但是,即使您对字体进行解码,也请检查许可证。您可能不被允许在自己的项目中使用该字体。
CSS文件中引用的字体(Proxma Nova [Mark Simonson Studios]和P22 Underground [P22 Type Foundry])不是免费的。您需要购买许可才能合法使用它们。
答案 4 :(得分:-2)
您可以看到mimetype为font/opentype
,这意味着生成的二进制文件应为.otf
。
为什么你想要解码字体?听起来你打算在未经许可的情况下使用该字体。