vue大屏字体问题

发布于 2022-09-12 13:26:46 字数 114 浏览 30 评论 0

大家都知道,大屏展示为了更好看,往往都会引入特殊字体文件,但涉及到汉子字体的话,字体文件会比较大。网上说的通过spider压缩字体,但并不能动态压缩,所以想问下大家都是怎么处理字体的?
比如字体文件:思源黑体

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

古镇旧梦 2022-09-19 13:26:46

可以服务端跑一个接口,接受汉字,返回从字体包中拆出的字体.
参考我这个DEMO

浏览器端:

@font-face {
    font-family: "my-font";
    src: url('/font?str=天地玄黄宇宙洪荒') format('truetype');
}
<p style="font-family: 'my-font'">天地玄黄 宇宙洪荒</p>

服务端(nodejs)

// route.js
var express = require("express");
var router = express.Router();
const font = require("../src/font");

/* GET home page. */
router.get("/", function (req, res, next) {
  res.render("index", {title: "Express"});
});

router.get("/font", async function (req, res, next) {
  if (!req.query.str) {
    res.send("str is required!");
    return;
  }
  const result = await font.format(req.query.str);
  if (!result.success) {
    res.send("format failed!");
    return;
  }
  res.send(result.data);
});

module.exports = router;
// font.js
const Fontmin = require("fontmin");
const format = (text) => {
  return new Promise(resolve => {
    const fontmin = new Fontmin()
      .src("assets/font.ttf")
      .use(Fontmin.glyph({
        text,
        hinting: false,
      }));

    fontmin.run((err, data) => {
      if (err) {
        console.log("error", err);
        resolve({success: false, data: err});
        return;
      }
      resolve({success: true, data: data[0]._contents});
    });
  });
};


module.exports = {
  format
};
计㈡愣 2022-09-19 13:26:46

我可以负责任的告诉你,没办法,只能使用系统相似的默认字体,比如字宽一致等来保证页面效果一致,然后就是和楼上说的一下按需加载,提示用户是否需要下载字体,引导用户安装或者自动安装

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文