From ebc762acdbcfee7aeb6dfd8dd26bd4c17e5d84d5 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Wed, 6 Dec 2023 11:05:32 +0000 Subject: [PATCH] [layout-normalizer] skip if GPOS not present the table is optional. Fixes #628 --- layout-normalizer/src/gpos.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/layout-normalizer/src/gpos.rs b/layout-normalizer/src/gpos.rs index 3d7e68bc8..64e813df4 100644 --- a/layout-normalizer/src/gpos.rs +++ b/layout-normalizer/src/gpos.rs @@ -14,7 +14,7 @@ use write_fonts::read::{ }, layout::{DeviceOrVariationIndex, LookupFlag}, }, - types::{GlyphId, Tag}, + types::GlyphId, FontData, FontRef, ReadError, TableProvider, }; @@ -27,9 +27,10 @@ use crate::{ pub(crate) fn print(f: &mut dyn io::Write, font: &FontRef, names: &NameMap) -> Result<(), Error> { writeln!(f, "# GPOS #")?; - let table = font - .gpos() - .map_err(|_| Error::MissingTable(Tag::new(b"GPOS")))?; + let Some(table) = font.gpos().ok() else { + // no GPOS table, nothing to do + return Ok(()); + }; let gdef = font.gdef().ok(); let var_store = gdef .as_ref()