From f7312fc9d09675a6308d185dd6a94b9e56559d4d Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 8 Jan 2018 13:43:45 +0000 Subject: [PATCH] [misc.bezierTools] Slightly improve previous commit Part of https://github.com/fonttools/fonttools/issues/1142 --- Lib/fontTools/misc/bezierTools.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/fontTools/misc/bezierTools.py b/Lib/fontTools/misc/bezierTools.py index d9ed65c66..01a870279 100644 --- a/Lib/fontTools/misc/bezierTools.py +++ b/Lib/fontTools/misc/bezierTools.py @@ -60,7 +60,7 @@ def calcQuadraticArcLength(pt1, pt2, pt3): >>> calcQuadraticArcLength((0, 0), (50, -10), (80, 50)) 102.53273816445825 >>> calcQuadraticArcLength((0, 0), (40, 0), (-40, 0)) # collinear points, control point outside - 66.66666666666666 + 66.66666666666667 >>> calcQuadraticArcLength((0, 0), (40, 0), (0, 0)) # collinear points, looping back 40.0 """ @@ -85,7 +85,7 @@ def calcQuadraticArcLengthC(pt1, pt2, pt3): if _dot(d0,d1) >= 0: return abs(pt3-pt1) a, b = abs(d0), abs(d1) - return a + b - 2 * (a*b) / (a+b) + return (a*a + b*b) / (a+b) x0 = _dot(d,d0) / origDist x1 = _dot(d,d1) / origDist Len = abs(2 * (_intSecAtan(x1) - _intSecAtan(x0)) * origDist / (scale * (x1 - x0)))