<div dir="ltr"><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif">Hi all,</div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif"><br></div><div class="gmail_default"><span style="font-family:"trebuchet ms",sans-serif">I'm trying to use the </span><font face="monospace, monospace">hb_ot_layout_feature_lookups</font><font face="trebuchet ms, sans-serif"> call in order to find out which glyphs are being substituted if the font has the 'vert' feature.</font></div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif"><br></div><div class="gmail_default"><span style="font-family:"trebuchet ms",sans-serif">After getting the indices for the language, script and feature I'm successful in getting the table but it looks like the glyph indices are being sorted in the </span><font face="monospace, monospace">hb_set_t</font><font face="trebuchet ms, sans-serif"> the </font><font face="monospace, monospace">hb_ot_layout_feature_get_lookups</font><font face="trebuchet ms, sans-serif"> returns. I do get the right glyph indices in the input and output sets but they don't match each other because, as they are sorted, the original position they were in is lost. Am I doing anything wrong?</font></div><div class="gmail_default"><font face="trebuchet ms, sans-serif"><br></font></div><div class="gmail_default"><font face="trebuchet ms, sans-serif">A simplified version of the code is:</font></div><div class="gmail_default"><font face="trebuchet ms, sans-serif"><br></font></div><div class="gmail_default"><font face="monospace, monospace">hb_ot_layout_table_find_script(face, HB_OT_TAG_GSUB, HB_TAG('k','a','n','a'), &scriptIndex);</font></div><div class="gmail_default"><font face="monospace, monospace">hb_ot_layout_language_find_feature(face, HB_OT_TAG_GSUB,  scriptIndex, 0, HB_TAG('v','e,'r','t'), &featureIndex);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">hb_ot_layout_feature_get_lookups(face, HB_OT_TAG_GSUB, featureIndex,...);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">hb_set_t* input = hb_set_create();</font></div><div class="gmail_default"><font face="monospace, monospace">hb_set_t* output = hb_set_create();</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">hb_ot_layout_lookup_collect_glyphs(face, HB_OT_TAG_GSUB, 0, 0, input, 0, output);</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">unsigned int pop = hb_set_get_population(input);</font></div><div class="gmail_default"><font face="monospace, monospace">unsigned int p = 0;</font></div><div class="gmail_default"><font face="monospace, monospace">hb_codepoint_t source = -1;</font></div><div class="gmail_default"><font face="monospace, monospace">hb_codepoint_t target = -1;</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">while (p != population) {</font></div><div class="gmail_default"><font face="monospace, monospace">   hb_set_next(input, &source);</font></div><div class="gmail_default"><font face="monospace, monospace">   hb_set_next(output, &target);</font></div><div class="gmail_default"><font face="monospace, monospace">   printf("%d=%d\n", source, target);</font></div><div class="gmail_default"><font face="monospace, monospace">   ++p;</font></div><div class="gmail_default"><font face="monospace, monospace">}</font></div><div class="gmail_default"><br></div><div class="gmail_default"><font face="trebuchet ms, sans-serif">Thanks!</font></div><div class="gmail_default"><font face="trebuchet ms, sans-serif">Pedro</font></div></div>