将网页字体转换为base64

我想推迟字体加载在我的网站启发由Smashing杂志的延期字体加载逻辑。

这主要是将字体转换为base64并准备好CSS文件。 我到目前为止的步骤:

  • 在Google Web字体中选择字体并下载它们。
  • 使用Font Squirrel Webfont Generator将下载的TTF文件转换为带有base64嵌入式WOFF字体的CSS文件(Expert options - > CSS - > Base64 Encode)。
  • 加载CSS文件异步(这里不重要)。

  • Open Sans Bold的CSS代码片段:

    @font-face {
      font-family: 'Open Sans';
      src: url(data:application/x-font-woff;charset=utf-8;base64,<base64_encoded>) format('woff');
      font-weight: 700;
      font-style: normal;
    }
    

    问题是 ,转换的字体看起来很不一样 。 例如这里Open Sans Bold: GWF vs base64渲染比较

    尤其要注意口音和绝对可怕的字母'a'。 其他字体系列和变体看起来也非常明显不同(尺寸和形状扭曲等)。


    所以问题是: 你如何正确地将Google Web Fonts(或任何其他来源)的TTF文件编码为base64格式并使用它,以便结果与原始文件相同?


    在Font Squirrel Expert选项中,确保将'TrueType Hinting'选项设置为'Keep Existing'。 其他选项都会导致TrueType指令(提示)被修改,这反过来会影响字体的渲染。

    或者 ,如果您对从GWF直接呈现字体感到满意,则可以采取该文件并自己进行base64编码。 在OS X或Linux中,在Terminal / shell中使用内置的base64命令:

    $ base64 myfont.ttf > fontbase64.txt

    对于Windows,您需要下载一个程序以base64编码(有几个免费/开源工具可用)。 复制该文件的内容,然后在CSS中使用:

    @font-face {
        font-family: 'myfont';
        src: url(data:font/truetype;charset=utf-8;base64,<<copied base64 string>>) format('truetype');
        font-weight: normal;
        font-style: normal;
    }
    

    (请注意,您可能需要对各种@ font-face信息进行一些调整才能匹配您的特定字体数据;这只是一个示例模板)

    链接地址: http://www.djcxy.com/p/65059.html

    上一篇: Converting and rendering web fonts to base64

    下一篇: Google web fonts looking choppy in Chrome