如何解码base64编码的字体信息?

时间:2011-08-03 01:52:46

标签: css fonts base64

我遇到了一个使用编码字体信息的网站。 我试图通过Base64 Endoder/Decoder Web服务将这种编码字体转换为二进制文件,但我找不到生成文件的格式。

Here是已编码的CSS内容(内容太大,无法在此处复制/粘贴)。

谢谢!

[编辑]

请不要推测我想做什么。

我正在询问有关base64代码是如何伪造的以及我缺少的能够逆转该过程的问题,这意味着我不理解其中的所有内容。这些技术通常用于具有自定义字体的网页,并且与直接在CSS文件中引用的原始字体文件相比似乎有一些改进。我完全清楚所涉及的字体是商业字体,不能自由使用。

这场辩论是偏离主题的,停止拖钓

5 个答案:

答案 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

为什么你想要解码字体?听起来你打算在未经许可的情况下使用该字体。