semson 发表于 2004-1-17 03:08:52

有没高手能讲解一下关于优化中文字体的理论??

一直以来, 提供的方法很多, 但附讲解的就未见过~~ 这样每见到一个新方法就照抄照试一次也不是办法, 万一遇到例外就恼得想死! 不知有没有水平较高的人能讲解一下, 或提供相关文档参阅~ 我个人来说, 英文的也没问题. 感谢!!

semson 发表于 2004-1-17 03:10:51

firefly 在其论坛上曾有以下说明, 但篇章大短, 吸引到的有限. 当然未看过的也可以参考一下
宋体和 Freetype2 有什么关系呀?
(新)宋体、楷体_GB2312使用 bytecode 组字法,与一般的 TrueType 格式不一样,一般的 TrueType 是存放“笔划”,所以字型引擎只要依照笔划指引,就可以绘出字形,而 bytecode 则是一些虚拟指令(类似 java 的虚拟指令),这时候,字型引擎就必须化身为一个解译器,来解释并执行这些虚拟指令,就像 JVM 一样,bytecode 的好处是减少字型档案的大小。

bytecode 有三个部份为 Apple 专利,正是因为这个缘故,freetype2 预设并未打开这个 bytecode 解译功能,所以当遇到了 bytecode 组字的字型时,就会不正常(破碎),幸好此类字型不常见,有个好消息是:freetype unstable 版已经避开了 Apple 专利部份,而且预设也是开启 bytecode 解译功能,可见专利问题已解决了(猜测),所以才会预设开启。

Fontconfig 部份
1、除了中文字型名称(严格来说,应是非英文字型名称)的修改外,还有容许 CJK 漏字 1%,以及增加 CJK CharMaps,以支援较早期没有 Unicode 的字型。
2、对系统的 fonts.conf 做了少需修改。
如果您对中文字型名称没有需求,小弟还是建议还是更新了吧,避免一些麻烦。

Xft2 部份
1、增加控制内嵌 bitmap 选项。
2、模拟粗体。
3、等宽字英文变宽问题。
4、AA 与非 AA 混杂造成字形糊掉问题,就是您所谓的"沙沙文字"。

Freetype 部份
1、autohint 采用日本 Akito 的 Patch。
2、启用 gamma table,并修改了 gamma 值,让 AA 状态的字型更清楚,但 hinting 必须开启,若要让字型更细,则必须开启 autohint,这都在 fonts.conf 中加以描述,所以小弟才建议 Fontconfig 也要更新,不单只是字型名称需求而已。
3、启用 bytecode 解译功能。

Xf2 和 Freetype2 到底有什么关系呢?
Freetype2 是字型引擎,被动地等待应用程式呼叫,而 Xft2 只是应用程式的一种,也就是说,只要您了解 Freetype2 提供的 API 函数、资料结构、模组,您事实上也可以得到 Freetype 回覆的字型资料,进而绘制在萤幕甚至是报表,Xft2 就是做类似的事情,只不过 Xft2 不是独立的应用程式,它是一种介于应用程式与 Freetype2 之间的桥梁,它提供更高阶 API 介面给应用程式开发者,让程式开发人员不必了解复杂的 Freetype2,Xft2 可以节省程式设计很多时间。

cnhnln 发表于 2004-1-17 23:17:35

顶一下
页: [1]
查看完整版本: 有没高手能讲解一下关于优化中文字体的理论??