Add maxp table
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 11 May 2011 14:31:33 +0000 (10:31 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 11 May 2011 14:31:33 +0000 (10:31 -0400)
Not used for anything right now.  Will use to get num_glyphs in the future.

src/Makefile.am
src/hb-ot-head-private.hh
src/hb-ot-layout.cc
src/hb-ot-maxp-private.hh [new file with mode: 0644]

index 73ac547..6115d6e 100644 (file)
@@ -25,6 +25,7 @@ HBSOURCES =  \
        hb-open-file-private.hh \
        hb-open-type-private.hh \
        hb-ot-head-private.hh \
+       hb-ot-maxp-private.hh \
        hb-private.hh \
        hb-shape.cc \
        hb-unicode-private.hh \
index 45015ca..436666f 100644 (file)
@@ -50,7 +50,6 @@ struct head
 
   inline bool sanitize (hb_sanitize_context_t *c) {
     TRACE_SANITIZE ();
-    /* Shall we check for magicNumber here?  Who cares? */
     return c->check_struct (this) && likely (version.major == 1);
   }
 
index 4f26e11..8398bba 100644 (file)
@@ -34,6 +34,7 @@
 #include "hb-ot-layout-gsub-private.hh"
 #include "hb-ot-layout-gpos-private.hh"
 #include "hb-ot-head-private.hh"
+#include "hb-ot-maxp-private.hh"
 
 
 #include <stdlib.h>
diff --git a/src/hb-ot-maxp-private.hh b/src/hb-ot-maxp-private.hh
new file mode 100644 (file)
index 0000000..fa2cb26
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright © 2011  Google, Inc.
+ *
+ *  This is part of HarfBuzz, a text shaping library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Google Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_OT_MAXP_PRIVATE_HH
+#define HB_OT_MAXP_PRIVATE_HH
+
+#include "hb-open-type-private.hh"
+
+HB_BEGIN_DECLS
+
+
+/*
+ * maxp
+ */
+
+#define HB_OT_TAG_maxp HB_TAG('m','a','x','p')
+
+struct maxp
+{
+  static const hb_tag_t Tag    = HB_OT_TAG_maxp;
+
+  inline unsigned int get_num_glyphs (void) const {
+    return numGlyphs;
+  }
+
+  inline bool sanitize (hb_sanitize_context_t *c) {
+    TRACE_SANITIZE ();
+    return c->check_struct (this) &&
+          likely (version.major == 1 ||
+                  (version.major == 0 && version.minor == 0x5000));
+  }
+
+  /* We only implement version 0.5 as none of the extra fields in version 1.0 are useful. */
+  private:
+  FixedVersion version;                /* Version of the maxp table (0.5 or 1.0),
+                                        * 0x00005000 or 0x00010000. */
+  USHORT       numGlyphs;              /* The number of glyphs in the font. */
+  public:
+  DEFINE_SIZE_STATIC (6);
+};
+
+
+HB_END_DECLS
+
+#endif /* HB_OT_MAXP_PRIVATE_HH */