diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2012-11-15 16:23:21 -0800 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2012-11-15 16:23:21 -0800 |
commit | e05a999495e6575f7cebd7f35db087d964f11ef6 (patch) | |
tree | c759bf73a0c80bd4359fc6c64202b159bb3f3c8d /src/hb-font.cc | |
parent | aec89de5641fbe1c3031d63dd5f40ec99bf2a538 (diff) |
Add hb_face_[sg]et_glyph_count()
Diffstat (limited to 'src/hb-font.cc')
-rw-r--r-- | src/hb-font.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/hb-font.cc b/src/hb-font.cc index 06270325..b59fdeba 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -34,6 +34,7 @@ #include "hb-blob.h" #include "hb-open-file-private.hh" #include "hb-ot-head-table.hh" +#include "hb-ot-maxp-table.hh" #include "hb-cache-private.hh" @@ -520,6 +521,7 @@ static const hb_face_t _hb_face_nil = { 0, /* index */ 1000, /* upem */ + 0, /* num_glyphs */ { #define HB_SHAPER_IMPLEMENT(shaper) HB_SHAPER_DATA_INVALID, @@ -549,6 +551,7 @@ hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, face->destroy = destroy; face->upem = 0; + face->num_glyphs = (unsigned int) -1; return face; } @@ -736,7 +739,6 @@ hb_face_get_upem (hb_face_t *face) return face->get_upem (); } - void hb_face_t::load_upem (void) const { @@ -746,6 +748,31 @@ hb_face_t::load_upem (void) const hb_blob_destroy (head_blob); } +void +hb_face_set_glyph_count (hb_face_t *face, + unsigned int glyph_count) +{ + if (hb_object_is_inert (face)) + return; + + face->num_glyphs = glyph_count; +} + +unsigned int +hb_face_get_glyph_count (hb_face_t *face) +{ + return face->get_num_glyphs (); +} + +void +hb_face_t::load_num_glyphs (void) const +{ + hb_blob_t *maxp_blob = OT::Sanitizer<OT::maxp>::sanitize (reference_table (HB_OT_TAG_maxp)); + const OT::maxp *maxp_table = OT::Sanitizer<OT::maxp>::lock_instance (maxp_blob); + num_glyphs = maxp_table->get_num_glyphs (); + hb_blob_destroy (maxp_blob); +} + /* * hb_font_t |