我正在使用修补过的书呆子字体,酱码专业版。
我已经用过备忘单复制一些图标并将其粘贴到编辑器中。
例如,我复制了 的图标nf-mdi-yelp
,当粘贴到 gedit 中时,它在第一列中显示为单个字符(如预期)。
但是,当对 执行相同操作时nf-mdi-yin_yang
,当我粘贴它时,它会出现在最后一列中(即:就好像文本是从右到左书写的)
请注意,状态栏中显示我的光标位置是第 2 行第 1 列,但第 1 列一直在右侧。
有趣的是,如果我将阴阳图标添加到与 yelp 图标相同的行上,它就会被“拉”到左边。
另外有趣的是,如果我将光标移动到阴阳图标之前,gedit 光标会发生变化,显示一条双线,在图标的两侧各一条,箭头指向内。
我的 google-fu 太差了,无法在网上找到任何东西来告诉我 gedit 中的这个光标是关于什么的。
问题:
- 为什么阴阳被拉到右边?
- 可以强制离开吗?
- 在这种情况下,gedit 显示的奇怪的双光标是什么?
答案1
一些 duckduckgo-fu 对问题 1 和 2 提出了一些可能的见解......
Unicode 规范包括每个字符的方向规范,具体取决于其脚本,如https://sites.psu.edu/symbolcodes/web/rtl/。因此,一些字符被指定为 LTR,一些字符被指定为 RTL,还有一些字符的位置取决于相邻的脚本(例如某些标点符号)。
由于 SauceCodePro 是一种字体,因此阴阳“图标”是字体内的字符,大概是在 Unicode 未分配的代码点处提供的。正如“双向文本”下的第三个常见问题解答中所述https://www.unicode.org/faq/bidi.html,为所有字符属性的未分配代码点定义默认值,包括指定字符方向的 Bidi_Class 属性。 SauceCodePro 开发人员可能无意中在 RTL 指定的代码点提供了阴阳字符,或者故意将该字符的 Bidi_Class 属性设置为 RTL。
显然,有一个从左到右覆盖字符在代码点 U+202D 处,应强制其后面的字符为 LTR。虽然该角色列表没有包含任何描述,但有一个类似的从右到左覆盖字符,位于代码点 U+202E,其中包含应该是从左到右覆盖字符功能的推论的描述。