diff --git a/Lib/fontTools/varLib/__init__.py b/Lib/fontTools/varLib/__init__.py index 733af420f..6e0050afb 100644 --- a/Lib/fontTools/varLib/__init__.py +++ b/Lib/fontTools/varLib/__init__.py @@ -291,8 +291,12 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True): gvar.reserved = 0 gvar.variations = {} + glyf = font['glyf'] + for glyph in font.getGlyphOrder(): + isComposite = glyf[glyph].isComposite() + allData = [_GetCoordinates(m, glyph) for m in master_ttfs] model, allData = masterModel.getSubModel(allData) @@ -315,13 +319,23 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True): endPts = control[1] if control[0] >= 1 else list(range(len(control[1]))) for i,(delta,support) in enumerate(zip(deltas[1:], supports[1:])): - if all(abs(v) <= tolerance for v in delta.array): + if all(abs(v) <= tolerance for v in delta.array) and not isComposite: continue var = TupleVariation(support, delta) if optimize: delta_opt = iup_delta_optimize(delta, origCoords, endPts, tolerance=tolerance) if None in delta_opt: + """In composite glyphs, there should be one 0 entry + to make sure the gvar entry is written to the font. + + This is to work around an issue with macOS 10.14 and can be + removed once the behaviour of macOS is changed. + + https://github.com/fonttools/fonttools/issues/1381 + """ + if all(d is None for d in delta_opt): + delta_opt = [(0, 0)] + [None] * (len(delta_opt) - 1) # Use "optimized" version only if smaller... var_opt = TupleVariation(support, delta_opt) diff --git a/Tests/varLib/data/BuildGvarCompositeExplicitDelta.designspace b/Tests/varLib/data/BuildGvarCompositeExplicitDelta.designspace new file mode 100644 index 000000000..b47227f49 --- /dev/null +++ b/Tests/varLib/data/BuildGvarCompositeExplicitDelta.designspace @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ttx_interpolatable_ttf/TestFamily4-Italic15.ttx b/Tests/varLib/data/master_ttx_interpolatable_ttf/TestFamily4-Italic15.ttx new file mode 100644 index 000000000..f7aa15fc6 --- /dev/null +++ b/Tests/varLib/data/master_ttx_interpolatable_ttf/TestFamily4-Italic15.ttx @@ -0,0 +1,662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copyright 2017 by Jens Kutilek + + + Test Family 4 15 + + + Italic + + + 1.000;jens;TestFamily4-Italic15 + + + Test Family 4 Italic 15 + + + Version 1.000 + + + TestFamily4-Italic15 + + + Jens Kutilek + + + Jens Kutilek after the ISO 3098 standard + + + https://www.kutilek.de/ + + + https://www.kutilek.de/ + + + Test Family 4 + + + Italic 15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ttx_interpolatable_ttf/TestFamily4-Regular.ttx b/Tests/varLib/data/master_ttx_interpolatable_ttf/TestFamily4-Regular.ttx new file mode 100644 index 000000000..2e354b0ad --- /dev/null +++ b/Tests/varLib/data/master_ttx_interpolatable_ttf/TestFamily4-Regular.ttx @@ -0,0 +1,656 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copyright 2017 by Jens Kutilek + + + Test Family 4 + + + Regular + + + 1.000;jens;TestFamily4-Regular + + + Test Family 4 Regular + + + Version 1.000 + + + TestFamily4-Regular + + + Jens Kutilek + + + Jens Kutilek after the ISO 3098 standard + + + https://www.kutilek.de/ + + + https://www.kutilek.de/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/features.fea b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/features.fea new file mode 100644 index 000000000..88e4c41ad --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/features.fea @@ -0,0 +1,23 @@ +# automatic +@Uppercase = [ N O Odieresis ]; + +# Prefix: Languagesystems +# automatic +languagesystem DFLT dflt; +languagesystem latn dflt; +languagesystem latn NLD; + + +feature cpsp { +pos @Uppercase <25 0 50 0>; + +} cpsp; + +table GDEF { + # automatic + GlyphClassDef + [N O Odieresis n o odieresis], # Base + , # Liga + [dieresiscomb], # Mark + ; +} GDEF; diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/fontinfo.plist b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/fontinfo.plist new file mode 100644 index 000000000..b909a16cc --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/fontinfo.plist @@ -0,0 +1,93 @@ + + + + + ascender + 600.0 + capHeight + 500.0 + copyright + Copyright 2017 by Jens Kutilek + descender + -150.0 + familyName + Test Family 4 + guidelines + + + angle + 180.0 + x + 125.0 + y + 175.0 + + + italicAngle + -15.0 + openTypeHeadCreated + 2017/10/21 13:31:38 + openTypeNameDesigner + Jens Kutilek after the ISO 3098 standard + openTypeNameDesignerURL + https://www.kutilek.de/ + openTypeNameManufacturer + Jens Kutilek + openTypeNameManufacturerURL + https://www.kutilek.de/ + openTypeOS2Type + + 3 + + openTypeOS2VendorID + jens + openTypeOS2WinAscent + 700 + openTypeOS2WinDescent + 250 + postscriptBlueValues + + -10.0 + 0.0 + 350.0 + 360.0 + 500.0 + 510.0 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + -160.0 + -150.0 + + postscriptStemSnapH + + 50 + + postscriptStemSnapV + + 50 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleMapFamilyName + Test Family 4 15 + styleMapStyleName + italic + styleName + Italic 15 + unitsPerEm + 750 + versionMajor + 1 + versionMinor + 0 + xHeight + 350.0 + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/N_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/N_.glif new file mode 100644 index 000000000..ef8090349 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/N_.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/O_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/O_.glif new file mode 100644 index 000000000..ac3160a60 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/O_.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/contents.plist b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/contents.plist new file mode 100644 index 000000000..e7bf83561 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/contents.plist @@ -0,0 +1,14 @@ + + + + + N + N_.glif + O + O_.glif + dieresiscomb + dieresiscomb.glif + o + o.glif + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/dieresiscomb.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/dieresiscomb.glif new file mode 100644 index 000000000..8dac7b72f --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/dieresiscomb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/o.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/o.glif new file mode 100644 index 000000000..6a2ce9fdb --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs.public.background/o.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/N_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/N_.glif new file mode 100644 index 000000000..d289e0d12 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/N_.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 10:52:27 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/O_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/O_.glif new file mode 100644 index 000000000..aafee0a95 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/O_.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2017/10/27 21:28:25 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/O_dieresis.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/O_dieresis.glif new file mode 100644 index 000000000..93bca95ff --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/O_dieresis.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2017/10/27 21:28:35 + public.markColor + 0,0.67,0.91,1 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/contents.plist b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/contents.plist new file mode 100644 index 000000000..6a3662fd3 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/contents.plist @@ -0,0 +1,20 @@ + + + + + N + N_.glif + O + O_.glif + Odieresis + O_dieresis.glif + dieresiscomb + dieresiscomb.glif + n + n.glif + o + o.glif + odieresis + odieresis.glif + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/dieresiscomb.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/dieresiscomb.glif new file mode 100644 index 000000000..224df4d5b --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/dieresiscomb.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 11:01:28 + com.schriftgestaltung.Glyphs.originalWidth + 300.0 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/n.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/n.glif new file mode 100644 index 000000000..1313dd47f --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/n.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2017/10/27 21:28:25 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/o.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/o.glif new file mode 100644 index 000000000..ac3ff7e11 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/o.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 11:01:11 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/odieresis.glif b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/odieresis.glif new file mode 100644 index 000000000..42c39d1a5 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/glyphs/odieresis.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 10:59:58 + public.markColor + 0,0.67,0.91,1 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/groups.plist b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/groups.plist new file mode 100644 index 000000000..f9e8ed31e --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/groups.plist @@ -0,0 +1,34 @@ + + + + + public.kern1.O + + O + Odieresis + + public.kern1.n + + n + + public.kern1.o + + o + odieresis + + public.kern2.O + + O + Odieresis + + public.kern2.n + + n + + public.kern2.o + + o + odieresis + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/layercontents.plist b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/layercontents.plist new file mode 100644 index 000000000..7120d0ba4 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + public.background + glyphs.public.background + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/lib.plist b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/lib.plist new file mode 100644 index 000000000..b9f2b9293 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/lib.plist @@ -0,0 +1,86 @@ + + + + + com.schriftgestaltung.appVersion + 1179 + com.schriftgestaltung.customName + Italic 15 + com.schriftgestaltung.customParameter.GSFont.Axes + + + Name + Slant + Tag + slnt + + + com.schriftgestaltung.customParameter.GSFont.DisplayStrings + + o/dieresiscomb ö + + com.schriftgestaltung.customParameter.GSFont.Variation Font Origin + EB3D7718-A203-47FB-ABD4-8B7A501887ED + com.schriftgestaltung.customParameter.GSFont.disablesAutomaticAlignment + + com.schriftgestaltung.customParameter.GSFont.useNiceNames + 1 + com.schriftgestaltung.customParameter.GSFontMaster.Link Metrics With Master + Regular + com.schriftgestaltung.customParameter.GSFontMaster.Master Name + Italic 15 + com.schriftgestaltung.customParameter.GSFontMaster.customValue + -15.0 + com.schriftgestaltung.customParameter.GSFontMaster.customValue1 + 16.0 + com.schriftgestaltung.customParameter.GSFontMaster.customValue2 + 0.0 + com.schriftgestaltung.customParameter.GSFontMaster.customValue3 + 0.0 + com.schriftgestaltung.customParameter.GSFontMaster.iconName + + com.schriftgestaltung.customParameter.GSFontMaster.weightValue + -15.0 + com.schriftgestaltung.customParameter.GSFontMaster.widthValue + 100.0 + com.schriftgestaltung.customValue + -15.0 + com.schriftgestaltung.customValue1 + 16.0 + com.schriftgestaltung.fontMasterOrder + 1 + com.schriftgestaltung.glyphOrder + + com.schriftgestaltung.keyboardIncrement + 1 + com.schriftgestaltung.weight + Regular + com.schriftgestaltung.weightValue + -15.0 + com.schriftgestaltung.width + Regular + com.schriftgestaltung.widthValue + 100.0 + noodleExtremesAndInflections + 0 + noodleRemoveOverlap + 1 + noodleThickness + 50.0 + public.glyphOrder + + N + O + Odieresis + n + o + odieresis + dieresiscomb + + public.postscriptNames + + dieresiscomb + uni0308 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/metainfo.plist b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Italic15.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/features.fea b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/features.fea new file mode 100644 index 000000000..88e4c41ad --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/features.fea @@ -0,0 +1,23 @@ +# automatic +@Uppercase = [ N O Odieresis ]; + +# Prefix: Languagesystems +# automatic +languagesystem DFLT dflt; +languagesystem latn dflt; +languagesystem latn NLD; + + +feature cpsp { +pos @Uppercase <25 0 50 0>; + +} cpsp; + +table GDEF { + # automatic + GlyphClassDef + [N O Odieresis n o odieresis], # Base + , # Liga + [dieresiscomb], # Mark + ; +} GDEF; diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/fontinfo.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/fontinfo.plist new file mode 100644 index 000000000..7ff1edb16 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/fontinfo.plist @@ -0,0 +1,93 @@ + + + + + ascender + 600.0 + capHeight + 500.0 + copyright + Copyright 2017 by Jens Kutilek + descender + -150.0 + familyName + Test Family 4 + guidelines + + + angle + 180.0 + x + 125.0 + y + 175.0 + + + italicAngle + -0.0 + openTypeHeadCreated + 2017/10/21 13:31:38 + openTypeNameDesigner + Jens Kutilek after the ISO 3098 standard + openTypeNameDesignerURL + https://www.kutilek.de/ + openTypeNameManufacturer + Jens Kutilek + openTypeNameManufacturerURL + https://www.kutilek.de/ + openTypeOS2Type + + 3 + + openTypeOS2VendorID + jens + openTypeOS2WinAscent + 700 + openTypeOS2WinDescent + 250 + postscriptBlueValues + + -10.0 + 0.0 + 350.0 + 360.0 + 500.0 + 510.0 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + -160.0 + -150.0 + + postscriptStemSnapH + + 50 + + postscriptStemSnapV + + 50 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleMapFamilyName + Test Family 4 + styleMapStyleName + regular + styleName + Regular + unitsPerEm + 750 + versionMajor + 1 + versionMinor + 0 + xHeight + 350.0 + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/N_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/N_.glif new file mode 100644 index 000000000..941a558ec --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/N_.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/O_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/O_.glif new file mode 100644 index 000000000..dc9a72ed2 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/O_.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/contents.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/contents.plist new file mode 100644 index 000000000..8382c7908 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/contents.plist @@ -0,0 +1,16 @@ + + + + + N + N_.glif + O + O_.glif + dieresiscomb + dieresiscomb.glif + n + n.glif + o + o.glif + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/dieresiscomb.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/dieresiscomb.glif new file mode 100644 index 000000000..11fb86ed6 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/dieresiscomb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/n.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/n.glif new file mode 100644 index 000000000..2d1a13e8a --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/n.glif @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/o.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/o.glif new file mode 100644 index 000000000..2e9a61bc8 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs.public.background/o.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/N_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/N_.glif new file mode 100644 index 000000000..a588dac2f --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/N_.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 10:52:27 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/O_.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/O_.glif new file mode 100644 index 000000000..f3979ed55 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/O_.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2017/10/27 21:28:25 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/O_dieresis.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/O_dieresis.glif new file mode 100644 index 000000000..22fcd3797 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/O_dieresis.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2017/10/27 21:28:35 + public.markColor + 0,0.67,0.91,1 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/contents.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/contents.plist new file mode 100644 index 000000000..6a3662fd3 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/contents.plist @@ -0,0 +1,20 @@ + + + + + N + N_.glif + O + O_.glif + Odieresis + O_dieresis.glif + dieresiscomb + dieresiscomb.glif + n + n.glif + o + o.glif + odieresis + odieresis.glif + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/dieresiscomb.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/dieresiscomb.glif new file mode 100644 index 000000000..b3cfef519 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/dieresiscomb.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 11:01:28 + com.schriftgestaltung.Glyphs.originalWidth + 300.0 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/n.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/n.glif new file mode 100644 index 000000000..221ce82cb --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/n.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2017/10/27 21:28:25 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/o.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/o.glif new file mode 100644 index 000000000..417e4ff8e --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/o.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 11:01:11 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/odieresis.glif b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/odieresis.glif new file mode 100644 index 000000000..b0f2a5971 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/glyphs/odieresis.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + com.schriftgestaltung.Glyphs.lastChange + 2018/11/20 10:59:58 + public.markColor + 0,0.67,0.91,1 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/groups.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/groups.plist new file mode 100644 index 000000000..f9e8ed31e --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/groups.plist @@ -0,0 +1,34 @@ + + + + + public.kern1.O + + O + Odieresis + + public.kern1.n + + n + + public.kern1.o + + o + odieresis + + public.kern2.O + + O + Odieresis + + public.kern2.n + + n + + public.kern2.o + + o + odieresis + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/kerning.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/kerning.plist new file mode 100644 index 000000000..8da68f2e7 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/kerning.plist @@ -0,0 +1,468 @@ + + + + + public.kern1.A + + public.kern2.O + -5.0 + public.kern2.T + -40.0 + public.kern2.V + -40.0 + public.kern2.W + -25.0 + public.kern2.Y + -50.0 + public.kern2.f + -15.0 + public.kern2.hyphen + -10.0 + public.kern2.quote + -80.0 + public.kern2.w + -25.0 + public.kern2.y + -30.0 + + public.kern1.B + + public.kern2.quote + -10.0 + + public.kern1.C + + public.kern2.O + -5.0 + + public.kern1.E + + public.kern2.O + -5.0 + + public.kern1.F + + public.kern2.A + -35.0 + public.kern2.a + -25.0 + public.kern2.o + -20.0 + public.kern2.period + -40.0 + public.kern2.u + -15.0 + + public.kern1.K + + public.kern2.O + -10.0 + + public.kern1.L + + public.kern2.O + -20.0 + public.kern2.T + -60.0 + public.kern2.V + -65.0 + public.kern2.W + -50.0 + public.kern2.Y + -70.0 + public.kern2.hyphen + -30.0 + public.kern2.quote + -130.0 + + public.kern1.O + + public.kern2.A + -5.0 + public.kern2.J + -15.0 + public.kern2.T + -15.0 + public.kern2.V + -5.0 + public.kern2.W + -15.0 + public.kern2.X + -15.0 + public.kern2.Y + -20.0 + public.kern2.quote + -5.0 + + public.kern1.P + + public.kern2.A + -30.0 + public.kern2.J + -80.0 + public.kern2.period + -50.0 + public.kern2.quote + 15.0 + + public.kern1.R + + public.kern2.T + -15.0 + public.kern2.W + -5.0 + public.kern2.Y + -10.0 + public.kern2.o + -10.0 + public.kern2.quote + 10.0 + + public.kern1.S + + public.kern2.quote + -10.0 + + public.kern1.T + + public.kern2.A + -40.0 + public.kern2.J + -50.0 + public.kern2.O + -15.0 + public.kern2.a + -50.0 + public.kern2.hyphen + -50.0 + public.kern2.n + -40.0 + public.kern2.o + -50.0 + public.kern2.period + -60.0 + public.kern2.s + -50.0 + public.kern2.u + -40.0 + public.kern2.w + -40.0 + public.kern2.y + -40.0 + + public.kern1.V + + public.kern2.A + -40.0 + public.kern2.O + -5.0 + public.kern2.a + -45.0 + public.kern2.f + -15.0 + public.kern2.hyphen + -30.0 + public.kern2.n + -30.0 + public.kern2.o + -45.0 + public.kern2.period + -70.0 + public.kern2.quote + -10.0 + public.kern2.s + -35.0 + public.kern2.u + -35.0 + public.kern2.w + -35.0 + public.kern2.x + -40.0 + public.kern2.y + -35.0 + public.kern2.z + -40.0 + + public.kern1.W + + public.kern2.A + -25.0 + public.kern2.O + -15.0 + public.kern2.a + -25.0 + public.kern2.f + -15.0 + public.kern2.hyphen + -20.0 + public.kern2.n + -20.0 + public.kern2.o + -30.0 + public.kern2.period + -40.0 + public.kern2.quote + -10.0 + public.kern2.s + -20.0 + public.kern2.u + -30.0 + public.kern2.w + -25.0 + public.kern2.x + -30.0 + public.kern2.y + -35.0 + public.kern2.z + -25.0 + + public.kern1.X + + public.kern2.O + -15.0 + public.kern2.quote + -10.0 + + public.kern1.Y + + public.kern2.A + -50.0 + public.kern2.O + -20.0 + public.kern2.a + -60.0 + public.kern2.f + -20.0 + public.kern2.hyphen + -60.0 + public.kern2.n + -40.0 + public.kern2.o + -60.0 + public.kern2.period + -60.0 + public.kern2.quote + -5.0 + public.kern2.s + -45.0 + public.kern2.u + -40.0 + + public.kern1.Z + + public.kern2.quote + -5.0 + + public.kern1.c + + public.kern2.hyphen + -10.0 + public.kern2.quote + 20.0 + + public.kern1.f + + public.kern2.hyphen + -15.0 + public.kern2.o + -15.0 + public.kern2.period + -40.0 + public.kern2.quote + 45.0 + + public.kern1.hyphen + + public.kern2.A + -10.0 + public.kern2.T + -50.0 + public.kern2.V + -30.0 + public.kern2.W + -20.0 + public.kern2.Y + -60.0 + public.kern2.f + -5.0 + public.kern2.j + -5.0 + public.kern2.period + -20.0 + public.kern2.quote + -40.0 + public.kern2.s + -5.0 + public.kern2.w + -10.0 + public.kern2.x + -25.0 + public.kern2.y + -10.0 + public.kern2.z + -20.0 + + public.kern1.k + + public.kern2.hyphen + -5.0 + + public.kern1.l + + public.kern2.hyphen + -10.0 + public.kern2.period + 15.0 + public.kern2.quote + -15.0 + + public.kern1.n + + public.kern2.quote + -10.0 + public.kern2.y + -5.0 + + public.kern1.o + + public.kern2.period + -10.0 + public.kern2.quote + -10.0 + public.kern2.w + -8.0 + public.kern2.y + -8.0 + + public.kern1.period + + public.kern2.T + -60.0 + public.kern2.V + -70.0 + public.kern2.W + -40.0 + public.kern2.Y + -60.0 + public.kern2.f + -20.0 + public.kern2.hyphen + -20.0 + public.kern2.l + -5.0 + public.kern2.o + -10.0 + public.kern2.quote + -60.0 + public.kern2.u + -10.0 + public.kern2.w + -30.0 + public.kern2.x + 10.0 + public.kern2.y + -30.0 + public.kern2.z + 5.0 + + public.kern1.quote + + public.kern2.A + -90.0 + public.kern2.J + -110.0 + public.kern2.O + -10.0 + public.kern2.T + 10.0 + public.kern2.a + -30.0 + public.kern2.f + 5.0 + public.kern2.hyphen + -90.0 + public.kern2.n + -10.0 + public.kern2.o + -25.0 + public.kern2.period + -80.0 + public.kern2.s + -15.0 + public.kern2.u + -5.0 + public.kern2.z + -5.0 + + public.kern1.r + + public.kern2.hyphen + -5.0 + public.kern2.period + -35.0 + public.kern2.quote + 20.0 + + public.kern1.s + + public.kern2.hyphen + -10.0 + + public.kern1.t + + public.kern2.hyphen + -15.0 + public.kern2.o + -15.0 + public.kern2.period + -40.0 + public.kern2.quote + 20.0 + + public.kern1.u + + public.kern2.quote + 15.0 + + public.kern1.w + + public.kern2.hyphen + -10.0 + public.kern2.o + -8.0 + public.kern2.period + -30.0 + public.kern2.quote + 15.0 + + public.kern1.x + + public.kern2.hyphen + -25.0 + public.kern2.period + 10.0 + public.kern2.quote + 15.0 + + public.kern1.y + + public.kern2.hyphen + -10.0 + public.kern2.o + -8.0 + public.kern2.period + -30.0 + public.kern2.quote + 15.0 + + public.kern1.z + + public.kern2.hyphen + -10.0 + public.kern2.period + 5.0 + public.kern2.quote + 20.0 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/layercontents.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/layercontents.plist new file mode 100644 index 000000000..7120d0ba4 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + public.background + glyphs.public.background + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/lib.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/lib.plist new file mode 100644 index 000000000..7e5ced484 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/lib.plist @@ -0,0 +1,80 @@ + + + + + com.schriftgestaltung.appVersion + 1179 + com.schriftgestaltung.customParameter.GSFont.Axes + + + Name + Slant + Tag + slnt + + + com.schriftgestaltung.customParameter.GSFont.DisplayStrings + + o/dieresiscomb ö + + com.schriftgestaltung.customParameter.GSFont.Variation Font Origin + EB3D7718-A203-47FB-ABD4-8B7A501887ED + com.schriftgestaltung.customParameter.GSFont.disablesAutomaticAlignment + + com.schriftgestaltung.customParameter.GSFont.useNiceNames + 1 + com.schriftgestaltung.customParameter.GSFontMaster.Master Name + Regular + com.schriftgestaltung.customParameter.GSFontMaster.customValue + 0.0 + com.schriftgestaltung.customParameter.GSFontMaster.customValue1 + 16.0 + com.schriftgestaltung.customParameter.GSFontMaster.customValue2 + 0.0 + com.schriftgestaltung.customParameter.GSFontMaster.customValue3 + 0.0 + com.schriftgestaltung.customParameter.GSFontMaster.iconName + + com.schriftgestaltung.customParameter.GSFontMaster.weightValue + 0.0 + com.schriftgestaltung.customParameter.GSFontMaster.widthValue + 100.0 + com.schriftgestaltung.customValue1 + 16.0 + com.schriftgestaltung.fontMasterOrder + 0 + com.schriftgestaltung.glyphOrder + + com.schriftgestaltung.keyboardIncrement + 1 + com.schriftgestaltung.weight + Regular + com.schriftgestaltung.weightValue + 0.0 + com.schriftgestaltung.width + Regular + com.schriftgestaltung.widthValue + 100.0 + noodleExtremesAndInflections + 0 + noodleRemoveOverlap + 1 + noodleThickness + 50.0 + public.glyphOrder + + N + O + Odieresis + n + o + odieresis + dieresiscomb + + public.postscriptNames + + dieresiscomb + uni0308 + + + diff --git a/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/metainfo.plist b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/Tests/varLib/data/master_ufo/TestFamily4-Regular.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/Tests/varLib/data/test_results/BuildGvarCompositeExplicitDelta.ttx b/Tests/varLib/data/test_results/BuildGvarCompositeExplicitDelta.ttx new file mode 100644 index 000000000..ce5b55d29 --- /dev/null +++ b/Tests/varLib/data/test_results/BuildGvarCompositeExplicitDelta.ttx @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/varLib_test.py b/Tests/varLib/varLib_test.py index e92d107bd..3253dbbb3 100644 --- a/Tests/varLib/varLib_test.py +++ b/Tests/varLib/varLib_test.py @@ -160,7 +160,7 @@ class BuildTest(unittest.TestCase): avar segment will not be empty but will contain the default axis value maps: {-1.0: -1.0, 0.0: 0.0, 1.0: 1.0}. - This is to to work around an issue with some rasterizers: + This is to work around an issue with some rasterizers: https://github.com/googlei18n/fontmake/issues/295 https://github.com/fonttools/fonttools/issues/1011 """ @@ -180,7 +180,7 @@ class BuildTest(unittest.TestCase): resulting avar segment still contains the default axis value maps: {-1.0: -1.0, 0.0: 0.0, 1.0: 1.0}. - This is again to to work around an issue with some rasterizers: + This is again to work around an issue with some rasterizers: https://github.com/googlei18n/fontmake/issues/295 https://github.com/fonttools/fonttools/issues/1011 """ @@ -204,6 +204,21 @@ class BuildTest(unittest.TestCase): save_before_dump=True, ) + def test_varlib_gvar_explicit_delta(self): + """The variable font contains a composite glyph odieresis which does not + need a gvar entry, because all its deltas are 0, but it must be added + anyway to work around an issue with macOS 10.14. + + https://github.com/fonttools/fonttools/issues/1381 + """ + test_name = 'BuildGvarCompositeExplicitDelta' + self._run_varlib_build_test( + designspace_name=test_name, + font_name='TestFamily4', + tables=['gvar'], + expected_ttx_name=test_name + ) + def test_varlib_build_CFF2(self): ds_path = self.get_test_input('TestCFF2.designspace') suffix = '.otf'