Re: OpenType font variations and cairo
Adrian Johnson <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
On 29/09/17 08:31, Behdad Esfahbod wrote: > On Thu, Sep 28, 2017 at 6:09 PM, Adrian Johnson <[email protected] > <mailto:[email protected]>> wrote: > > On 29/09/17 06:06, Matthias Clasen wrote: > I pulled your latest changes and tested with various combinations of > freetype and fontconfig - see below. All good on the cairo side, except > for the build fail with FT 2.6.3 but I mentioned that needs fixing in my > review comments. > > There appears to be a bug in fontconfig master when using freetype 2.8. > > If you cleanup and rebase your commits to master with all review > comments addressed, I'll do a final check and then it should be good to > commit. > > > Thanks Adrian for all the help. > > freetype 2.6.3: build failed - FT_Get_Var_Design_Coordinates not found > > freetype 2.8, fontconfig 2.11.0 : pass > > freetype 2.8, fontconfig 2.12.5 : pass > > freetype 2.8, fontconfig master : > > When running the fc-cache built from master I get: > fc-cache: fcfreetype.c:2143: IA__FcFreeTypeQueryAll: Assertion > `mm_var' failed. > > fc-cache succeeds after removing AdobeVFPrototype.ttf from ~/.fonts > > I tried again with AdobeVFPrototype.otf. fc-cache ran successfully and > the cairo test passed. > > > Humm. This sounds very much like what might happen with old FreeType . > If not, can you elaborate what happens again? Can you reproduce? What > FreeType exactly? Does `fc-query AdobeVFPrototype.ttf` work? FreeType 2.8.0. I can reproduce. fc-query AdobeVFPrototype.ttf also produces the same error. I looked into it and it seems to be the same problem Matthias fixed in a827d7e515c7c. I applied a similar patch to fontconfig (see attached) and fc-cache and fc-query now work. > > I can probably replace assert with a less harsh mode of failure. > > > > freetype 2.8.1, fontconfig 2.11.0 : pass > > freetype 2.8.1, fontconfig 2.12.5 : pass > > freetype 2.8.1, fontconfig master : pass > > freetype master, fontconfig master : pass > > > > > > > > > -- > behdad > http://behdad.org/ > > -- cairo mailing list [email protected] https://lists.cairographics.org/mailman/listinfo/cairo
fc.diff
(text/x-patch, 466 B)
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index cddd3a1..f8c81ee 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -2139,7 +2139,10 @@ FcFreeTypeQueryAll(const FcChar8 *file,
num_instances = face->style_flags >> 16;
if (num_instances && (!index_set || instance_num))
{
- FT_Get_MM_Var (face, &mm_var);
+ FT_Error ret;
+ ret = FT_Get_MM_Var (face, &mm_var);
+ if (ret != 0)
+ FT_Get_MM_Var (face, &mm_var);
assert (mm_var);
}