Ticket #1039: pango-test.py

File pango-test.py, 1.1 KB (added by Philip Taylor, 12 years ago)

pango layout test script

Line 
1# coding=utf-8
2
3import ctypes
4import pango
5import pangocairo
6
7context = pangocairo.cairo_font_map_get_default().create_context()
8
9fontdesc = pango.FontDescription('Deja Vu Sans 24')
10#fontdesc = pango.FontDescription('Tex Gyre Pagella 24')
11
12class PangoGlyphInfo(ctypes.Structure):
13 _fields_ = [
14 ("glyph", ctypes.c_uint),
15 ("geometry_width", ctypes.c_int),
16 ("geometry_x_offset", ctypes.c_int),
17 ("geometry_y_offset", ctypes.c_int),
18 ("attr", ctypes.c_uint)
19 ]
20
21class PangoGlyphString(ctypes.Structure):
22 _fields_ = [
23 ("num_glyphs", ctypes.c_int),
24 ("glyphs", ctypes.POINTER(PangoGlyphInfo)),
25 ("log_clusters", ctypes.c_void_p)
26 ]
27
28layout = pango.Layout(context)
29layout.set_font_description(fontdesc)
30layout.set_text('a á ā ā́ a')
31for (item, glyphs) in layout.get_line(0).runs:
32 glyphstr = ctypes.cast(hash(glyphs), ctypes.POINTER(PangoGlyphString))[0]
33 for i in range(glyphstr.num_glyphs):
34 glyph = glyphstr.glyphs[i]
35 print glyph.glyph, glyph.geometry_x_offset, glyph.geometry_y_offset
36