LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1245|回复: 12

firefox标签上的英文粗体很难看

[复制链接]
发表于 2006-10-6 11:13:44 | 显示全部楼层 |阅读模式
标签上的字体应在哪里设置?

本帖子中包含更多资源

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

x
发表于 2006-10-6 11:40:14 | 显示全部楼层
pango-1.10-simulate-bold-oblique-style.patch for pango
  1. diff -uNrp pango-1.10.1.orig/pango/pangofc-fontmap.c pango-1.10.1/pango/pangofc-fontmap.c
  2. --- pango-1.10.1.orig/pango/pangofc-fontmap.c        2005-07-23 06:38:26.000000000 +0800
  3. +++ pango-1.10.1/pango/pangofc-fontmap.c        2005-09-30 17:29:33.000000000 +0800
  4. @@ -83,6 +83,8 @@ struct _PangoFcFace

  5.    PangoFcFamily *family;
  6.    char *style;
  7. +
  8. +  gboolean fake;
  9. };

  10. struct _PangoFcFamily
  11. @@ -1671,7 +1673,7 @@ pango_fc_face_describe (PangoFontFace *f
  12.    FcPattern *match_pattern;
  13.    FcPattern *result_pattern;

  14. -  if (is_alias_family (fcfamily->family_name))
  15. +  if (fcface->fake)
  16.      {
  17.        if (strcmp (fcface->style, "Regular") == 0)
  18.         return make_alias_description (fcfamily, FALSE, FALSE);
  19. @@ -1851,11 +1853,13 @@ pango_fc_face_get_type (void)
  20.   */
  21. static PangoFcFace *
  22. create_face (PangoFcFamily *fcfamily,
  23. -             const char     *style)
  24. +             const char     *style,
  25. +             gboolean       fake)
  26. {
  27.    PangoFcFace *face = g_object_new (PANGO_FC_TYPE_FACE, NULL);
  28.    face->style = g_strdup (style);
  29.    face->family = fcfamily;
  30. +  face->fake = fake;

  31.    return face;
  32. }
  33. @@ -1880,24 +1884,52 @@ pango_fc_family_list_faces (PangoFontFam
  34.           fcfamily->faces = g_new (PangoFcFace *, fcfamily->n_faces);

  35.           i = 0;
  36. -          fcfamily->faces[i++] = create_face (fcfamily, "Regular");
  37. -          fcfamily->faces[i++] = create_face (fcfamily, "Bold");
  38. -          fcfamily->faces[i++] = create_face (fcfamily, "Italic");
  39. -          fcfamily->faces[i++] = create_face (fcfamily, "Bold Italic");
  40. +          fcfamily->faces[i++] = create_face (fcfamily, "Regular", TRUE);
  41. +          fcfamily->faces[i++] = create_face (fcfamily, "Bold", TRUE);
  42. +          fcfamily->faces[i++] = create_face (fcfamily, "Italic", TRUE);
  43. +          fcfamily->faces[i++] = create_face (fcfamily, "Bold Italic", TRUE);
  44.         }
  45.        else
  46.         {
  47. -          FcObjectSet *os = FcObjectSetBuild (FC_STYLE, NULL);
  48. +          FcObjectSet *os = FcObjectSetBuild (FC_STYLE, FC_WEIGHT, FC_SLANT, NULL);
  49.           FcPattern *pat = FcPatternBuild (NULL,
  50.                                            FC_FAMILY, FcTypeString, fcfamily->family_name,
  51.                                            NULL);
  52. -      
  53. +          gboolean style_table [4] = { FALSE, FALSE, FALSE, FALSE };
  54. +          gint num_fake_faces = 0;
  55. +
  56.           fontset = FcFontList (NULL, pat, os);
  57.       
  58.           FcPatternDestroy (pat);
  59.           FcObjectSetDestroy (os);
  60. -      
  61. -          fcfamily->n_faces = fontset->nfont;
  62. +
  63. +          for (i = 0; i < fontset->nfont; i++)
  64. +            {
  65. +              int weight, slant;
  66. +
  67. +              if (FcPatternGetInteger(fontset->fonts[i], FC_WEIGHT, 0, &weight) != FcResultMatch)
  68. +                weight = FC_WEIGHT_MEDIUM;
  69. +
  70. +              if (FcPatternGetInteger(fontset->fonts[i], FC_SLANT, 0, &slant) != FcResultMatch)
  71. +                slant = FC_SLANT_ROMAN;
  72. +
  73. +              if (weight <= FC_WEIGHT_MEDIUM && slant < FC_SLANT_ITALIC)
  74. +                style_table[0] = FcTrue;
  75. +              else if (weight <= FC_WEIGHT_MEDIUM && slant >= FC_SLANT_ITALIC)
  76. +                style_table[1] = FcTrue;
  77. +              else if (weight > FC_WEIGHT_MEDIUM && slant < FC_SLANT_ITALIC)
  78. +                style_table[2] = FcTrue;
  79. +              else if (weight > FC_WEIGHT_MEDIUM && slant >= FC_SLANT_ITALIC)
  80. +                style_table[3] = FcTrue;
  81. +            }
  82. +
  83. +               for (i = 1 ; i < 4 ; i++)
  84. +            {
  85. +              if (!style_table[i])
  86. +                num_fake_faces++;
  87. +            }
  88. +
  89. +          fcfamily->n_faces = fontset->nfont + num_fake_faces;
  90.           fcfamily->faces = g_new (PangoFcFace *, fcfamily->n_faces);
  91.           
  92.           for (i = 0; i < fontset->nfont; i++)
  93. @@ -1909,9 +1941,18 @@ pango_fc_family_list_faces (PangoFontFam
  94.               if (res != FcResultMatch)
  95.                 s = "Regular";

  96. -              fcfamily->faces[i] = create_face (fcfamily, s);
  97. +              fcfamily->faces[i] = create_face (fcfamily, s, FALSE);
  98.             }

  99. +          if (num_fake_faces) {
  100. +            if (!style_table[1])
  101. +              fcfamily->faces[i++] = create_face (fcfamily, "Italic", TRUE);
  102. +            if (!style_table[2])
  103. +              fcfamily->faces[i++] = create_face (fcfamily, "Bold", TRUE);
  104. +            if (!style_table[3])
  105. +              fcfamily->faces[i++] = create_face (fcfamily, "Bold Italic", TRUE);
  106. +          }
  107. +
  108.           FcFontSetDestroy (fontset);
  109.         }
  110.      }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-6 13:09:26 | 显示全部楼层
谢了,试试看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-6 13:22:38 | 显示全部楼层
pango-1.12.3也可以用这个补丁吗?
回复 支持 反对

使用道具 举报

发表于 2006-10-6 14:53:59 | 显示全部楼层
1.14.4都能
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-6 15:56:14 | 显示全部楼层
没改善,不知问题出在哪
回复 支持 反对

使用道具 举报

发表于 2006-10-6 16:22:52 | 显示全部楼层
對不起,這個帖子你參考一下:
http://www.linuxsir.cn/bbs/showt ... mp;highlight=simsun
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-6 16:46:58 | 显示全部楼层
Post by midx
對不起,這個帖子你參考一下:
http://www.linuxsir.cn/bbs/showt ... mp;highlight=simsun


谢谢!这篇贴子倒是看过了,还没去打那个补丁。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-6 22:33:59 | 显示全部楼层
Post by HotGinger
谢谢!这篇贴子倒是看过了,还没去打那个补丁。


sunmoon那个libXft补丁打不上。
回复 支持 反对

使用道具 举报

发表于 2006-10-6 22:41:28 | 显示全部楼层
明明打的上的嘛

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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