On Wed, Jan 21, 2015 at 04:20:30PM +0100, Diederick Huijbers wrote: > Hi, > > I'm working on a C/C++/OpenGL text input field and wondering if > someone can give me some advise on how to deal with ligatures and text > input. > > Lets say I have a input field and I type "fi". Now, harfbuzz will > replace these two characters by the "fi" ligature. HarfBuzz is merely respecting the font designer’s decision of having or not having any given ligature.
> To be honest, I've no idea if the ligature "fi" makes the text more > readable, but I assume it does. > > But if I use ligatures (because of the reasons harfbuzz uses them), > how would I deal with e.g. the placement of the caret in the text > input field. I should allow the user to move the caret between the "f" > and "i" for example. Though how would I know the correct (visual) x > position ? If you know that a given glyph is a ligature (note that some fonts implement “ligatures” in a way that gives you the same number of glyphs for the input characters, so no assumptions should be made here), you can call “hb_ot_layout_get_ligature_carets()” to get the proper caret positions inside the ligature. Unfortunately very few fonts provide the data used by this API (because almost no applications use it), so you will need a fallback approximation, and AFAIK most applications just divide the ligature width on the number of its components, so for “fi” you would place the caret on the middle of the ligature and so on. > And lets say I use the input field so a user can register him/herself > and the value is stored in a database. Would I store the "fi" ligature > or both characters separately? Your text processing should always be done on the input text stream, not the glyph indices returned by Harfbuzz. > Currently I think disabling ligatures is my best option, but I'm not > sure how I can disable this with harfbuzz. Even if you can get away with disabling ligatures in Latin script, what about other scripts where they might be required for proper text shaping? Regards, Khaled _______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
