1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
  | 
require 'formula'
class Pango < Formula
  homepage 'http://www.pango.org/'
  url 'http://ftp.gnome.org/pub/GNOME/sources/pango/1.32/pango-1.32.6.tar.xz'
  sha256 '8e9a3eadebf30a31640f2b3ae0fb455cf92d10d1cad246d0ffe72ec595905174'
  option 'without-x', 'Build without X11 support'
  depends_on 'pkg-config' => :build
  depends_on 'xz' => :build
  depends_on 'glib'
  depends_on 'harfbuzz'
  unless build.include? 'without-x'
    depends_on :x11
    # Needs fontconfig 2.10.91, which is newer than what XQuartz provides
    depends_on 'fontconfig'
  end
  # The Cairo library shipped with Lion contains a flaw that causes Graphviz
  # to segfault. See the following ticket for information:
  #   https://trac.macports.org/ticket/30370
  # We depend on our cairo on all platforms for consistency
  depends_on 'cairo'
  fails_with :llvm do
    build 2326
    cause "Undefined symbols when linking"
  end
  # Fixes hanging of inkscape, already upstream for next version.
  # https://bugs.launchpad.net/inkscape/+bug/1114392
  # http://git.gnome.org/browse/pango/commit/?id=10cc6557ba24239570ee9a7bcaa0a553aae9df95
  def patches
    DATA
  end
  def install
    args = %W[
      --disable-dependency-tracking
      --prefix=#{prefix}
      --enable-man
      --with-html-dir=#{share}/doc
      --disable-introspection
    ]
    if build.include? 'without-x'
      args << '--without-xft'
    else
      args << '--with-xft'
    end
    system "./configure", *args
    system "make"
    system "make install"
  end
  def test
    system "#{bin}/pango-querymodules", "--version"
  end
end
__END__
diff --git a/pango/pangoft2-render.c b/pango/pangoft2-render.c
index 60cf432..42923f4 100644
--- a/pango/pangoft2-render.c
+++ b/pango/pangoft2-render.c
@@ -210,7 +210,7 @@ pango_ft2_font_render_glyph (PangoFont *font,
       return box;
     }
-  face = pango_fc_font_lock_face (PANGO_FC_FONT (font));
+  face = pango_ft2_font_get_face (font);
   if (face)
     {
@@ -231,8 +231,6 @@ pango_ft2_font_render_glyph (PangoFont *font,
       rendered->bitmap_left = face->glyph->bitmap_left;
       rendered->bitmap_top = face->glyph->bitmap_top;
-      pango_fc_font_unlock_face (PANGO_FC_FONT (font));
-
       if (G_UNLIKELY (!rendered->bitmap.buffer)) {
         g_slice_free (PangoFT2RenderedGlyph, rendered);
	return NULL;
@@ -242,8 +240,6 @@ pango_ft2_font_render_glyph (PangoFont *font,
     }
   else
     {
-      pango_fc_font_unlock_face (PANGO_FC_FONT (font));
-
 generic_box:
       return  pango_ft2_font_render_box_glyph (PANGO_UNKNOWN_GLYPH_WIDTH,
					       PANGO_UNKNOWN_GLYPH_HEIGHT,
diff --git a/pango/pangoft2.c b/pango/pangoft2.c
index cbe1d21..dc6db5d 100644
--- a/pango/pangoft2.c
+++ b/pango/pangoft2.c
@@ -424,13 +424,12 @@ pango_ft2_font_get_kerning (PangoFont *font,
 static FT_Face
 pango_ft2_font_real_lock_face (PangoFcFont *font)
 {
-  return pango_fc_font_lock_face (font);
+  return pango_ft2_font_get_face ((PangoFont *)font);
 }
 static void
-pango_ft2_font_real_unlock_face (PangoFcFont *font)
+pango_ft2_font_real_unlock_face (PangoFcFont *font G_GNUC_UNUSED)
 {
-  pango_fc_font_unlock_face (font);
 }
 static gboolean
@@ -500,18 +499,12 @@ pango_ft2_font_get_coverage (PangoFont     *font,
 PangoGlyph
 pango_ft2_get_unknown_glyph (PangoFont *font)
 {
-  PangoFcFont *fc_font = PANGO_FC_FONT (font);
-  FT_Face face;
-  PangoGlyph glyph;
-
-  face = pango_fc_font_lock_face (fc_font);
+  FT_Face face = pango_ft2_font_get_face (font);
   if (face && FT_IS_SFNT (face))
     /* TrueType fonts have an 'unknown glyph' box on glyph index 0 */
-    glyph = 0;
+    return 0;
   else
-    glyph = PANGO_GLYPH_EMPTY;
-  pango_fc_font_unlock_face (fc_font);
-  return glyph;
+    return PANGO_GLYPH_EMPTY;
 }
 typedef struct
  |