[MPEG-OTSPEC] COLR v1 spec

Peter Constable pgcon6 at msn.com
Fri Aug 21 17:32:26 CEST 2020


[trying to resend as it didn't go through with the first attempt - apologies in advance if you get duplicates]


In a message earlier this week, I mentioned an effort to enhance the COLR table to add support for gradient fills, along with integration of variations:

The second project will be to add some significant new capabilities for color fonts, extending the COLR table to support gradient fills and to integrate variations. This is a proposal that's been floated for a little while. In particular, it was discussed between several companies over a year ago (or maybe earlier?), and a preliminary proposal was drafted by Behdad Esfahbod and Dominik Röttsches. That proposal (with some subsequent revisions) is in the googlefonts/colr-gradients-spec<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgooglefonts%2Fcolr-gradients-spec&data=02%7C01%7C%7C4356b0de60584856c69408d843ca51b8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637333883515890486&sdata=VExDewWHwPzTi%2B3eIaV%2B2T8Bw%2FiQsYufM1DomuiW6Do%3D&reserved=0> repo. I've also prepared a separate doc<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPeterConstable%2FOT_Drafts%2Fblob%2Fmaster%2FCOLR_V1%2FCOLRv1formats_rev4.md&data=02%7C01%7C%7C4356b0de60584856c69408d843ca51b8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637333883515900480&sdata=qoYtjbemU%2F5GzShp1H08jJDBxHcOko1fqmPmdmne7dU%3D&reserved=0> showing the new structure formats as they'd appear in the OT spec (for those not familiar with C++ template syntax). For now, input should be filed as issues in the googlefonts repo.

I'd invite people to review the spec and provide comments, file issues or add comments on the open issues. There are two things in particular that I think can use attention:

First, it would be good for people familiar with 2D graphics libraries to review the 2D graphics aspects to catch any potential issues. In particular, app and platform implementers should evaluate if things will be workable in your environments. Some might require new 2D graphics work, e.g., if a graphics library doesn't conical (really, "cylindrical") gradients; that's something that hinders driving toward consensus on the format. But there may be design issues that those who work on 2D graphics might spot. Conceptually, it seems like everything should be workable as it's really a functional subset of OT SVG, but I'm not a 2D graphics expert.

Secondly, there is one specific part of the proposed design re which a blocking flaw has been identified, and that issue needs to be resolved. One of the 2D aspects of the design is a matrix structure to transform the geometry for a conical gradient. The Affine2By2 Struct uses the Fixed type for the matrix elements, and the proposal wraps the Fixed with an index to variation data to make the matrix elements variable. However, Fixed is a 32-bit (16/16) value, whereas variation deltas are (currently) 16-bit only, and there's no definition of how these combine. This is an open issue that is blocking progress. I've asked the authors of the original proposal for input, but input from anyone else is welcome: https://github.com/googlefonts/colr-gradients-spec/issues/29.



Cheers!
Peter

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.aau.at/pipermail/mpeg-otspec/attachments/20200821/71d00540/attachment.html>


More information about the mpeg-otspec mailing list