卡西欧词典数据可以提取了

已更新:

前情提要:卡西欧词典格式还原Huffman解码,缺运行时literal table,求真机 RAM Dump!
之前「ZH008 需要从真机 RAM dump 一张239项 literal table」的结论是错的。Ghidra 看完整控制流后发现,那个 literal table 只属于 custom TREE;ZH008 的192字节 WCT 走 fixed TREE 分支。fixed 格式每个 token 先读一个 selector bit:0 用 tree1 直接解字节,1 用 tree2 解 HEAD 偏移,再读4 bit长度。之前漏掉这个 selector,所以整个位流错位了。现在 ZH008 (叫什么来着?中日大辞典?)和《新世纪日汉双解大辞典》都已完整解压,全部正常遇到换行结束、没有越界或pending。正文控制序列也已经结构化,跳转、插图ID、ruby都保留;外字统一标记并从CJF提取成PNG。现在剩下的是外字人工对应、实际插图数据提取和最终排版。



https://cloud.freemdict.com/index.php/s/rGDxY2gofw72Yg3
这是dump出来的新世纪日汉汉日

看了一下这个外字分好几个字体,但是数据里面没有表示指向哪个字体,同一个外字代码在不同字体对应不同的字,然后我看还有数学公式,可能需要还原为latex

卡西欧机器上可以切换不同字体(对应点阵12x12, 16x16, 24x24)如果你想加工成其他格式只需取分辨率最大的图即可,如果是做epwing还需要制作外字文件GAI16,GAI24(有些词典还有GAI48

同一个系列是分辨率的差异,但是又好多个不同的字体,不能确定用哪个字体:

这个对照纸书查看即可,由于用了多种编码格式,日文部分外字是一个系列,中文部分是另一个系列。如果提取时带有编码信息就更好了

现在有三个系列,其中S还包括BHZ三种,是英文也有一个系列吗?

正文我没细看,从外字图片不难看出Z结尾是全角字符,H结尾是半角,B结尾是两倍全角宽度。J开头是日语外字,Z开头是中文外字,S的应该是各种特殊符号和公式之类。现在难点就是正文没给出编码信息(可能用了不止两种编码),不太好区分中日文部分,并给它们匹配正确外字和字体显示 :sweat_smile:

导出的时候导出了两个版本,上午发的那个漏了。
图像也有点问题,我修好再发一遍。

正文并不是无标记的混合编码,里面有 12 61/63/64 ... 19 这种有作用域的外文、日文、中文切换指令。CZ320 的中文段有五十多万处明确的 12 64 标记,中日文主体已经能可靠区分。现在剩下的主要是 CASIO 私有变音字符和系统符号表,不是整篇正文编码不明。

你好!可以提取法语的吗?麻烦帮我提取一份谢谢!

卡西欧的二进制文件当然是可以区分中日文部分,但楼主导出文本后编码就统一了,虽然能从纸书上得知中日文部分用了哪些字符隔开,但这样只能分个大概,不保证完全准确。还是希望导出的文本能插入明显的编码信息符号,而不是靠外字来区分。

厉害了。