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

在Fontlab 8中实现ZWJ和NZWJ的方法及测试技术求助

在Fontlab 8中实现印度语Unicode字体的ZWJ与NZWJ

一、ZWJ(零宽度连接符)的特征代码实现

ZWJ(U+200D)用于强制触发原本不会自动生效的连字,适合手动指定连字的场景。你可以在字体的GSUB特征文件中,通过rlig(必需连字)或calt(上下文替代)特征编写规则:

feature rlig {
  lookup ZWJ_Forced_Ligatures {
    # 示例:印地语字符क/ख/ग后接ZWJ再跟त/थ/द时,替换为对应连字
    substitute [क ख ग] <U+200D> [त थ द] -> [क्त ख्त ग्त];
    # 根据字体支持的连字组合,扩展更多字符对即可
  } ZWJ_Forced_Ligatures;
} rlig;

如果需要处理带元音符号的复杂上下文,可改用calt特征搭配更具体的上下文规则。

二、NZWJ(非零宽度连接符)的特征代码实现

NZWJ(U+200C)用于打断自动连字,确保字符独立显示。最简洁的实现方式是在liga(标准连字)特征中添加ignore规则,跳过包含NZWJ的上下文:

feature liga {
  # 先定义默认自动连字规则
  substitute k t -> kt_liga;
  substitute kh th -> khth_liga;
  # 添加ignore规则,忽略中间有NZWJ的字符对,不触发连字
  ignore sub k <U+200C> t;
  ignore sub kh <U+200C> th;
} liga;

若连字规则放在calt特征中,同样可以用ignore规则实现NZWJ的阻止逻辑。

三、测试方法

  • Fontlab内置预览测试:打开Fontlab的「文本测试」面板,直接输入带ZWJ/NZWJ的字符串:
    • ZWJ测试:输入क‍त(即क + U+200D + त),检查是否显示为连字क्त
    • NZWJ测试:输入क‌त(即क + U+200C + त),确认两个字符保持独立,未触发自动连字
  • 系统字体验证:导出字体并安装到系统,用Word、LibreOffice Writer等软件输入测试文本,查看实际排版效果
  • 特征调试器排查:使用Fontlab的「特征调试器」工具,加载测试文本后逐步执行特征规则,确认ZWJ/NZWJ的规则是否正确匹配执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:12:41