QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: wall_john

fontconfig内嵌粗体与libxft模拟粗体比较

[复制链接]
发表于 2005-10-28 17:50:50 | 显示全部楼层
上传好了。
回复

使用道具 举报

发表于 2005-10-28 22:24:21 | 显示全部楼层
先在sir那儿看到,谢了。
回复

使用道具 举报

 楼主| 发表于 2005-10-29 14:49:49 | 显示全部楼层
firefox字体对路了,不过cairo的simsun还是糟糟的。
回复

使用道具 举报

发表于 2005-10-29 15:31:37 | 显示全部楼层
[quote:c389d0102c="wall_john"]firefox字体对路了,不过cairo的simsun还是糟糟的。[/quote]
[code:1]
cvs -d :pserver:[email protected]:/cvs/cairo co cairo
cd cairo
wget http://www.magiclinux.org/people/sunmoon1997/patches/cairo/cairo-font-fixes-all-in-one.diff
patch -p 0 < cairo-font-fixes-all-in-one.diff
./autogen.sh --prefix=/usr/  && make && sudo make install
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-10-29 16:21:20 | 显示全部楼层
sunmoon1997, good,good,打两个补丁就OK了,谢谢sunmoon1997,
回复

使用道具 举报

 楼主| 发表于 2005-10-29 16:48:06 | 显示全部楼层
两个补丁:
http://www.magiclinux.org/people/sunmoon1997/patches/cairo/cairo-font-fixes-all-in-one.diff
http://www.magiclinux.org/people/sunmoon1997/patches/libXft/libXft-2.1.7-lazy-embolden.diff
都是sunmoon1997[代号‘日月’]的作品。

修改后的贴图,左边为cario驱动下的liferea,右边为deerparks beta2(firefox升级版,与IE兼容性更好)用的libXft2,分别对应上面两个补丁。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2005-11-5 21:38:36 | 显示全部楼层
另外今天发现,有个不给cairo打补丁的方法,也能实现cairo的漂亮的新宋粗体字。
在freetype 2.1.10中打一下几个补丁:
freetype-2.1.10-enable_bytecode.patch
freetype-2.1.10-cvsfixes.patch.bz2
freetype-2.1.10-xorgfix.patch.bz2

这几个应该是mdk中补丁。应该是freetype-2.1.10-cvsfixes.patch.bz2中对freetype
的内嵌粗体做了处理。但libXft还是要打上面的补丁才好看。
回复

使用道具 举报

发表于 2005-11-5 21:46:11 | 显示全部楼层
Mandriva中可不敢开启bytecode。况且,要让cairo出粗体,cairo本身不需要补丁。
回复

使用道具 举报

发表于 2005-11-5 22:34:33 | 显示全部楼层
[quote:1dff468c1d="wall_john"]另外今天发现,有个不给cairo打补丁的方法,也能实现cairo的漂亮的新宋粗体字。
在freetype 2.1.10中打一下几个补丁:
freetype-2.1.10-enable_bytecode.patch
freetype-2.1.10-cvsfixes.patch.bz2
freetype-2.1.10-xorgfix.patch.bz2

这几个应该是mdk中补丁。应该是freetype-2.1.10-cvsfixes.patch.bz2中对freetype
的内嵌粗体做了处理。但libXft还是要打上面的补丁才好看。[/quote]
试试这个程序。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2005-11-6 01:10:19 | 显示全部楼层
[code:1]
wj@ubuntu-wj:~/download$ gcc -I/usr/include -I/usr/include/cairo -I/usr/include/freetype2 -L/usr/lib -lfreetype -lcairo cairo-text-hinting-embolden.c -o cairo-test
wj@ubuntu-wj:~/download$ ./cairo-test
[/code:1]

下面是输出的图片!不知道有什么问题??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2005-11-6 01:59:40 | 显示全部楼层
[code:1]
wj@ubuntu-wj:~/download$ ls -l /usr/lib/libcairo.so.2
lrwxrwxrwx  1 root root 17 2005-11-06 01:47 /usr/lib/libcairo.so.2 -> libcairo.so.2.3.0
[/code:1]
不好意思    ,犯了个低级错误,还是用的日月兄的补丁的那个。。
回复

使用道具 举报

 楼主| 发表于 2006-1-1 01:26:08 | 显示全部楼层
日月的上面两个补丁,利用原理是先从freetype库调用取出矢量字体的画字位图,
用该位图构建一个点阵字体,然后再传入freetype,调用FT_GlyphSlot_Embolden
函数加粗字体,他利用了freetype的伪粗体的一个特性,即矢量字和点阵字伪粗体
在freetype中实现算法不同,点阵字体粗体更好看一些。

libXft-2.1.7-lazy-embolden.diff补丁中有个bug,因为用上面方法构建字体时,
忘了将改变的参数保存回去,所以出现中文和英文参差不齐的结果。

修改方法如下:
+            if (subpixel)
+                FT_Outline_Transform (&glyphslot->outline, &matrix);
+            FT_Outline_Translate ( &glyphslot->outline, -left*hmul, -bottom*vmul );
+            FT_Outline_Get_Bitmap( _XftFTlibrary, &glyphslot->outline, &glyphslot->bitmap);
+
+            glyphslot->format = ft_glyph_format_bitmap;
+            FT_GlyphSlot_Embolden (glyphslot);
//在这里插入
            xftg->metrics.x = -TRUNC(left);
            xftg->metrics.y = TRUNC(top);
+        }
+#endif

见效果图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-25 14:48 , Processed in 0.043809 second(s), 14 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表