sunmoon1997 发表于 2005-10-28 17:50:50

上传好了。

midx 发表于 2005-10-28 22:24:21

先在sir那儿看到,谢了。

wall_john 发表于 2005-10-29 14:49:49

firefox字体对路了,不过cairo的simsun还是糟糟的。

sunmoon1997 发表于 2005-10-29 15:31:37

firefox字体对路了,不过cairo的simsun还是糟糟的。

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

wall_john 发表于 2005-10-29 16:21:20

sunmoon1997, good,good,打两个补丁就OK了,谢谢sunmoon1997,

wall_john 发表于 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,分别对应上面两个补丁。

wall_john 发表于 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还是要打上面的补丁才好看。

mandrakechina 发表于 2005-11-5 21:46:11

Mandriva中可不敢开启bytecode。况且,要让cairo出粗体,cairo本身不需要补丁。

sunmoon1997 发表于 2005-11-5 22:34:33

另外今天发现,有个不给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还是要打上面的补丁才好看。
试试这个程序。

wall_john 发表于 2005-11-6 01:10:19


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


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

wall_john 发表于 2005-11-6 01:59:40


wj@ubuntu-wj:~/download$ ls -l /usr/lib/libcairo.so.2
lrwxrwxrwx1 root root 17 2005-11-06 01:47 /usr/lib/libcairo.so.2 -> libcairo.so.2.3.0

不好意思 :lol::lol: ,犯了个低级错误,还是用的日月兄的补丁的那个。。

wall_john 发表于 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

见效果图
http://blog.linuxeden.com/get/140172/967-Screenshot.png
页: 1 [2]
查看完整版本: fontconfig内嵌粗体与libxft模拟粗体比较