QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: Mikeandmore

提一个cairo的斜体解决方案

[复制链接]
 楼主| 发表于 2005-9-17 18:29:52 | 显示全部楼层
我的意思是FC类

即:
fedora core
mandrake
suse
redhat
magic linux
这一类发型版
回复

使用道具 举报

 楼主| 发表于 2005-9-17 18:36:06 | 显示全部楼层
目前粗体早就搞定

斜体有问题

if (val->key.flags & PRIVATE_FLAG_OBLIQUE &&
        (face->style_flags & FT_STYLE_FLAG_ITALIC) == 0) {
        FT_GlyphSlot_Oblique (glyphslot);
}

...

FcBool embolden=FcFalse;

        int w=-1;

        /*if (FcPatternGetBool (pattern,
                              FC_EMBOLDEN, 0, &embolden) != FcResultMatch)
            embolden = FcFalse;*/
        if (FcPatternGetInteger (pattern,FC_WEIGHT, 0, &w) != FcResultMatch) embolden = FcFalse;
        if(w==FC_WEIGHT_BOLD) embolden=FcTrue;

        if (embolden)
            load_flags |= PRIVATE_FLAG_EMBOLDEN;
    }


看上去ok吧
但是在freetype中
  FT_EXPORT_DEF( void )
  FT_GlyphSlot_Oblique( FT_GlyphSlot  slot )
  {
    FT_Matrix    transform;
    FT_Outline*  outline = &slot->outline;


    /* only oblique outline glyphs */
    if ( slot->format != FT_GLYPH_FORMAT_OUTLINE )
      return;

    /* we don't touch the advance width */

    /* For italic, simply apply a shear transform, with an angle */
    /* of about 12 degrees.                                      */

    transform.xx = 0x10000L;
    transform.yx = 0x00000L;

    transform.xy = 0x06000L;
    transform.yy = 0x10000L;

    FT_Outline_Transform( outline, &transform );
}
所以必须对FT_GLYPH_FORMAT_BITMAP进行斜体算法
我目前没有什么办法,也许请教以下firefly。他patch过freetype
回复

使用道具 举报

发表于 2005-9-17 19:03:40 | 显示全部楼层
小字号的斜体,根本就看不清楚。
回复

使用道具 举报

 楼主| 发表于 2005-9-18 16:47:29 | 显示全部楼层
果真如此。。。

大概是 transform的值的问题
回复

使用道具 举报

发表于 2005-9-18 19:57:17 | 显示全部楼层
[quote:27c6ea77e1="Mikeandmore"]果真如此。。。

大概是 transform的值的问题[/quote]

是不是把你的标题改改
回复

使用道具 举报

 楼主| 发表于 2005-9-19 18:32:17 | 显示全部楼层
对!谢谢提醒,跑了
回复

使用道具 举报

发表于 2005-9-19 21:20:18 | 显示全部楼层
首先,可以肯定我的系统里粗斜体都没有问题,粗体是 sunmoon 提交的补丁后才有的,斜体则是打我的补丁后出来的,我的补丁在

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=128453&start=30

http://www.linuxfans.org/nuke/modules/Forums/files/cairo-ft-oblique-fix.diff

并不是只有楼主贴的那几行。

现在 cvs 里的 cairo 似乎还没收这个补丁。

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 2005-9-19 22:45:15 | 显示全部楼层
拜托,您老人家得自己去跟cairo的人说要收入这个补丁。cairo的人不会自发的满世界搜索补丁 :D

另外,好像你的补丁会使得cairo在build的时候依赖autoconf和automake。不过确实如Mikeandmore所说,虽然小字号的斜体根本就看不清楚,但可能应该还是有这个功能比较好。
回复

使用道具 举报

发表于 2005-9-20 01:53:17 | 显示全部楼层
这是我的方案对 fontconfig 和 cairo 同时动了一下手术:D
cairo-1.0 的的要相应的改一下:D
ps. fontconfig 部分实际是 frefly 写的。
fontconfig-2.3.2-prefer-localized-family-name.patch  与斜体并不相关, 是让 fontconfig 显示本地化字体名的, 一起送上了,呵呵

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2005-9-20 18:47:33 | 显示全部楼层
问yaugh:
你的补丁中FC_OBLIQUE的定义是什么???

在哪里有它的定义?




文鼎pl的字体我都试过  有斜体!!!

simsun没有!

sunmoon1997的补丁也许是对的。
回复

使用道具 举报

 楼主| 发表于 2005-9-20 18:49:29 | 显示全部楼层
我的思路是再patch一下freetype
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-13 12:18 , Processed in 0.101729 second(s), 13 queries .

© 2021 Powered by Discuz! X3.5.

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