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

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

- fail_shaper that always fails.

- Make map in setup_masks() const, etc.

- Warn at compile time (and runtime with HB_DEBUG?) if no Unicode / font
  funcs found / set.

- In hb_shape(), assert if direction is INVALID.

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

- Do proper rounding when scaling from font space?  May be a non-issue.

- Misc features:
  * init/medi/fina/isol for non-cursive scripts
  * vkna,hkna etc for kana, etc

- Move non-native direction and normalization handling to the generic non-OT
  layer, such that other backends can use (Uniscribe doesn't need this).

- Convert NBSP into space glyph.

- Synthetic GDEF.

- Add Pango backend?

- Add ICUlayout backend?

- Add ICUlayout API?

- Add Old HarfBuzz backend?

- Add Old HarfBuzz API?

- Add namespace to avoid type clashes with Windows


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

- Add default font_funcs / Unicode funcs API and to utils.

- Add init_func to font_funcs.  Adjust ft.

- Add pkg-config files for glue codes (harfbuzz-glib, etc)

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

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

- blob_from_file?


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

- Language to/from script.

- Buffer (de)serialize API ala hb-shape?

- Move feature parsing from util into the library

- Add hb-cairo glue

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

- Add glib GBoxedType stuff and introspection

- Add Uniscribe face / font get API

- BCP 47 language handling / API (language_matches?)

- Add hb_face_get_glyph_count()?

- Add hb_font_create_linear()?

- Add hb_shape_plan()/hb_shape_planned()

- Add query 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:
===============================

- --output-format should list available formats.
- Add --width, --height, --auto-size, --align, etc?
- Add XML and JSON formats to hb-shape
- --features="init=medi=isol=fina=0"


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_set_t

- hb_cache_t and relatives


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

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

- Add caching layer to hb-ft?

- Cache feature-less shape plans internally on the face.
