[cairo] OpenType font variations and cairo
Adrian Johnson
ajohnson at redneon.com
Fri Sep 15 10:51:09 UTC 2017
On 15/09/17 09:29, Matthias Clasen wrote:
> On Thu, Sep 14, 2017 at 5:54 PM, Adrian Johnson <ajohnson at redneon.com
> <mailto:ajohnson at redneon.com>> wrote:
>
> On 15/09/17 05:52, Matthias Clasen wrote:
> > On Thu, Sep 14, 2017 at 12:37 PM, Behdad Esfahbod
> > <behdad.esfahbod at gmail.com <mailto:behdad.esfahbod at gmail.com>
> <mailto:behdad.esfahbod at gmail.com
> <mailto:behdad.esfahbod at gmail.com>>> wrote:
> >
> > Thanks Matthias. I took a look at the patch. Looks good! Minor
> > comments:
> >
> > - Moving the format towards CSS by default (no comma, no equal sign;
> > just spaces!) while accepting both is what I do in HarfBuzz. Maybe
> > advertise the same here, UPDATE: I was wrong. CSS uses comma as
> > well. It's the equal sign that they don't use, they use space. We
> > should accept both.
> >
> >
> > I've made the parser a bit more flexible. It now accepts variations like
> >
> > wdth=200,wght=300
> > wdth 200, wght=300
> > wdth 200 , wght 300
>
> Does it work with decimal commas?
>
>
> The patch currently uses strtod, so yes, it will parse floating point
> numbers, but decimal separators spell trouble.
> I could rewrite it to use strtod_l, if that is ok to use in cairo.
So what happens on platforms where strtod_l is not available?
The function decode_real() in cairo-cff-subset.c has code for locale
independent parsing of floating-point numbers. Maybe that could be
factored out into separate function and reused.
Where is the variations text string normally expected to come from? I
can see the code reading the FC_FONT_VARIATIONS property but I can't
find this in the current fontconfig git. Where is this documented?
Is the text string supplied to cairo_font_options_set_variations()
likely to be generated by sprintf or is it always read from an external
source in C locale format?
We really need a test case for this. It is hard to review code I can't test.
More information about the cairo
mailing list