def add_gsub_to_font(fontfile): """Adds an empty GSUB table to a font.""" font = ttLib.TTFont(fontfile) gsub_table = ttLib.getTableClass('GSUB')('GSUB') gsub_table.table = otTables.GSUB() gsub_table.table.Version = 1.0 gsub_table.table.ScriptList = otTables.ScriptList() gsub_table.table.ScriptCount = 1 gsub_table.table.LookupList = otTables.LookupList() gsub_table.table.LookupList.LookupCount = 0 gsub_table.table.LookupList.Lookup = [] gsub_table.table.FeatureList = otTables.FeatureList() gsub_table.table.FeatureList.FeatureCount = 0 gsub_table.table.LookupList.FeatureRecord = [] script_record = otTables.ScriptRecord() script_record.ScriptTag = get_opentype_script_tag(fontfile) script_record.Script = otTables.Script() script_record.Script.LangSysCount = 0 script_record.Script.LangSysRecord = [] default_lang_sys = otTables.DefaultLangSys() default_lang_sys.FeatureIndex = [] default_lang_sys.FeatureCount = 0 default_lang_sys.LookupOrder = None default_lang_sys.ReqFeatureIndex = 65535 script_record.Script.DefaultLangSys = default_lang_sys gsub_table.table.ScriptList.ScriptRecord = [script_record] font['GSUB'] = gsub_table target_file = tempfile.gettempdir() + '/' + os.path.basename(fontfile) font.save(target_file) return target_file
def create_script_list(script_tag='DFLT'): """Create a ScriptList for the GSUB table.""" def_lang_sys = otTables.DefaultLangSys() def_lang_sys.ReqFeatureIndex = 0xFFFF def_lang_sys.FeatureCount = 1 def_lang_sys.FeatureIndex = [0] def_lang_sys.LookupOrder = None script_record = otTables.ScriptRecord() script_record.ScriptTag = script_tag script_record.Script = otTables.Script() script_record.Script.DefaultLangSys = def_lang_sys script_record.Script.LangSysCount = 0 script_record.Script.LangSysRecord = [] script_list = otTables.ScriptList() script_list.ScriptCount = 1 script_list.ScriptRecord = [script_record] return script_list