1/* 2 * 3 * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved 4 * 5 */ 6 7#ifndef __SCRIPTANDLANGUAGE_H 8#define __SCRIPTANDLANGUAGE_H 9 10/** 11 * \file 12 * \internal 13 */ 14 15#include "LETypes.h" 16#include "OpenTypeTables.h" 17 18U_NAMESPACE_BEGIN 19 20typedef TagAndOffsetRecord LangSysRecord; 21 22struct LangSysTable 23{ 24 Offset lookupOrderOffset; 25 le_uint16 reqFeatureIndex; 26 le_uint16 featureCount; 27 le_uint16 featureIndexArray[ANY_NUMBER]; 28}; 29LE_VAR_ARRAY(LangSysTable, featureIndexArray) 30 31struct ScriptTable 32{ 33 Offset defaultLangSysTableOffset; 34 le_uint16 langSysCount; 35 LangSysRecord langSysRecordArray[ANY_NUMBER]; 36 37 LEReferenceTo<LangSysTable> findLanguage(const LETableReference &base, LETag languageTag, LEErrorCode &success, le_bool exactMatch = FALSE) const; 38}; 39LE_VAR_ARRAY(ScriptTable, langSysRecordArray) 40 41typedef TagAndOffsetRecord ScriptRecord; 42 43struct ScriptListTable 44{ 45 le_uint16 scriptCount; 46 ScriptRecord scriptRecordArray[ANY_NUMBER]; 47 48 LEReferenceTo<ScriptTable> findScript(const LETableReference &base, LETag scriptTag, LEErrorCode &success) const; 49 LEReferenceTo<LangSysTable> findLanguage(const LETableReference &base, LETag scriptTag, LETag languageTag, LEErrorCode &success, le_bool exactMatch = FALSE) const; 50}; 51LE_VAR_ARRAY(ScriptListTable, scriptRecordArray) 52 53U_NAMESPACE_END 54#endif 55 56