1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Copyright © 2013 Google, Inc. 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * This is part of HarfBuzz, a text shaping library. 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Permission is hereby granted, without written agreement and without 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * license or royalty fees, to use, copy, modify, and distribute this 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * software and its documentation for any purpose, provided that the 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * above copyright notice and the following two paragraphs appear in 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * all copies of this software. 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * DAMAGE. 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Google Author(s): Behdad Esfahbod 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef HB_OT_LAYOUT_JSTF_TABLE_HH 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define HB_OT_LAYOUT_JSTF_TABLE_HH 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "hb-open-type-private.hh" 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "hb-ot-layout-gpos-table.hh" 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace OT { 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList -- Justification Modification List Tables 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef IndexArray JstfModList; 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfMax -- Justification Maximum Table 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef OffsetListOf<PosLookup> JstfMax; 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority -- Justification Priority Table 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct JstfPriority 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles){ 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline bool sanitize (hb_sanitize_context_t *c) { 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TRACE_SANITIZE (this); 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return TRACE_RETURN (c->check_struct (this) && 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageEnableGSUB.sanitize (c, this) && 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageDisableGSUB.sanitize (c, this) && 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageEnableGPOS.sanitize (c, this) && 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageDisableGPOS.sanitize (c, this) && 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageJstfMax.sanitize (c, this) && 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionEnableGSUB.sanitize (c, this) && 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionDisableGSUB.sanitize (c, this) && 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionEnableGPOS.sanitize (c, this) && 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionDisableGPOS.sanitize (c, this) && 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionJstfMax.sanitize (c, this)); 70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected: 73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageEnableGSUB; /* Offset to Shrinkage Enable GSUB 75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageDisableGSUB; /* Offset to Shrinkage Disable GSUB 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageEnableGPOS; /* Offset to Shrinkage Enable GPOS 83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageDisableGPOS; /* Offset to Shrinkage Disable GPOS 87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfMax> 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shrinkageJstfMax; /* Offset to Shrinkage JstfMax table-- 91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * from beginning of JstfPriority table 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * --may be NULL */ 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionEnableGSUB; /* Offset to Extension Enable GSUB 95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionDisableGSUB; /* Offset to Extension Disable GSUB 99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 102f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionEnableGPOS; /* Offset to Extension Enable GPOS 103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 105f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfModList> 106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionDisableGPOS; /* Offset to Extension Disable GPOS 107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfModList table--from beginning of 108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfPriority table--may be NULL */ 109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfMax> 110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extensionJstfMax; /* Offset to Extension JstfMax table-- 111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * from beginning of JstfPriority table 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * --may be NULL */ 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DEFINE_SIZE_STATIC (20); 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfLangSys -- Justification Language System Table 121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct JstfLangSys : OffsetListOf<JstfPriority> 124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles){ 125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline bool sanitize (hb_sanitize_context_t *c, 126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const Record<JstfLangSys>::sanitize_closure_t * = NULL) { 127f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TRACE_SANITIZE (this); 128f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return TRACE_RETURN (OffsetListOf<JstfPriority>::sanitize (c)); 129f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 130f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 131f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 132f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 133f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 134f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * ExtenderGlyphs -- Extender Glyph Table 135f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 136f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef SortedArrayOf<GlyphID> ExtenderGlyphs; 138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 140f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 141f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JstfScript -- The Justification Table 142f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 143f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 144f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct JstfScript 145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles){ 146f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline unsigned int get_lang_sys_count (void) const 147f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return langSys.len; } 148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline const Tag& get_lang_sys_tag (unsigned int i) const 149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return langSys.get_tag (i); } 150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline unsigned int get_lang_sys_tags (unsigned int start_offset, 151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) unsigned int *lang_sys_count /* IN/OUT */, 152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_tag_t *lang_sys_tags /* OUT */) const 153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return langSys.get_tags (start_offset, lang_sys_count, lang_sys_tags); } 154f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline const JstfLangSys& get_lang_sys (unsigned int i) const 155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { 156f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (i == Index::NOT_FOUND_INDEX) return get_default_lang_sys (); 157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return this+langSys[i].offset; 158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline bool find_lang_sys_index (hb_tag_t tag, unsigned int *index) const 160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return langSys.find_index (tag, index); } 161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline bool has_default_lang_sys (void) const { return defaultLangSys != 0; } 163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline const JstfLangSys& get_default_lang_sys (void) const { return this+defaultLangSys; } 164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline bool sanitize (hb_sanitize_context_t *c, 166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const Record<JstfScript>::sanitize_closure_t * = NULL) { 167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TRACE_SANITIZE (this); 168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return TRACE_RETURN (extenderGlyphs.sanitize (c, this) && 169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) defaultLangSys.sanitize (c, this) && 170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) langSys.sanitize (c, this)); 171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected: 174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<ExtenderGlyphs> 175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) extenderGlyphs; /* Offset to ExtenderGlyph table--from beginning 176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * of JstfScript table-may be NULL */ 177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OffsetTo<JstfLangSys> 178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) defaultLangSys; /* Offset to DefaultJstfLangSys table--from 179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * beginning of JstfScript table--may be Null */ 180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) RecordArrayOf<JstfLangSys> 181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) langSys; /* Array of JstfLangSysRecords--listed 182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * alphabetically by LangSysTag */ 183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DEFINE_SIZE_ARRAY (6, langSys); 185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 188f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * JSTF -- The Justification Table 190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct JSTF 193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles){ 194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static const hb_tag_t tableTag = HB_OT_TAG_JSTF; 195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline unsigned int get_script_count (void) const 197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return scriptList.len; } 198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline const Tag& get_script_tag (unsigned int i) const 199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return scriptList.get_tag (i); } 200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline unsigned int get_script_tags (unsigned int start_offset, 201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) unsigned int *script_count /* IN/OUT */, 202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_tag_t *script_tags /* OUT */) const 203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return scriptList.get_tags (start_offset, script_count, script_tags); } 204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline const JstfScript& get_script (unsigned int i) const 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return this+scriptList[i].offset; } 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline bool find_script_index (hb_tag_t tag, unsigned int *index) const 207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { return scriptList.find_index (tag, index); } 208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) inline bool sanitize (hb_sanitize_context_t *c) { 210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TRACE_SANITIZE (this); 211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return TRACE_RETURN (version.sanitize (c) && likely (version.major == 1) && 212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scriptList.sanitize (c, this)); 213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 214f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected: 216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FixedVersion version; /* Version of the JSTF table--initially set 217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * to 0x00010000 */ 218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) RecordArrayOf<JstfScript> 219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scriptList; /* Array of JstfScripts--listed 220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * alphabetically by ScriptTag */ 221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DEFINE_SIZE_ARRAY (6, scriptList); 223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} /* namespace OT */ 227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif /* HB_OT_LAYOUT_JSTF_TABLE_HH */ 230