You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML2Canvas在Chrome中f后i不渲染且f大写的问题求助

解决Chrome中html2canvas渲染Ubuntu字体时"fi"组合的异常问题

这确实是个挺让人头疼的诡异bug,我之前在处理web字体和html2canvas的兼容性时也碰到过类似情况——Chrome对某些字体的连字(ligature)处理逻辑和Firefox不一样,导致html2canvas渲染时出现字形丢失或变形的问题,你用的Ubuntu字体里刚好包含"fi"的连字字形,这大概率就是问题根源。

给你几个不用换字体就能解决的方案,按优先级试试:

1. 禁用字体连字功能(最推荐)

直接给需要渲染的文本元素或父容器添加CSS样式,强制关闭字体的连字特性,这样Chrome就不会把"fi"当成单个字形处理了:

#card, .tcgnamecell {
  font-variant-ligatures: none;
  /* 兼容旧版浏览器的备选写法 */
  font-feature-settings: "liga" 0, "clig" 0;
}

把这段样式加到你的页面样式表或者<style>标签里就行,不需要修改JS代码,最省心。

2. 调整html2canvas的渲染配置

如果禁用连字没生效,试试在html2canvas的调用参数里添加letterRendering: true,这个参数会强制html2canvas逐个渲染每个字母,避免连字相关的渲染异常:

function showimage(){
  html2canvas([document.getElementById('card')], {
    letterRendering: true, // 新增这个配置
    onrendered: function(canvas) {
      // 原有的代码不变...
      var name = $(".tcgnamecell").html();
      var n = name.indexOf("&lt;br&gt;");
      var data = {};
      data['name'] = name.substr(0);
      data['img'] = canvas.toDataURL();
      var n = data['name'].indexOf("&lt;br&gt;");
      $.post("save.php", {image: data}, function (file) {
        window.location.href ="download.php?path=" + file;
      });
    }
  });
}

3. 手动拆分"fi"组合(兜底方案)

如果上面两个方法都不管用,可以在处理文本的时候,把所有"fi"替换成"f"加上零宽空格,让浏览器无法识别为连字:

function showimage(){
  html2canvas([document.getElementById('card')], {
    onrendered: function(canvas) {
      var name = $(".tcgnamecell").html();
      // 新增替换逻辑
      name = name.replace(/fi/g, 'f&#8203;i');
      var n = name.indexOf("&lt;br&gt;");
      var data = {};
      data['name'] = name.substr(0);
      data['img'] = canvas.toDataURL();
      var n = data['name'].indexOf("&lt;br&gt;");
      $.post("save.php", {image: data}, function (file) {
        window.location.href ="download.php?path=" + file;
      });
    }
  });
}

零宽空格(&#8203;)不会影响文本的视觉显示,但能强制拆分连字组合,让html2canvas正确渲染每个字母。

内容的提问来源于stack exchange,提问作者Nullbreaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:07:00