Skip to content

Commit

Permalink
[ufo] Don't error if vendorID is all spaces
Browse files Browse the repository at this point in the history
We already patched this on the glyphs side; this matches that behaviour
for UFOs as well.

This will get a few more targets compiling on crater.
  • Loading branch information
cmyr committed Feb 26, 2025
1 parent 95040b7 commit 2b7f27e
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 1 deletion.
75 changes: 75 additions & 0 deletions resources/testdata/empty-vendorid.ufo/fontinfo.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>unitsPerEm</key>
<integer>1000</integer>
<key>familyName</key>
<string>Duck Duck</string>
<key>styleName</key>
<string>Regular</string>
<key>openTypeOS2VendorID</key>
<string> </string>
<key>ascender</key>
<integer>737</integer>
<key>capHeight</key>
<integer>702</integer>
<key>descender</key>
<integer>-42</integer>
<key>xHeight</key>
<integer>501</integer>
<key>openTypeOS2TypoAscender</key>
<integer>1193</integer>
<key>openTypeOS2TypoDescender</key>
<integer>-289</integer>
<key>openTypeOS2TypoLineGap</key>
<integer>42</integer>
<key>openTypeOS2WinAscent</key>
<integer>1325</integer>
<key>openTypeOS2WinDescent</key>
<integer>377</integer>
<key>openTypeHheaAscender</key>
<integer>1194</integer>
<key>openTypeHheaDescender</key>
<integer>-290</integer>
<key>openTypeHheaLineGap</key>
<integer>43</integer>
<key>openTypeOS2WeightClass</key>
<integer>800</integer>
<key>openTypeOS2WidthClass</key>
<integer>8</integer>
<key>openTypeHeadFlags</key>
<array>
<integer>0</integer>
<integer>3</integer>
</array>
<key>openTypeOS2FamilyClass</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
<key>openTypeGaspRangeRecords</key>
<array>
<dict>
<key>rangeGaspBehavior</key>
<array>
<integer>1</integer>
<integer>3</integer>
</array>
<key>rangeMaxPPEM</key>
<integer>7</integer>
</dict>
<dict>
<key>rangeGaspBehavior</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
</array>
<key>rangeMaxPPEM</key>
<integer>65535</integer>
</dict>
</array>
</dict>
</plist>
6 changes: 6 additions & 0 deletions resources/testdata/empty-vendorid.ufo/glyphs/contents.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>
10 changes: 10 additions & 0 deletions resources/testdata/empty-vendorid.ufo/layercontents.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<array>
<string>public.default</string>
<string>glyphs</string>
</array>
</array>
</plist>
9 changes: 9 additions & 0 deletions resources/testdata/empty-vendorid.ufo/lib.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>public.glyphOrder</key>
<array>
</array>
</dict>
</plist>
10 changes: 10 additions & 0 deletions resources/testdata/empty-vendorid.ufo/metainfo.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>creator</key>
<string>com.github.fonttools.ufoLib</string>
<key>formatVersion</key>
<integer>3</integer>
</dict>
</plist>
18 changes: 17 additions & 1 deletion ufo2fontir/src/source.rs
Original file line number Diff line number Diff line change
Expand Up @@ -812,7 +812,13 @@ impl Work<Context, WorkId, Error> for StaticMetadataWork {
)
.map_err(Error::VariationModelError)?;
static_metadata.misc.selection_flags = selection_flags;
if let Some(vendor_id) = &font_info_at_default.open_type_os2_vendor_id {
if let Some(vendor_id) = font_info_at_default
.open_type_os2_vendor_id
.as_ref()
// treat " " (four spaces) as equivalent to no value; it means
// 'null', per the spec
.filter(|id| *id != " ")
{
static_metadata.misc.vendor_id =
Tag::from_str(vendor_id).map_err(|cause| Error::InvalidTag {
raw_tag: vendor_id.to_owned(),
Expand Down Expand Up @@ -2317,6 +2323,16 @@ mod tests {
static_metadata.misc.is_fixed_pitch
}

#[test]
fn allow_four_spaces_for_vendor_id() {
let (_, context) = build_static_metadata("empty-vendorid.ufo", default_test_flags());
let static_meta = context.static_metadata.get();
assert_eq!(
static_meta.misc.vendor_id.as_ref(),
fontir::ir::DEFAULT_VENDOR_ID.as_bytes()
)
}

#[test]
fn fixed_pitch_on() {
assert_eq!(Some(true), fixed_pitch_of("FixedPitch.designspace"));
Expand Down

0 comments on commit 2b7f27e

Please sign in to comment.