)EjddlmZddlmZdZdZdZdZdZ dZ d Z dd Z e ej _dd ZdZeej _ddZdZdZdZdZdZdZdS))ttLib)otTablescjtj}d|D\|_|_|_|S)Nc,g|]}t|Sfloat.0vs JC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/varLib/builder.py z&buildVarRegionAxis.. 5T5T5T1eAhh5T5T5T)ot VarRegionAxis StartCoord PeakCoordEndCoord) axisSupportselfs r buildVarRegionAxisrs5   D5T5T 5T5T5T2DOT^T] Krcxtj}||_d|D\|_|_|_|S)Nc,g|]}t|Srrr s r rz,buildSparseVarRegionAxis..rr)rSparseVarRegionAxis AxisIndexrrr) axisIndexrrs r buildSparseVarRegionAxisr s< ! # #DDN5T5T 5T5T5T2DOT^T] Krc 0tfd|Ds Jd|ftj}g|_D]=}|jt ||d>|S)Nc3 K|]}|vV dSNrr tagaxisTagss r z!buildVarRegion..'993sh999999rUnknown axis tag found.rrr)allkeysr VarRegionrappendrget)supportr$rr#s ` r buildVarRegionr/s 9999',,..999 9 9!< 9 <>>DDSS !!"4W[[i5P5P"Q"QRRRR Krc tfd|Ds Jd|ftj}g|_t D]F\}}||vr |jt|||dGt|j|_ |S)Nc3 K|]}|vV dSr!rr"s r r%z'buildSparseVarRegion.."r&rr'r() r)r*rSparseVarRegionr enumerater,rr-lenSparseRegionCount)r.r$rir#s ` r buildSparseVarRegionr7!s 9999',,..999 9 9!< 9    D!DH%%  3 g     '' $Q C(C(C D D    !!9::D Krctj}t||_g|_|D]*}|jt ||+t|j|_|Sr!)r VarRegionListr4RegionAxisCountRegionr,r/ RegionCountsupportsr$rr.s r buildVarRegionListr?3sn   Dx==DDK>> >'8<<====4;''D Krctj}t||_g|_|D]*}|jt ||+t|j|_|Sr!)rSparseVarRegionListr4r:r;r,r7r<r=s r buildSparseVarRegionListrB=sq ! # #Dx==DDKDD /BBCCCC4;''D Krc fd|DS)Nc g|] }| Srr)r r6lsts r rz _reorderItem..Hs $ $ $qCF $ $ $rr)rEmappings` r _reorderItemrGGs $ $ $ $G $ $ $$rFc|j}|j}dg|z}|D](}d|D}dt||D})d|D}td|D}|rg} | dt |D| dt |D| dt |Dt || }t |j| |_t|j|_tt|D]} t || | || <|rAtd t |Dd d z|_ |xj d zc_ n0tdt |Dd d z|_ t|j|_|S)NrcDg|]}||dkzS)) bit_length)r r6s r rz.VarData_calculateNumShorts..Us, 8 8 8aqAF|'')) 8 8 8rc g|] }t| Sr)max)r pairs r rz.VarData_calculateNumShorts..VsCCCdsDzCCCrc&g|]}|r|dzdz ndS)rrr bs r rz.VarData_calculateNumShorts..`s)DDD1a.a!e\\QDDDrc3"K|] }|dkV dSNrrRs r r%z-VarData_calculateNumShorts..cs&00aAE000000rc3,K|]\}}|dk |VdSrUrr r6rSs r r%z-VarData_calculateNumShorts..hs*FFTQAqFFrc3,K|]\}}|dk |VdSrUrrXs r r%z-VarData_calculateNumShorts..i*GGTQQqGGrc3,K|]\}}|dk |VdSNrrXs r r%z-VarData_calculateNumShorts..jrZrc3,K|]\}}|dk |VdSrUrrXs r r%z-VarData_calculateNumShorts..t*@@tq!!a%%%%%%@@rrJ)defaultr]c3,K|]\}}|dk |VdSr\rrXs r r%z-VarData_calculateNumShorts..yr_r) VarRegionCountItemzipanyextendr3rGVarRegionIndexr4rangerM NumShorts) roptimizecountitems bit_lengthsitembl byte_lengths longWordsrFr6s r VarData_calculateNumShortsrsKs*  E IE#+KDD 9 84 8 8 8CCc"k.B.BCCC ED DDDL00<00000I 7FFY|%<%<FFFFFFGGY|%<%<GGGGGGGGY|%<%<GGGGGG#L':: *4+>HH!$"566s5zz"" 7 7A#E!Hg66E!HH @@y66@@@" M M MPQ Q  &  @@y66@@@" M M MPQ Q d122D KrTc$t||S)zDeprecated name for VarData_calculateNumShorts() which defaults to optimize=True. Use varData.calculateNumShorts() or varData.optimize().rkrs)rrks r VarData_CalculateNumShortsrws &dX > > >>rc$t|dS)NTrurv)rs r VarData_optimizerys %dT : : ::rcvtj}t||_t |jx}|_gx}|_|r<|D]9}t ||ksJ|t|:t |j|_| ||S)Nru) rVarDatalistrhr4rcrdr, ItemCountcalculateNumShorts)varRegionIndicesrmrkr regionCountrecordsros r buildVarDatars :<z"buildVarIdxMap..s???TQAq???r)r VarIdxMaprerF)varIdxes glyphOrderrs r buildVarIdxMaprs1 <>>D??SX%>%>???DL Krct|}tdt|DrdStj}||_t |dkrdnd|_|S)Nc3(K|] \}}||kVdSr!r)r r6r s r r%z(buildDeltaSetIndexMap..s* 1 1da16 1 1 1 1 1 1rr]r)r|r)r3rDeltaSetIndexMaprFr4r)rrFrs r buildDeltaSetIndexMaprsn8nnG 1 1i00 1 1 111t  DDL7||f,,!!!DK Krcbtj}d|_|dz |_|dz|_|S)Nrar)rDevice DeltaFormat StartSizeEndSize)varIdxrs r buildVarDevTablers0 9;;DDr\DNF?DL KrN)F)T) fontToolsrfontTools.ttLib.tablesrrrrr/r7r?rBrGrsr{r~rwryrkrrrrrrrrrr rsZ111111     $%%%2222j!; ????;;;'         r