Hi David,

As mentioned on the issue, the main thing I like to see you address is,
instead of walking all subtables, only walk subtables from 'kern' features.

behdad

On Tue, Jan 23, 2024 at 10:43 AM David Saltzman <davidbsaltz...@gmail.com>
wrote:

> it might be useful to add (also) either compile-time or runtime switch to
>> hb-based gpos-kerning
>>
>
> I just pushed an update to the merge request to add a config
> flag TT_CONFIG_OPTION_GPOS_KERNING and set it to default to disabled when
> HarfBuzz is available. Users of HarfBuzz can/should use hb_shape instead to
> get full shaping support. Let me know if you have further thoughts/feedback
> on that.
>
> On Mon, Jan 22, 2024 at 1:41 PM Hin-Tak Leung <ht...@users.sourceforge.net>
> wrote:
>
>> Yes, that sounds quite reasonable. Yes, harfbuzz is big and not everybody
>> needs/wants all of it. To guard against bitrot, it might be useful to add
>> (also) either compile-time or runtime switch to hb-based gpos-kerning
>> looking up along the same code path, just to make sure that this new code
>> doesn't bitrot?
>>
>> If that's done, there is a problem of which to use by default... but then
>> we already have conditionals on harfbuzz being available, etc, so it is
>> probably easy enough to just piggyback on that conditional.
>>
>> On Monday, 22 January 2024 at 20:35:17 GMT, David Saltzman <
>> davidbsaltz...@gmail.com> wrote:
>>
>>
>> this seems to duplicate functionality in harfbuzz, and also a mere
>> subset, for that matter?
>>
>> Yes, that's a good question. For the product I'm working on, we wanted to
>> add kerning support, and we already used FreeType but not HarfBuzz, and our
>> font had GPOS kerning but not a kern table. We first tried just using
>> FreeType's kerning API, before learning that wouldn't work because of kern
>> tables vs GPOS. So then we tried integrating HarfBuzz, since that seemed to
>> be the standard solution. However, after integrating that, even with
>> HB_TINY and some custom modifications to trim it, that was too large and
>> slow for this device; this is on an embedded device with limited
>> flash/ram/processing speed. We have no plans to add languages that require
>> more advanced shaping that would require HarfBuzz anyway, so it'd
>> inevitably add a lot of unnecessary overhead. Another option was to use a
>> script to modify the font to convert the GPOS table to a kern table, then
>> use unmodified FreeType's kerning function; that option worked as well,
>> though the font files ended up larger. So for a product like this, it's
>> valuable to have GPOS kerning support in FreeType.
>>
>> it is also not unheard of to maintain a semi-permanent set of patches for
>> freetype deemed unsuitable for upstreaming
>>
>> We do have our own copy of FreeType anyway, so we could just maintain the
>> patch there and drop this merge request for open sourcing the GPOS kerning
>> implementation if it's decided against taking it. It wouldn't impact us
>> either way, but a co-worker asked to upstream this one for anyone else who
>> may benefit from it.
>>
>> On the other hand, the dysfunctional kerning API, which exists, is
>> misleading
>>
>> Yes, if FreeType's kerning API had just worked for our GPOS font, that
>> would've saved us from going down this rabbit hole of kern tables and GPOS
>> tables, and we could've remained blissfully ignorant with everything just
>> working easily. So it would be nice to save others from that :). Another
>> anecdote is that we also then realized that a previous product which had
>> added kerning support through the FreeType API with its old font ended
>> up losing kerning after the font was swapped out for one with kerning in
>> the GPOS table, and we had shipped that update without noticing the loss;
>> so FreeType supporting GPOS kerning as well could help prevent issues like
>> that.
>>
>> The line could be drawn exactly there at the existing API. the scope of
>> the change should be clearly defined.
>>
>> Drawing the line at the existing API, so leaving the scope at
>> kerning-only and not planning to add support for other GPOS features like
>> x-placement etc, sounds good to me.
>>
>> David
>>
>> On Mon, Jan 22, 2024 at 12:01 PM Alexei Podtelezhnikov <
>> apodt...@gmail.com> wrote:
>>
>>
>>
>>
>> On Jan 22, 2024, at 12:45, Hin-Tak Leung <ht...@users.sourceforge.net>
>> wrote:
>>
>> FWIW, this seems to duplicate functionality in harfbuzz, and also a mere
>> subset, for that matter?
>>
>>
>> On the other hand, the dysfunctional kerning API, which exists, is
>> misleading. Partial GPOS support to fulfill the API promise is not a bad
>> idea. The line could be drawn exactly there at the existing API.
>>
>> I agree that the scope of the change should be clearly defined.
>>
>>

Reply via email to