c++11 : ensure proper cleanup of hb_buffer_t * -> use const std::unique_ptr with custom deleter
c++11 : create items in place and avoid extra copying where appropriate