Verbose fail when something is wrong with hb-shape/hb-view input font file (#1059)
This checks if the blob isn't empty and uses `hb_face_count` to see if the font file passes the simple font file sanitization so can detect if the input is actually a font and checks also whether input font-index is out of range.
This commit is contained in:
parent
aa0c5df419
commit
c53697d3f2
@ -670,6 +670,17 @@ font_options_t::get_font (void) const
|
||||
blob = hb_blob_create_from_file (font_file);
|
||||
}
|
||||
|
||||
if (hb_blob_get_length (blob) == 0)
|
||||
fail (false, "No such file or directory, or is empty");
|
||||
|
||||
unsigned int face_count = hb_face_count (blob);
|
||||
|
||||
if (face_count == 0)
|
||||
fail (false, "Not a font file"); // most likely
|
||||
|
||||
if (face_index > face_count)
|
||||
fail (false, "The requested font index wasn't available in the file");
|
||||
|
||||
/* Create the face */
|
||||
hb_face_t *face = hb_face_create (blob, face_index);
|
||||
hb_blob_destroy (blob);
|
||||
|
Loading…
Reference in New Issue
Block a user