Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 2j^@sddlmZmZmZmZm Z ddl m Z ddl Z ddl mZmZddlZddlZddlZddlZdZdZdZdZd Zd ZdZd ZdZd Zd Zeje Z!Gd dde"Z#ddZ$edfddZ%dddZ&ddZ'ddZ(ddZ)dS)) fixedToFloat floatToFixedfloatToFixedToStrstrToFixedToFloatotRound)safeEvalN)Counter defaultdictii@i @?ic@s eZdZddZddZddZddZd d Zd d Zd dZ idfddZ ddZ ddZ e ddZe ddZe ddZddZe d8ddZe d d!Ze d"d#Ze d$d%Ze d&d'Ze d(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd9d4d5Zd6d7ZdS):TupleVariationcCs|j|_t||_dS)N)copyaxeslist coordinates)selfrrrJ/tmp/pip-build-_d5lkt3n/fonttools/fontTools/ttLib/tables/TupleVariation.py__init__'s zTupleVariation.__init__cCs,djtdd|jjD}d||jfS)N,cSsg|]\}}d||fqS)z%s=%sr).0namevaluerrr ,sz+TupleVariation.__repr__..z)joinsortedritemsr)rrrrr__repr__+szTupleVariation.__repr__cCs|j|jko|j|jkS)N)rr)rotherrrr__eq__/szTupleVariation.__eq__cCs4d|jkrtStddt|jD}|r0|SdS)NcSsg|]\}}|dk r|qS)Nr)riprrrr6sz0TupleVariation.getUsedPoints..)r frozenset enumerate)rusedrrr getUsedPoints2s zTupleVariation.getUsedPointscCstdd|jDS)zReturns True if this TupleVariation has any visible impact. If the result is False, the TupleVariation can be omitted from the font without making any visible difference. css|]}|dk VqdS)Nr)rcrrr @sz+TupleVariation.hasImpact..)anyr)rrrr hasImpact:szTupleVariation.hasImpactc Cs|jd|jx|D]}|jj|}|dk r|\}}}t|d}t|d}||krv||krv|jd|t|ddn:d|fdt|dfdt|dfd t|dfg} |jd| |jqWd } xt|j D]\} } t | t kot | d kr|jd | | d | dd|jd} qt | t krB|jd | | d|jd} q| dk rtjd|jd| |jd} qW| s|jd|j|jd|jdS)Ntuplegcoord)axisrr/minrmaxFdeltar)ptxyT)cvtrzbad delta formatz bad delta #%dz no deltas)Zbegintagnewlinergetr0r1Z simpletagfl2strr%rtyper,lenintlogerrorcommentZendtag) rwriteraxisTagsr/rminValuemaxValuedefaultMinValuedefaultMaxValueattrsZwrote_any_deltasr"r3rrrtoXMLBsH             zTupleVariation.toXMLcCs|dkrh|d}t|dd}t|d}t|d}t|jd|d}t|jd|d} ||| f|j|<n|dkrd |krt|d } t|d } t|d } | | f|j| <nHd |krt|d } t|d}||j| <ntjd dj t |j dS)Nr-r/rr.gr0r1r3r5r6r7r8zbad delta format: %sz, ) str2flr0r1r:rrrr?warningrrkeys)rrrH_contentr/rrFrGrDrEpointr6r7r8rrrfromXMLks(        zTupleVariation.fromXMLNc Cst|jjt|ks*td|jj|fg}g}|dkrX|j}|dkrNdS|j|}|j|}|j|}|dkrt}|j ||j |} | dk r|t O}|j | |r|t O}|j ||j |j dj|}|jdtjdt||dj||fS)NzUnknown axis tag found.rz>HH)rPrP)setrrLAssertionErrorr' compilePoints compileCoordr:EMBEDDED_PEAK_TUPLEappendcompileIntermediateCoordINTERMEDIATE_REGIONPRIVATE_POINT_NUMBERS compileDeltasrinsertstructpackr=) rrCZsharedCoordIndices pointData tupleDataauxDataZ usedPointsr-flagsZintermediateCoordrrrcompiles0*        zTupleVariation.compilecCs\t}|j}xF|D]>}|j|}|dkr4|jdq|jtjdt|ddqWt|S)Nsz>hr4r.) bytearrayrr:extendr\r]fl2fibytes)rrCresultrr/ZtriplerrrrTs    zTupleVariation.compileCoordc Csd}xJ|D]B}|jj|d\}}}t|d}t|d}||ksF||kr d}Pq W|sXdSt} t} xP|D]H}|jj|d\}}}| jtjdt|d| jtjdt|dqjW| | S)NFTz>hr.)rhrhrh)rhrhrh) rr:r0r1rcrdr\r]re) rrCneededr/rDrrErFrGZ minCoordsZ maxCoordsrrrrWs"    z'TupleVariation.compileIntermediateCoordcCsLi}|}x:|D]2}ttjd|||ddd||<|d7}qW||fS)Nz>hr2rr.)fi2flr\unpack)rCdataoffsetr-posr/rrrdecompileCoord_s  & zTupleVariation.decompileCoord_c CsV|sdSt|}|jt|}t}|dkr:|j|n |j|d?dB|j|d@d}d}d}x||krPd}t|}|jdd}x||ko||kr(||} | |} |dkrd| kodkn}|r| dks| dkrP|r|j| n|j| d?|j| d@| }|d7}|d7}qW|r>|d||<qh|dtB||<qhW|S)Nr r rr4)rsortr=rcrVPOINTS_ARE_WORDS) points numPointsrgZMAX_RUN_LENGTHrnZ lastValue runLengthZ headerPosZuseByteEncodingZcurValuer3rrrrSsH     zTupleVariation.compilePointscsx|dks t|}||}|d7}|t@dkrH|t@d>||B}|d7}|dkr\t|fSg}xt||kr ||}|d7}|t@d}d} |t@dkrtjd} |d} ntjd} |} | j|||| tjd kr| j t| |kst|| 7}|j | qbWg} d} x |D]}| |7} | j | qW| }~ fd d |D}|rpt j d d jt||f||fS)zJ(numPoints, data, offset, tableTag) --> ([point1, point2, ...], newOffset)cvargvarr4rrqHr2Bbigcs$h|]}|dks|krt|qS)r)str)rr#)rvrr 6sz2TupleVariation.decompilePoints_..z#point %s out of range in '%s' tabler)rxry)rRrtPOINT_RUN_COUNT_MASKranger=array frombytessys byteorderbyteswaprdrVr?rKrr)rvrlrmtableTagrnZnumPointsInDatarg runHeaderZnumPointsInRunrNruZ pointsSizeZabsolutecurrentr3Z badPointsr)rvrdecompilePoints_ sL          zTupleVariation.decompilePoints_cCsg}g}|jdkrLxZ|jD]*}|dkr*q|j|d|j|dqWn$x"|jD]}|dkrbqT|j|qTWt}|j|||j|||S)Nr2rr4) getCoordWidthrrVrccompileDeltaValues_)rZdeltaXZdeltaYr(bytearrrrrrZ<s      zTupleVariation.compileDeltascCs|dkrt}d}t|}xb||kr|||}|dkrDtj|||}qd|koVdknrltj|||}qtj|||}qW|S)a[value1, value2, value3, ...] --> bytearray Emits a sequence of runs. Each run starts with a byte-sized header whose 6 least significant bits (header & 0x3F) indicate how many values are encoded in this run. The stored length is the actual length minus one; run lengths are thus in the range [1..64]. If the header byte has its most significant bit (0x80) set, all values in this run are zero, and no data follows. Otherwise, the header byte is followed by ((header & 0x3F) + 1) signed values. If (header & 0x40) is clear, the delta values are stored as signed bytes; if (header & 0x40) is set, the delta values are signed 16-bit integers. Nrr r i)rcr=rencodeDeltaRunAsZeroes_encodeDeltaRunAsBytes_encodeDeltaRunAsWords_)deltasrrn numDeltasrrrrrOs z"TupleVariation.compileDeltaValues_cCst|}t|}x ||kr,||dkr,|d7}qW||}x"|dkrX|jtdB|d8}q8W|rp|jt|dB|S)Nrr4r r )r=rVDELTAS_ARE_ZERO)rrmrrnrrwrrrrns   z&TupleVariation.encodeDeltaRunAsZeroes_cCs|}t|}x\||krh||}d|ko0dkns8P|dkr^|d|kr^||ddkr^P|d7}qW||}xD|dkr|jd|jtjd|||d|d7}|d8}qtW|r|j|d|jtjd||||S) Nr r rr4r r bi)r=rVrdr)rrmrrnrrrwrrrr|s&  $    z%TupleVariation.encodeDeltaRunAsBytes_cCs0|}t|}xl||krx||}|dkr(Pd |ko:dknrn|d|krnd ||dkofdknrnP|d7}qW||}x^|dkr|jtdBtjd|||d}tjdkr|j|j||d7}|d8}qW|r,|jt|dBtjd|||}tjdkr"|j|j||S) Nrr r r4r r hr|ii)r=rVDELTAS_ARE_WORDSrrrrrd)rrmrrnrrrwarrrrs2 D       z%TupleVariation.encodeDeltaRunAsWords_c Csg}|}xt||kr||}|d7}|t@d}|t@dkrP|jdg|q |t@dkrptjd}|d}ntjd}|}|j||||tjdkr|j t||kst ||7}|j|q Wt||kst ||fS)z>(numDeltas, data, offset) --> ([delta, delta, ...], newOffset)r4rrr2rr|) r=DELTA_RUN_COUNT_MASKrrdrrrrrrrR) rrlrmrgrnrZnumDeltasInRunrZ deltasSizerrrdecompileDeltas_s*       zTupleVariation.decompileDeltas_cCs8d}|t@dkr||d7}|t@dkr4||d7}|S)Nrr2)rUrX)raZ axisCountsizerrr getTupleSize_s     zTupleVariation.getTupleSize_cCsbtdd|jDd}|dkr"dSt|ttfkr6dSt|tkrRt|dkrRdStd|dS)zb Return 2 if coordinates are (x, y) as in gvar, 1 if single values as in cvar, or 0 if empty. css|]}|dk r|VqdS)Nr)rr(rrrr)sz/TupleVariation.getCoordWidth..Nrr4r2zSinvalid type of delta; expected (int or float) number, or Tuple[number, number]: %r)nextrr<r>floatr,r= TypeError)rZ firstDeltarrrrszTupleVariation.getCoordWidthcs0dkr dS|jfdd|jD|_dS)Ng?cs@g|]8}|dkrdn&dkr$|n|d|dfqS)Nr4rr)rd) coordWidthscalarrrrsz.TupleVariation.scaleDeltas..)rr)rrr)rrr scaleDeltass  zTupleVariation.scaleDeltascs"|jfdd|jD|_dS)Ncs@g|]8}|dkrdn&dkr$t|nt|dt|dfqS)Nr4r)r)rr)rrrrsz.TupleVariation.roundDeltas..)rr)rr)rr roundDeltass zTupleVariation.roundDeltascCsjddlm}|jdkr tdd|jkrft|jt|krVtdt|jt|f||j|||_dS)Nr) iup_deltar4z3Only 'gvar' TupleVariation can have inferred deltasz(Expected len(origCoords) == %d; found %d)fontTools.varLib.iuprrrrr= ValueError)r origCoordsendPtsrrrrcalcInferredDeltas s   z!TupleVariation.calcInferredDeltas?Fc Csddlm}d|jkrdS||j|||d}d|kr|rbtdd|Drbdgdgt|d}t|j|}t|jj}|j |\} } t| t| } |j |\} } t| t| } | | kr|j|_dS)Nr)iup_delta_optimize) tolerancecss|]}|dkVqdS)Nr)rrrrrr)&sz*TupleVariation.optimize..r4)rr) rrrallr=rrrrLrb) rrrrZ isCompositerZdeltaOptZvarOptrCr_r`ZunoptimizedLengthZoptimizedLengthrrroptimizes    zTupleVariation.optimizec Cs t|tstS|j}t|}|j}t||kr6td|jdkrxtt||D]V\}}||}y(|d|d|d|df||<WqRt k rtdYqRXqRWnZxXtt||D]F\}}||}|dk r|dk r||||<q|dko|dk r|||<qW|S)Nz7cannot sum TupleVariation deltas with different lengthsr2rr4z+cannot sum gvar deltas with inferred points) isinstancerNotImplementedrr=rrziprr)rr Zdeltas1lengthZdeltas2r"Zd2Zd1rrr__iadd__7s.   ( zTupleVariation.__iadd__)N)rF)__name__ __module__ __qualname__rrr!r'r+rIrOrbrTrW staticmethodrorSrrZrrrrrrrrrrrrrrrrr%s6)"  A 0    (     rcCs6g}x,t|D] }tj|||\}}|j|qW|S)N)rrrorV)rCZsharedTupleCountrlrmrg_trrrdecompileSharedTuples]s rr4cCsRt}x&|D]}|j|}||d7<q Wt|j|ddd}dd|DS)Nr4cSs|d |dfS)Nr4rr)itemrrrosz%compileSharedTuples..)keycSs g|]}|ddkr|dqS)r4rr)rr(rrrrqsz'compileSharedTuples..)rrTr most_common)rC variationsZMAX_NUM_SHARED_COORDSZ coordCountvarr-Z sharedCoordsrrrcompileSharedTupleses   rTcs^g}g}dtt}xB|D]:}|j} | dkr0q|| d7<|j||j| qW|}~|sfdSt|djtfdd|Dstddd|Dt|} g} g} |rfd d } t|j | d d| j| t O} fd d |D}x@t ||D]2\}}|j |||d\}}| j|| j|q Wdj | } dj | } | | | fS)Nr4rrPc3s|]}t|jkVqdS)N)r=r)rv)nrrr)sz-compileTupleVariationStore..z#Variation sets have different sizescSsi|]}tj||qSr)rrS)rpointSetrrr sz.compileTupleVariationStore..cs$|d}|d}t||dS)Nrr4)r=)Zpnrcount)compiledPointsrrrsz'compileTupleVariationStore..key)rcs g|]}|kr|ndqS)rPr)rru)r sharedPointsrrrsz.compileTupleVariationStore..)r^)rrPrP)r r>r'rVr=rrrRr1rTUPLES_SHARE_POINT_NUMBERSrrbr)r pointCountrCZsharedTupleIndicesZuseSharedPointsZ newVariationsZ pointDatasZ pointSetCountrrutupleVariationCountZtuplesrlrr#Z thisTupleZthisDatar)rrrrcompileTupleVariationStoretsH       rc Cst|}g} |t@dkr.tj||||\} }ng} xt|t@D]v} tjd|||d\} } tj| |}||||}|||| }| j t ||| ||||||7}|| 7}q@W| S)Nrz>HHr) r=rrrrTUPLE_COUNT_MASKr\rkrrVdecompileTupleVariation_)rrCrr sharedTuplesrlrnZdataPosZnumAxesrgrrZdataSizeraZ tupleSizer_ZpointDeltaDatarrrdecompileTupleVariationStores"   rcCs|dkst|tjd|ddd}d}|t@dkrF||t@} ntj|||\} }|t@dkrtj|||\} }tj|||\} }n t| \} } i} x2|D]*} | | | | | | f}|d kr|| | <qWd}|t @dkrtj ||||\}}n|}dg|}|dkrbtj t |||\}}xt ||D].\}}d|koJ|knr.|||<q.Wn||dkrtj t |||\}}tj t |||\}}xDt |||D]4\}}}d|ko|knr||f||<qWt| |S) Nrxryz>Hr2rr)rxry)rrr)rRr\rkrUTUPLE_INDEX_MASKrrorX inferRegion_rYrrr=r)rrrrrCrlr_rarnpeakstartendrr/ZregionrurZ deltas_cvtr#r3Zdeltas_xZdeltas_yr6r7rrrrsH         rcCsDii}}x0|jD]$\}}t|d||<t|d||<qW||fS)aInfer start and end for a (non-intermediate) region This helper function computes the applicability region for variation tuples whose INTERMEDIATE_REGION flag is not set in the TupleVariationHeader structure. Variation tuples apply only to certain regions of the variation space; outside that region, the tuple has no effect. To make the binary encoding more compact, TupleVariationHeaders can omit the intermediateStartTuple and intermediateEndTuple fields. g)rr0r1)rrrr/rrrrrs r)T)*ZfontTools.misc.fixedToolsrrjrrerr;rrJrZfontTools.misc.textToolsrr collectionsrr iologgingr\rrUrXrYrrrrtrrrr getLoggerrr?objectrrrrrrrrrrrs<  <  9/