> Hmm.  The functionality of negative `face_index' values as document
> in the description of `FT_Open_Face' must work for WOFF2, too.  So, to
> get the number of faces in a TTC, you have to read the TTC header.

`woff2_open_font' reads the WOFF2 TTC header and uses that information to
get tables for the requested font index.

> However, to get the number of named instances for a variation font
> with index N, loading this font should be sufficient.  You still have
> to get the number of faces in a TTC just to find out whether the
> requested subfont can be loaded at all.

The issue, however, is that when the font is loaded (when `woff2_open_font'
returns), the `face' will contain the header and tables for a single face,
which means the value of `face_instance_index' is changed to 0 in every
case.

This means that after this, there is no information left about `n' where n
is the requested index number.

For example, if I call `FT_New_Face' with -2 (which should ideally output
the following) for a TTC, I get:

FT_Open_Face: Creating glyph slot
FT_Open_Face: The font has 3 faces
              and 0 named instances for face 1
FT_Open_Face: Return 0x0

But doing the same with the font converted to WOFF2, I will get:

FT_Open_Face: The font has 1 face
              and 0 named instances for face 1
FT_Open_Face: Return 0x0

Although the information about the named instances is correct,
`FT_Open_Face' will see only 1 face in the font and report it as such.

One solution is to load all the faces in the WOFF2 and write all tables
along with the TTC header. This may slow down the process if all the faces
have a transformed glyf or hmtx table.

Is there anything else that can be done?

-- 
Nikhil
_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to