EmoArt
发布
术语表

ZWJ (零宽连接符) - 定义与工作原理

最近更新: 2026-05-26·约 4 分钟

本文约 4 分钟读完。

ZWJ 是将独立的 emoji 粘合成家庭组合、职业符号等复合字符的隐形胶水。零宽连接符 (U+200D) 是一个没有可见宽度的 Unicode 控制字符。 当它被放置在 emoji 之间时,会告诉渲染引擎将它们显示为一个合成字形 - 前提是该字形存在。

定义

零宽连接符 (ZWJ) 是位于 Unicode 码位 U+200D 的非打印字符。 它最初是为阿拉伯语和印度语系等复杂文字设计的 (这些文字中字母形态会根据相邻关系变化), 从 Unicode 6.0 开始被重新用于 emoji 合成。

在 emoji 语境中,ZWJ 充当组合器: emoji A + ZWJ + emoji B = 合成 emoji (如果支持的话)。 如果平台没有合成字形,则会优雅降级为分别显示 A 和 B。

ZWJ 序列的工作方式

ZWJ 序列是由 ZWJ 字符连接的 emoji 链。渲染引擎从左到右处理序列:

  1. 读取第一个 emoji 码位
  2. 遇到 ZWJ (U+200D)
  3. 读取下一个 emoji 码位
  4. 检查是否存在该组合的合成字形
  5. 如果有,渲染合成字形。如果没有,分别渲染两个 emoji
  6. 对序列中后续的 ZWJ + emoji 重复此过程

常见的 ZWJ 序列类别

职业

人物 + ZWJ + 物品 = 职业 emoji:

  • 👩 + ZWJ + 💻 = 👩‍💻 (女性技术人员)
  • 👨 + ZWJ + 🍳 = 👨‍🍳 (男性厨师)
  • 🧑 + ZWJ + 🚀 = 🧑‍🚀 (宇航员)

家庭

多个人物 emoji 通过 ZWJ 连接:

  • 👨 + ZWJ + 👩 + ZWJ + 👧 = 👨‍👩‍👧 (家庭)
  • 👩 + ZWJ + 👩 + ZWJ + 👦 + ZWJ + 👦 = 👩‍👩‍👦‍👦 (两位母亲和两个儿子的家庭)

性别变体

基础 emoji + ZWJ + 性别符号:

  • 🧑‍🦰 = 🧑 + ZWJ + 🦰 (红发人物)
  • 🏃‍♀️ = 🏃 + ZWJ + ♀️ (跑步的女性)

旗帜 (行政区划)

行政区划旗帜如 🏴󠁧󠁢󠁥󠁮󠁧󠁿 (英格兰) 使用标签序列而非 ZWJ, 但原理类似 - 多个不可见字符组合成一个字形。

ZWJ 序列断裂的原因

原因结果解决方法
旧版 OS / 字体各组件分别显示更新设备
文本编辑器去除了 ZWJ序列断裂使用支持 Unicode 的编辑器
平台不支持该组合降级为单独的 emoji使用广泛支持的序列
字符限制按码位计数序列消耗的「字符」超出预期改为计算字素簇

字符计数的影响

像 👨‍👩‍👧‍👦 这样的家庭 emoji 由 7 个码位组成 (4 个 emoji + 3 个 ZWJ 字符)。 按码位计数的平台 (如 Twitter 的旧版计数器) 可能会对看起来只有 1 个字符的内容收取 7 个字符。 现代平台改为计算「字素簇」,将整个序列视为 1 个单位。

emoji 艺术的实用技巧

  • 优先使用广泛支持的 ZWJ 序列 (职业、基本家庭)
  • 在个人简介或重要帖子中使用前,先在多个平台上测试
  • 为了最大兼容性,优先选择单码位 emoji 而非 ZWJ 序列
  • 复制粘贴 ZWJ 序列时,使用 emoji 选择器而非文本选择,以避免断裂

相关术语

  • Unicode - 为每个字符分配唯一编号的标准

这篇文章对你有帮助吗?