【问题标题】:Using OS 9 resource fork fonts in CSS with @font-face使用 @font-face 在 CSS 中使用 OS 9 资源叉形字体
【发布时间】:2011-11-16 18:26:04
【问题描述】:

我有一些旧的 OS 9 字体,其中包含资源叉中的字体数据。当我尝试在 @font-face 中链接此类字体并在浏览器中打开 HTML 时,文本仍以默认字体显示。

在四处搜索时,我发现可以使用 rsrc 属性将字体数据复制到常规的 ttf 文件中。所以我运行了命令cp <font>/rsrc <font>-attr.ttf 并尝试在@font-face 中链接新文件。同样,文本以默认字体显示。

另一个关于 stackoverflow 的讨论建议使用 xattr -p <font> | xxd -r > <font>-xxd.ttx 二进制打印和复制数据。再一次,链接此文件未能更改字体。

为了确保 HTML 是正确的,我从同一目录链接了一个较新的 ttf 字体,它可以正常工作。有谁知道是否可以在@font-face 中使用旧字体,无论是否进行任何转换。谢谢。

【问题讨论】:

    标签: html css macos fonts font-face


    【解决方案1】:

    字体手提箱可以容纳两种不同的字体:位图字体和 TrueType 字体。位图字体将是'NFNT' 资源以及必要的'FOND'(字体系列信息)。另一方面,TrueType 字体将是'sfnt' 资源条目以及必要的'FOND'(字体系列信息)。通常,保存位图字体数据的字体手提箱只有字体的一半;要使用,您需要有额外的 PostScript Outline 字体文件(这些将有一个 LWFN 图标)。

    否则,字体手提箱可以表示 TrueType 字体,与“PostScript Type 1 Font Suitcase”相比,它是真正独立的。

    要将基于资源文件的 Mac TrueType 字体转换为 Windows TrueType 字体,您只需提取 'sfnt' 资源条目。

    由于 Rosetta 已不复存在,我没有 Resorcerer,因此我设法开发了一个准系统资源文件编辑器。

    http://www.markdouma.com/developer/ResourceFinagler.zip

    我刚刚添加了几行,以便您现在可以选择单独的 'sfnt' 资源,如下图所示,然后将它们拖到 Finder 以创建单独的 Windows TrueType 字体。

    【讨论】:

    • 非常感谢您。我希望我能给你一些关于这个软件的额外道具。
    • @GhostEcho:抱歉,直到现在才注意到这条评论。我只使'sfnt' 资源可拖动,因为它们对应于 .ttf 文件中包含的数据。 'NFNT' 资源是位图字体,在 OS X 中不能真正使用:如果字体手提箱不包含 'sfnt' 资源,它可能是 PostScript Type 1 字体,将轮廓字体数据存储在单独的文件中(在 'POST'资源)。您首先需要使用其他软件将这些字体转换为 Mac TrueType 字体(或直接转换为 Windows TrueType 字体),然后才能使用它们。
    • 我在 1997 年修改了一种字体,只有 .suit 文件,需要在 Web 和跨 Windows 和 OS X 的 SVG 中使用它。毕竟,您的软件使我能够提取 .ttf那些年,非常感谢!
    • 谢谢@NSGod,您的工具非常有用。
    • @NSGod 太棒了,你创造了这个,就是为了这个目的!优秀!在 2018 Mojave 10.14.1 中仍然可以完美运行
    【解决方案2】:

    由于这是在现代 macOS 系统上搜索如何处理 Resource fork 字体时的第一个搜索结果,这里是批量转换大量字体手提箱的解决方案。

    首先我们可以利用 find 命令将它们全部分组到一个目录中,因为 find 看不到资源分支并认为文件为空,我们在用户主目录中创建一个新目录并将所有手提箱复制到那里:

    mkdir ~/rsrc
    find . -type f -empty -exec cp {} ~/rsrc/ \;
    

    然后在mac中我们可以使用brew来安装Fondu

    brew install fondu
    

    最后我们移动到所有手提箱的目录并像这样在每个文件上运行火锅,让火锅工作的秘诀是通过在末尾添加 /../namedfork/rsrc 使其读取资源分支文件,否则失败。

    cd ~/rsrc
    find . -type f -empty -exec fondu -force {}/..namedfork/rsrc \;
    

    命令完成后,您应该有一个包含新 .ttf、.bdf 和 .pfb 文件的文件夹。

    您可以从此目录中删除手提箱文件运行:

    find . -type f -empty -delete
    

    【讨论】:

      【解决方案3】:

      旧 Mac OS 字体手提箱中的字体数据不是 TTF 格式 - 将资源分支复制到 TTF 文件会在名为“font.ttf”的文件中提供 Mac OS 资源数据,这是不对的.您需要使用 FontForge(免费/开源)之类的工具进行转换。

      【讨论】:

        猜你喜欢
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 2017-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多