<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cordia New";
panose-1:2 11 3 4 2 2 2 2 2 4;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">OK, it took the list 30 minutes to process my original message. Please ignore _<i>this</i>_ thread.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Peter Constable <br>
<b>Sent:</b> Friday, August 21, 2020 8:32 AM<br>
<b>To:</b> MPEG OT Spec list (mpeg-otspec@lists.aau.at) <mpeg-otspec@lists.aau.at><br>
<b>Subject:</b> COLR v1 spec<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[trying to resend as it didn’t go through with the first attempt — apologies in advance if you get duplicates]<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt">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
<a href="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">
googlefonts/colr-gradients-spec</a> repo. I’ve also prepared <a href="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">
a separate doc</a> 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.<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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:
<a href="https://github.com/googlefonts/colr-gradients-spec/issues/29">https://github.com/googlefonts/colr-gradients-spec/issues/29</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Cheers!<o:p></o:p></p>
<p class="MsoNormal">Peter<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>