uni-app 腾讯x5内核app-vue渲染系统字体失败

发布于 1周前 作者 caililin 来自 Uni-App

uni-app 腾讯x5内核app-vue渲染系统字体失败

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC开发环境版本 MacOS 13.4.1
手机系统 Android
手机系统版本 Android 14
手机厂商 荣耀
手机机型 荣耀magic4Pro
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 CLI
CLI版本号 3.0.0-3090920231225001

操作步骤:

通过正常cli创建vue3项目,创建页面,并且书写正常的代码。然后进行打包真机预览

预期结果:

view组件显示的字体和系统字体保持一致

实际结果:

view组件显示的字体和系统字体保持不一致

bug描述:

使用腾讯x5内核app-vue渲染系统字体失败。打包的时候支持cpu类型已经选择armeabi-v7a
如图所示,调用showToast字体和页面组件通过<view>xxx</view>方式渲染出来的字体不一致


1 回复

在 uni-app 中使用腾讯 X5 内核时,可能会遇到 app-vue 渲染系统字体失败的问题。这通常是由于 X5 内核的字体加载机制或字体缓存问题导致的。以下是一些可能的解决方案和排查步骤:


1. 检查字体文件路径

确保字体文件的路径正确,且字体文件已经正确打包到应用中。

  • static 目录下放置字体文件(如 .ttf.woff 文件)。
  • 在 CSS 中使用 [@font-face](/user/font-face) 引入字体:
    [@font-face](/user/font-face) {
      font-family: 'CustomFont';
      src: url('/static/fonts/CustomFont.ttf') format('truetype');
    }

2. 清除 X5 内核缓存

X5 内核可能会缓存字体文件,导致更新后的字体无法生效。

  • 在应用的 onLaunchonShow 生命周期中,调用以下代码清除缓存:
    if (plus && plus.x5) {
      plus.x5.clearCache();
    }

3. 强制使用系统字体

如果自定义字体无法加载,可以尝试回退到系统字体。

  • 在 CSS 中设置回退字体:
    body {
      font-family: 'CustomFont', sans-serif;
    }

4. 检查 X5 内核版本

确保使用的 X5 内核版本支持所需的字体格式。

  • manifest.json 中配置 X5 内核版本:
    "x5": {
      "coreVersion": "latest"
    }

5. 调试字体加载问题

使用开发者工具检查字体是否加载成功。

  • 在 Chrome 或微信开发者工具中,检查 Network 面板,查看字体文件是否成功加载。
  • 检查 Console 面板,查看是否有字体加载相关的错误信息。

6. 使用 Base64 嵌入字体

如果字体文件较小,可以尝试将字体转换为 Base64 编码,直接嵌入 CSS 中。

  • 使用工具(如 transfonter)将字体转换为 Base64。
  • 在 CSS 中使用:
    [@font-face](/user/font-face) {
      font-family: 'CustomFont';
      src: url('data:font/truetype;base64,<base64-encoded-font>') format('truetype');
    }

7. 检查 X5 内核的字体加载限制

X5 内核可能对字体加载有一些限制,例如跨域问题或文件大小限制。

  • 确保字体文件与页面同源。
  • 如果字体文件较大,尝试压缩字体文件。

8. 更新 uni-app 和 X5 内核

确保使用的 uni-app 和 X5 内核是最新版本,以修复已知的字体加载问题。

  • 更新 uni-app:
    npm update [@dcloudio](/user/dcloudio)/uni-app
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!