Branch: refs/heads/main
Home:
https://github.com/fonttools/fonttools
Commit: b2af8c861188ff032c89bf562a1aa26ac9cd60be
https://github.com/fonttools/fonttools/commit/b2af8c861188ff032c89bf562a1aa26ac9cd60be
Author: Sanjay Santhanam <
51058514+S...@users.noreply.github.com>
Date: 2026-07-14 (Tue, 14 Jul 2026)
Changed paths:
M Lib/fontTools/svgLib/path/parser.py
M Tests/svgLib/path/parser_test.py
Log Message:
-----------
[svgLib.path] Ignore closepath rounding noise
Relative commands can return to the subpath start with a few bits of floating-point error, causing parse_path to emit a spurious closing line segment.
Use a tight complex comparison before materializing the closing segment and add a regression test for a mathematically closed relative path.
Commit: b47f98f7938857d3dd2e2bf3dfb8ef84d029ffd4
https://github.com/fonttools/fonttools/commit/b47f98f7938857d3dd2e2bf3dfb8ef84d029ffd4
Author: Cosimo Lupo <
cos...@anthrotype.com>
Date: 2026-08-20 (Thu, 20 Aug 2026)
Changed paths:
M .github/workflows/test.yml
M .github/workflows/wheels.yml
A Doc/partial-instancing-avar2-design.md
M Doc/source/ttLib/tables.rst
A Doc/source/ttLib/tables/E_B_S_C_.rst
M Doc/source/ttx.rst
M Lib/fontTools/afmLib.py
M Lib/fontTools/agl.py
M Lib/fontTools/cffLib/CFF2ToCFF.py
M Lib/fontTools/cffLib/width.py
M Lib/fontTools/colorLib/builder.py
M Lib/fontTools/config/__init__.py
M Lib/fontTools/cu2qu/__main__.py
M Lib/fontTools/cu2qu/cu2qu.py
M Lib/fontTools/cu2qu/ufo.py
M Lib/fontTools/designspaceLib/__init__.py
M Lib/fontTools/designspaceLib/__main__.py
M Lib/fontTools/diff/__main__.py
M Lib/fontTools/encodings/codecs.py
M Lib/fontTools/feaLib/__main__.py
M Lib/fontTools/feaLib/builder.py
M Lib/fontTools/feaLib/parser.py
M Lib/fontTools/feaLib/variableScalar.py
M Lib/fontTools/fontBuilder.py
M Lib/fontTools/merge/__init__.py
M Lib/fontTools/merge/__main__.py
M Lib/fontTools/merge/base.py
M Lib/fontTools/merge/cmap.py
M Lib/fontTools/merge/layout.py
M Lib/fontTools/merge/tables.py
M Lib/fontTools/merge/util.py
M Lib/fontTools/misc/arrayTools.py
M Lib/fontTools/misc/bezierTools.py
M Lib/fontTools/misc/classifyTools.py
M Lib/fontTools/misc/cliTools.py
M Lib/fontTools/misc/configTools.py
M Lib/fontTools/misc/cython.py
M Lib/fontTools/misc/encodingTools.py
M Lib/fontTools/misc/enumTools.py
M Lib/fontTools/misc/etree.py
M Lib/fontTools/misc/fixedTools.py
M Lib/fontTools/misc/loggingTools.py
M Lib/fontTools/misc/plistlib/__init__.py
M Lib/fontTools/misc/psCharStrings.py
M Lib/fontTools/misc/psLib.py
M Lib/fontTools/misc/sstruct.py
M Lib/fontTools/misc/symfont.py
M Lib/fontTools/misc/textTools.py
M Lib/fontTools/misc/timeTools.py
M Lib/fontTools/misc/transform.py
M Lib/fontTools/misc/vector.py
M Lib/fontTools/misc/xmlReader.py
M Lib/fontTools/misc/xmlWriter.py
M Lib/fontTools/mtiLib/__init__.py
M Lib/fontTools/otlLib/builder.py
M Lib/fontTools/otlLib/optimize/__main__.py
M Lib/fontTools/pens/areaPen.py
M Lib/fontTools/pens/basePen.py
M Lib/fontTools/pens/boundsPen.py
M Lib/fontTools/pens/cairoPen.py
M Lib/fontTools/pens/cocoaPen.py
M Lib/fontTools/pens/perimeterPen.py
M Lib/fontTools/pens/pointInsidePen.py
M Lib/fontTools/pens/qtPen.py
M Lib/fontTools/pens/quartzPen.py
M Lib/fontTools/pens/recordingPen.py
M Lib/fontTools/pens/reportLabPen.py
M Lib/fontTools/pens/reverseContourPen.py
M Lib/fontTools/pens/roundingPen.py
M Lib/fontTools/pens/teePen.py
M Lib/fontTools/pens/transformPen.py
M Lib/fontTools/pens/ttGlyphPen.py
M Lib/fontTools/pens/wxPen.py
M Lib/fontTools/qu2cu/__main__.py
M Lib/fontTools/qu2cu/cli.py
M Lib/fontTools/qu2cu/qu2cu.py
M Lib/fontTools/subset/__init__.py
M Lib/fontTools/subset/__main__.py
M Lib/fontTools/subset/svg.py
M Lib/fontTools/svgLib/path/__init__.py
M Lib/fontTools/svgLib/path/arc.py
M Lib/fontTools/svgLib/path/parser.py
M Lib/fontTools/t1Lib/__init__.py
M Lib/fontTools/tfmLib.py
M Lib/fontTools/ttLib/__init__.py
M Lib/fontTools/ttLib/removeOverlaps.py
M Lib/fontTools/ttLib/reorderGlyphs.py
M Lib/fontTools/ttLib/scaleUpem.py
M Lib/fontTools/ttLib/sfnt.py
M Lib/fontTools/ttLib/tables/BitmapGlyphMetrics.py
M Lib/fontTools/ttLib/tables/DefaultTable.py
M Lib/fontTools/ttLib/tables/E_B_D_T_.py
M Lib/fontTools/ttLib/tables/E_B_L_C_.py
A Lib/fontTools/ttLib/tables/E_B_S_C_.py
M Lib/fontTools/ttLib/tables/F__e_a_t.py
M Lib/fontTools/ttLib/tables/G__l_a_t.py
M Lib/fontTools/ttLib/tables/G__l_o_c.py
M Lib/fontTools/ttLib/tables/O_S_2f_2.py
M Lib/fontTools/ttLib/tables/S_V_G_.py
M Lib/fontTools/ttLib/tables/S__i_l_f.py
M Lib/fontTools/ttLib/tables/S__i_l_l.py
M Lib/fontTools/ttLib/tables/T_S_I_B_.py
M Lib/fontTools/ttLib/tables/T_S_I_C_.py
M Lib/fontTools/ttLib/tables/T_S_I_D_.py
M Lib/fontTools/ttLib/tables/T_S_I_J_.py
M Lib/fontTools/ttLib/tables/T_S_I_P_.py
M Lib/fontTools/ttLib/tables/T_S_I_S_.py
M Lib/fontTools/ttLib/tables/T_S_I_V_.py
M Lib/fontTools/ttLib/tables/T_S_I__1.py
M Lib/fontTools/ttLib/tables/T_S_I__2.py
M Lib/fontTools/ttLib/tables/T_S_I__3.py
M Lib/fontTools/ttLib/tables/TupleVariation.py
M Lib/fontTools/ttLib/tables/__init__.py
M Lib/fontTools/ttLib/tables/_a_v_a_r.py
M Lib/fontTools/ttLib/tables/_c_m_a_p.py
M Lib/fontTools/ttLib/tables/_c_v_a_r.py
M Lib/fontTools/ttLib/tables/_f_v_a_r.py
M Lib/fontTools/ttLib/tables/_g_a_s_p.py
M Lib/fontTools/ttLib/tables/_g_l_y_f.py
M Lib/fontTools/ttLib/tables/_h_e_a_d.py
M Lib/fontTools/ttLib/tables/_h_h_e_a.py
M Lib/fontTools/ttLib/tables/_h_m_t_x.py
M Lib/fontTools/ttLib/tables/_k_e_r_n.py
M Lib/fontTools/ttLib/tables/_l_o_c_a.py
M Lib/fontTools/ttLib/tables/_n_a_m_e.py
M Lib/fontTools/ttLib/tables/_s_b_i_x.py
M Lib/fontTools/ttLib/tables/_t_r_a_k.py
M Lib/fontTools/ttLib/tables/_v_h_e_a.py
M Lib/fontTools/ttLib/tables/otTables.py
M Lib/fontTools/ttLib/tables/otTraverse.py
M Lib/fontTools/ttLib/tables/sbixGlyph.py
M Lib/fontTools/ttLib/tables/ttProgram.py
M Lib/fontTools/ttLib/ttFont.py
M Lib/fontTools/ttLib/woff2.py
M Lib/fontTools/ttx.py
M Lib/fontTools/ufoLib/errors.py
M Lib/fontTools/unicodedata/__init__.py
M Lib/fontTools/varLib/__init__.py
M Lib/fontTools/varLib/__main__.py
M Lib/fontTools/varLib/cff.py
M Lib/fontTools/varLib/instancer/__init__.py
M Lib/fontTools/varLib/instancer/featureVars.py
M Lib/fontTools/varLib/iup.py
M Lib/fontTools/varLib/merger.py
M Lib/fontTools/varLib/models.py
M Lib/fontTools/varLib/multiVarStore.py
M Lib/fontTools/varLib/mutator.py
M Lib/fontTools/varLib/varStore.py
M MetaTools/buildTableList.py
M MetaTools/buildUCD.py
M MetaTools/check_table_coverage.py
M MetaTools/roundTrip.py
M NEWS.rst
M Snippets/compact_gpos.py
M Snippets/otf2ttf.py
M Snippets/rename-fonts.py
M Snippets/statShape.py
M Snippets/svg2glif.py
M Tests/afmLib/afmLib_test.py
M Tests/agl_test.py
M Tests/cffLib/cffLib_test.py
M Tests/colorLib/builder_test.py
M Tests/colorLib/unbuilder_test.py
M Tests/cu2qu/cli_test.py
M Tests/cu2qu/cu2qu_test.py
M Tests/cu2qu/ufo_test.py
M Tests/designspaceLib/designspace_test.py
M Tests/feaLib/builder_test.py
M Tests/feaLib/lexer_test.py
M Tests/feaLib/parser_test.py
M Tests/feaLib/variableScalar_test.py
M Tests/merge/merge_test.py
M Tests/misc/bezierTools_test.py
M Tests/misc/loggingTools_test.py
M Tests/misc/macRes_test.py
M Tests/misc/plistlib_test.py
M Tests/misc/xmlReader_test.py
M Tests/misc/xmlWriter_test.py
M Tests/pens/cu2quPen_test.py
M Tests/pens/reverseContourPen_test.py
M Tests/pens/roundingPen_test.py
M Tests/pens/utils.py
M Tests/qu2cu/qu2cu_cli_test.py
M Tests/subset/subset_test.py
M Tests/subset/svg_test.py
M Tests/svgLib/path/parser_test.py
M Tests/svgLib/path/path_test.py
M Tests/t1Lib/t1Lib_test.py
M Tests/ttLib/main_test.py
M Tests/ttLib/sfnt_test.py
M Tests/ttLib/tables/C_B_L_C_test.py
M Tests/ttLib/tables/C_F_F__2_test.py
M Tests/ttLib/tables/C_F_F_test.py
M Tests/ttLib/tables/C_O_L_R_test.py
M Tests/ttLib/tables/C_P_A_L_test.py
M Tests/ttLib/tables/D__e_b_g_test.py
A Tests/ttLib/tables/E_B_S_C__test.py
M Tests/ttLib/tables/M_V_A_R_test.py
M Tests/ttLib/tables/S_T_A_T_test.py
M Tests/ttLib/tables/S_V_G__test.py
M Tests/ttLib/tables/T_S_I__1_test.py
M Tests/ttLib/tables/_a_n_k_r_test.py
M Tests/ttLib/tables/_a_v_a_r_test.py
M Tests/ttLib/tables/_b_s_l_n_test.py
M Tests/ttLib/tables/_c_i_d_g_test.py
M Tests/ttLib/tables/_c_m_a_p_test.py
M Tests/ttLib/tables/_c_v_a_r_test.py
M Tests/ttLib/tables/_f_v_a_r_test.py
M Tests/ttLib/tables/_g_c_i_d_test.py
M Tests/ttLib/tables/_g_l_y_f_test.py
M Tests/ttLib/tables/_g_v_a_r_test.py
M Tests/ttLib/tables/_h_h_e_a_test.py
M Tests/ttLib/tables/_k_e_r_n_test.py
M Tests/ttLib/tables/_l_c_a_r_test.py
M Tests/ttLib/tables/_m_e_t_a_test.py
M Tests/ttLib/tables/_m_o_r_t_test.py
M Tests/ttLib/tables/_m_o_r_x_test.py
M Tests/ttLib/tables/_o_p_b_d_test.py
M Tests/ttLib/tables/_p_r_o_p_test.py
M Tests/ttLib/tables/_t_r_a_k_test.py
M Tests/ttLib/tables/_v_h_e_a_test.py
M Tests/ttLib/tables/otConverters_test.py
M Tests/ttLib/tables/otTables_test.py
M Tests/ttLib/ttFont_test.py
M Tests/ttLib/woff2_test.py
M Tests/ufoLib/GLIF1_test.py
M Tests/ufoLib/UFOConversion_test.py
M Tests/ufoLib/testSupport.py
M Tests/unicodedata_test.py
M Tests/varLib/instancer/conftest.py
M Tests/varLib/instancer/instancer_test.py
M Tests/varLib/merger_test.py
M Tests/varLib/varLib_test.py
M Tests/varLib/varStore_test.py
M Tests/voltLib/volttofea_test.py
M dev-requirements.txt
Log Message:
-----------
Merge branch 'main' into fix/svg-closepath-rounding
Commit: 4e3eea0acf15ca610d6e88821433d7b1a2278e68
https://github.com/fonttools/fonttools/commit/4e3eea0acf15ca610d6e88821433d7b1a2278e68
Author: Cosimo Lupo <
cos...@anthrotype.com>
Date: 2026-08-20 (Thu, 20 Aug 2026)
Changed paths:
M Lib/fontTools/svgLib/path/parser.py
Log Message:
-----------
[svgLib.path] reformat with black after merge
Commit: 8dffa85c77cd957d23f1ccaf77e4bc8755374207
https://github.com/fonttools/fonttools/commit/8dffa85c77cd957d23f1ccaf77e4bc8755374207
Author: Cosimo Lupo <
cos...@anthrotype.com>
Date: 2026-08-20 (Thu, 20 Aug 2026)
Changed paths:
M Lib/fontTools/svgLib/path/parser.py
M Tests/svgLib/path/parser_test.py
Log Message:
-----------
Merge pull request #4127 from Sanjays2402/fix/svg-closepath-rounding
[svgLib.path] Avoid spurious close segments from float rounding
Compare:
https://github.com/fonttools/fonttools/compare/9c80ed055e18...8dffa85c77cd
To unsubscribe from these emails, change your notification settings at
https://github.com/fonttools/fonttools/settings/notifications