F9y4ng / GreasyFork-Scripts

The open source code of this project is used for userscripts (油猴脚本) for desktop browsers, including Font Rendering (Customized) (字体渲染(自用脚本)- Font Rendering.user.js), and Search Engine Assistant (优雅的搜索引擎助手 - Google & Baidu Switcher.user.js), etc.
https://f9y4ng.github.io/GreasyFork-Scripts/
GNU General Public License v3.0
919 stars 45 forks source link

[发现错误] Emoji 渲染错位、偏移 #328

Closed YunfangHou closed 4 months ago

YunfangHou commented 4 months ago

1. 准备工作(确认预先完成的操作)

2. 描述错误信息(清楚而简洁地描述错误)

开启脚本后,所有的 emoji 符号均错位。此处错位不是指在文字中的位置变了,而是渲染为了另一个 emoji,比如「😀」会被渲染为「😬」。

3. 错误过程再现(请按示例填写行为步骤,直至复现您遇到的问题)

开启脚本即可复现,关闭即可恢复正常。

4. 屏幕截图(如有屏幕截图,请添加以帮助解释您的问题)

emojipedia 为例。

image image

5. 预期结果(清晰明了地描述您所期待想要什么样的结果)

恢复正常。是否可以不渲染 emoji,只渲染文字?

6. 客户端信息(请在“冒号”后认真填写您的本地信息)

7. 脚本运行环境排查 (请确认环境条件并填写相关信息)

8. 附加信息(在此处添加您认为有用的其他信息)

怀疑和 unicode 有关,但是不清楚具体原因。 如图,偏移量是一个定值 0x2c

image

仅在 Firefox 上出现,在 Google Chrome 上正常。同时,我刚刚更新到 macOS Sonoma,此前在 macOS Ventura 时,则没有这个问题。

F9y4ng commented 4 months ago

该站点依然使用的是自定义字体图标集作为emoji font的fallback,所以当全局替换为第三方字体时,系统不存在的emoji或者沿用了第三方字体集设定的emoji font的fallback时就会出现你遇到的问题。

解决办法

需要渲染的网页元素 中,追加:not([class*='__variable_']),保存为站点独享数据。