On Fri, Jun 11, 2021 at 5:44 PM Werner LEMBERG <
wl@gnu.org> wrote:
> These are not implemented on the FreeType side yet. I plan to
> implement them soon. I need to decide whether it would make sense
> to consolidate the API and only return transformation matrices
> instead of the individual structs for rotate, translate, etc. If I
> keep the structs, I may need to add values for center positions for
> the newer tables Paint*AroundCenter.
Sounds reasonable. Shall I wait for this to happen?
I can't promise a tight timeline, but I expect to have that ready in a pull request next week.
The API changes seem to be only the addition of a PaintScale struct - the other structs already have center coordinates, so no changes seem to be needed there - that's what I can say when no starting to implement these parts.
> I am not sure what the definition of "experimental" is - but I can't
> guarantee API stability yet. If that's not required for
> experimental, I am okay with releasing this as "experimental".
If we decide to do a release earlier, I will
(a) add 'experimental' to the `@since` field, and
(b) add to the `CHANGES` file that API stability isn't guaranteed:
both functions and structures might change without notice, and
the major version number of FreeType gets not increased if there
are changes to the ABI that are not backward-compatible.
> Also, variations support is not in the COLRv1 implementation yet.
Do you expect API changes for this, too?
No, I do not expect changes, with the caveat of not having looked into it in detail. However, generally, variations are configured on the FT_Face and all values returned from the COLR v1 API work based on the FT_Face configured to a certain axis position. So the values returned from the API are static/interpolated until the axis configuration on the FT_Face is changed. So the API surface does not need to change. The approach for getting new interpolated data would be: change axis coords on FT_Face, query for COLR data again, get new interpolated results.
> I plan to familiarize myself with the built-in variations
> interpolation capabilities that FT has - pointers to welcome.
The essential code is in file `src/truetype/ttgxvar.c`. I think it is
quite well documented. If you find problems or hard-to-read code,
please add comments and submit them as merge requests :-)
Ack, thanks, I'll look into that.
Dominik