css - base64 字体呈现方式与二进制字体不同

标签 css fonts base64 webfonts

当字体编码为 base64 时,我发现字体呈现发生了奇怪的变化。

为了提高页面性能,我正在使用类似 Smashing Magazine's 的方法将我网站的 webfonts 保存为 localStorage 中的 base64 数据。 . JS 非常简单。但是当我将 woff 字体数据转换为 base64 时,标题中的字体呈现不同。

这是二进制字体的样子:

enter image description here

这就是 base64 中发生的事情:

enter image description here

在每种情况下,HTML 都是相同的:

<h3 class="title">
    <a href="http://domain.co.uk/sarah-palin-923489/"><span>What happens after Sarah Palin's teleprompter breaks is hardly surprising</span></a>
</h3>

和CSS:

.title {
    font-size: 26px;
    line-height: 1.2;
    position: relative;
    z-index: 2;
    font-family: ScoutBold, Arial, Helvetica, sans-serif;
    font-weight: normal;
}

span {
    color: white;
    background-color: rgba(126, 211, 33, 0.8);
    box-shadow: 10px 0 0 rgba(126, 211, 33, 0.8), -10px 0 0 rgba(126, 211, 33, 0.8);
}

我的 scout-light.woff 字体包含如下二进制数据:

774f 4646 0001 0000 0000 7856 0011 0000
0001 1564 0001 0000 0000 76a0 0000 01b6
0000 02f9 0000 0000 0000 0000 4750 4f53
0000 65d0 0000 0da6 0000 47f2 b51f 87a4

我正在上传 woff 文件 here并将其粘贴到我的字体 CSS 中:

@font-face {
  font-family: ScoutLight;
  src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAGKIABMAAAAA70AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcak+p20dERUYAAAHEAAAAMgAAADgCIAEQR1BPUwAAAfgAAA3LAABSqL7EBrtHU1VCAAAPxAAAAJIAAAEmGQ8brU9TLzIAABBYAAAA... mCGKVBUG8hLUWlnoKDzARBPFyOqu7sZs3/ye8zwgX1qK/7nqAq+wbV3RzzGSL5YaCo5yhK7YdQ17VyMUS46p+MW4zZomvI+XYSoxD5Qj2xoFyCJGxX9X34KHhEfybhkvwThqOGnP/Z2wqOjuNhMAnPwCm+rMRZVNhiZ43B2KmNqQwZUMmp4ZsNbAg5ouBY2LhGUosxQdf6EtzAAABVCFFcAAA) format("woff"), url("../fonts/scout-light/scout-light.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
}

所以我假设编码数据与未编码数据非常匹配。这是唯一的区别。任何人都可以建议为什么我在渲染中看到这种变化,而不同的是字体数据编码?我应该使用不同的方法进行编码吗?

base64 版本示例 here .

//////////////////////////编辑////////////////////////////

我发现将字体编码为 base64 肯定会导致质量下降。我的客户提示单引号现在位于基线之上太高。我将不得不放弃在本地存储字体。

看看这个例子中“This”之前的 ' 发生了什么。编码搞砸了。

enter image description here

最佳答案

如果没有实例很难看,但是你有没有试过将行高添加到 span-tag

行高应为 100% 并在 span-tag 中。

 .title {
  position: relative;
  z-index: 2;
  font-family: ScoutBold, Arial, Helvetica, sans-serif;
}

.title span {
  line-height: 100%;
  font-size: 25px;
  background-color: rgba(126, 211, 33, 0.8);
  box-shadow: 10px 0 0 rgba(126, 211, 33, 0.8), -10px 0 0 rgba(126, 211, 33, 0.8);
}

关于css - base64 字体呈现方式与二进制字体不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28167120/

相关文章:

html - NetSuite Advanced PDF 模板是否支持绝对定位?

php - 根据浏览器宽度显示不同的 Adsense 广告

javascript - 如何使用 Adob​​e Illustrator Extendscript 更改当前选定文本的字体?

python - 在 matplotlib 中更改字体

python - Python文件的base64编码

javascript - 为什么每一列都在不同的行中?

css - WordPress Twenty Twelve 自定义菜单当前菜单项样式

自定义字体的 jQuery 颜色更改在 Firefox 中正常工作,但在 Chrome 中却不起作用?

python - 仅编码无符号整数时的base64字符串长度计算

javascript - 如何转换图像 base64 并使用 url 从服务器上传到项目?