I put together a pull request: https://github.com/harfbuzz/harfbuzz/pull/5367
Untested, but should work. Please let me know. Thanks, behdad http://behdad.org/ On Sun, Jun 15, 2025 at 12:05 PM Behdad Esfahbod <beh...@behdad.org> wrote: > So, this will be the prototype: > > HB_EXTERN hb_map_t * > hb_ot_layout_lookup_get_glyphs_alternates (hb_face_t *face, > unsigned lookup_index); > > behdad > http://behdad.org/ > > > On Sun, Jun 15, 2025 at 11:40 AM Behdad Esfahbod <beh...@behdad.org> > wrote: > >> Hi Werner, >> >> I have an idea. Similar in essence to `af_map_lookup`, just using another >> style to avoid extra allocations. >> >> Basically, to get gid's variants, you will check `gid + (i << 24)` for i >> being 0, 1, 2, ... until you hit a miss. >> >> This allows for just one hash table to be returned. Allows for 24bit >> gid's. Its only limitation is 8bit of alternates, but if you see gid has >> alternate at index 255, you can use to the slower API to get all the >> remaining alternates. >> >> Does that sound good to you? I can go ahead and prototype it. >> behdad >> http://behdad.org/ >> >> >> On Sun, Jun 15, 2025 at 1:00 AM Werner LEMBERG <w...@gnu.org> wrote: >> >>> >>> I've just submitted a Merge Request to speed up the auto-hinter >>> start-up. The previous code using HarfBuzz functions was far too slow >>> to be acceptable – HarfBuzz (currently) doesn't exactly provide what >>> we need, causing way to much overhead. >>> >>> To speed things up it was necessary to (partially) parse, validate and >>> access the GSUB table. I really tried to avoid that, but... >>> >>> Please have a look! The speed-up is really impressive, I think; the >>> old code slowed down the start-up time by more than 300% (in >>> comparison to a commit before introducing vertical accent >>> positioning), while the new code only adds about 25%. >>> >>> https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/381 >>> >>> Ideally, I would like to get rid of the GSUB code since it doesn't fit >>> conceptually into FreeType (and HarfBuzz does it anyway). Behdad, do >>> you have ideas whether something similar to `af_map_lookup` could be >>> added to HarfBuzz? This would be a long-term solution, since even if >>> HarfBuzz gets fitting functionality I don't want to make FreeType >>> depend on the newest HarfBuzz version... >>> >>> >>> Werner >>> >>