4a1ad1963ba7e8e1d5b15107562abeb843b2520d
[framework/uifw/harfbuzz.git] / TODO
1 General fixes:
2 =============
3
4 - Warn at compile time (and runtime with HB_DEBUG?) if no Unicode / font
5   funcs found / set.
6
7 - In hb_shape(), assert if direction is INVALID.
8
9 - Fix TT 'kern' on/off and GPOS interaction (move kerning before GPOS).
10
11 - Do proper rounding when scaling from font space?  May be a non-issue.
12
13 - Misc features:
14   * init/medi/fina/isol for non-cursive scripts
15   * vkna,hkna etc for kana, etc
16
17 - Move non-native direction and normalization handling to the generic non-OT
18   layer, such that uniscribe and other backends can use.
19
20 - Uniscribe backend needs to enforce one direction only, otherwise cluster
21   values can confuse the user.
22
23 - GSUB ligation should call merge_clusters().  Also other places.
24
25 - Convert NBSP into space glyph.
26
27 - Synthetic GDEF.
28
29 - Add Pango backend?
30
31 - Add ICUlayout backend?
32
33 - Add ICUlayout API?
34
35 - Add Old HarfBuzz backend?
36
37 - Add Old HarfBuzz API?
38
39
40 API issues to fix before 1.0:
41 ============================
42
43 - Add default font_funcs / Unicode funcs API and to utils.
44
45 - Add init_func to font_funcs.  Adjust ft.
46
47 - Add pkg-config files for glue codes (harfbuzz-glib, etc)
48
49 - Figure out how many .so objects, how to link, etc
50
51 - 'const' for getter APIs? (use mutable internally)
52
53 - blob_from_file?
54
55
56 API additions
57 =============
58
59 - Buffer (de)serialize API ala hb-shape?
60
61 - Move feature parsing from util into the library
62
63 - Add hb-cairo glue
64
65 - Add sanitize API (and a cached version, that saves result on blob user-data)
66
67 - Add glib GBoxedType stuff and introspection
68
69 - Add Uniscribe face / font get API
70
71 - BCP 47 language handling / API (language_matches?)
72
73 - Add hb_face_get_glyph_count()?
74
75 - Add hb_font_create_linear()?
76
77 - Add hb_shape_plan()/hb_shape_planned()
78
79 - Add query API for aalt-like features?
80
81 - SFNT api? get_num_faces? get_table_tags? (there's something in stash)
82
83 - Add segmentation API
84
85 - Add hb-fribidi glue?
86
87
88 hb-view / hb-shape enhancements:
89 ===============================
90
91 - Add --width, --height, --auto-size, --align, etc?
92 - Add XML and JSON formats to hb-shape
93 - --features="init=medi=isol=fina=0"
94
95
96 Tests to write:
97 ==============
98
99 - ot-layout enumeration API (needs font)
100
101 - Finish test-shape.c, grep for TODO
102
103 - Finish test-unicode.c, grep for TODO
104
105 - GObject, FreeType, etc
106
107 - hb_set_t
108
109 - hb_cache_t and relatives
110
111
112 Optimizations:
113 =============
114
115 - Avoid allocating blob objects internally for for_data() faces?
116
117 - Add caching layer to hb-ft?
118
119 - Cache feature-less shape plans internally on the face.