德勤天津要多少人:导出 PDF 与 SWF 中的字体

来源:百度文库 编辑:偶看新闻 时间:2024/07/04 05:31:55

SWF 篇 - 查出 Flash 所使用字体名称

Sothink SWF Decompiler (硕思闪客精灵) 是一款不错的 SWF 资源反编译软件, 首先将目标 SWF 文件保存到本地计算机上 (一般都是在网页上的吧), 可以使用迅雷的流媒体探测功能或者通过查看 HTML 源文件等方式找出.

在SWF Decompiler 中打开该 SWF (以 4.1 汉化版为例), 展开右侧 "资源" 面板下的 "字体" 目录, 这里列出了Flash 中所有使用的字体, 点击其中任意一项, 左侧预览窗格中便会出现这款字体的字符表. 找到自己中意的字体后, 在下方的 "标签信息"面板中, "Font Name" 项后的值便是该字体的名称了.

SWF 篇 - 导出字体

一般 SWF文件内部嵌入的字体是一个子集, Flash 中用到了该字体的多少个字符, SWF 中便会嵌入多少个字符的矢量图形 (有可能略多一些). 还有一些Flash 中用到了动态文本框, 而该文本框所使用的特殊字体则会完整的嵌入 SWF 文件中. 大家应该都知道,一款字体所包含的字符越多当然越好, 谁也不希望使用一个缺字的字体.

因此, 我们首先通过上面的方法查看 SWF 中所包含的字符数量, 找到合适的 SWF 后, 便要请出下一位 SWF 反编译大师了, 他就是 Action Script Viewer.

在Action Script Viewer 中打开准备好的 SWF (以 5.0 汉化版为例), 对于 Flash 编译版本高于 8 的 SWF文件会报错, 不过一般不要紧. 打开后, 点击菜单栏 "文件" - "提取部件" - "保存所有字体为 TTF",然后在新窗口中选择一个保存目录, 软件很快会提示操作完成并自动弹出该目录, 里面便是这个 SWF 中包含的所有字体文件了.

PDF 篇 - 找出字体名称

对于 PDF 文件而言找出它里面使用的字体信息相对而言简单许多, Adobe 自家的 Adobe Reader 就可以完成. 在 AdobeReader 中打开 PDF, 点击菜单栏 "文件" - "属性", 切换至 "字体" 选项卡, 一份非常清楚的字体列表便呈现在我们眼前了.

PDF 篇 - 导出字体

我们首先依旧使用 Adobe Reader 打开 PDF 文件并切换至 "字体" 选项卡, 这里不但列出了全部的字体名称, 还包含一些我们需要的其他信息.

字体名称下方的 "类型" 处, 总共会有两大类: "Type 1" 与 "TrueType", 至于它的作用我们稍后再说. 而字体名称后面,会有一个括号注明 "已嵌入" 或 "已嵌入子集". 之前提到过, SWF 中嵌入的字体一般是一个子集, PDF 也同样, "已嵌入"表示该字体所包含的字符是全的, 至于后者就不用我再解释了吧. 所以我们可以以此来找到包含全字符字体的 PDF, 不过很可惜, 这样的 PDF比较罕见.

此外还要注意一点, 在 Adobe Reader 标题栏的文件名后面, 如果标有 "已加密" 的括号,我们还需要进行一个额外的步骤: 解密. 解密 PDF 可以使用 PDF Password Remover, 这个软件操作极其简单, 将待解密的PDF 文件拖入其中并选择保存位置即可.

下面就要开始大家最为期待的导出字体了, 这次我们使用 FontForge. 运行 FontForge (以英文版为例), "Open" 对话框中,我们首先在 "Filter" 后面的菜单中选择 "Extract from PDF" (从 PDF 中导出), 然后在上方的窗格中找到目标PDF. 需要注意的是, 该软件对中文支持还不是很完善, 中文名的目录以及文件会显示乱码并且无法正常打开, 所以请确保目标 PDF的路径中不包含中文.

点击 "OK" 按钮后, 有可能会出现一个小窗口提示 "PDF is not in a knowformat", 这应该是 PDF 没有解密引起的, 但你如果已经做了上面的步骤, 那我也没有办法了... 在正常情况下, 此时会显示一份列表,其中便是 PDF 中包含的字体了. 对于字符不完整的字体, 其名称前面会有一个加号与 6 位大写英文字母 (目前我还不太明确它们的含义),而嵌入了完整字体的则不会出现这些字母.

选择其中一个点击 "OK" 按钮打开便进入 FontForge 主界面了, 它其实就是一张编码表, 所以我们可以很清楚地看到该字体缺少哪些字符.对于国人来说, 英文字体最常用到的无非就是大小写字母, 数字外加一些基本符号, 但是如果连这些都凑不全的话可以找一些其他拥有相同字体的 PDF试试 (其实还有一些方法不过那就涉及到字体制作的问题了, 内容比较多...). 选好合适的字体, 便只剩最后一步了: 生成字体.

点击菜单栏 "File" - "Generate Fonts", 首先选择保存位置及文件名, 接着在文件名一栏下方, 有两个下拉菜单.点击左侧一个, 如果之前在 Adobe Reader 中看到字体类型为 "TrueType" 的, 便直接选择菜单中的 "TrueType",显示为 "Type 1" 的, 则选择 "OpenType (CFF)", 最后取消掉下方 "Validate Before Saving"前面的黄色小方块, 点击 "Save". 稍等片刻, 大功告成.

结语

最后还是要提醒大家一下,通过这些方法所得到的字体仅仅是保持了字体内部矢量图形以及部分属性值的不变, 但是丢失了 Hinting, PostScript 等重要的内容,其质量和原版字体是没法比的. 写这篇文章, 仅仅是告诉字体爱好者与设计师们一些小窍门, 希望大家可以用的到.

对于上文中提到的 4 种软件, FontForge 可以使用本人所打包的版本, 其它几款软件在网络上也不难找到.