• 字体
  • 字体家族
  • 字体公司
  • 字体设计师
  • 字体样张
  • 资讯
  • 视频
字客网>资讯>详情

关于MP3随身听字库的替换和研究

时间:2005-05-17 20:48:32| 应用|浏览:43|作者:fontke
导语在网上花了一段时间搜集整理关于sigmatel芯片的mp3的字库的解决方案,有两个人对我的启示最大,一个是mp3diy的basicasm,他提供了修改替换字库的方法,一个是iaudio的dlwds,因为他汉化固件,所以也研究字库,在他的文章中得到不少启示。我在这里把我寻找和测试字库

在网上花了一段时间搜集整理关于sigmatel芯片的mp3的字库的解决方案,有两个人对我的启示最大,一个是mp3diy的basicasm,他提供了修改替换字库的方法,一个是iaudio的dlwds,因为他汉化固件,所以也研究字库,在他的文章中得到不少启示。我在这里把我寻找和测试字库的过程和发现的问题汇总一下,供大家参考,也想借此和有相同爱好的朋友做个交流。文中可能有不对的地方,希望大家多指正。

一、理论

很多MP3机器在对中文的支持上有是有问题,尤其是小品牌的韩产mp3以及国产大部分mp3,因为内置字库有限(通常是国标码的GB2312-80,6763个汉字),不支持中文或者只支持简体中文(繁体中文),歌曲的ID3信息就无法正常显示(通常表现是显示一个空白)。

我看了很多的mp3的固件,发现字库有如下特点:

1.韩系、日系mp3使用sigmatel芯片的机器不是很多,但是多数对多国语言支持的很好,一般的机器都可以同时支持简体/繁体中文、韩国语、日本语等等,基本上的可以显示的字符范围是CJK(中日韩大字符集编码,ISO/IEC 10646-1,共20902个中日韩汉字)的标准的字符。

2.国内的mp3有两种情况

(1)只支持一种语言,优点:我们一般只使用GB2312-80的字符集的汉字,基本常用字为主,生僻字使用的较少,够用为原则。因为每多一种语言,就要使固件占用闪存增加一定的容量。那么我们存储歌曲的空间就会减少。缺点:对部分扩展集以外的汉字支持的不够好。比如,徐若瑄的"瑄"字就无法正常显示。以安耐克的机器为例,sf700/sf800/sf810就属于这种类型。

(2)支持多国语言,优点:有多种语言设置可以选择,通常还分两种,分别是支持“英简繁”和“英简繁日韩欧等”的固件。适合用户经常使用不同语言操作系统的人使用。缺点:主要的是这些语言的显示都支持但是不能同时支持,比如在简体中文下,不能显示“愛”,在繁体中文下又不能显示“爱”,在国内下载的歌曲文件有时候会在id3中写入繁体的汉字,如果这样的歌曲文件比较多的话,用户就会懒得转换了,而“同时”支持多国语言的字库可以同时显示这两个字。但是对于大陆地区的使用简体中文操作系统的用户来说,不可以“同时”显示多国语言(如“爱”和“愛”)的字库,其中的英文和繁体等这些语言模式我们基本上不会使用,这就造成了其他语言字库长期占用闪存空间不被使用的情况。大家会发现一般支持一种语言的固件的resource.bin文件大小是1.5~2M左右,而三种语言的固件是2.5左右,而五六种甚至更多的的固件在4M以上。(这里提到的支持多种语言有两个含义:1.只用一个字库[一个299929数据段]就支持多国语言;2.用多个字库[多个299929数据段]分别支持每种语言,但是不能同时显示。我认为最好的是前者。)

这里多提几句,我觉得国产的很多机器走的就是这个怪圈,说是支持很多种语言,可是就是不能同时显示,那有什么意义呢,我们要整天切换语言模式吗?还有就是如果想看日文的歌词,还必须得忍受英文或者日文的菜单吗??上面提到了,每多一种语言模式就等于剥夺了我们的闪存空间(因为多一个字库,固件要多占闪存空间的。),多一个299929数据段至少多占用0.5兆空间。

安耐克的sf700a属于支持“英简繁”的,道勤的dq700属于支持“英简繁日韩欧等”的。

现在以实际应用说明,我使用过两款机器,一个机器是安耐克的sf700a,一个是道勤的dq700(3502七彩背光版),还研究过其他机器固件的字库。说说这些机器的字库的结构吧。

一般以sigmatel为解决方案的mp3的字库是以类型为299929(或者299922)的连续数据段。

下面我把我修改过的研究和修改过的几款机器按上面的分类做个介绍:

1.安耐克sf700/sf800/sf810,早期的3410芯片的机器,固件都是采用了单语言模式,即只有简体中文。固件中资源号为229~234的是字库。可以显示的字符范围是GB2312-80。

2.安耐克sf700a/sf820/sf830以及所有c系列和d系列的机器,这些都是采用了35**芯片,固件中采用了三种语言,english/简体中文/繁体中文,不过不可以同时显示,简体部分可以显示的字符范围是GB2312-80,繁体部分可以显示的可能是big5,sf700a固件中资源号为588~611的是字库。其他的机器顺序类似。

3.道勤的dq700,采用了3502芯片,固件支持english/简体中文/繁体中文/日语/韩国语/欧洲等多国语言,不过不可以同时显示,注意这里的一个用词是同时显示,上面提到了同时的含义。固件中资源为652~684的是字库。其中简体中文/繁体中文/日语/韩国语/欧洲,不过我发现,这款机器在简体中文下对日文也是支持的,其他语言就不行了。而之前的安耐克系列就不支持日文。

提到了这么多,我们的目的就是替换字库,使我们用一个299929数据段,也就是一种语言模式下,支持尽可能多的汉字(字母/假名)的显示,我用了大概将近两个月的时间来研究字库的结构和各种品牌机器的字库的编码范围等等。最后把上面这几款机器的固件进行了修改,这期间我在网上找了日文,韩国语,俄文做了测试,因为其他语言我一窍不通,实际使用也很少,所以就不列入修改的范围了。修改后的固件都可以在一种语言模式下同时显示“英简繁日韩欧等”这些语言来实现id3和歌词同步显示,我同时还对显示不美观的个别汉字进行了修改,这个启示是iaudio的dlwds给我的。

二、替换方法

替换字库的方法比较简单。自己做一次就好了。

修改字库一般采用替换法,就是从其他固件里导出字库,再导入目标固件。

第一步:先确定字库数据段位置。用RESEDIT打开固件,列表中间的数字是数据类型,字库数据由类型为2和9的几个数据段组成,一般为299929(299922)。

第二步:导出字库。用RESEDIT从源固件内一一导出这些数据。

第三步:导入字库。用RESEDIT打开目标固件,一一对应导入这些数据。注意:导入时一定要用RESEDIT,RESEDIT会对数据段重新分配大小,而其他软件可能会丢失部分数据,造成替换后固件的损坏。

一般一种语言模式的固件,寻找299929数据段比较容易,只有一个,上面提到的多种语言模式的固件,会有多个299929(299922)数据段,他们分别对应了每种语言模式,字库的显示范围也对应了该种语言模式下可以显示的汉字的范围。下面的实例篇中提到的sf700a和dq-700都分析了他们对应的语言,大家可以做为替换的参考。实际拿到一个新固件的时候很不容易分辨299929段的对应关系,大家可以修改其中的一个数据段中的字母或者数字(加一笔,或者改个样子),然后刷新固件,看看对应哪个语言模式下的改变了,重复实验,最终会找到每个的对应关系。想使用哪个数据段就替换哪个,我选择了开机默认的简体中文模式进行替换。

看了很多的固件,发现有多种语言模式的固件,英文的那个部分容易是299922。有的固件会有系统资源部分。主要用于显示"0 1 2 3 4 5 6 7 8 9 / :",这些主要用于屏幕下方曲目和曲目时间的显示,"002/032 00:56/03:46"。替换的时候只要处理好这些资源就可以了,因为不是每个固件都有,所以这个要区别对待。

三、两个实例

我上面说了,要同时支持多国语言显示的话就得寻找有多国语言的固件,而这些固件主要是韩系和日系的,韩系使用sigmatel芯片的厂商不多,我知道的有iaudio、三星、datum等,我后面之所字库在文件夹功能中显示文件名称的时候能正常显示,但是做歌词同步和id3显示的时候却是乱码,原因我不清楚,谁知道请斥教,故放弃使用,其中meizu的固件和sf700a的字库基本相同,无替换意义,其中三星我使用的是简体中文版yp35的固件(34系列的固件),替换后能显示简体中文,繁体中文和日文,韩国语不支持。我于是想新品机器的固件可能支持韩国语就选了yp-t6,可是用resedit打不开(新版本已经可以打开了),所以就放弃了,不过dlwds在论坛说他有办法,不知道是怎么解决的。我很想在知道。除了韩系和日系的,那就得找国内的,因为有些国内代工品牌也有多国语言的。尝试了很多固件后,最后在替换**品牌的字库的时候终于成功的实现了中日韩等多国语言的显示(实际上应该是这个字库的编码范围在CJK范围吧),不过因为韩国语的字母不能在ansi936编码下保存,所以做歌词同步是不可能的,我尝试以unicode编码保存lrc歌词,但是在mp3中播放的时候歌词同步就失效了。所以韩国语只支持id3和文件名的显示。

实例一.sf700/sf800/sf810

字库是229~234,一个连续的299929

替换的方法上面已经详细说明,按照方法替换就行。替换中没有发现什么异常的问题。刷新固件后,其中歌词同步和id3的显示使用了新的字库,可以显示的汉字范围增大了,也支持同时显示多国语言了。不过系统显示的部分字符出现了问题。当时是斑竹zachary58帮我做的测试。这里表示忠心的感谢。这里发个图,屏幕下方的“曲目和曲目时间的显示”是乱码。我又复查了一下字库的字符。发现这部分使用的是231资源的002~013。替换的时候只要处理好这些资源就可以了。再次刷新修改的固件,全部显示正常了,屏幕下方的乱码没了。替换成功,这个修改的固件大家可以在安耐克爱好者网站下载。

*系统资源的部分字符("0 1 2 3 4 5 6 7 8 9 / :",这些用于下面屏幕下方曲目和曲目时间的显示 "002/032 00:56/03:46")

实例二.sf700a(其他安耐克型号,如sf820/sf830以及所有c系列和d系列机器的方法相同)

替换方法同上,替换后没有出现sf700系列的乱码问题,进研究发现系统资源没有隐藏在各个字库中,而是在最后面的606~611部分的608中,如果想改可以检查这里,这里就不表述了。

参考代码:

其中资源588~593是english部分,代码是299922

其中资源594~599是简体中文部分,代码是299929,这个是我修改制作CJK版本所替换的部分。一般也是替换这个部分。因为开机默认是简体中文。

其中资源600~605是繁体中文部分,代码是299929,这个没有做改动,因为如果要使用繁体中文的系统的话,这个还是有用的。

其中资源606~611是系统资源部分,代码是299922,什么是系统资源部分,上面我已经提到了,不重复说明。

还有一些29之类的代码,有什么用我还没研究到。有懂的告诉我,不过肯定不是字库了。

最后把另外一款机器的固件资源列在下面:

dq-700字库资源分布:

资源号含义/对应的语言
652-656 system/系统资源
657-662 simp-ch/简体中文
663-668 tran-ch/繁体中文
669-674 kro/韩国语
675-680 japan/日本语
681-684 eur/欧洲语言

因为一位朋友问过我pisa的固件,所以我还研究过pisa的固件,也是属于“英简繁日韩欧等”的,字库的分布很乱套的,基本结构和上面的dq-700很像。分辨各种语言也费事,大家可以用我前面提到的修改部分字符来分辨,大家自己慢慢查看吧,这就是我说的resource.bin文件很大,实际可用闪存空间应该会比其他品牌的小几M的。

这个文章我写了好几天,我暂时能想到的就是这些,寻找合适的字库是个辛劳的过程,要不断的寻找品牌,下载固件,提取字库,替换字库,然后刷新固件,我测试的过程中有时候一天刷新20多次,那都是很普通的事情。如果你对某个字符的显示觉得不满意的话,修改完之后还是要刷新固件的。刷新固件对机器没有损伤,如果真像有些人说的那样,我的机器现在恐怕早就变成一块费铁了,实际上我的机器比一般人的要好的多,基本上没有死机等论坛上大家常提到的问题,音质也没有改变。有的是更令我满意的显示方案了。呵呵。不多聊了,先写这些吧。(我会慢慢把再想到的内容补充进来了。)

0
更多关于MP3随身听字库的替换和研究敬请关注字客网!
关于MP3随身听字库的替换和研究 网友点评
游客:文明上网,理性发言。 看不清?换一张
关于MP3随身听字库的替换和研究 最新评论
暂无相关评论
精彩点评
  • 游客评论免费商用中文字体有哪些?字体资讯

    新蒂字体 授权使用: 无需备案免费使用的情况: 在个人电脑上安装、打印个人文档、个人网站、博客、微博配图 需要备案免费使用的情况: 设计有可能商用的稿件(在商用时购买商业授权)、用于免费提供给他人的印刷品(印量在500份以内,且无需获得印刷品行政许可)的情况、用作没有品牌冠名的公益广告、用作完全免费(不能含有收费项目)的软件及网络服务。 需要购买个人授权的情况: 个人网店的装饰、个体商...
  • 游客评论免费商用中文字体有哪些?字体资讯

    太有用了,感谢作者
  • 天天刺绣评论耗时2年他重新设计34省市图形字体字体资讯

    设计的好棒!漂亮!稀饭!
  • Jaja评论40款高质量英文设计字体字体资讯

    怎么下载啊~
  • 简MEN评论七招打造有逼格的字体字体资讯

    有一款想要的字体,就是下来屯
  • chill评论40款高质量英文设计字体字体资讯

    地址呢?