星期四, 八月 17, 2006
不是办法的办法
Gnome中国的Xin Zhen曾试图向gstreamer提交识别MP3 id3tag多语言编码的补丁:
不过,我觉得这样并不是一个一劳永逸的好办法。最好的办法还是把MP3的id3v1的信息永久的转换为utf-8。相对而言,根据locale判断编码,很可能在euc-cn/utf-8之间判断错误,而且谁也不能保证一个中文locale的用户不听日文、希伯来文、俄文的歌曲,而其中包含的id3编码,又有谁清楚呢?
最好的办法还是建立标准的id3/cd数据库,通过网络的访问,确定正确的名称,艺术家等等。
Rhythmbox 的用户可能会发现,自己硬盘上的 mp3 有很大一部分其中中文的 tag 被显示为乱码。当然仍然有一小部分是正常的。 对这个问题进行分析后我们发现,问题出在 gstreamer,以及它调用的库 libid3tag 上。
在分析 rhythmbox 显示中文 mp3 标记乱码的问题后,我们意识到这是一个 gstreamer 的问题。gstreamer 向 rhythmbox 提供了与乐曲格式无关的、Unicode 编码的标准化格式的标记信息。
……
当 id3v2 规范发布,并规定其中的字符串编码必须是 iso-8859 或者 unicode 时,已经太晚了,满世界的 mp3 都已经在 iso-8859 字段中填写了各类本地编码字符串。
……
不幸的是 libid3tag 的作者显然并不生活在非西文地区。它忠实地执行了 id3v2 规范的内容:将 iso-8859 字段中的文字精确地按照 iso-8859->unicode 的方式进行转换,并向 gstreamer 提交 unicode 字符串。这样,存储在 iso-8859 字段中的一个中文字符就被编码成了2个 Unicode 字符。对其进行显示的结果,就是乱码。
在此似乎也无法苛责 libid3tag,毕竟它是根据规范而为。因此我选择了对 gstreamer-mad 打补丁,使其正确地按照当前系统所处的 locale,对存储在 iso-8859 字段中的字符串进行 unicode 转换。这样,当你的 locale 为中文时,就能通过 rhythmbox 正确看到中文 mp3 歌曲中的标记信息。
不过,我觉得这样并不是一个一劳永逸的好办法。最好的办法还是把MP3的id3v1的信息永久的转换为utf-8。相对而言,根据locale判断编码,很可能在euc-cn/utf-8之间判断错误,而且谁也不能保证一个中文locale的用户不听日文、希伯来文、俄文的歌曲,而其中包含的id3编码,又有谁清楚呢?
最好的办法还是建立标准的id3/cd数据库,通过网络的访问,确定正确的名称,艺术家等等。
MacBook/Pro也是电池惹的祸?
MacFixit上有几则有趣的消息:
- 如果你的MacBookPro太热,那么,拆机处理硅胶可能是一种办法,但是,有读者反映“苹果更换电池后,MBP凉了”。能够让我们把一切串联起来的电池——就是Dell召回的这批,都是SONY生产的,那么……(听说CoreDuo的ThinkPad T60也倍儿热!)
- 还有,最近有用户报称,MB/MBP的SuperDrive(其实不就是DVD-RW嘛?)在读盘过程中失败。比如,在抓cd音轨时(不是由于DRM功能吧?),读取速率从10x降到0.1x。而解决方法居然首先是重置PMU,难道又是电池?
星期三, 八月 16, 2006
目前的ubuntu字体配置(Dapper 6.06 LTS)
下载苹果的STHei或者微软雅黑,然后写~/.fonts.conf:
然后还要想法对付/etc/fonts/fonts.conf里的日文字体。在Mincho xxx字体前插入
Microsoft YaHei 或STHei
最后把所有字体设置为Bitstream Vera系。
不知道这么做有什么不妥,想来fontconfig升级会冲刷fonts.conf,可是我不太明白如何才能在unicode编码的默认字体家族压制住日文字体。
附:我的.fonts.conf:
然后还要想法对付/etc/fonts/fonts.conf里的日文字体。在Mincho xxx字体前插入
最后把所有字体设置为Bitstream Vera系。
不知道这么做有什么不妥,想来fontconfig升级会冲刷fonts.conf,可是我不太明白如何才能在unicode编码的默认字体家族压制住日文字体。
附:我的.fonts.conf:
<fontconfig>
<match target="pattern">
<test name="family">
<string>Bitstream Vera Serif</string>
</test>
<edit name="family" mode="append" binding="same">
<string>STHeiti</string>
</edit>
</match>
<match target="pattern">
<test name="family">
<string>Bitstream Vera Sans</string>
</test>
<edit name="family" mode="append" binding="same">
<string>Microsoft YaHei</string>
</edit>
</match>
<match target="pattern">
<test name="family">
<string>Bitstream Vera Sans Mono</string>
</test>
<edit name="family" mode="append" binding="same">
<string>STHeiti</string>
</edit>
</match>
<!-- 下面这坨似乎不太管用,我也不确定了-->
<match target="pattern">
<test name="family">
<string>Kochi</string>
</test>
<edit name="family" mode="prepend">
<string>Microsoft YaHei</string>
</edit>
</match>
</fontconfig>
订阅:
博文 (Atom)