|
发表于 2005-9-17 18:24:53
|
显示全部楼层
另外,是否有粗体,跟fontconfig是没有关系的,只要cairo可以正确呼叫到freetype的embolden就行了。在这个问题上fontconfig没什么用。
fontconfig利用pattern控制如何显示粗体(多粗的粗体)
例如在cairo-ft-font.c中
[code:1]
if (FcPatternGetBool (pattern,
FC_EMBOLDEN, 0, &embolden) != FcResultMatch)
embolden = FcFalse;
if (embolden)
load_flags |= PRIVATE_FLAG_EMBOLDEN;
[/code:1]
(in fontconfig.h we have#define FC_EMBOLDEN “embolden")
即可判定在match后的embolden只否为true,如果为true说明要求显示为粗体
所以要有
[code:1]
<match target="font">
<!-- check to see if the pattern requested > "medium" -->
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<!-- pretend the font is bold now -->
<edit name="embolden" mode="assign">
<bool>true</bool>
</edit>
</match>
[/code:1]
才行
但是上述在任何版本中的默认的fonts.conf中都没有
所以我改为了
[code:1]
int w=-1;
if (FcPatternGetInteger (pattern,FC_WEIGHT, 0, &w) != FcResultMatch) embolden = FcFalse;
if(w==FC_WEIGHT_BOLD) embolden=FcTrue;
if (embolden)
load_flags |= PRIVATE_FLAG_EMBOLDEN;
[/code:1]
由于pango在接受到粗体请求时会自动的加入字体的weight所以这样写就可以解决cairo粗体问题 |
|