[mm] Tolerate missing Blend dictionary entries

In a Multiple Master font, the Blend dictionary must contain valid
Private, FontInfo, and FontBBox. The current code will error if any of
these are present and invalid, but will not error and will provide
uninitialized data if the Blend dictionary exists but does not contain
one of these entries. This change reverts to the older behavior of
treating any missing entries as containing all zero data and not
returning an error.

In the future it may be best to keep track of when these are actually
initialized and error if they are not.

* src/type1/t1load.c (t1_allocate_blend): Zero initiailize.
This commit is contained in:
Ben Wagner 2021-10-25 22:38:05 -04:00 committed by Alexei Podtelezhnikov
parent f091e60c48
commit 535c67dda7

View File

@ -133,9 +133,9 @@
/* allocate the blend `private' and `font_info' dictionaries */
if ( FT_QNEW_ARRAY( blend->font_infos[1], num_designs ) ||
FT_QNEW_ARRAY( blend->privates [1], num_designs ) ||
FT_QNEW_ARRAY( blend->bboxes [1], num_designs ) )
if ( FT_NEW_ARRAY( blend->font_infos[1], num_designs ) ||
FT_NEW_ARRAY( blend->privates [1], num_designs ) ||
FT_NEW_ARRAY( blend->bboxes [1], num_designs ) )
goto Exit;
blend->font_infos[0] = &face->type1.font_info;