<div>
Hi Behdad,
</div><div><br></div><div>I finally managed to get OT layouting with HarfBuzz to work in JavaScript via Emscripten. It's awesome! :) There are still some open questions though. Can you please help me with them?</div><div><ul><li><b>How should I find out if a glyph returned by hb_shape() is a ligature?</b> I found some static functions in hb-ot-layout-private.hh like is_a_ligature(), but these are not C externs, so I cannot access them from JavaScript. Is there some other way supported by HarfBuzz, or shall I re-implement these functions in JS by inspecting the glyph_info_t struct?</li><li><b>How can I find internal x_advance positions inside a ligature?</b> The GDEF table should contain information about this. Does HarfBuzz expose it in any way?</li><li><b>How should I find out if a character was split into multiple glyphs?</b> I guess the "cluster" field of a glyph_info_t is about this, right? If I have a blown-up character, how can I find the caret positions that I should use?</li><li><b>Can HarfBuzz handle the Apple "kern," "morx" etc. tables?</b> If not, is it safe to use FontForge to convert these fonts to use OpenType's GPOS/GSUB etc.? This is not very encouraging: http://fontforge.org/gposgsub.html</li><li><b>Which features are turned on by default?</b> I can see that ligatures and kerning are turned on for my simple Latin text, and I can successfully turn them off by supplying features "-kern" and "-liga," but I'm still curious what the defaults are.</li><li><b>When kerning is applied, I get funny x_advances.</b> This might be an error on my side, but currently when a pair of glyphs is kerned, the first character get's an x_advance that seems to have something like "42949017" subtracted from it. Because ligature substitution works perfectly, I assume GSUB table parsing works fine, so I don't see why GPOS would fail. Any pointers here?</li></ul></div>
<div><div>Thanks a lot for any help you can provide! Also, if I can help out with writing documentation, please let me know.</div><div><br></div><div>Lorant</div><div><br></div></div>