css - 在 CSS 中缩放一种字体
问题描述
我正在为目前正在印刷的一本书编写一个小型网站,并希望匹配它用于标题的名为 Cronos Pro 的略微古怪的字体。我目前正在使用以下 CSS 执行此操作:
header, h1, h2, h3 {
font-family: cronos-pro, sans-serif;
}
Cronos Pro 是使用我们的 Adobe Creative Cloud 订阅提供的,根据其许可条款,必须按如下方式加载:
<link rel="stylesheet" href="https://use.typekit.net/xxxxxxx.css"/>
这只会产生一组@font-face
定义字体的规则,并且一切正常。尽管如此,我觉得我应该保留备用,sans-serif
以防字体暂时不可用,或者对于不支持它的旧浏览器。
但是,Cronos Pro 是一种非常紧凑的字体。如果我知道浏览器正在使用它,我希望它渲染得更大,就像我添加font-size: 125%
到 CSS 中一样。但如果浏览器回退到其默认的无衬线字体,我希望它为 100% 大小。
我想我可以这样做,但 Firefox 告诉我这是一个无效的属性值:
font: cronos-pro 125%, sans-serif;
@font-face
考虑到规则不在我的控制范围内,是否有实现此目的的好方法?
解决方案
font-size: 125%
如果 Chronos Pro 成功加载,您可以使用 JavaScript 添加带有标签的样式表:
<script>
{
let font = "cronos-pro";
let styleSheet = document.createElement('style');
document.head.appendChild(styleSheet);
document.fonts.ready.then(function () {
if( document.fonts.check(`1em ${font}`) ){
styleSheet.sheet.insertRule('header, h1, h2, h3 { font-size: 125%; }')
}
});
}
</script>
不确定这是否是一种“好方法”,但它应该在紧要关头起作用。我对 Web 开发还是有点陌生。
推荐阅读
- python - Form A import B 和 import A 惹麻烦
- python - 运行多个“if”语句,但一次遇到多个
- woocommerce - 客户切换 - 在 Woocommerce 前端显示/隐藏缺货产品
- c# - WPF 控制背景模糊
- java - 每隔几个小时设置一个 cron 并在一段时间后重新启动
- ms-word - Office 365 加载项 (office-js),尝试打开新文档时发生错误 -> RichApi.Error: Word 在浏览器中不支持该操作
- c# - C#(.NET Core)类中具有“给定值”(有效值列表)的状态字段
- python - Python urllib 请求导致 HTTP 错误 404 not found
- javascript - 如何防止axios在状态更新前发帖
- mysql - 是否可以在不使用自定义函数的情况下仅从 MySQL 的 VARCHAR 字段中选择数字字符?