color_glyph: parse SVG gradients' coordinates and transform for COLRv1
color_glyph: parse SVG gradients' coordinates and transform for COLRv1

For both linear and radial gradients we compute the current transformation matrix, which is the concatenation of objectBoundingBox * gradientTransform * svg:UPEM transformation matrices (the first two are optional).

For linear gradient we compute the 'normal' point P2 which defines the gradient's angle or orientation by projecting P0 onto the line perpendicular to the gradient vector.

For the radial gradient we transform the circle centre points to their final coordinates in font space, and we scale the length of the two radii by the max horizontal or vertical absolute scale; in the COLRv1 RadialGradient.Affine2x2 (which only affects the radii and not the centres, according to COLRv1 spec) we store the rest of the current transformation matrix, without the scale that was already applied to the radius lengths.

googlefonts/nanoemoji,googlefonts/nanoemoji