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

- Instead of forming clusters immediately, only do it if we are reversing
  the text.  We'd need a separate bit to indicate cluster start then.

- Right now, BTW, for non-native direction runs, we get the cluster wrong...
  Should do min(input-glyphs.cluster)

- Fix TT 'kern' on/off and GPOS interaction (move kerning before GPOS)

- Do proper rounding when scaling from font space?

- Adjust default features for vertical text:

  * vrt2 preferred over vert; but if user selects vert, turn vrt2 off?
  * vkrn (enables vpal?  vpal anyone???);
  * valt: "This feature is mutually exclusive with all other glyph-height features (e.g. vhal and vpal),
          which should be turned off when it's applied. It deactivates the kern."


API issues to fix before 1.0:
============================

- Figure out how many .so objects, how to link, etc

- Add hb-cairo glue

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

- hb_shape() currently does a bit more than hb_ot_shape().  Shouldn't.

- Add glib GBoxedType stuff and introspection


API to add (maybe after 1.0):
============================

- BCP 47 language handling / API (language_matches?)

- Add hb_face_get_glyph_count()?

- Add hb_font_create_linear()?

- Add hb_shape_plan()/hb_shape_execute()

- Add query API for aalt-like features?

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

- Full matrix instead of scale?

- Add segmentation API

- Add hb-fribidi?


hb-view enhancements:
====================

- Add --format
- Add --width, --height, --auto-size, --align, etc?
- Port to GOption, --help
- Add XML and JSON formats


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

- ot-layout enumeration API (needs font)

- Finish test-shape.c


Optimizations:
=============

- Avoid allocating blob objects internally for for_data() faces?

- Add caching layer to hb-ft
