L i-ddlmZddlmZmZmZddlmZmZddl m Z m Z ddl m Z ddlmZmZddlmZmZmZmZddlmZdd lZdd lZej4d ZGd d Zd ZdZGddeZGddeZ GddeZ!dZ"dZ#dZ$dZ%dZ&dZ' ddl(m)Z)e%Z*dZ.dZ/dZ0d Z1d!Z2d"Z3e4d#d$Z5d&d%Z6y #e+$r ddl,m-Z-e&Z*n #e+$re'Z*YnwxYwY?wxYw)') LerpGlyphSet) AbstractPenBasePenDecomposingPen)AbstractPointPenSegmentToPointPen) RecordingPenDecomposingRecordingPen) Transform) defaultdictdeque)sqrtcopysignatan2pi)EnumNzfontTools.varLib.interpolatablecheZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z ed ed ededede de de de de dedi Zy)InterpolatableProblemnothingmissing open_path path_count node_countnode_incompatibility contour_orderwrong_start_pointkink underweight overweight N)__name__ __module__ __qualname__NOTHINGMISSING OPEN_PATH PATH_COUNT NODE_COUNTNODE_INCOMPATIBILITY CONTOUR_ORDERWRONG_START_POINTKINK UNDERWEIGHT OVERWEIGHTseverityl/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/varLib/interpolatableHelpers.pyrrs{GGIJJ1#M+ DKJ 1AAaq1 aQB Hr;rcNtt|jddS)zGSort problems by severity, then by glyph name, then by problem message.c.td|dD S)Nc3nK|]-}tj|d|jddz/yw)type tolerancerN)rr9get).0ps r< z2sort_problems....2s8+33AfI>{TUAVVs35r )min)_s r<zsort_problems..1s!3qTr;T)keyreverse)dictsorteditems)problemss r< sort_problemsrO,s+  NN     r;c|| d|d| zS)z{Rotate list by k items forward. Ie. item at position 0 will be at position k in returned list. Negative k is allowed.Nr:)lks r<rot_listrS<s aRS6AcrF?r;c>eZdZd dZdZdZdZdZdZdZ d Z y) PerContourPenNchtj||||_||_d|_g|_yN)r__init__ _glyphset_Pen_penvalue)selfPenglyphsets r<rXzPerContourPen.__init__Cs.x(!   r;cZ|j|jj|yrW)_newItemr[moveTo)r]p0s r<_moveTozPerContourPen._moveToJs  r;c:|jj|yrW)r[lineTo)r]p1s r<_lineTozPerContourPen._lineToNs r;c<|jj||yrW)r[qCurveTo)r]rgp2s r< _qCurveToOnezPerContourPen._qCurveToOneQs 2r"r;c>|jj|||yrW)r[curveTo)r]rgrkp3s r< _curveToOnezPerContourPen._curveToOneTs "b"%r;cF|jjd|_yrW)r[ closePathr]s r< _closePathzPerContourPen._closePathWs  r;cF|jjd|_yrW)r[endPathrss r<_endPathzPerContourPen._endPath[s  r;ch|jx|_}|jj|yrW)rZr[r\append)r]pens r<razPerContourPen._newItem_s&))+% C #r;rW) r+r,r-rXrdrhrlrprtrwrar:r;r<rUrUBs*#&r;rUceZdZdZy)PerContourOrComponentPencb|j|jdj||y)N)rar\ addComponent)r] glyphNametransformations r<rz%PerContourOrComponentPen.addComponentes#  2##I~>r;N)r+r,r-rr:r;r<r|r|ds?r;r|c*eZdZdZddZddZddZy)SimpleRecordingPointPencg|_yrW)r\rss r<rXz SimpleRecordingPointPen.__init__ks  r;Nc yrWr:)r] identifierkwargss r< beginPathz!SimpleRecordingPointPen.beginPathn r;cyrWr:rss r<rvzSimpleRecordingPointPen.endPathqrr;cR|jj||dfydfy)NFT)r\ry)r]pt segmentTypes r<addPointz SimpleRecordingPointPen.addPointts& 2 (;uFGFGr;rW)returnN)r+r,r-rXrrvrr:r;r<rrjs  Hr;rcLd}t||D]\}}||z }|||zz }|SNr)zipv0v1sx0x1ds r< vdiff_hypot2rxs= Ab"+B G QU  Hr;cd}t||D]@\}}||z }||j|jz|j|jzzz }B|Sr)rrealimagrs r<vdiff_hypot2_complexrsW Ab"+/B G QVVaff_qvv ../ Hr;c>tfdt|DS)Nc34K|]\}}||ywrWr:)rCijGs r<rEz matching_cost..s741aqtAw7s)sum enumerate)rmatchings` r< matching_costrs 79X#67 77r;ct|}t|\}}|tt|k(j sJtd|D}t|t ||fS)Nc32K|]}t|ywrW)int)rCes r<rEz.s%1A%s)lenlinear_sum_assignmentlistrangeallr)rnrowscolss r<)min_cost_perfect_bipartite_matching_scipyrs` AA&q)JD$ DqN " ' ' )) ) %% %D :}Q- --r;ct|}dg|z}tj|D] \}}|||< |t||fSrW)rMunkrescomputer)rrrrowcols r<+min_cost_perfect_bipartite_matching_munkresrsQ AA 6A:DI%%a(SS  q$' ''r;ct|}|dkDr tdtjt |}t t |}t||}|D]!}t||}||kst ||}}#||fS)Nr%z4Install Python module 'munkres' or 'scipy >= 0.17.0')r Exception itertools permutationsrrnextr)rrrbest best_costrDcosts r<.min_cost_perfect_bipartite_matching_bruteforcers AA1uNOO))%(3L \" #Da&I ,Q" ) "1gt)D, ?r;)r)rctt|j}t||j|j|j |j dz|jdz|j|zfS)Nr!) rabsarearmeanXmeanYstddevXstddevY correlation)statssizes r<contour_vector_from_statsrsb EJJ D$$     D  r;c   t|}tt|}|Dcgc]}|Dcgc]}t||c}c}} t \}}t fdt|D}|||fScc}wcc}}w)Nc3.K|] }||ywrWr:)rCrcostss r<rEz'matching_for_vectors..s6a 6s)rrrr#min_cost_perfect_bipartite_matchingr) m0m1ridentity_matchingrrrr identity_costrs @r<matching_for_vectorsrsz BAU1X;= >RR 0rl2r" 0 >E ,E26U1X66M ]M 11 1 >s BA; B;Bc@d}t|D] \}}|dz|z}|S)Nrr )reversed)pointsbitsrbs r<points_characteristic_bitsrs1 D&!A Q Kr;r#cg}|s|S|Dcgc] \}}t|}}}t|}tdk(sJ|j|dtdz t|tkr.|j|dtdz t|tkr.t |D]}||}|j |||dz}||z }|j |dz||dz} | |z } |j | |z |j | jz|j| j zz } ttt| | } |j | dz|Scc}}w)Nr#r r"r!) complexr$_NUM_ITEMS_PER_POINTS_COMPLEX_VECTORextendrryrrrrr) rvectorrrGrrrcrgd0rkd1crosss r<points_complex_vectorrsb F  (. /ur1grl /F / F A /1 44 4 MM&C?!CDE f+< < fGCaGHI f+< < 1X!AY bAE] "W b1fAE] "W b2g"''!BGGbgg$55c%j)51 eai +!. M;0sE!cnt|}t|}|r|ddd}t|}n|}t|}t||zdk(sJt||z}d|zdz }t|D]E} ||| z z|z|| z z} | |k(s|j t || |z|r|dz | z n| |fGy)Nr~rr )rrrrryrS) r isomorphismsrJreference_bitsrrrmultmaskrrs r<add_isomorphismsrs/7N F A ")&1 "6 *F v;?a   v;! D Fa.3s Jda1M3I16Js  zFound %s base masters: %szNo base master location foundr)minimum_spanning_treec3BK|]}j|dywr)rB)rCrRrQs r<rEz)find_parents_and_order..Cs7QQUU1a[7sr!T) overwritez.Not all masters are reachable; report an issuez Parents: %sz Order: %s)rrrrrrMlogginginfowarningscipy.sparse.csgraphrsetupdatekeysrLtupler combinationsrrnonzeror addr popleftry ImportErrorlog) glyphsets locationsrparentsorderrrQbasesrrGgraphaxesvectorsrrRri_discrete_locationj_discrete_locationtreerrrrvisitedqueues ` ` r<find_parents_and_orderr+sBftE#i.1"4566G s9~& 'E"), 1JaggiJJ    LL4c%j% H OO; <-  B38Y3HIaaS3y>)IEI5D & AFFH% &$PAqD'#'&)wqz%:'!Qa=>PAqD'#''*==*71:wqzBa  C)$?DJD$$EdO $Sc s#c s# $ fs9~-GEeG%LEMMO A Qa)(A'%&  Q( u:" @? @ ( e$ E>y J L''>   si.L.?M L41AM 3L9AM  L>L>"M 7 MM C:M M M 4M MMc|j}|j}|j}||z dzdz||zzdz}||zdz|z}||zdz|z }|dk7rt||z |n||kr tdznd}t } |dkrd}|rf| j |j |j } | j| } | jdt|z dt|z } | S| jt|t|} | j|} | j |j|j} | S)Ng?r!rr ) varianceX covariance varianceYrrr translaterrrotatescaler) rinversearcdeltalambda1lambda2thetatranss r<transform_from_statsr os9 A A A1um !AE )c 1E1ume#G1ume#G%&!VE'A+q !a!e"s(E KE{ u{{l; eV$ AW -q4=/@A L  DM4=9 U# U[[9 Lr;)F)7fontTools.ttLib.ttGlyphSetrfontTools.pens.basePenrrrfontTools.pens.pointPenrrfontTools.pens.recordingPenr r fontTools.misc.transformr collectionsr r mathrrrrenumrrr getLoggerrrrOrSrUr|rrrrrrrscipy.optimizerrrmunkresrrrrrrrrrr r:r;r<r,s3GGGM.***g9:8   GD?}? H. H  8.(( 4*S'  2()$!H6CF%AH o    # 8 ,  : ,   s6CC'CC'C!C' C!!C'&C'