当前位置: 首页 > news >正文

网站建设网站制作价格外贸网站seo

网站建设网站制作价格,外贸网站seo,开源手机网站cms,深圳做男装什么网站容易找工首先加载字体这个需求基本只存在于非系统字体,系统已有字体不需要加载即可直接使用; 方案1:创建 style 标签,写入 font-face{font-family: xxx;src: url(xxx)} 等相关字体样式;将style标签添加到body里;方…

首先加载字体这个需求基本只存在于非系统字体,系统已有字体不需要加载即可直接使用; 

  • 方案1:创建 style 标签,写入 @font-face{font-family: 'xxx';src: url('xxx')} 等相关字体样式;将style标签添加到body里;
  • 方案2:通过 new FontFace() 进行字体加载,然后通过相关API进行检测加载情况;

 


方案1的适用场景:适合一次性加载所需字体;自己对应功能读取字体结构信息不依赖浏览器的真实加载情况;对加载字体的延迟情况无要求;

方案2的适用场景:适合完全加载好字体再执行某功能,避免字体还原显示异常(例如我项目所用的fabric库的相关字体功能);适合按需加载字体;能完全掌握字体加载流程,提高代码可读性、功能可控性;


 代码示例仅以本人electron+vite+vue3的项目应用为例,就算是在web用也简单改下就完事了,核心一点没变;

并且案例仅以本地静态字体资源为例,不做过多的其他场景的案例代码分析省点字,如果是http请求拿到的字体资源,碰到数据格式与例子不一致的情况下,自行了解如何转为所需的格式;

方案1:通过style标签加载字体


import { basename, extname } from 'path-browserify';const localFonts = import.meta.glob('/public/fonts/*.*');function getFontName(fontPath: string) {return basename(fontPath.replace(/\\/g, '/')).slice(0, -extname(fontPath).length);
}
function loadLocalFonts() {// 处理软件自带的字体资源const fontStyle = document.createElement('style');let fontFace = '';Object.keys(localFonts).forEach((font) => {// 打包后路径不需要/public,所以要去掉font = font.replace('/public', '');const fontName = fontStore.getFontName(font);fontFace += `@font-face{font-family: '${fontName}';src: url('${font}')}\n`;});fontStyle.innerText = fontFace;document.body.appendChild(fontStyle);
}

方案2:通过 new FontFace() 进行字体加载


import { readFileSync, readdirSync } from 'fs';
import { isArrayBuffer } from 'lodash-es';function isFontFile(filename: string) {const fontExtensions = /\.(ttf|otf|woff|woff2|eot)$/i;return fontExtensions.test(filename);
}async getDownloadFont() {// 获取保存字体的路径,此案例是非自己项目内自带的字体,按需自己改该行代码即可;const filePath = await ipcRenderer.invoke('GET_FONT_PATH');const files = readdirSync(filePath);const fontList: any[] = [];files.forEach((val) => {if (isFontFile(val)) {const data = readFileSync(join(filePath, val).replace(/\\/g, '/'));const arrayBuffer = new Uint8Array(data).buffer;if (isArrayBuffer(arrayBuffer)) {fontList.push({path: join(filePath, val).replace(/\\/g, '/'),name: val,buffer: arrayBuffer,});}}});return fontList;}

import { basename, extname } from 'path-browserify';function getFontName(fontPath: string) {return basename(fontPath.replace(/\\/g, '/')).slice(0, -extname(fontPath).length);
}
function setDownloadedFontList() {window.electron?.Font?.getDownloadFont().then((res: any[]) => {res.forEach((val) => {const fontName = getFontName(val.name);const font = new FontFace(fontName, val.buffer);(document as any).fonts.add(font);font.loaded.then(() => {if (document.fonts.check(`12px ${fontName}`)) {// 加载完成!!!}});});});
}

http://www.yayakq.cn/news/466562/

相关文章:

  • 自建网站做外贸网站seo优化培训
  • 潍坊 网站企划服装店网页设计素材
  • 网站建设精英南宁区建设银行招聘网站
  • 做的比较好的货运网站河北企业建网站
  • 网站建设完工确认书wordpress 图片
  • 怎么在自己的网站上做漂浮链接网站建设公司名片
  • 惠州网站建设 英语6南山网站建设-信科网络
  • 陇城科技网站建设中国建设银行企业门户网站
  • 免费效果图网站招聘公司怎么做网站
  • 旅游公司网站 优帮云营销型网站什么意思
  • 哈尔滨网站建设多少钱电子商务就业方向
  • 花生壳 做网站成都必去十大网红景点
  • 中国电信新建网站备案管理系统 录完信息做网站备案需要什么特殊材料
  • 怎样免费做网站视频讲解公众平台官网登录入口
  • vs网站开发建表怎么肩啊网站怎样建设友情链接
  • 邹城建网站网络工程公司需要什么资质
  • 社区网站开发需求文档怎么下载河北人社app
  • 学建网站 必须学那些知识wordpress水滴
  • 公司建设网站费用做那个科目有企业信息的网站
  • 做单页网站怎么选产品个人简历范文100字
  • 献县网站建设公司建立网站的第一步是建立什么
  • 中国建设银行招聘网站通知天津网站建设 熊掌号
  • 制作网站开发多少钱微网站怎么注册
  • 网站开发过程代码问题 解决在线crm软件
  • 苏州网站建设排行网站建设推广方案书
  • 各地城乡建设网站更新哪些网站做的好看的图片
  • 企业网站做优化排名象客四川政务服务网
  • 网站建设模板制作百度做网站多少钱
  • 成品短视频app源码的优点零基础seo入门教学
  • 阿里企业邮箱注册申请wordpress4.7.3优化