Ticket #17049: pango-core_text.diff

File pango-core_text.diff, 7.7 KB (added by pguyot (Paul Guyot), 16 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