我已加入 Unicode 邮件列表,提议向 Unicode 添加一个解决方案,以应对此类情况。我收到的一条回复是:
(我:)问题在于,据我所知,这种替换是在任何渲染上下文之外完成的,此时文本仅仅是一系列字符代码。无法合理地知道文本的方向。有时这完全不可能,因为文本方向取决于当时不可用的上下文。
严格来说,上述说法不准确。如今,任何严肃的文本渲染都需要一个整形引擎,例如 HarfBuzz,而将“->”连字为“→”将由这样的整形器与支持连字的字体协同完成。整形引擎 确实 了解双向上下文以及它所整形文本的脚本,因此原则上可以镜像箭头。
他们正在谈论类似这样的东西:GitHub - tonsky/FiraCode: Free monospaced font with programming ligatures
考虑切换到连字方法,而不是盲目替换字符。另一个可争论的优点是,当复制粘贴时,文本仍然是“- >”,而不是箭头。
我还没有研究过实现此目的的技术细节,如果您选择使用此解决方案,我将把这些留给您。
编辑:不出所料,Fira Text 尤其不是为 RTL 设计的,因此渲染效果不佳——但至少方向是正确的!https://fonts.google.com/specimen/Fira+Code?preview.text=A%20->%20B,%20א%20->%20ב
火狐浏览器:
我不确定今天是否存在一个能够正确执行此操作并明确支持 RTL/双向的字体。
