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

求助:使用pdfMake生成PDF时孟加拉语单词在‘এ-কার’处断字

解决pdfMake中孟加拉语在‘এ-কার’处的断字问题

针对pdfMake生成PDF时孟加拉语单词在‘এ-কার’位置不当断字、更换字体仍无法解决的问题,可尝试以下方案:

  • 禁止特定文本的自动断字
    在样式配置中使用wordBreak: 'keepAll',强制保持单词完整性,避免自动断字:

    pdfMake.createPdf({
      content: [
        { text: '你的孟加拉语目标文本', style: 'bengaliText' }
      ],
      styles: {
        bengaliText: {
          font: 'NotoSansBengali',
          wordBreak: 'keepAll'
        }
      },
      fonts: {
        NotoSansBengali: {
          normal: 'NotoSansBengali-Regular.ttf',
          bold: 'NotoSansBengali-Bold.ttf'
        }
      }
    }).download();
    

    注意:若文本长度超过容器宽度,keepAll会导致文本溢出,需结合容器宽度设置或手动调整排版。

  • 自定义断字规则
    通过修改pdfMake的断字函数,针对孟加拉语字符结构禁止在‘এ-কার’相关组合处断字:

    // 添加自定义断字判断逻辑
    pdfMake.wordBreakers.push((text, pos) => {
      const currentChar = text[pos];
      const prevChar = text[pos - 1];
      // 检测到এ-ক组合时,返回false禁止在此处断字
      if (prevChar === 'এ' && currentChar === 'ক') {
        return false;
      }
      return true;
    });
    
  • 使用支持孟加拉语排版的专业字体
    选用完整支持孟加拉语OpenType排版特性(连字、断字表)的字体,比如谷歌的Noto Sans Bengali,这类字体针对南亚语言做了专门优化,能降低不当断字概率。

  • 手动预处理文本
    在传入pdfMake前,给容易断字的‘এ-কার’组合插入不可断空格(\u00A0),强制保持文本连续性:

    const originalText = '你的孟加拉语文本';
    // 根据实际断字位置调整正则匹配规则
    const processedText = originalText.replace(/এক/g, 'এ\u00A0ক');
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:24:55