)Ej3 ddlmZddlmZddlmZddlZddlZdZ ej dd\Z Z Z ej d d Zeej d e d zzdZeej d e d zzdZeeddDZeej de d zzd ZdgZed e d zD]IZedZedeeeDdzZeeJedeDZ[[edeeDZedeeDZedeeDZdZ Gdde!Z"GddeZ#ee#d Z$ee#e Z%ee#e Z&ee#e e zZ'ee#e e zZ(ee#e e zZ)ej*dfdZ+e,d krgddlZej-d drVej-d Z.d!eej-d"dd"ej-ddd"DZ/e+e.e/ej*#dSdSdS)$)BasePen)partial)countNzt x yTrealcFzx:%dzy:%dc#\K|]'}tjdtdz|fzdV(dS)zp:%d[%s]r TrN)spsymbolsn).0ws HC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/misc/symfont.py rs>MM1 :Q 2>>>MMMMMM01zc:%d)r rc#RK|]"}t|dz t|zV#dSr N)last)rjs rrrs3AA1a!etAw&AAAAAArrc#DK|]}t|ddVdS)Nr)tuple)ritems rrrs2MME$ss),,MMMMMMrc#nK|]/\}tfdt|DV0dS)c3ZK|]%\}}|t|zzdtz |z zzV&dSr)t)rir rs rrz.sA F FDAq!ad(a!eQ' ' F F F F F FrN)r enumerate)rcoeffsrs @rrrs`6 F F F FIf4E4E F F FFFrc#nK|]/\}tfdtdDV0dS)c3jK|],tfdtDV-dS)c3JK|]\}}t||zVdSN)P)rr! bernsteinrs rrz..!s4 J JLAyAaDGi  J J J J J JrNsumr")rr bernsteinss @rrz. s]    J J J JIj4I4I J J JJJ      rN)rrangerrr,s @rrrss :      q   rc#hK|]-\}}tdt|DV.dS)c3<K|]\}}t||zVdSr')C)rr!r)s rrz.'s/CC\Q !yCCCCCCrNr*r/s rrr&sY:CCYz-B-BCCCCCrc:tjtj|t }|t |dt|di}tj|tj|dtztddf}|S)Nrr )r integratesympifyysubsxdiffr )fcurveXYs rgreenr<,sq bjmmQ ' ''A 71:q'!*-..A QQ///!Q;;A HrceZdZdZdZdS)_BezierFuncsLazyc"||_i|_dSr')_symfunc _bezfuncs)selfsymfuncs r__init__z_BezierFuncsLazy.__init__4s rcdt|dzD}t|jt|}t j|ttd}t j ||S)Ncg|]}d|zS)zp%d)rds r z0_BezierFuncsLazy.__missing__..9s000a 000rr rG) r.r<r@ BezierCurver gcd_termscollectr+r(lambdify)rBr!argsr:s r __missing__z_BezierFuncsLazy.__missing__8si005Q<<000 $-Q 0 0 L3q"::.. / /{4###rN)__name__ __module__ __qualname__rDrOrGrrr>r>3s2$$$$$rr>cTeZdZiZedZd dZdZdZdZ dZ dZ d Z dS) GreenPenczt|}||jvrt||j|<|j|Sr')str _BezierFuncsr>)celffuncfuncstrs r_getGreenBezierFuncszGreenPen._getGreenBezierFuncsBs>d))$+++)9$)?)?D g & ))rNcrtj|||||_d|_dS)Nr)rrDr[_funcsvalue)rBrYglyphsets rrDzGreenPen.__init__Is5x(((//55  rc||_dSr') _startPointrBp0s r_moveTozGreenPen._moveToNsrc||}||jkr||jdSdSr')_getCurrentPointra_lineTorbs r _closePathzGreenPen._closePathQsD  " " $ $ ! ! ! LL) * * * * * " !rcR|}||jkrtdSr')rfraNotImplementedErrorrbs r_endPathzGreenPen._endPathVs/  " " $ $ ! ! !% % " !rcx|}|xj|jd||z c_dS)Nr rfr^r])rBp1rcs rrgzGreenPen._lineTo\s9  " " $ $ ndk!nR,,, rcz|}|xj|jd|||z c_dS)Nr-rm)rBrnp2rcs r _qCurveToOnezGreenPen._qCurveToOne`s;  " " $ $ ndk!nRR000 rc||}|xj|jd||||z c_dS)Nrrm)rBrnrpp3rcs r _curveToOnezGreenPen._curveToOneds=  " " $ $ ndk!nRR444 rr') rPrQrRrW classmethodr[rDrdrhrkrgrqrtrGrrrTrT?sL**[*  +++ &&& ---11155555rrT)rYc  |td|ztd|d|d||D]\}}td|z|tdd| d D]N d t d zD fd |D}d|D} fd|D}tj|ddt D\}}t|D]\}} td|z| d krtd|n/ dkrtd|n dkrtd||D]\}} td|d| |t|t d|D|D]\}} td|d| |Ptd|z||D]*\}}td|d t |d!|+td"|dS)#Nz"""%s"""afrom fontTools.pens.basePen import BasePen, OpenContourError try: import cython except (AttributeError, ImportError): # if cython not installed, use mock module with no-op decorators and types from fontTools.misc import cython COMPILED = cython.compiled __all__ = ["z "] class zS(BasePen): def __init__(self, glyphset=None): BasePen.__init__(self, glyphset) filez self.%s = 0aT def _moveTo(self, p0): self._startPoint = p0 def _closePath(self): p0 = self._getCurrentPoint() if p0 != self._startPoint: self._lineTo(self._startPoint) def _endPath(self): p0 = self._getCurrentPoint() if p0 != self._startPoint: raise OpenContourError( "Glyph statistics is not defined on open contours." ) )endrx)r r-rci|]@}tdD].}t||ttg||/AS)r-)r.r(XY)rr!rs r z!printGreenPen..sANNN!U1XXNN!Q!Q1NNNNrr cLg|] \}}t|t!SrG)r<rJ)rnamer:rs rrIz!printGreenPen..s+@@@wtQ%;q>**@@@rc g|]<}tj|ttd=S)rG)r rKrLr+r(rr:s rrIz!printGreenPen..s6FFF!",qyyQ4455FFFrc:g|]}|SrG)r7)rr:r7s rrIz!printGreenPen..s#///1!&&,,///rbasicc3DK|]}tjd|zVdS)zr%dN)r Symbol)rr!s rrz printGreenPen..s0;;aRYuqy));;;;;;r) optimizationsr z! @cython.locals(%s=cython.double)z @cython.locals(x0=cython.double, y0=cython.double) @cython.locals(x1=cython.double, y1=cython.double) def _lineTo(self, p1): x0,y0 = self._getCurrentPoint() x1,y1 = p1 r-z @cython.locals(x0=cython.double, y0=cython.double) @cython.locals(x1=cython.double, y1=cython.double) @cython.locals(x2=cython.double, y2=cython.double) def _qCurveToOne(self, p1, p2): x0,y0 = self._getCurrentPoint() x1,y1 = p1 x2,y2 = p2 ra= @cython.locals(x0=cython.double, y0=cython.double) @cython.locals(x1=cython.double, y1=cython.double) @cython.locals(x2=cython.double, y2=cython.double) @cython.locals(x3=cython.double, y3=cython.double) def _curveToOne(self, p1, p2, p3): x0,y0 = self._getCurrentPoint() x1,y1 = p1 x2,y2 = p2 x3,y3 = p3 z z = cg|] }|d SrrGrs rrIz!printGreenPen..s444!444rz self.z += zj if __name__ == '__main__': from fontTools.misc.symfont import x, y, printGreenPen printGreenPen('%s', [z ('z', z),z ]))printr.r cserziprV) penNamefuncsrx docstringrr:greensdefsexprsr^rr7s @@r printGreenPenrts= j9$%%% E" 77GGG! "%(11a o$400000    %*:@:@NNuQU||NNN@@@@%@@@FFvFFF///////f !;;577;;;   e  I IKD% 5<4 H H H H H 66      !VV      !VV        : :KD% Euu-D 9 9 9 9 9 444e444e<< @ @KD% EtttUU3$ ? ? ? ? ? @       AAa tttSVVVV44@@@@@ +D!!!!!!r__main__c6g|]\}}|t|fSrG)eval)rrr:s rrIrIs&TTTWT1$QTTTrr-rw)0fontTools.pens.basePenr functoolsr itertoolsrsympyr sysrr r r8r6r rr|r}rr(r2BinomialCoefficientr.r!rlenthisappendr"BernsteinPolynomialrJ BezierCurveCr<dictr>rTAreaPen MomentXPen MomentYPen MomentXXPen MomentYYPen MomentXYPenstdoutrrPargvrrrGrrrs ******  "*W4 ( ( (1aBJs E*"*Vq1u%D 1 1 122 E*"*Vq1u%D 1 1 122 E##MMMMM NOO E*"*Vq1u%E 2 2 233h q!a%%%A r "D 5AAcc$ii0@0@AAA A AD HDt$$$$eMM9LMMMMM$eY233 e ##677  u"#677     $ $ $ $ $t $ $ $'5'5'5'5'5w'5'5'5Z '( # # # WXA & & & WXA & & & ghQU+++ ghQU+++ ghQU+++ (+zTu"u"u"u"p zJJJ x|7(1+TTCHQTTNCHQTPQTN0S0STTT gu3:666666 77r