<div dir="ltr">On Fri, Sep 22, 2017 at 1:10 AM, Werner LEMBERG <span dir="ltr"><<a href="mailto:wl@gnu.org" target="_blank">wl@gnu.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
> One of my tests happens to set the axes to the coords of a named<br>
> instance.  freetype takes that as a signal to turn the FT_Face into<br>
> a named instance,<br>
<br>
</span>It sets the named instance index in `face->face_index', that's all.<br>
<span class="gmail-"><br>
> and then the next test that doesn't explicitly sets a weight value<br>
> gets the named instance coordinate instead of the axis default.<br>
<br>
</span>This part I don't understand.  Please elaborate.  What are you doing<br>
code-wise, what do you expect, and what does FreeType?<br>
<span class="gmail-HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br></div><div>For each test, I create a new cairo_scaled_font instance, using the same <br></div><div>fontconfig pattern and different font options (this is where the test input</div><div>goes):<br></div><div><br></div><div>    pattern = FcPatternBuild (NULL,<br>                              FC_FAMILY, FcTypeString, (FcChar8*)"Adobe Variable Font Prototype",<br>                              NULL);<br>    font_face = cairo_ft_font_face_create_for_pattern (pattern);</div><div>    cairo_font_options_set_variations (options, input);</div><div>    scaled_font = cairo_scaled_font_create (font_face, &matrix, &matrix, options);<br></div><div><br></div><div>and then I pull out the FT_Face, and I find that I get the same one every time, since</div><div>cairo caches them:</div><div><br></div><div>    ft_face = cairo_ft_scaled_font_lock_face (scaled_font);<br></div><div><br></div><div>But now, the nature of the cached object changes underneath us (sometimes it represents a</div><div>named instance, and sometimes it doesn't). And the code applying the font options to</div><div>changes its behavior depending on this, which leads to a mess. We need to either</div><div><br></div><div>a) not cache a changing object</div><div>b) take the named instanceness into account for caching</div><div>c) ignore the named instanceness when applying font options</div><div><br></div><div>Behdad ?<br></div><div><br></div></div></div></div>