Index: files/patch-pango-coretext.diff
===================================================================
--- files/patch-pango-coretext.diff	(revision 0)
+++ files/patch-pango-coretext.diff	(revision 0)
@@ -0,0 +1,189 @@
+diff -ru modules/basic/basic-atsui.c modules/basic/basic-atsui.c
+--- modules/basic/basic-atsui.c	2008-07-05 20:34:52.000000000 +0200
++++ modules/basic/basic-atsui.c	2008-10-30 11:35:37.000000000 +0100
+@@ -86,10 +86,10 @@
+   const char *p;
+   PangoATSUIFont *afont = PANGO_ATSUI_FONT (font);
+   ATSUStyle style;
+-  ATSUFontID fontID;
++  CGFontRef fontID;
+   ATSUAttributeTag styleTags[] = { kATSUFontTag };
+   ATSUAttributeValuePtr styleValues[] = { &fontID };
+-  ByteCount styleSizes[] = { sizeof (ATSUFontID) };
++  ByteCount styleSizes[] = { sizeof (CGFontRef) };
+ 
+   utf16 = g_utf8_to_utf16 (text, length, NULL, &n16, NULL);
+ 
+@@ -97,7 +97,7 @@
+   err = ATSUSetTextPointerLocation (text_layout, utf16, 0, n16, n16);
+ 
+   err = ATSUCreateStyle(&style);
+-  fontID = pango_atsui_font_get_atsu_font_id (afont);
++  fontID = pango_atsui_font_get_cgfont (afont);
+ 
+   err = ATSUSetAttributes(style,
+ 			  sizeof(styleTags) / sizeof(styleTags[0]),
+diff -ru pango/pangoatsui-private.h pango/pangoatsui-private.h
+--- pango/pangoatsui-private.h	2008-07-05 20:34:52.000000000 +0200
++++ pango/pangoatsui-private.h	2008-10-30 11:34:51.000000000 +0100
+@@ -93,8 +93,8 @@
+ gpointer              _pango_atsui_font_get_context_key      (PangoATSUIFont    *afont);
+ void                  _pango_atsui_font_set_context_key      (PangoATSUIFont    *afont,
+                                                               gpointer           context_key);
+-void                  _pango_atsui_font_set_atsu_font_id     (PangoATSUIFont    *font,
+-                                                              ATSUFontID         font_id);
++void                  _pango_atsui_font_set_cgfont           (PangoATSUIFont    *font,
++                                                              CGFontRef         font_id);
+ 
+ G_END_DECLS
+ 
+diff -ru pango/pangoatsui.c pango/pangoatsui.c
+--- pango/pangoatsui.c	2008-08-22 09:50:54.000000000 +0200
++++ pango/pangoatsui.c	2008-10-30 11:02:32.000000000 +0100
+@@ -32,7 +32,7 @@
+   PangoFontDescription *desc;
+   gpointer context_key;
+ 
+-  ATSUFontID font_id;
++  CGFontRef font_id;
+ 
+   PangoFontMap *fontmap;
+ };
+@@ -176,8 +176,8 @@
+ }
+ 
+ void
+-_pango_atsui_font_set_atsu_font_id (PangoATSUIFont *font,
+-                                    ATSUFontID      font_id)
++_pango_atsui_font_set_cgfont (PangoATSUIFont *font,
++                                    CGFontRef      font_id)
+ {
+   PangoATSUIFontPrivate *priv = font->priv;
+ 
+@@ -185,17 +185,17 @@
+ }
+ 
+ /**
+- * pango_atsui_font_get_atsu_font_id:
++ * pango_atsui_font_get_cgfont:
+  * @font: A #PangoATSUIFont
+  *
+- * Returns the ATSUFontID of a font.
++ * Returns the CGFontRef of a font.
+  *
+- * Return value: the ATSUFontID associated to @font.
++ * Return value: the CGFontRef associated to @font.
+  *
+  * Since: 1.18
+  */
+-ATSUFontID
+-pango_atsui_font_get_atsu_font_id (PangoATSUIFont *font)
++CGFontRef
++pango_atsui_font_get_cgfont (PangoATSUIFont *font)
+ {
+   PangoATSUIFontPrivate *priv = font->priv;
+ 
+diff -ru pango/pangoatsui.h pango/pangoatsui.h
+--- pango/pangoatsui.h	2008-07-05 20:34:52.000000000 +0200
++++ pango/pangoatsui.h	2008-10-30 11:34:26.000000000 +0100
+@@ -68,7 +68,7 @@
+ 
+ #endif /* PANGO_ENABLE_BACKEND */
+ 
+-ATSUFontID pango_atsui_font_get_atsu_font_id (PangoATSUIFont *font);
++CGFontRef pango_atsui_font_get_cgfont (PangoATSUIFont *font);
+ 
+ #endif /* PANGO_ENABLE_ENGINE || PANGO_ENABLE_BACKEND */
+ 
+diff -ru pango/pangocairo-atsuifont.c pango/pangocairo-atsuifont.c
+--- pango/pangocairo-atsuifont.c	2008-07-05 20:34:52.000000000 +0200
++++ pango/pangocairo-atsuifont.c	2008-10-30 11:33:44.000000000 +0100
+@@ -82,10 +82,10 @@
+ pango_cairo_atsui_font_create_font_face (PangoCairoFont *font)
+ {
+   PangoATSUIFont *afont = (PangoATSUIFont *) (font);
+-  ATSUFontID font_id;
++  CGFontRef font_id;
+ 
+-  font_id = pango_atsui_font_get_atsu_font_id (afont);
+-  return cairo_quartz_font_face_create_for_atsu_font_id (font_id);
++  font_id = pango_atsui_font_get_cgfont (afont);
++  return cairo_quartz_font_face_create_for_cgfont (font_id);
+ }
+ 
+ static int
+@@ -118,8 +118,8 @@
+ {
+   PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) font;
+   PangoATSUIFont *afont = (PangoATSUIFont *) font;
+-  ATSFontRef ats_font;
+-  ATSFontMetrics ats_metrics;
++  CGFontRef cg_font;
++  CTFontRef ct_font;
+   PangoFontMetrics *metrics;
+   PangoFontDescription *font_desc;
+   PangoLayout *layout;
+@@ -127,20 +127,19 @@
+   PangoLanguage *language = pango_context_get_language (context);
+   const char *sample_str = pango_language_get_sample_string (language);
+ 
+-  ats_font = FMGetATSFontRefFromFont (pango_atsui_font_get_atsu_font_id (afont));
+-
+-  ATSFontGetHorizontalMetrics (ats_font, kATSOptionFlagsDefault, &ats_metrics);
++  cg_font = pango_atsui_font_get_cgfont (afont);
++  ct_font = CTFontCreateWithGraphicsFont(cg_font, cafont->size, NULL, NULL);
+ 
+   metrics = pango_font_metrics_new ();
+ 
+-  metrics->ascent = ats_metrics.ascent * cafont->size * PANGO_SCALE;
+-  metrics->descent = -ats_metrics.descent * cafont->size * PANGO_SCALE;
++  metrics->ascent = CTFontGetAscent(ct_font) * PANGO_SCALE;
++  metrics->descent = -CTFontGetAscent(ct_font) * PANGO_SCALE;
+ 
+-  metrics->underline_position = ats_metrics.underlinePosition * cafont->size * PANGO_SCALE;
+-  metrics->underline_thickness = ats_metrics.underlineThickness * cafont->size * PANGO_SCALE;
++  metrics->underline_position = CTFontGetUnderlinePosition(ct_font) * PANGO_SCALE;
++  metrics->underline_thickness = CTFontGetUnderlineThickness(ct_font) * PANGO_SCALE;
+ 
+   metrics->strikethrough_position = metrics->ascent / 3;
+-  metrics->strikethrough_thickness = ats_metrics.underlineThickness * cafont->size * PANGO_SCALE;
++  metrics->strikethrough_thickness = metrics->underline_thickness;
+ 
+   layout = pango_layout_new (context);
+   font_desc = pango_font_describe_with_absolute_size ((PangoFont *) font);
+@@ -155,6 +154,8 @@
+ 
+   pango_font_description_free (font_desc);
+   g_object_unref (layout);
++  
++  
+ 
+   return metrics;
+ }
+@@ -207,7 +208,7 @@
+   PangoATSUIFont *afont;
+   CFStringRef cfstr;
+   ATSFontRef font_ref;
+-  ATSUFontID font_id;
++  CGFontRef font_id;
+   double size;
+   double dpi;
+   double m;
+@@ -252,7 +253,7 @@
+   if (font_ref == kATSFontRefUnspecified)
+     return NULL;
+ 
+-  font_id = FMGetFontFromATSFontRef (font_ref);
++  font_id = CGFontCreateWithPlatformFont (&font_ref);
+   if (!font_id)
+     return NULL;
+ 
+@@ -263,7 +264,7 @@
+   _pango_atsui_font_set_face (afont, face);
+ 
+   size = (double) pango_font_description_get_size (desc) / PANGO_SCALE;
+-  _pango_atsui_font_set_atsu_font_id (afont, font_id);
++  _pango_atsui_font_set_cgfont (afont, font_id);
+ 
+   if (context)
+     {
Index: Portfile
===================================================================
--- Portfile	(revision 41242)
+++ Portfile	(working copy)
@@ -4,6 +4,7 @@
 
 name                    pango
 version                 1.22.0
+revision                1
 set branch              [join [lrange [split ${version} .] 0 1] .]
 categories              x11
 maintainers             ryandesign
@@ -77,6 +78,14 @@
         --without-x
 }
 
+variant core_text description "Use CoreText and Cairo CGFont API instead of ATSUI (required for 64bits architectures, only works on 10.5" {
+    patchfiles-append patch-pango-coretext.diff
+}
+
+if {[variant_isset universal] && [lsearch -regexp ${universal_archs} ppc64|x86_64]} {
+    variant_set core_text
+}
+
 post-destroot {
     if {[variant_isset no_x11]} {
         xinstall -d ${destroot}${prefix}/etc/pango
