New Ticket     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #17049: patch-pango-coretext.diff

File patch-pango-coretext.diff, 6.5 KB (added by pguyot@…, 4 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    {