New Ticket     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #17049: pango-core_text.diff

File pango-core_text.diff, 7.7 KB (added by pguyot@…, 4 years ago)
  • files/patch-pango-coretext.diff

     
     1diff -ru modules/basic/basic-atsui.c modules/basic/basic-atsui.c 
     2--- modules/basic/basic-atsui.c 2008-07-05 20:34:52.000000000 +0200 
     3+++ modules/basic/basic-atsui.c 2008-10-30 11:35:37.000000000 +0100 
     4@@ -86,10 +86,10 @@ 
     5   const char *p; 
     6   PangoATSUIFont *afont = PANGO_ATSUI_FONT (font); 
     7   ATSUStyle style; 
     8-  ATSUFontID fontID; 
     9+  CGFontRef fontID; 
     10   ATSUAttributeTag styleTags[] = { kATSUFontTag }; 
     11   ATSUAttributeValuePtr styleValues[] = { &fontID }; 
     12-  ByteCount styleSizes[] = { sizeof (ATSUFontID) }; 
     13+  ByteCount styleSizes[] = { sizeof (CGFontRef) }; 
     14  
     15   utf16 = g_utf8_to_utf16 (text, length, NULL, &n16, NULL); 
     16  
     17@@ -97,7 +97,7 @@ 
     18   err = ATSUSetTextPointerLocation (text_layout, utf16, 0, n16, n16); 
     19  
     20   err = ATSUCreateStyle(&style); 
     21-  fontID = pango_atsui_font_get_atsu_font_id (afont); 
     22+  fontID = pango_atsui_font_get_cgfont (afont); 
     23  
     24   err = ATSUSetAttributes(style, 
     25                          sizeof(styleTags) / sizeof(styleTags[0]), 
     26diff -ru pango/pangoatsui-private.h pango/pangoatsui-private.h 
     27--- pango/pangoatsui-private.h  2008-07-05 20:34:52.000000000 +0200 
     28+++ pango/pangoatsui-private.h  2008-10-30 11:34:51.000000000 +0100 
     29@@ -93,8 +93,8 @@ 
     30 gpointer              _pango_atsui_font_get_context_key      (PangoATSUIFont    *afont); 
     31 void                  _pango_atsui_font_set_context_key      (PangoATSUIFont    *afont, 
     32                                                               gpointer           context_key); 
     33-void                  _pango_atsui_font_set_atsu_font_id     (PangoATSUIFont    *font, 
     34-                                                              ATSUFontID         font_id); 
     35+void                  _pango_atsui_font_set_cgfont           (PangoATSUIFont    *font, 
     36+                                                              CGFontRef         font_id); 
     37  
     38 G_END_DECLS 
     39  
     40diff -ru pango/pangoatsui.c pango/pangoatsui.c 
     41--- pango/pangoatsui.c  2008-08-22 09:50:54.000000000 +0200 
     42+++ pango/pangoatsui.c  2008-10-30 11:02:32.000000000 +0100 
     43@@ -32,7 +32,7 @@ 
     44   PangoFontDescription *desc; 
     45   gpointer context_key; 
     46  
     47-  ATSUFontID font_id; 
     48+  CGFontRef font_id; 
     49  
     50   PangoFontMap *fontmap; 
     51 }; 
     52@@ -176,8 +176,8 @@ 
     53 } 
     54  
     55 void 
     56-_pango_atsui_font_set_atsu_font_id (PangoATSUIFont *font, 
     57-                                    ATSUFontID      font_id) 
     58+_pango_atsui_font_set_cgfont (PangoATSUIFont *font, 
     59+                                    CGFontRef      font_id) 
     60 { 
     61   PangoATSUIFontPrivate *priv = font->priv; 
     62  
     63@@ -185,17 +185,17 @@ 
     64 } 
     65  
     66 /** 
     67- * pango_atsui_font_get_atsu_font_id: 
     68+ * pango_atsui_font_get_cgfont: 
     69  * @font: A #PangoATSUIFont 
     70  * 
     71- * Returns the ATSUFontID of a font. 
     72+ * Returns the CGFontRef of a font. 
     73  * 
     74- * Return value: the ATSUFontID associated to @font. 
     75+ * Return value: the CGFontRef associated to @font. 
     76  * 
     77  * Since: 1.18 
     78  */ 
     79-ATSUFontID 
     80-pango_atsui_font_get_atsu_font_id (PangoATSUIFont *font) 
     81+CGFontRef 
     82+pango_atsui_font_get_cgfont (PangoATSUIFont *font) 
     83 { 
     84   PangoATSUIFontPrivate *priv = font->priv; 
     85  
     86diff -ru pango/pangoatsui.h pango/pangoatsui.h 
     87--- pango/pangoatsui.h  2008-07-05 20:34:52.000000000 +0200 
     88+++ pango/pangoatsui.h  2008-10-30 11:34:26.000000000 +0100 
     89@@ -68,7 +68,7 @@ 
     90  
     91 #endif /* PANGO_ENABLE_BACKEND */ 
     92  
     93-ATSUFontID pango_atsui_font_get_atsu_font_id (PangoATSUIFont *font); 
     94+CGFontRef pango_atsui_font_get_cgfont (PangoATSUIFont *font); 
     95  
     96 #endif /* PANGO_ENABLE_ENGINE || PANGO_ENABLE_BACKEND */ 
     97  
     98diff -ru pango/pangocairo-atsuifont.c pango/pangocairo-atsuifont.c 
     99--- pango/pangocairo-atsuifont.c        2008-07-05 20:34:52.000000000 +0200 
     100+++ pango/pangocairo-atsuifont.c        2008-10-30 11:33:44.000000000 +0100 
     101@@ -82,10 +82,10 @@ 
     102 pango_cairo_atsui_font_create_font_face (PangoCairoFont *font) 
     103 { 
     104   PangoATSUIFont *afont = (PangoATSUIFont *) (font); 
     105-  ATSUFontID font_id; 
     106+  CGFontRef font_id; 
     107  
     108-  font_id = pango_atsui_font_get_atsu_font_id (afont); 
     109-  return cairo_quartz_font_face_create_for_atsu_font_id (font_id); 
     110+  font_id = pango_atsui_font_get_cgfont (afont); 
     111+  return cairo_quartz_font_face_create_for_cgfont (font_id); 
     112 } 
     113  
     114 static int 
     115@@ -118,8 +118,8 @@ 
     116 { 
     117   PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) font; 
     118   PangoATSUIFont *afont = (PangoATSUIFont *) font; 
     119-  ATSFontRef ats_font; 
     120-  ATSFontMetrics ats_metrics; 
     121+  CGFontRef cg_font; 
     122+  CTFontRef ct_font; 
     123   PangoFontMetrics *metrics; 
     124   PangoFontDescription *font_desc; 
     125   PangoLayout *layout; 
     126@@ -127,20 +127,19 @@ 
     127   PangoLanguage *language = pango_context_get_language (context); 
     128   const char *sample_str = pango_language_get_sample_string (language); 
     129  
     130-  ats_font = FMGetATSFontRefFromFont (pango_atsui_font_get_atsu_font_id (afont)); 
     131- 
     132-  ATSFontGetHorizontalMetrics (ats_font, kATSOptionFlagsDefault, &ats_metrics); 
     133+  cg_font = pango_atsui_font_get_cgfont (afont); 
     134+  ct_font = CTFontCreateWithGraphicsFont(cg_font, cafont->size, NULL, NULL); 
     135  
     136   metrics = pango_font_metrics_new (); 
     137  
     138-  metrics->ascent = ats_metrics.ascent * cafont->size * PANGO_SCALE; 
     139-  metrics->descent = -ats_metrics.descent * cafont->size * PANGO_SCALE; 
     140+  metrics->ascent = CTFontGetAscent(ct_font) * PANGO_SCALE; 
     141+  metrics->descent = -CTFontGetAscent(ct_font) * PANGO_SCALE; 
     142  
     143-  metrics->underline_position = ats_metrics.underlinePosition * cafont->size * PANGO_SCALE; 
     144-  metrics->underline_thickness = ats_metrics.underlineThickness * cafont->size * PANGO_SCALE; 
     145+  metrics->underline_position = CTFontGetUnderlinePosition(ct_font) * PANGO_SCALE; 
     146+  metrics->underline_thickness = CTFontGetUnderlineThickness(ct_font) * PANGO_SCALE; 
     147  
     148   metrics->strikethrough_position = metrics->ascent / 3; 
     149-  metrics->strikethrough_thickness = ats_metrics.underlineThickness * cafont->size * PANGO_SCALE; 
     150+  metrics->strikethrough_thickness = metrics->underline_thickness; 
     151  
     152   layout = pango_layout_new (context); 
     153   font_desc = pango_font_describe_with_absolute_size ((PangoFont *) font); 
     154@@ -155,6 +154,8 @@ 
     155  
     156   pango_font_description_free (font_desc); 
     157   g_object_unref (layout); 
     158 
     159 
     160  
     161   return metrics; 
     162 } 
     163@@ -207,7 +208,7 @@ 
     164   PangoATSUIFont *afont; 
     165   CFStringRef cfstr; 
     166   ATSFontRef font_ref; 
     167-  ATSUFontID font_id; 
     168+  CGFontRef font_id; 
     169   double size; 
     170   double dpi; 
     171   double m; 
     172@@ -252,7 +253,7 @@ 
     173   if (font_ref == kATSFontRefUnspecified) 
     174     return NULL; 
     175  
     176-  font_id = FMGetFontFromATSFontRef (font_ref); 
     177+  font_id = CGFontCreateWithPlatformFont (&font_ref); 
     178   if (!font_id) 
     179     return NULL; 
     180  
     181@@ -263,7 +264,7 @@ 
     182   _pango_atsui_font_set_face (afont, face); 
     183  
     184   size = (double) pango_font_description_get_size (desc) / PANGO_SCALE; 
     185-  _pango_atsui_font_set_atsu_font_id (afont, font_id); 
     186+  _pango_atsui_font_set_cgfont (afont, font_id); 
     187  
     188   if (context) 
     189     { 
  • Portfile

     
    44 
    55name                    pango 
    66version                 1.22.0 
     7revision                1 
    78set branch              [join [lrange [split ${version} .] 0 1] .] 
    89categories              x11 
    910maintainers             ryandesign 
     
    7778        --without-x 
    7879} 
    7980 
     81variant core_text description "Use CoreText and Cairo CGFont API instead of ATSUI (required for 64bits architectures, only works on 10.5" { 
     82    patchfiles-append patch-pango-coretext.diff 
     83} 
     84 
     85if {[variant_isset universal] && [lsearch -regexp ${universal_archs} ppc64|x86_64]} { 
     86    variant_set core_text 
     87} 
     88 
    8089post-destroot { 
    8190    if {[variant_isset no_x11]} { 
    8291        xinstall -d ${destroot}${prefix}/etc/pango