组合任意 Unicode 符号,或具有负宽度的 Unicode 字符

Combining arbitrary Unicode symbols, or Unicode characters with negative width

在早期的 ZX Spectrum 时代,有一种方法可以将一个字形打印在另一个字形之上,在 OVER 1 指令的帮助下创建一个复合字形。

我想知道是否有一种 Unicode 方式可以在现代计算机上做同样的事情?我能否将两个完全任意的可打印字形(例如 7~)相互叠加,就好像它们是 OR'ed 或 XOR'ed 以产生此结果一样?

或者,是否有任何 "negative width" Unicode 符号?

无法在 Unicode 中对两个任意字符的叠加进行编码。

在一些甚至早于 8 位计算机的编码中,您可以通过传输退格键来覆盖任意字符,因此 è 将是 e backspace `。这不适用于早期的计算机屏幕,但适用于机械行式打印机!

Unicode中有组合字符,包括7̴和7̃。只是不是那个特别的。

最接近支持将任意字符组合成单个字素的是零宽度连接器 (zwidge),例如用于制作 (woman) + ZWJ + ⚕ (caduceus) = ‍⚕️ (女卫生员)。在表情符号和许多脚本中,例如梵文和阿拉伯语,这意味着除了叠加符号之外的其他东西。

OpenType 字体支持连字,因此给定的字体可能将 7~ 或 7 ZWJ ~ 定义为该符号。 Palatino Linotype 是一种支持这种方式的interrobang (‽)

不过,通常情况下,您需要通过其他方式将其传达给您的应用程序,例如嵌入自定义字体或将字形作为内联矢量图形传输。