Skip to content
This repository was archived by the owner on Jun 4, 2024. It is now read-only.

BF1CHS导入GBK提示out of range. Skippping #1

Closed
encauporce opened this issue Jan 26, 2024 · 3 comments
Closed

BF1CHS导入GBK提示out of range. Skippping #1

encauporce opened this issue Jan 26, 2024 · 3 comments
Assignees

Comments

@encauporce
Copy link

image
image
改大码表位移个数的扩展量也没用

@encauporce
Copy link
Author

后面再用替换静态文件就会出现一个普通汉字的Unable to encode character XXX to bytes。

@zyf722
Copy link
Owner

zyf722 commented Jan 27, 2024

已经排查清楚了,这是两个不同的问题。

out of range. Skippping

出现这一行是因为字符集文件中包含 Unicode 编码值过大(超出 > 0xFFFF)的字符。目前认为寒霜引擎只能支持双字节字符(0x00 - 0xFF),因此这个问题暂时是无法修复的。

出现警告是标明这种情况发生了,例如 Warning: Char 𤇾 with code 0x241fe out of range. Skippping. 就是说明 𤇾 (0x241FE) 字符编码值超出范围。这些字符会被跳过而不会添加到码表中,该警告也不会导致任何错误。

Unable to encode character XXX to bytes

这是根据码表来编码本地化字符串时,无法计算出合适的位移值产生的。本质上位移值的个数只跟码表中字符个数有关,且位移值存在理论上限;当字符集扩充文件中字符过多时可能无法在可用范围内找出位移值编码字符,从而导致错误。

解决方法是在创建码表时减少不必要的导入,也就是缩小字符集扩充的数量。根据之前落华做的测试,似乎聊天区内渲染文字不依赖于码表而只需要替换字体;考虑到这是唯一可能出现其他文字的地方,因此目前看来只需要将码表的内容保持最小化即可。

我打算在代码上做一些优化,直接根据本地化文件生成所需扩充的字符、自动计算和生成位移值,更新会稍后推送上来。目前版本(v0.2.0)下使用 GB2312 和合适的字体(我使用的的是 更纱黑体)已足够。

@zyf722 zyf722 self-assigned this Jan 27, 2024
@zyf722
Copy link
Owner

zyf722 commented Feb 4, 2024

BF1CHS v0.3.0 已修复。

如果存在后续问题请重新开启。

@zyf722 zyf722 closed this as completed Feb 4, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants