General fixes:
=============

- AAT 'morx' implementation.

- Return "safe-to-break" bit from shaping.

- Implement 'rand' feature.

- mask propagation? (when ligation, "or" the masks).


API issues:
===========

- API to accept a list of languages?

- Add init_func to font_funcs.  Adjust ft.

- 'const' for getter APIs? (use mutable internally)

- Remove hb_ot_shape_glyphs_closure()?


API additions
=============

- Language to/from script.

- blob_from_file?

- Add hb-cairo glue

- Add sanitize API (and a cached version, that saves result on blob user-data)

- BCP 47 language handling / API (language_matches?)

- Add hb_font_create_unscaled()?

- Add query / enumeration API for aalt-like features?

- SFNT api? get_num_faces? get_table_tags? (there's something in stash)

- Add segmentation API

- Add hb-fribidi glue?


hb-view / hb-shape enhancements:
===============================

- Add --width, --height, --auto-size, --ink-box, --align, etc?


Tests to write:
==============

- ot-layout enumeration API (needs font)

- Finish test-shape.c, grep for TODO

- Finish test-unicode.c, grep for TODO

- GObject, FreeType, etc

- hb_cache_t and relatives

- hb_feature_to/from_string
- hb_buffer_[sg]et_contents
