Ticket #17049: patch-pango-coretext.diff

File patch-pango-coretext.diff, 6.5 KB (added by pguyot (Paul Guyot), 16 years ago)

Yet another bug fix in the patch (forgot a * PANGO_SCALE).

  • modules/basic/basic-atsui.c

    diff -ru modules/basic/basic-atsui.c modules/basic/basic-atsui.c
     
    8686  const char *p;
    8787  PangoATSUIFont *afont = PANGO_ATSUI_FONT (font);
    8888  ATSUStyle style;
    89   ATSUFontID fontID;
     89  CGFontRef fontID;
    9090  ATSUAttributeTag styleTags[] = { kATSUFontTag };
    9191  ATSUAttributeValuePtr styleValues[] = { &fontID };
    92   ByteCount styleSizes[] = { sizeof (ATSUFontID) };
     92  ByteCount styleSizes[] = { sizeof (CGFontRef) };
    9393
    9494  utf16 = g_utf8_to_utf16 (text, length, NULL, &n16, NULL);
    9595
     
    9797  err = ATSUSetTextPointerLocation (text_layout, utf16, 0, n16, n16);
    9898
    9999  err = ATSUCreateStyle(&style);
    100   fontID = pango_atsui_font_get_atsu_font_id (afont);
     100  fontID = pango_atsui_font_get_cgfont (afont);
    101101
    102102  err = ATSUSetAttributes(style,
    103103                          sizeof(styleTags) / sizeof(styleTags[0]),
  • pango/pangoatsui-private.h

    diff -ru pango/pangoatsui-private.h pango/pangoatsui-private.h
     
    9393gpointer              _pango_atsui_font_get_context_key      (PangoATSUIFont    *afont);
    9494void                  _pango_atsui_font_set_context_key      (PangoATSUIFont    *afont,
    9595                                                              gpointer           context_key);
    96 void                  _pango_atsui_font_set_atsu_font_id     (PangoATSUIFont    *font,
    97                                                               ATSUFontID         font_id);
     96void                  _pango_atsui_font_set_cgfont           (PangoATSUIFont    *font,
     97                                                              CGFontRef         font_id);
    9898
    9999G_END_DECLS
    100100
  • pango/pangoatsui.c

    diff -ru pango/pangoatsui.c pango/pangoatsui.c
     
    3232  PangoFontDescription *desc;
    3333  gpointer context_key;
    3434
    35   ATSUFontID font_id;
     35  CGFontRef font_id;
    3636
    3737  PangoFontMap *fontmap;
    3838};
     
    176176}
    177177
    178178void
    179 _pango_atsui_font_set_atsu_font_id (PangoATSUIFont *font,
    180                                     ATSUFontID      font_id)
     179_pango_atsui_font_set_cgfont (PangoATSUIFont *font,
     180                                    CGFontRef      font_id)
    181181{
    182182  PangoATSUIFontPrivate *priv = font->priv;
    183183
     
    185185}
    186186
    187187/**
    188  * pango_atsui_font_get_atsu_font_id:
     188 * pango_atsui_font_get_cgfont:
    189189 * @font: A #PangoATSUIFont
    190190 *
    191  * Returns the ATSUFontID of a font.
     191 * Returns the CGFontRef of a font.
    192192 *
    193  * Return value: the ATSUFontID associated to @font.
     193 * Return value: the CGFontRef associated to @font.
    194194 *
    195195 * Since: 1.18
    196196 */
    197 ATSUFontID
    198 pango_atsui_font_get_atsu_font_id (PangoATSUIFont *font)
     197CGFontRef
     198pango_atsui_font_get_cgfont (PangoATSUIFont *font)
    199199{
    200200  PangoATSUIFontPrivate *priv = font->priv;
    201201
  • pango/pangoatsui.h

    diff -ru pango/pangoatsui.h pango/pangoatsui.h
     
    6868
    6969#endif /* PANGO_ENABLE_BACKEND */
    7070
    71 ATSUFontID pango_atsui_font_get_atsu_font_id (PangoATSUIFont *font);
     71CGFontRef pango_atsui_font_get_cgfont (PangoATSUIFont *font);
    7272
    7373#endif /* PANGO_ENABLE_ENGINE || PANGO_ENABLE_BACKEND */
    7474
  • pango/pangocairo-atsuifont.c

    diff -ru pango/pangocairo-atsuifont.c pango/pangocairo-atsuifont.c
     
    8282pango_cairo_atsui_font_create_font_face (PangoCairoFont *font)
    8383{
    8484  PangoATSUIFont *afont = (PangoATSUIFont *) (font);
    85   ATSUFontID font_id;
     85  CGFontRef font_id;
    8686
    87   font_id = pango_atsui_font_get_atsu_font_id (afont);
    88   return cairo_quartz_font_face_create_for_atsu_font_id (font_id);
     87  font_id = pango_atsui_font_get_cgfont (afont);
     88  return cairo_quartz_font_face_create_for_cgfont (font_id);
    8989}
    9090
    9191static int
     
    118118{
    119119  PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) font;
    120120  PangoATSUIFont *afont = (PangoATSUIFont *) font;
    121   ATSFontRef ats_font;
    122   ATSFontMetrics ats_metrics;
     121  CGFontRef cg_font;
     122  CTFontRef ct_font;
    123123  PangoFontMetrics *metrics;
    124124  PangoFontDescription *font_desc;
    125125  PangoLayout *layout;
     
    127127  PangoLanguage *language = pango_context_get_language (context);
    128128  const char *sample_str = pango_language_get_sample_string (language);
    129129
    130   ats_font = FMGetATSFontRefFromFont (pango_atsui_font_get_atsu_font_id (afont));
    131 
    132   ATSFontGetHorizontalMetrics (ats_font, kATSOptionFlagsDefault, &ats_metrics);
     130  cg_font = pango_atsui_font_get_cgfont (afont);
     131  ct_font = CTFontCreateWithGraphicsFont(cg_font, cafont->size, NULL, NULL);
    133132
    134133  metrics = pango_font_metrics_new ();
    135134
    136   metrics->ascent = ats_metrics.ascent * cafont->size * PANGO_SCALE;
    137   metrics->descent = -ats_metrics.descent * cafont->size * PANGO_SCALE;
     135  metrics->ascent = CTFontGetAscent(ct_font) * PANGO_SCALE;
     136  metrics->descent = -CTFontGetDescent(ct_font) * PANGO_SCALE;
    138137
    139   metrics->underline_position = ats_metrics.underlinePosition * cafont->size * PANGO_SCALE;
    140   metrics->underline_thickness = ats_metrics.underlineThickness * cafont->size * PANGO_SCALE;
     138  metrics->underline_position = CTFontGetUnderlinePosition(ct_font) * PANGO_SCALE;
     139  metrics->underline_thickness = CTFontGetUnderlineThickness(ct_font) * PANGO_SCALE;
    141140
    142141  metrics->strikethrough_position = metrics->ascent / 3;
    143   metrics->strikethrough_thickness = ats_metrics.underlineThickness * cafont->size * PANGO_SCALE;
     142  metrics->strikethrough_thickness = metrics->underline_thickness * PANGO_SCALE;
    144143
    145144  layout = pango_layout_new (context);
    146145  font_desc = pango_font_describe_with_absolute_size ((PangoFont *) font);
     
    155154
    156155  pango_font_description_free (font_desc);
    157156  g_object_unref (layout);
     157 
     158 
    158159
    159160  return metrics;
    160161}
     
    207208  PangoATSUIFont *afont;
    208209  CFStringRef cfstr;
    209210  ATSFontRef font_ref;
    210   ATSUFontID font_id;
     211  CGFontRef font_id;
    211212  double size;
    212213  double dpi;
    213214  double m;
     
    252253  if (font_ref == kATSFontRefUnspecified)
    253254    return NULL;
    254255
    255   font_id = FMGetFontFromATSFontRef (font_ref);
     256  font_id = CGFontCreateWithPlatformFont (&font_ref);
    256257  if (!font_id)
    257258    return NULL;
    258259
     
    263264  _pango_atsui_font_set_face (afont, face);
    264265
    265266  size = (double) pango_font_description_get_size (desc) / PANGO_SCALE;
    266   _pango_atsui_font_set_atsu_font_id (afont, font_id);
     267  _pango_atsui_font_set_cgfont (afont, font_id);
    267268
    268269  if (context)
    269270    {