swf: Support font layout without swf-v7 fields

This commit is contained in:
Adrian Wielgosik 2021-11-04 13:11:15 +01:00 committed by Adrian Wielgosik
parent ff2ef47159
commit a305b80789
1 changed files with 16 additions and 7 deletions

View File

@ -1087,15 +1087,24 @@ impl<'a> Reader<'a> {
glyph.advance = Some(self.read_i16()?);
}
for glyph in &mut glyphs {
glyph.bounds = Some(self.read_rectangle()?);
// Some older SWFs end the tag here, as this data isn't used until v7.
if !self.as_slice().is_empty() {
for glyph in &mut glyphs {
glyph.bounds = Some(self.read_rectangle()?);
}
}
let num_kerning_records = self.read_u16()? as usize;
let mut kerning_records = Vec::with_capacity(num_kerning_records);
for _ in 0..num_kerning_records {
kerning_records.push(self.read_kerning_record(has_wide_codes)?);
}
let kerning_records = if !self.as_slice().is_empty() {
let num_kerning_records = self.read_u16()? as usize;
let mut kerning_records = Vec::with_capacity(num_kerning_records);
for _ in 0..num_kerning_records {
kerning_records.push(self.read_kerning_record(has_wide_codes)?);
}
kerning_records
} else {
vec![]
};
Some(FontLayout {
ascent,