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
|
Shaping
=======
Layout Driver
=============
The PangoLayout object is a highlevel driver that takes an attributed
string and produces lines of glyphs.
* Figure out better ways of doing line breaks. (This may involve
implementing the TeX/Raph x0-x1 stuff for line breaks.)
* Add spacing parameter as illustrated; this should be a quick
(10 minute) addition.
* Although PangoLayout isn't intended to handle large amounts
of text, it should be able to handle embedded "\n" and simple
multiple paragraphs. This could be done entirely within
pango_layout_check_lines()
* pango_layout_context_changed() is a hack. Either the context
should have change-notification, or else the layout should
make a copy of the context when the context is set.
* optimize right alignment for width == -1 and only a single
line. (Currently this causes a useless call to gtk_layout_get_extents.)
X rendering
===========
* Right now we assume a single resolution for all fonts on a display;
but in theory, the resolution could be per-screen. To solve
this, we would probably want to add a window argument to
pango_x_get_context() and then have some sort of X specific font
loading interface.
* It is not clear that X is interpreting the ink_rect the same way
as we are. There is a bit of fudging in the underline drawing
code to deal with this and make the underlines look symetric.
Other rendering engines
=======================
* Somebody should start working on a libart font-system / renderer
soon, to make sure that the interfaces are suitable.
* FreeType-2.0 support could be very interesting, with the OpenType
that it has.
Engines
=======
* Switch engines to be indentified by properties, instead
of hardcoded role/language. (?)
Language Modules
================
* It would be nice to have X based shapers for a few more scripts;
Hindi is one obvious need. (Actually, there may be a need for
a generic framework for Indic shapers to be developed. A
libpango-indic...)
* Once we have a libart renderer, porting Raph's devanagari shaper
to Pango and C (from Perl) would be a cool demo and test case.
* The clusters set by the current modules need to be set.
* Tamil module should be switched over to libunicode from utils.c stuff.
Documentation
=============
* Much or all of the X Fonts document from pango.org needs to be moved
into the API reference.
Fonts
=====
* Add handling for baseline adjustment
* pango_context_list_fonts() does not properly suppress duplicates
when multiple font maps are involved
General
=======
* Remove the extraneous font argument from the script_shape virtual function
in ShapeEngine.
* rename pango_context_set_size() to pango_context_set_font_size()
* settle on either _free or _destroy
* PangoAttrList currently takes the policy of "most recent wins"
when multiple attributes of the same type are present for a range.
It would map better on the TkText tag-based API if attributes
also had a depth/priority and "most recent wins" only applied
for attributes of the same priority.
* Add a "make test" target to examples/, add environment variables
to point to module and font alias files, remove the code that
loads these from the current directory. (There are security
implications with the current stuff)
* Report errors from functions, these errors include such things.
- Invalid string
- Font does not match
Probably the right thing to do here is to use something very close
to the GConf API ... see Havoc's GException proposal.
* Allow UTF8 strings with embedded NULLs.
* Write a small default shaping engine that only
draws a placeholder character ... and does that in
a way that always works.
* Finish coverting over from utils.c to Tom Tromey's libunicode.
Add the remaining useful functions from utils.c into libunicode.
* s/num_chars/n_chars/ etc. (Always use n_ as enumeration prefix)
* Underline attribute should be an enumeration (none/single/double/squiggle/low,
where low is below the ink rect - a style appropriate for underline
accelerators.)
|