gtk2 0.90.4-x86-mingw32 → 0.90.5-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/Rakefile +3 -4
- data/ext/gtk2/extconf.rb +8 -0
- data/lib/1.8/gtk2.so +0 -0
- data/lib/1.9/gtk2.so +0 -0
- data/vendor/local/bin/gtk-demo.exe +0 -0
- data/vendor/local/bin/gtk-query-immodules-2.0.exe +0 -0
- data/vendor/local/bin/gtk-update-icon-cache.exe +0 -0
- data/vendor/local/bin/libgailutil-18.dll +0 -0
- data/vendor/local/bin/libgdk-win32-2.0-0.dll +0 -0
- data/vendor/local/bin/libgtk-win32-2.0-0.dll +0 -0
- data/vendor/local/bin/libpango-1.0-0.dll +0 -0
- data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
- data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
- data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
- data/vendor/local/bin/pango-querymodules.exe +0 -0
- data/vendor/local/bin/pango-view.exe +0 -0
- data/vendor/local/bin/pkg-config.exe +0 -0
- data/vendor/local/etc/gtk-2.0/gtk.immodules +1 -1
- data/vendor/local/etc/pango/pango.modules +1 -1
- data/vendor/local/gtk+-bundle_2.22.0-20101016_win32.README.txt +29 -0
- data/vendor/local/include/pango-1.0/pango/pango-enum-types.h +2 -2
- data/vendor/local/include/pango-1.0/pango/pango-features.h +2 -2
- data/vendor/local/include/pixman-1/pixman-version.h +50 -0
- data/vendor/local/include/pixman-1/pixman.h +936 -0
- data/vendor/local/lib/gailutil.lib +0 -0
- data/vendor/local/lib/gdk-win32-2.0.lib +0 -0
- data/vendor/local/lib/gtk-2.0/2.10.0/engines/libpixmap.dll +0 -0
- data/vendor/local/lib/gtk-2.0/2.10.0/engines/libwimp.dll +0 -0
- data/vendor/local/lib/gtk-2.0/modules/libgail.dll +0 -0
- data/vendor/local/lib/gtk-win32-2.0.lib +0 -0
- data/vendor/local/lib/libgailutil.dll.a +0 -0
- data/vendor/local/lib/libgdk-win32-2.0.dll.a +0 -0
- data/vendor/local/lib/libgtk-win32-2.0.dll.a +0 -0
- data/vendor/local/lib/libpango-1.0.dll.a +0 -0
- data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
- data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
- data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
- data/vendor/local/lib/libpixman-1.a +0 -0
- data/vendor/local/lib/pango-1.0.lib +0 -0
- data/vendor/local/lib/pangocairo-1.0.lib +0 -0
- data/vendor/local/lib/pangoft2-1.0.lib +0 -0
- data/vendor/local/lib/pangowin32-1.0.lib +0 -0
- data/vendor/local/lib/pkgconfig/gail.pc +1 -1
- data/vendor/local/lib/pkgconfig/gdk-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/gdk-win32-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/gtk+-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/gtk+-win32-2.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/pango.pc +2 -2
- data/vendor/local/lib/pkgconfig/pangocairo.pc +2 -2
- data/vendor/local/lib/pkgconfig/pangoft2.pc +2 -2
- data/vendor/local/lib/pkgconfig/pangowin32.pc +2 -2
- data/vendor/local/lib/pkgconfig/pixman-1.pc +11 -0
- data/vendor/local/manifest/gtk+-bundle_2.22.0-20101016_win32.mft +2910 -0
- data/vendor/local/manifest/{pango-dev_1.28.1-2_win32.mft → pango-dev_1.28.3-1_win32.mft} +5 -5
- data/vendor/local/manifest/{pango_1.28.1-2_win32.mft → pango_1.28.3-1_win32.mft} +2 -2
- data/vendor/local/share/aclocal/pkg.m4 +155 -0
- data/vendor/local/share/doc/gtk+-bundle_2.22.0-20101016_win32/components.lst +28 -0
- data/vendor/local/share/doc/{pango-1.28.1 → pango-1.28.3}/COPYING +0 -0
- data/vendor/local/share/doc/{pango-dev-1.28.1 → pango-dev-1.28.3}/COPYING +0 -0
- data/vendor/local/share/gtk-doc/html/pango/PangoEngineLang.html +44 -50
- data/vendor/local/share/gtk-doc/html/pango/PangoEngineShape.html +45 -51
- data/vendor/local/share/gtk-doc/html/pango/PangoFcDecoder.html +44 -61
- data/vendor/local/share/gtk-doc/html/pango/PangoFcFont.html +89 -101
- data/vendor/local/share/gtk-doc/html/pango/PangoFcFontMap.html +173 -171
- data/vendor/local/share/gtk-doc/html/pango/PangoMarkupFormat.html +6 -27
- data/vendor/local/share/gtk-doc/html/pango/index-1.10.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.12.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.14.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.16.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.18.html +5 -26
- data/vendor/local/share/gtk-doc/html/pango/index-1.2.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.20.html +5 -26
- data/vendor/local/share/gtk-doc/html/pango/index-1.22.html +5 -26
- data/vendor/local/share/gtk-doc/html/pango/index-1.24.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.26.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.28.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.4.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index-1.6.html +6 -27
- data/vendor/local/share/gtk-doc/html/pango/index-1.8.html +22 -43
- data/vendor/local/share/gtk-doc/html/pango/index-all.html +70 -91
- data/vendor/local/share/gtk-doc/html/pango/index-deprecated.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/index.html +5 -26
- data/vendor/local/share/gtk-doc/html/pango/index.sgml +31 -30
- data/vendor/local/share/gtk-doc/html/pango/lowlevel.html +6 -27
- data/vendor/local/share/gtk-doc/html/pango/pango-ATSUI-Fonts.html +20 -39
- data/vendor/local/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +73 -88
- data/vendor/local/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +405 -320
- data/vendor/local/share/gtk-doc/html/pango/pango-Coverage-Maps.html +85 -97
- data/vendor/local/share/gtk-doc/html/pango/pango-Engines.html +69 -84
- data/vendor/local/share/gtk-doc/html/pango/pango-Fonts.html +695 -645
- data/vendor/local/share/gtk-doc/html/pango/pango-FreeType-Fonts-and-Rendering.html +225 -228
- data/vendor/local/share/gtk-doc/html/pango/pango-Glyph-Storage.html +523 -494
- data/vendor/local/share/gtk-doc/html/pango/pango-Layout-Objects.html +819 -742
- data/vendor/local/share/gtk-doc/html/pango/pango-Miscellaneous-Utilities.html +203 -204
- data/vendor/local/share/gtk-doc/html/pango/pango-Modules.html +58 -75
- data/vendor/local/share/gtk-doc/html/pango/pango-OpenType-Font-Handling.html +422 -405
- data/vendor/local/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +144 -142
- data/vendor/local/share/gtk-doc/html/pango/pango-Tab-Stops.html +120 -130
- data/vendor/local/share/gtk-doc/html/pango/pango-Text-Attributes.html +618 -576
- data/vendor/local/share/gtk-doc/html/pango/pango-Text-Processing.html +397 -384
- data/vendor/local/share/gtk-doc/html/pango/pango-Version-Checking.html +44 -58
- data/vendor/local/share/gtk-doc/html/pango/pango-Vertical-Text.html +73 -84
- data/vendor/local/share/gtk-doc/html/pango/pango-Win32-Fonts-and-Rendering.html +220 -217
- data/vendor/local/share/gtk-doc/html/pango/pango-X-Fonts-and-Rendering.html +303 -302
- data/vendor/local/share/gtk-doc/html/pango/pango-Xft-Fonts-and-Rendering.html +293 -292
- data/vendor/local/share/gtk-doc/html/pango/pango-hierarchy.html +5 -26
- data/vendor/local/share/gtk-doc/html/pango/pango-pango-renderer.html +1009 -0
- data/vendor/local/share/gtk-doc/html/pango/pango-querymodules.html +7 -28
- data/vendor/local/share/gtk-doc/html/pango/pango.devhelp +68 -68
- data/vendor/local/share/gtk-doc/html/pango/pango.devhelp2 +72 -72
- data/vendor/local/share/gtk-doc/html/pango/pango.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/rendering.html +3 -24
- data/vendor/local/share/gtk-doc/html/pango/style.css +21 -13
- data/vendor/local/share/gtk-doc/html/pango/tools.html +3 -24
- data/vendor/local/share/man/man1/pango-querymodules.1 +2 -2
- data/vendor/local/share/man/man1/pango-view.1 +1 -1
- data/vendor/local/src/tml/packaging/{gtk+_2.22.0-1_win32.log → gtk+_2.22.0-2_win32.log} +1835 -1832
- data/vendor/local/src/tml/packaging/{gtk+_2.22.0-1_win32.sh → gtk+_2.22.0-2_win32.sh} +26 -1
- data/vendor/local/src/tml/packaging/{pango_1.28.1-2_win32.log → pango_1.28.3-1_win32.log} +293 -413
- data/vendor/local/src/tml/packaging/pango_1.28.3-1_win32.sh +56 -0
- data/vendor/local/src/tml/packaging/pixman_0.18.4-2_win32.log +291 -0
- data/vendor/local/src/tml/packaging/pixman_0.18.4-2_win32.sh +141 -0
- data/vendor/local/src/tml/packaging/pkg-config_0.23-3_win32.log +215 -0
- data/vendor/local/src/tml/packaging/pkg-config_0.23-3_win32.sh +278 -0
- metadata +3323 -3325
- data/ext/gtk2/Makefile +0 -163
- data/ext/gtk2/rbgdkkeysyms.h +0 -1708
- data/ext/gtk2/rbgtkinits.c +0 -469
- data/vendor/local/manifest/cairo-dev_1.10.0-1_win32.mft +0 -83
- data/vendor/local/manifest/cairo_1.10.0-1_win32.mft +0 -5
- data/vendor/local/manifest/expat-dev_2.0.1-1_win32.mft +0 -10
- data/vendor/local/manifest/expat_2.0.1-1_win32.mft +0 -2
- data/vendor/local/manifest/fontconfig-dev_2.8.0-2_win32.mft +0 -387
- data/vendor/local/manifest/fontconfig_2.8.0-2_win32.mft +0 -3
- data/vendor/local/manifest/freetype-dev_2.4.2-1_win32.mft +0 -56
- data/vendor/local/manifest/freetype_2.4.2-1_win32.mft +0 -2
- data/vendor/local/manifest/gtk+-dev_2.22.0-1_win32.mft +0 -947
- data/vendor/local/manifest/gtk+_2.22.0-1_win32.mft +0 -225
- data/vendor/local/manifest/libpng-dev_1.4.3-1_win32.mft +0 -15
- data/vendor/local/manifest/libpng_1.4.3-1_win32.mft +0 -2
- data/vendor/local/share/gtk-doc/html/pango/PangoRenderer.html +0 -1002
- data/vendor/local/src/tml/packaging/pango_1.28.1-2_win32.sh +0 -579
@@ -1,579 +0,0 @@
|
|
1
|
-
# This is a shell script that calls functions and scripts from
|
2
|
-
# tml@iki.fi's personal work environment. It is not expected to be
|
3
|
-
# usable unmodified by others, and is included only for reference.
|
4
|
-
|
5
|
-
MOD=pango
|
6
|
-
VER=1.28.1
|
7
|
-
REV=2
|
8
|
-
ARCH=win32
|
9
|
-
|
10
|
-
THIS=${MOD}_${VER}-${REV}_${ARCH}
|
11
|
-
|
12
|
-
RUNZIP=${MOD}_${VER}-${REV}_${ARCH}.zip
|
13
|
-
DEVZIP=${MOD}-dev_${VER}-${REV}_${ARCH}.zip
|
14
|
-
|
15
|
-
HEX=`echo $THIS | md5sum | cut -d' ' -f1`
|
16
|
-
TARGET=c:/devel/target/$HEX
|
17
|
-
|
18
|
-
usedev
|
19
|
-
usemsvs6
|
20
|
-
|
21
|
-
(
|
22
|
-
|
23
|
-
set -x
|
24
|
-
|
25
|
-
patch --verbose --fuzz=0 -p1 <<'EOF'
|
26
|
-
commit ed4732969da2219e36c5c74193886637439bb2e9
|
27
|
-
Author: Tor Lillqvist <tml@iki.fi>
|
28
|
-
Date: Sat Sep 11 15:17:19 2010 +0300
|
29
|
-
|
30
|
-
Improve performance on Windows especially for non-Latin scripts
|
31
|
-
|
32
|
-
The use of Uniscribe script caches was decidedly suboptimal. Use one
|
33
|
-
persistent SCRIPT_CACHE per Win32 font and script.
|
34
|
-
|
35
|
-
Patch by by David E. Hollingsworth and Fredrik Corneliusson,
|
36
|
-
from bug #621869.
|
37
|
-
|
38
|
-
diff --git a/modules/basic/basic-win32.c b/modules/basic/basic-win32.c
|
39
|
-
index ecb139e..e1ef376 100644
|
40
|
-
--- a/modules/basic/basic-win32.c
|
41
|
-
+++ b/modules/basic/basic-win32.c
|
42
|
-
@@ -33,6 +33,8 @@
|
43
|
-
#include "pango-engine.h"
|
44
|
-
#include "pango-utils.h"
|
45
|
-
|
46
|
-
+extern HFONT _pango_win32_font_get_hfont (PangoFont *font);
|
47
|
-
+
|
48
|
-
/* No extra fields needed */
|
49
|
-
typedef PangoEngineShape BasicEngineWin32;
|
50
|
-
typedef PangoEngineShapeClass BasicEngineWin32Class ;
|
51
|
-
@@ -495,8 +497,7 @@ itemize_shape_and_place (PangoFont *font,
|
52
|
-
wchar_t *wtext,
|
53
|
-
int wlen,
|
54
|
-
const PangoAnalysis *analysis,
|
55
|
-
- PangoGlyphString *glyphs,
|
56
|
-
- SCRIPT_CACHE *script_cache)
|
57
|
-
+ PangoGlyphString *glyphs)
|
58
|
-
{
|
59
|
-
int i;
|
60
|
-
int item, nitems, item_step;
|
61
|
-
@@ -505,6 +506,11 @@ itemize_shape_and_place (PangoFont *font,
|
62
|
-
SCRIPT_STATE state;
|
63
|
-
SCRIPT_ITEM items[100];
|
64
|
-
double scale = pango_win32_font_get_metrics_factor (font);
|
65
|
-
+ HFONT hfont = _pango_win32_font_get_hfont (font);
|
66
|
-
+ static GHashTable *script_cache_hash = NULL;
|
67
|
-
+
|
68
|
-
+ if (!script_cache_hash)
|
69
|
-
+ script_cache_hash = g_hash_table_new (g_int64_hash, g_int64_equal);
|
70
|
-
|
71
|
-
memset (&control, 0, sizeof (control));
|
72
|
-
memset (&state, 0, sizeof (state));
|
73
|
-
@@ -551,9 +557,11 @@ itemize_shape_and_place (PangoFont *font,
|
74
|
-
int advances[1000];
|
75
|
-
GOFFSET offsets[1000];
|
76
|
-
ABC abc;
|
77
|
-
- int script = items[item].a.eScript;
|
78
|
-
+ gint32 script = items[item].a.eScript;
|
79
|
-
int ng;
|
80
|
-
int char_offset;
|
81
|
-
+ SCRIPT_CACHE *script_cache;
|
82
|
-
+ gint64 font_and_script_key;
|
83
|
-
|
84
|
-
memset (advances, 0, sizeof (advances));
|
85
|
-
memset (offsets, 0, sizeof (offsets));
|
86
|
-
@@ -579,9 +587,33 @@ itemize_shape_and_place (PangoFont *font,
|
87
|
-
items[item].a.fNoGlyphIndex ? " fNoGlyphIndex" : "",
|
88
|
-
items[item].iCharPos, items[item+1].iCharPos-1, itemlen);
|
89
|
-
#endif
|
90
|
-
+ /* Create a hash key based on hfont and script engine */
|
91
|
-
+ font_and_script_key = (((gint64) ((gint32) hfont)) << 32) | script;
|
92
|
-
+
|
93
|
-
+ /* Get the script cache for this hfont and script */
|
94
|
-
+ script_cache = g_hash_table_lookup (script_cache_hash, &font_and_script_key);
|
95
|
-
+ if (!script_cache)
|
96
|
-
+ {
|
97
|
-
+ gint64 *key_n;
|
98
|
-
+ SCRIPT_CACHE *new_script_cache;
|
99
|
-
+
|
100
|
-
+ key_n = g_new (gint64, 1);
|
101
|
-
+ *key_n = font_and_script_key;
|
102
|
-
+
|
103
|
-
+ new_script_cache = g_new0 (SCRIPT_CACHE, 1);
|
104
|
-
+ script_cache = new_script_cache;
|
105
|
-
+
|
106
|
-
+ /* Insert the new value */
|
107
|
-
+ g_hash_table_insert (script_cache_hash, key_n, new_script_cache);
|
108
|
-
+
|
109
|
-
+#ifdef BASIC_WIN32_DEBUGGING
|
110
|
-
+ if (pango_win32_debug)
|
111
|
-
+ g_print (" New SCRIPT_CACHE for font %p and script %d\n", hfont, script);
|
112
|
-
+#endif
|
113
|
-
+ }
|
114
|
-
|
115
|
-
items[item].a.fRTL = analysis->level % 2;
|
116
|
-
- if ((*script_shape) (hdc, &script_cache[script],
|
117
|
-
+ if ((*script_shape) (hdc, script_cache,
|
118
|
-
wtext + items[item].iCharPos, itemlen,
|
119
|
-
G_N_ELEMENTS (iglyphs),
|
120
|
-
&items[item].a,
|
121
|
-
@@ -611,7 +643,7 @@ itemize_shape_and_place (PangoFont *font,
|
122
|
-
nglyphs, glyphs->log_clusters + ng,
|
123
|
-
char_offset);
|
124
|
-
|
125
|
-
- if ((*script_place) (hdc, &script_cache[script], iglyphs, nglyphs,
|
126
|
-
+ if ((*script_place) (hdc, script_cache, iglyphs, nglyphs,
|
127
|
-
visattrs, &items[item].a,
|
128
|
-
advances, offsets, &abc))
|
129
|
-
{
|
130
|
-
@@ -671,9 +703,7 @@ uniscribe_shape (PangoFont *font,
|
131
|
-
{
|
132
|
-
wchar_t *wtext;
|
133
|
-
long wlen;
|
134
|
-
- int i;
|
135
|
-
gboolean retval = TRUE;
|
136
|
-
- SCRIPT_CACHE script_cache[100];
|
137
|
-
|
138
|
-
if (!pango_win32_font_select_font (font, hdc))
|
139
|
-
return FALSE;
|
140
|
-
@@ -684,11 +714,7 @@ uniscribe_shape (PangoFont *font,
|
141
|
-
|
142
|
-
if (retval)
|
143
|
-
{
|
144
|
-
- memset (script_cache, 0, sizeof (script_cache));
|
145
|
-
- retval = itemize_shape_and_place (font, hdc, wtext, wlen, analysis, glyphs, script_cache);
|
146
|
-
- for (i = 0; i < G_N_ELEMENTS (script_cache); i++)
|
147
|
-
- if (script_cache[i])
|
148
|
-
- (*script_free_cache)(&script_cache[i]);
|
149
|
-
+ retval = itemize_shape_and_place (font, hdc, wtext, wlen, analysis, glyphs);
|
150
|
-
}
|
151
|
-
|
152
|
-
if (retval)
|
153
|
-
diff --git a/pango/pangowin32-private.h b/pango/pangowin32-private.h
|
154
|
-
index 9f35823..73df2e9 100644
|
155
|
-
--- a/pango/pangowin32-private.h
|
156
|
-
+++ b/pango/pangowin32-private.h
|
157
|
-
@@ -129,11 +129,8 @@ struct _PangoWin32Font
|
158
|
-
|
159
|
-
PangoFontMap *fontmap;
|
160
|
-
|
161
|
-
- /* Written by pango_win32_get_hfont: */
|
162
|
-
+ /* Written by _pango_win32_font_get_hfont: */
|
163
|
-
HFONT hfont;
|
164
|
-
- gint tm_ascent;
|
165
|
-
- gint tm_descent;
|
166
|
-
- gint tm_overhang;
|
167
|
-
|
168
|
-
PangoWin32Face *win32face;
|
169
|
-
|
170
|
-
@@ -275,6 +272,8 @@ gboolean _pango_win32_get_name_record (HDC hdc,
|
171
|
-
gint i,
|
172
|
-
struct name_record *record);
|
173
|
-
|
174
|
-
+HFONT _pango_win32_font_get_hfont (PangoFont *font);
|
175
|
-
+
|
176
|
-
extern HDC _pango_win32_hdc;
|
177
|
-
extern OSVERSIONINFO _pango_win32_os_version_info;
|
178
|
-
extern gboolean _pango_win32_debug;
|
179
|
-
diff --git a/pango/pangowin32.c b/pango/pangowin32.c
|
180
|
-
index 1f8c1d2..30ec8b6 100644
|
181
|
-
--- a/pango/pangowin32.c
|
182
|
-
+++ b/pango/pangowin32.c
|
183
|
-
@@ -74,7 +74,6 @@ static gboolean pango_win32_font_real_select_font (PangoFont *font,
|
184
|
-
static void pango_win32_font_real_done_font (PangoFont *font);
|
185
|
-
static double pango_win32_font_real_get_metrics_factor (PangoFont *font);
|
186
|
-
|
187
|
-
-static HFONT pango_win32_get_hfont (PangoFont *font);
|
188
|
-
static void pango_win32_get_item_properties (PangoItem *item,
|
189
|
-
PangoUnderline *uline,
|
190
|
-
PangoAttrColor *fg_color,
|
191
|
-
@@ -82,12 +81,11 @@ static void pango_win32_get_item_properties (PangoItem
|
192
|
-
PangoAttrColor *bg_color,
|
193
|
-
gboolean *bg_set);
|
194
|
-
|
195
|
-
-static HFONT
|
196
|
-
-pango_win32_get_hfont (PangoFont *font)
|
197
|
-
+HFONT
|
198
|
-
+_pango_win32_font_get_hfont (PangoFont *font)
|
199
|
-
{
|
200
|
-
PangoWin32Font *win32font = (PangoWin32Font *)font;
|
201
|
-
PangoWin32FontCache *cache;
|
202
|
-
- TEXTMETRIC tm;
|
203
|
-
|
204
|
-
if (!win32font)
|
205
|
-
return NULL;
|
206
|
-
@@ -105,13 +103,6 @@ pango_win32_get_hfont (PangoFont *font)
|
207
|
-
g_free (face_utf8);
|
208
|
-
return NULL;
|
209
|
-
}
|
210
|
-
-
|
211
|
-
- SelectObject (_pango_win32_hdc, win32font->hfont);
|
212
|
-
- GetTextMetrics (_pango_win32_hdc, &tm);
|
213
|
-
-
|
214
|
-
- win32font->tm_overhang = tm.tmOverhang;
|
215
|
-
- win32font->tm_descent = tm.tmDescent;
|
216
|
-
- win32font->tm_ascent = tm.tmAscent;
|
217
|
-
}
|
218
|
-
|
219
|
-
return win32font->hfont;
|
220
|
-
@@ -261,7 +252,7 @@ pango_win32_render (HDC hdc,
|
221
|
-
if (glyphs->num_glyphs == 0)
|
222
|
-
return;
|
223
|
-
|
224
|
-
- hfont = pango_win32_get_hfont (font);
|
225
|
-
+ hfont = _pango_win32_font_get_hfont (font);
|
226
|
-
if (!hfont)
|
227
|
-
return;
|
228
|
-
|
229
|
-
@@ -440,6 +431,7 @@ pango_win32_font_get_glyph_extents (PangoFont *font,
|
230
|
-
PangoWin32Font *win32font = (PangoWin32Font *)font;
|
231
|
-
guint16 glyph_index = glyph;
|
232
|
-
GLYPHMETRICS gm;
|
233
|
-
+ TEXTMETRIC tm;
|
234
|
-
guint32 res;
|
235
|
-
HFONT hfont;
|
236
|
-
MAT2 m = {{0,1}, {0,0}, {0,0}, {0,1}};
|
237
|
-
@@ -465,7 +457,7 @@ pango_win32_font_get_glyph_extents (PangoFont *font,
|
238
|
-
|
239
|
-
memset (&gm, 0, sizeof (gm));
|
240
|
-
|
241
|
-
- hfont = pango_win32_get_hfont (font);
|
242
|
-
+ hfont = _pango_win32_font_get_hfont (font);
|
243
|
-
SelectObject (_pango_win32_hdc, hfont);
|
244
|
-
/* FIXME: (Alex) This constant reuse of _pango_win32_hdc is
|
245
|
-
not thread-safe */
|
246
|
-
@@ -491,10 +483,11 @@ pango_win32_font_get_glyph_extents (PangoFont *font,
|
247
|
-
info->ink_rect.y = - PANGO_SCALE * gm.gmptGlyphOrigin.y;
|
248
|
-
info->ink_rect.height = PANGO_SCALE * gm.gmBlackBoxY;
|
249
|
-
|
250
|
-
+ GetTextMetrics (_pango_win32_hdc, &tm);
|
251
|
-
info->logical_rect.x = 0;
|
252
|
-
info->logical_rect.width = PANGO_SCALE * gm.gmCellIncX;
|
253
|
-
- info->logical_rect.y = - PANGO_SCALE * win32font->tm_ascent;
|
254
|
-
- info->logical_rect.height = PANGO_SCALE * (win32font->tm_ascent + win32font->tm_descent);
|
255
|
-
+ info->logical_rect.y = - PANGO_SCALE * tm.tmAscent;
|
256
|
-
+ info->logical_rect.height = PANGO_SCALE * (tm.tmAscent + tm.tmDescent);
|
257
|
-
|
258
|
-
g_hash_table_insert (win32font->glyph_info, GUINT_TO_POINTER(glyph), info);
|
259
|
-
}
|
260
|
-
@@ -562,7 +555,7 @@ pango_win32_font_get_metrics (PangoFont *font,
|
261
|
-
info->sample_str = sample_str;
|
262
|
-
info->metrics = metrics = pango_font_metrics_new ();
|
263
|
-
|
264
|
-
- hfont = pango_win32_get_hfont (font);
|
265
|
-
+ hfont = _pango_win32_font_get_hfont (font);
|
266
|
-
if (hfont != NULL)
|
267
|
-
{
|
268
|
-
PangoCoverage *coverage;
|
269
|
-
@@ -626,7 +619,7 @@ static gboolean
|
270
|
-
pango_win32_font_real_select_font (PangoFont *font,
|
271
|
-
HDC hdc)
|
272
|
-
{
|
273
|
-
- HFONT hfont = pango_win32_get_hfont (font);
|
274
|
-
+ HFONT hfont = _pango_win32_font_get_hfont (font);
|
275
|
-
|
276
|
-
if (!hfont)
|
277
|
-
return FALSE;
|
278
|
-
@@ -1611,7 +1604,7 @@ font_has_name_in (PangoFont *font,
|
279
|
-
if (cjkv == PANGO_WIN32_COVERAGE_UNSPEC)
|
280
|
-
return TRUE;
|
281
|
-
|
282
|
-
- hfont = pango_win32_get_hfont (font);
|
283
|
-
+ hfont = _pango_win32_font_get_hfont (font);
|
284
|
-
oldhfont = SelectObject (_pango_win32_hdc, hfont);
|
285
|
-
|
286
|
-
if (!_pango_win32_get_name_header (_pango_win32_hdc, &header))
|
287
|
-
diff --git a/pango/pangowin32.def b/pango/pangowin32.def
|
288
|
-
index 13b6e8b..ec8e8b2 100644
|
289
|
-
--- a/pango/pangowin32.def
|
290
|
-
+++ b/pango/pangowin32.def
|
291
|
-
@@ -3,6 +3,7 @@ EXPORTS
|
292
|
-
_pango_win32_make_matching_logfontw
|
293
|
-
_pango_win32_font_get_type
|
294
|
-
_pango_win32_font_map_get_type
|
295
|
-
+ _pango_win32_font_get_hfont
|
296
|
-
pango_win32_font_cache_free
|
297
|
-
pango_win32_font_cache_load
|
298
|
-
pango_win32_font_cache_loadw
|
299
|
-
|
300
|
-
commit 75f0db89f7a4d0bd2948d27134913b9f2af02533
|
301
|
-
Author: Tor Lillqvist <tml@iki.fi>
|
302
|
-
Date: Sat Sep 11 14:52:28 2010 +0300
|
303
|
-
|
304
|
-
Reduce DLL hijack risk and simplify code in basic-win32 module
|
305
|
-
|
306
|
-
Dont load usp10.dll dynamically with LoadLibrary(). Just link to the
|
307
|
-
Uniscribe API directly. MinGW comes with an import library so no
|
308
|
-
problem with that either. The Uniscribe DLL is present on all versions
|
309
|
-
of Windows we care for.
|
310
|
-
|
311
|
-
diff --git a/modules/basic/Makefile.am b/modules/basic/Makefile.am
|
312
|
-
index acd0c4d..93604c9 100644
|
313
|
-
--- a/modules/basic/Makefile.am
|
314
|
-
+++ b/modules/basic/Makefile.am
|
315
|
-
@@ -47,7 +47,8 @@ endif
|
316
|
-
endif
|
317
|
-
|
318
|
-
pango_basic_win32_la_LDFLAGS = -module $(MODULE_LIBTOOL_OPTIONS)
|
319
|
-
-pango_basic_win32_la_LIBADD = $(pangowin32libs) -lgdi32
|
320
|
-
+pango_basic_win32_la_LIBADD = $(pangowin32libs) -lgdi32 -lusp10
|
321
|
-
+libpango_basic_win32_la_LIBADD = -lgdi32 -lusp10
|
322
|
-
pango_basic_win32_la_SOURCES = basic-win32.c
|
323
|
-
libpango_basic_win32_la_SOURCES = basic-win32.c
|
324
|
-
libpango_basic_win32_la_CFLAGS = -DPANGO_MODULE_PREFIX=_pango_basic_win32
|
325
|
-
diff --git a/modules/basic/basic-win32.c b/modules/basic/basic-win32.c
|
326
|
-
index e1ef376..a7f1c90 100644
|
327
|
-
--- a/modules/basic/basic-win32.c
|
328
|
-
+++ b/modules/basic/basic-win32.c
|
329
|
-
@@ -45,55 +45,8 @@ static gboolean pango_win32_debug = FALSE;
|
330
|
-
|
331
|
-
#include <usp10.h>
|
332
|
-
|
333
|
-
-static gboolean have_uniscribe = FALSE;
|
334
|
-
-
|
335
|
-
static HDC hdc;
|
336
|
-
|
337
|
-
-typedef HRESULT (WINAPI *pScriptGetProperties) (const SCRIPT_PROPERTIES ***,
|
338
|
-
- int *);
|
339
|
-
-
|
340
|
-
-typedef HRESULT (WINAPI *pScriptItemize) (const WCHAR *,
|
341
|
-
- int,
|
342
|
-
- int,
|
343
|
-
- const SCRIPT_CONTROL *,
|
344
|
-
- const SCRIPT_STATE *,
|
345
|
-
- SCRIPT_ITEM *,
|
346
|
-
- int *);
|
347
|
-
-
|
348
|
-
-typedef HRESULT (WINAPI *pScriptShape) (HDC,
|
349
|
-
- SCRIPT_CACHE *,
|
350
|
-
- const WCHAR *,
|
351
|
-
- int,
|
352
|
-
- int,
|
353
|
-
- SCRIPT_ANALYSIS *,
|
354
|
-
- WORD *,
|
355
|
-
- WORD *,
|
356
|
-
- SCRIPT_VISATTR *,
|
357
|
-
- int *);
|
358
|
-
-
|
359
|
-
-typedef HRESULT (WINAPI *pScriptPlace) (HDC,
|
360
|
-
- SCRIPT_CACHE *,
|
361
|
-
- const WORD *,
|
362
|
-
- int,
|
363
|
-
- const SCRIPT_VISATTR *,
|
364
|
-
- SCRIPT_ANALYSIS *,
|
365
|
-
- int *,
|
366
|
-
- GOFFSET *,
|
367
|
-
- ABC *);
|
368
|
-
-
|
369
|
-
-typedef HRESULT (WINAPI *pScriptFreeCache) (SCRIPT_CACHE *);
|
370
|
-
-
|
371
|
-
-typedef HRESULT (WINAPI *pScriptIsComplex) (WCHAR *,
|
372
|
-
- int,
|
373
|
-
- DWORD);
|
374
|
-
-
|
375
|
-
-static pScriptGetProperties script_get_properties;
|
376
|
-
-static pScriptItemize script_itemize;
|
377
|
-
-static pScriptShape script_shape;
|
378
|
-
-static pScriptPlace script_place;
|
379
|
-
-static pScriptFreeCache script_free_cache;
|
380
|
-
-static pScriptIsComplex script_is_complex;
|
381
|
-
-
|
382
|
-
#ifdef BASIC_WIN32_DEBUGGING
|
383
|
-
static const SCRIPT_PROPERTIES **scripts;
|
384
|
-
static int nscripts;
|
385
|
-
@@ -523,8 +476,8 @@ itemize_shape_and_place (PangoFont *font,
|
386
|
-
g_print (G_STRLOC ": ScriptItemize: uDefaultLanguage:%04x uBidiLevel:%d\n",
|
387
|
-
control.uDefaultLanguage, state.uBidiLevel);
|
388
|
-
#endif
|
389
|
-
- if ((*script_itemize) (wtext, wlen, G_N_ELEMENTS (items), &control, NULL,
|
390
|
-
- items, &nitems))
|
391
|
-
+ if (ScriptItemize (wtext, wlen, G_N_ELEMENTS (items), &control, NULL,
|
392
|
-
+ items, &nitems))
|
393
|
-
{
|
394
|
-
#ifdef BASIC_WIN32_DEBUGGING
|
395
|
-
if (pango_win32_debug)
|
396
|
-
@@ -613,14 +566,14 @@ itemize_shape_and_place (PangoFont *font,
|
397
|
-
}
|
398
|
-
|
399
|
-
items[item].a.fRTL = analysis->level % 2;
|
400
|
-
- if ((*script_shape) (hdc, script_cache,
|
401
|
-
- wtext + items[item].iCharPos, itemlen,
|
402
|
-
- G_N_ELEMENTS (iglyphs),
|
403
|
-
- &items[item].a,
|
404
|
-
- iglyphs,
|
405
|
-
- log_clusters,
|
406
|
-
- visattrs,
|
407
|
-
- &nglyphs))
|
408
|
-
+ if (ScriptShape (hdc, script_cache,
|
409
|
-
+ wtext + items[item].iCharPos, itemlen,
|
410
|
-
+ G_N_ELEMENTS (iglyphs),
|
411
|
-
+ &items[item].a,
|
412
|
-
+ iglyphs,
|
413
|
-
+ log_clusters,
|
414
|
-
+ visattrs,
|
415
|
-
+ &nglyphs))
|
416
|
-
{
|
417
|
-
#ifdef BASIC_WIN32_DEBUGGING
|
418
|
-
if (pango_win32_debug)
|
419
|
-
@@ -643,9 +596,9 @@ itemize_shape_and_place (PangoFont *font,
|
420
|
-
nglyphs, glyphs->log_clusters + ng,
|
421
|
-
char_offset);
|
422
|
-
|
423
|
-
- if ((*script_place) (hdc, script_cache, iglyphs, nglyphs,
|
424
|
-
- visattrs, &items[item].a,
|
425
|
-
- advances, offsets, &abc))
|
426
|
-
+ if (ScriptPlace (hdc, script_cache, iglyphs, nglyphs,
|
427
|
-
+ visattrs, &items[item].a,
|
428
|
-
+ advances, offsets, &abc))
|
429
|
-
{
|
430
|
-
#ifdef BASIC_WIN32_DEBUGGING
|
431
|
-
if (pango_win32_debug)
|
432
|
-
@@ -752,7 +705,7 @@ text_is_simple (const char *text,
|
433
|
-
if (wtext == NULL)
|
434
|
-
return TRUE;
|
435
|
-
|
436
|
-
- retval = ((*script_is_complex) (wtext, wlen, SIC_COMPLEX) == S_FALSE);
|
437
|
-
+ retval = (ScriptIsComplex (wtext, wlen, SIC_COMPLEX) == S_FALSE);
|
438
|
-
|
439
|
-
g_free (wtext);
|
440
|
-
|
441
|
-
@@ -782,8 +735,7 @@ basic_engine_shape (PangoEngineShape *engine,
|
442
|
-
g_return_if_fail (length >= 0);
|
443
|
-
g_return_if_fail (analysis != NULL);
|
444
|
-
|
445
|
-
- if (have_uniscribe &&
|
446
|
-
- !text_is_simple (text, length) &&
|
447
|
-
+ if (!text_is_simple (text, length) &&
|
448
|
-
uniscribe_shape (font, text, length, analysis, glyphs))
|
449
|
-
return;
|
450
|
-
|
451
|
-
@@ -872,33 +824,10 @@ basic_engine_shape (PangoEngineShape *engine,
|
452
|
-
static void
|
453
|
-
init_uniscribe (void)
|
454
|
-
{
|
455
|
-
- HMODULE usp10_dll;
|
456
|
-
-
|
457
|
-
- have_uniscribe = FALSE;
|
458
|
-
-
|
459
|
-
- if ((usp10_dll = LoadLibrary ("usp10.dll")) != NULL)
|
460
|
-
- {
|
461
|
-
- (script_get_properties = (pScriptGetProperties)
|
462
|
-
- GetProcAddress (usp10_dll, "ScriptGetProperties")) &&
|
463
|
-
- (script_itemize = (pScriptItemize)
|
464
|
-
- GetProcAddress (usp10_dll, "ScriptItemize")) &&
|
465
|
-
- (script_shape = (pScriptShape)
|
466
|
-
- GetProcAddress (usp10_dll, "ScriptShape")) &&
|
467
|
-
- (script_place = (pScriptPlace)
|
468
|
-
- GetProcAddress (usp10_dll, "ScriptPlace")) &&
|
469
|
-
- (script_free_cache = (pScriptFreeCache)
|
470
|
-
- GetProcAddress (usp10_dll, "ScriptFreeCache")) &&
|
471
|
-
- (script_is_complex = (pScriptIsComplex)
|
472
|
-
- GetProcAddress (usp10_dll, "ScriptIsComplex")) &&
|
473
|
-
- (have_uniscribe = TRUE);
|
474
|
-
- }
|
475
|
-
- if (have_uniscribe)
|
476
|
-
- {
|
477
|
-
#ifdef BASIC_WIN32_DEBUGGING
|
478
|
-
- (*script_get_properties) (&scripts, &nscripts);
|
479
|
-
+ ScriptGetProperties (&scripts, &nscripts);
|
480
|
-
#endif
|
481
|
-
- hdc = pango_win32_get_dc ();
|
482
|
-
- }
|
483
|
-
+ hdc = pango_win32_get_dc ();
|
484
|
-
}
|
485
|
-
|
486
|
-
static void
|
487
|
-
@@ -935,28 +864,25 @@ PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
|
488
|
-
script_engines[0].scripts = basic_scripts;
|
489
|
-
script_engines[0].n_scripts = G_N_ELEMENTS (basic_scripts);
|
490
|
-
|
491
|
-
- if (have_uniscribe)
|
492
|
-
- {
|
493
|
-
#if 0
|
494
|
-
- int i;
|
495
|
-
- GArray *ranges = g_array_new (FALSE, FALSE, sizeof (PangoEngineRange));
|
496
|
-
+ int i;
|
497
|
-
+ GArray *ranges = g_array_new (FALSE, FALSE, sizeof (PangoEngineRange));
|
498
|
-
|
499
|
-
- /* Walk through scripts supported by the Uniscribe implementation on this
|
500
|
-
- * machine, and mark corresponding Unicode ranges.
|
501
|
-
- */
|
502
|
-
- for (i = 0; i < nscripts; i++)
|
503
|
-
- {
|
504
|
-
- }
|
505
|
-
+ /* Walk through scripts supported by the Uniscribe implementation on this
|
506
|
-
+ * machine, and mark corresponding Unicode ranges.
|
507
|
-
+ */
|
508
|
-
+ for (i = 0; i < nscripts; i++)
|
509
|
-
+ {
|
510
|
-
+ }
|
511
|
-
|
512
|
-
- /* Sort range array */
|
513
|
-
- g_array_sort (ranges, compare_range);
|
514
|
-
- script_engines[0].ranges = ranges;
|
515
|
-
- script_engines[0].n_ranges = ranges->len;
|
516
|
-
+ /* Sort range array */
|
517
|
-
+ g_array_sort (ranges, compare_range);
|
518
|
-
+ script_engines[0].ranges = ranges;
|
519
|
-
+ script_engines[0].n_ranges = ranges->len;
|
520
|
-
#else
|
521
|
-
- script_engines[0].scripts = uniscribe_scripts;
|
522
|
-
- script_engines[0].n_scripts = G_N_ELEMENTS (uniscribe_scripts);
|
523
|
-
+ script_engines[0].scripts = uniscribe_scripts;
|
524
|
-
+ script_engines[0].n_scripts = G_N_ELEMENTS (uniscribe_scripts);
|
525
|
-
#endif
|
526
|
-
- }
|
527
|
-
|
528
|
-
*engines = script_engines;
|
529
|
-
*n_engines = G_N_ELEMENTS (script_engines);
|
530
|
-
EOF
|
531
|
-
|
532
|
-
patch -p0 --verbose <<'EOF'
|
533
|
-
--- modules/basic/Makefile.in
|
534
|
-
+++ modules/basic/Makefile.in
|
535
|
-
@@ -101,7 +101,7 @@
|
536
|
-
$(libpango_basic_fc_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
537
|
-
$(LDFLAGS) -o $@
|
538
|
-
@HAVE_FREETYPE_TRUE@@INCLUDE_BASIC_FC_TRUE@am_libpango_basic_fc_la_rpath =
|
539
|
-
-libpango_basic_win32_la_LIBADD =
|
540
|
-
+libpango_basic_win32_la_LIBADD = -lgdi32 -lusp10
|
541
|
-
am_libpango_basic_win32_la_OBJECTS = \
|
542
|
-
libpango_basic_win32_la-basic-win32.lo
|
543
|
-
libpango_basic_win32_la_OBJECTS = \
|
544
|
-
EOF
|
545
|
-
|
546
|
-
DEPS=`latest --arch=${ARCH} glib pkg-config zlib libpng pixman cairo expat fontconfig freetype`
|
547
|
-
PROXY_LIBINTL=`latest --arch=${ARCH} proxy-libintl`
|
548
|
-
|
549
|
-
PKG_CONFIG_PATH=/dummy
|
550
|
-
for D in $DEPS; do
|
551
|
-
PKG_CONFIG_PATH=/devel/dist/${ARCH}/$D/lib/pkgconfig:$PKG_CONFIG_PATH
|
552
|
-
PATH=/devel/dist/${ARCH}/$D/bin:$PATH
|
553
|
-
done
|
554
|
-
|
555
|
-
patch -p0 <<\EOF
|
556
|
-
EOF
|
557
|
-
|
558
|
-
lt_cv_deplibs_check_method='pass_all' \
|
559
|
-
CC='gcc -mtune=pentium3 -mthreads' \
|
560
|
-
LDFLAGS="-L/devel/dist/${ARCH}/${PROXY_LIBINTL}/lib -Wl,--exclude-libs=libintl.a -Wl,--enable-auto-image-base" \
|
561
|
-
CFLAGS=-O2 \
|
562
|
-
./configure --enable-debug=yes --disable-gtk-doc --without-x --prefix=c:/devel/target/$HEX --enable-explicit-deps=no --with-included-modules=yes &&
|
563
|
-
|
564
|
-
PATH=/devel/target/$HEX/bin:.libs:$PATH make install &&
|
565
|
-
|
566
|
-
./pango-zip.sh &&
|
567
|
-
|
568
|
-
cd $TARGET
|
569
|
-
|
570
|
-
zip /tmp/${MOD}-dev-${VER}.zip bin/pango-view.exe
|
571
|
-
zip /tmp/${MOD}-dev-${VER}.zip share/man/man1/*.1
|
572
|
-
|
573
|
-
mv /tmp/${MOD}-${VER}.zip /tmp/$RUNZIP &&
|
574
|
-
mv /tmp/${MOD}-dev-${VER}.zip /tmp/$DEVZIP
|
575
|
-
|
576
|
-
) 2>&1 | tee /devel/src/tml/packaging/$THIS.log
|
577
|
-
|
578
|
-
(cd /devel && zip /tmp/$DEVZIP src/tml/packaging/$THIS.{sh,log}) &&
|
579
|
-
manifestify /tmp/$RUNZIP /tmp/$DEVZIP
|