From 202ad73cd813093e4f6ae216125a98eac7e6603d Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Wed, 9 Oct 2024 19:27:03 +0300 Subject: [PATCH] =?UTF-8?q?[glyphs2fontir]=20Don=E2=80=99t=20panic=20for?= =?UTF-8?q?=20unknown=20language=20label?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Warn and skip instead. --- glyphs-reader/src/font.rs | 18 ++++++++++-------- resources/testdata/glyphs3/Fea_Labels.glyphs | 4 ++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/glyphs-reader/src/font.rs b/glyphs-reader/src/font.rs index b8843070..53b226fa 100644 --- a/glyphs-reader/src/font.rs +++ b/glyphs-reader/src/font.rs @@ -1969,16 +1969,18 @@ impl RawFeature { let labels = self .labels .iter() - .map(|label| { - let language_id = GLYPHS_TO_OPENTYPE_LANGUAGE_ID + .filter_map(|label| { + GLYPHS_TO_OPENTYPE_LANGUAGE_ID .iter() .find(|entry| entry.0 == label.language) - .map(|entry| entry.1) - .unwrap_or_else(|| { - panic!("Unknown feature label language: {}", label.language); - }); - let name = label.value.replace("\\", "\\005c").replace("\"", "\\0022"); - format!(" name 3 1 0x{:04X} \"{}\";", language_id, name) + .map(|entry| { + let name = label.value.replace("\\", "\\005c").replace("\"", "\\0022"); + format!(" name 3 1 0x{:04X} \"{}\";", entry.1, name) + }) + .or_else(|| { + warn!("Unknown feature label language: {}", label.language); + None + }) }) .collect::>() .join("\n"); diff --git a/resources/testdata/glyphs3/Fea_Labels.glyphs b/resources/testdata/glyphs3/Fea_Labels.glyphs index a35727e8..00c3d10f 100644 --- a/resources/testdata/glyphs3/Fea_Labels.glyphs +++ b/resources/testdata/glyphs3/Fea_Labels.glyphs @@ -20,6 +20,10 @@ value = "Test 1"; { language = ARA; value = "اختبار ١"; +}, +{ +language = SKIPME; +value = "Skip me"; } ); tag = ss01;