Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 2øªjÑ^ã@säddlmZmZmZmZm Z ddl m Z ddl Z ddl mZmZddlZddlZddlZddlZdZdZdZdZd Zd ZdZd ZdZd Zd Zeje ƒZ!Gd d„de"ƒZ#dd„Z$edfdd„Z%ddd„Z&dd„Z'dd„Z(dd„Z)dS)é)Ú fixedToFloatÚ floatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚotRound)ÚsafeEvalN)ÚCounterÚ defaultdicti€i@i é€é@é?éiÿc@s eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z idfdd„Z dd„Z dd„Z e dd„ƒZe dd„ƒZe dd„ƒZdd„Ze d8dd„ƒZe d d!„ƒZe d"d#„ƒZe d$d%„ƒZe d&d'„ƒZe d(d)„ƒZd*d+„Zd,d-„Zd.d/„Zd0d1„Zd9d4d5„Zd6d7„ZdS):ÚTupleVariationcCs|jƒ|_t|ƒ|_dS)N)ÚcopyÚaxesÚlistÚ coordinates)Úselfrr©rúJ/tmp/pip-build-_d5lkt3n/fonttools/fontTools/ttLib/tables/TupleVariation.pyÚ__init__'s zTupleVariation.__init__cCs,djtdd„|jjƒDƒƒƒ}d||jfS)Nú,cSsg|]\}}d||f‘qS)z%s=%sr)Ú.0ÚnameÚvaluerrrú ,sz+TupleVariation.__repr__..z)ÚjoinÚsortedrÚitemsr)rrrrrÚ__repr__+szTupleVariation.__repr__cCs|j|jko|j|jkS)N)rr)rÚotherrrrÚ__eq__/szTupleVariation.__eq__cCs4d|jkrtƒStdd„t|jƒDƒƒ}|r0|SdS)NcSsg|]\}}|dk r|‘qS)Nr)rÚiÚprrrr6sz0TupleVariation.getUsedPoints..)rÚ frozensetÚ enumerate)rÚusedrrrÚ getUsedPoints2s zTupleVariation.getUsedPointscCstdd„|jDƒƒS)z²Returns 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)rÚcrrrú @sz+TupleVariation.hasImpact..)Úanyr)rrrrÚ hasImpact:szTupleVariation.hasImpactc Cs |jdƒ|jƒx¨|D] }|jj|ƒ}|dk r|\}}}t|dƒ}t|dƒ}||krv||krv|jd|t|dƒd�n:d|fdt|dƒfdt|dƒfd t|dƒfg} |jd| ƒ|jƒqWd } x°t|j ƒD]¢\} } t | ƒt koêt | ƒd k�r|jd | | d | dd�|jƒd} qÌt | ƒt k�rB|jd | | d�|jƒd} qÌ| dk rÌtjdƒ|jd| ƒ|jƒd} qÌW| �sŠ|jdƒ|jƒ|jdƒ|jƒdS)NÚtuplegÚcoordé)Úaxisrr/ÚminrÚmaxFéÚdeltaré)ÚptÚxÚyT)Úcvtrzbad delta formatz bad delta #%dz no deltas)ZbegintagÚnewlinerÚgetr0r1Z simpletagÚfl2strr%rÚtyper,ÚlenÚintÚlogÚerrorÚcommentZendtag) rÚwriterÚaxisTagsr/rÚminValueÚmaxValueÚdefaultMinValueÚdefaultMaxValueÚattrsZwrote_any_deltasr"r3rrrÚtoXMLBsH             zTupleVariation.toXMLcCsø|dkrh|d}t|ddƒ}t|dƒ}t|dƒ}t|jd|ƒdƒ}t|jd|ƒdƒ} ||| f|j|<nŒ|dkrôd |kr¬t|d ƒ} t|d ƒ} t|d ƒ} | | f|j| <nHd |krØt|d ƒ} t|dƒ}||j| <ntjd dj t |j ƒƒƒƒdS)Nr-r/rr.gr0r1r3r5r6r7r8zbad delta format: %sz, ) Ústr2flr0r1r:rrrr?ÚwarningrrÚkeys)rrrHÚ_contentr/rrFrGrDrEÚpointr6r7r8rrrÚfromXMLks(        zTupleVariation.fromXMLNc Csüt|jjƒƒt|ƒks*td|jjƒ|fƒ‚g}g}|dkrX|jƒ}|dkrNdS|j|ƒ}|j|ƒ}|j|ƒ}|dkr‚t}|j |ƒ|j |ƒ} | dk r¦|t O}|j | ƒ|r¼|t O}|j |ƒ|j |j ƒƒdj|ƒ}|jdtjdt|ƒ|ƒƒdj|ƒ|fS)NzUnknown axis tag found.órz>HH)rPrP)ÚsetrrLÚAssertionErrorr'Ú compilePointsÚ compileCoordr:ÚEMBEDDED_PEAK_TUPLEÚappendÚcompileIntermediateCoordÚINTERMEDIATE_REGIONÚPRIVATE_POINT_NUMBERSÚ compileDeltasrÚinsertÚstructÚpackr=) rrCZsharedCoordIndicesÚ pointDataÚ tupleDataÚauxDataZ usedPointsr-ÚflagsZintermediateCoordrrrÚcompile‚s0*        zTupleVariation.compilecCs\tƒ}|j}xF|D]>}|j|ƒ}|dkr4|jdƒq|jtjdt|ddƒƒƒqWt|ƒS)Nsz>hr4r.)Ú bytearrayrr:Úextendr\r]Úfl2fiÚbytes)rrCÚresultrr/ZtriplerrrrT¤s    zTupleVariation.compileCoordc Cs¾d}xJ|D]B}|jj|dƒ\}}}t|dƒ}t|dƒ}||ksF||kr d}Pq W|sXdStƒ} tƒ} xP|D]H}|jj|dƒ\}}}| jtjdt|dƒƒƒ| jtjdt|dƒƒƒqjW| | S)NFçTz>hr.)rhrhrh)rhrhrh) rr:r0r1rcrdr\r]re) rrCÚneededr/rDrrErFrGZ minCoordsZ maxCoordsrrrrW¯s"    z'TupleVariation.compileIntermediateCoordcCsLi}|}x:|D]2}ttjd|||d…ƒddƒ||<|d7}qW||fS)Nz>hr2rr.)Úfi2flr\Úunpack)rCÚdataÚoffsetr-Úposr/rrrÚdecompileCoord_Âs  & zTupleVariation.decompileCoord_c CsV|sdSt|ƒ}|jƒt|ƒ}tƒ}|dkr:|j|ƒn |j|d?dBƒ|j|d@ƒd}d}d}xê||k�rPd}t|ƒ}|jdƒd}xœ||koœ||k�r(||} | |} |dkrÐd| koÊdkn}|ræ| dksä| dkræP|rö|j| ƒn|j| d?ƒ|j| d@ƒ| }|d7}|d7}qŽW|�r>|d||<qh|dtB||<qhW|S)Nór ééÿr rr4)rÚsortr=rcrVÚPOINTS_ARE_WORDS) ÚpointsÚ numPointsrgZMAX_RUN_LENGTHrnZ lastValueÚ runLengthZ headerPosZuseByteEncodingZcurValuer3rrrrSËsH     zTupleVariation.compilePointscsx|dks t‚|}||}|d7}|t@dkrH|t@d>||B}|d7}|dkr\tˆƒ|fSg}xªt|ƒ|k�r ||}|d7}|t@d}d} |t@dkr°tjdƒ} |d} ntjdƒ} |} | j|||| …ƒtjd kræ| j ƒt| ƒ|ksöt‚|| 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)ÚcvarÚgvarr4rrqÚHr2ÚBÚbigcs$h|]}|dks|ˆkrt|ƒ’qS)r)Ústr)rr#)rvrrú 6sz2TupleVariation.decompilePoints_..z#point %s out of range in '%s' tabler)rxry)rRrtÚPOINT_RUN_COUNT_MASKÚranger=ÚarrayÚ frombytesÚsysÚ byteorderÚbyteswaprdrVr?rKrr)rvrlrmÚtableTagrnZnumPointsInDatargÚ runHeaderZnumPointsInRunrNruZ pointsSizeZabsoluteÚcurrentr3Z badPointsr)rvrÚdecompilePoints_ sL          zTupleVariation.decompilePoints_cCs’g}g}|jƒdkrLxZ|jD]*}|dkr*q|j|dƒ|j|dƒqWn$x"|jD]}|dkrbqT|j|ƒqTWtƒ}|j||ƒ|j||ƒ|S)Nr2rr4)Ú getCoordWidthrrVrcÚcompileDeltaValues_)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=rÚencodeDeltaRunAsZeroes_ÚencodeDeltaRunAsBytes_ÚencodeDeltaRunAsWords_)ÚdeltasrŒrnÚ numDeltasrrrrr‹Os z"TupleVariation.compileDeltaValues_cCst|}t|ƒ}x ||kr,||dkr,|d7}qW||}x"|dkrX|jtdBƒ|d8}q8W|rp|jt|dBƒ|S)Nrr4r r )r=rVÚDELTAS_ARE_ZERO)r�rmrŒrnr‘rwrrrr�ns   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�)r�rmrŒrnr‘rrwrrrrŽ|s&  $    z%TupleVariation.encodeDeltaRunAsBytes_cCs0|}t|ƒ}xl||krx||}|dkr(Pd |ko:dknrn|d|krnd ||dkofdknrnP|d7}qW||}x^|dkrà|jtdBƒtjd|||d…ƒ}tjdkrÄ|jƒ|j|ƒ|d7}|d8}q„W|�r,|jt|dBƒtjd|||…ƒ}tjdk�r"|jƒ|j|ƒ|S) Nrr r r4r r Úhr|i€ÿÿÿi€ÿÿÿ)r=rVÚDELTAS_ARE_WORDSr�rƒr„r…rd)r�rmrŒrnr‘rrwÚarrrr�šs2 D       z%TupleVariation.encodeDeltaRunAsWords_c Csäg}|}xÂt|ƒ|krÊ||}|d7}|t@d}|t@dkrP|jdg|ƒq |t@dkrptjdƒ}|d}ntjdƒ}|}|j||||…ƒtjdkr¦|j ƒt|ƒ|ks¶t ‚||7}|j|ƒq Wt|ƒ|ksÜt ‚||fS)z>(numDeltas, data, offset) --> ([delta, delta, ...], newOffset)r4rr”r2r“r|) r=ÚDELTA_RUN_COUNT_MASKr’rdr•r�r‚rƒr„r…rR) r‘rlrmrgrnr‡ZnumDeltasInRunr�Z deltasSizerrrÚdecompileDeltas_Âs*       zTupleVariation.decompileDeltas_cCs8d}|t@dkr||d7}|t@dkr4||d7}|S)Nérr2)rUrX)raZ axisCountÚsizerrrÚ getTupleSize_Üs     zTupleVariation.getTupleSize_cCsbtdd„|jDƒdƒ}|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 firstDeltarrrrŠåszTupleVariation.getCoordWidthcs0ˆdkr dS|jƒ‰‡‡fdd„|jDƒ|_dS)Ngð?cs@g|]8}|dkrdn&ˆdkr$|ˆn|dˆ|dˆf‘qS)Nr4rr)rÚd)Ú coordWidthÚscalarrrrúsz.TupleVariation.scaleDeltas..)rŠr)rr¡r)r r¡rÚ scaleDeltasõs  zTupleVariation.scaleDeltascs"|jƒ‰‡fdd„|jDƒ|_dS)Ncs@g|]8}|dkrdn&ˆdkr$t|ƒnt|dƒt|dƒf‘qS)Nr4r)r)rrŸ)r rrrsz.TupleVariation.roundDeltas..)rŠr)rr)r rÚ roundDeltass zTupleVariation.roundDeltascCsjddlm}|jƒdkr tdƒ‚d|jkrft|jƒt|ƒkrVtdt|jƒt|ƒfƒ‚||j||ƒ|_dS)Nr)Ú iup_deltar4z3Only 'gvar' TupleVariation can have inferred deltasz(Expected len(origCoords) == %d; found %d)ÚfontTools.varLib.iupr¤rŠržrr=Ú ValueError)rÚ origCoordsÚendPtsr¤rrrÚcalcInferredDeltas s   z!TupleVariation.calcInferredDeltasçà?Fc CsÌddlm}d|jkrdS||j|||d�}d|krÈ|rbtdd„|Dƒƒrbdgdgt|ƒd}t|j|ƒ}t|jjƒƒ}|j |ƒ\} } t| ƒt| ƒ} |j |ƒ\} } t| ƒt| ƒ} | | krÈ|j|_dS)Nr)Úiup_delta_optimize)Ú tolerancecss|]}|dkVqdS)Nr)rrŸrrrr)&sz*TupleVariation.optimize..r4)rr) r¥r«rÚallr=rrrrLrb) rr§r¨r¬Z isCompositer«ZdeltaOptZvarOptrCr_r`ZunoptimizedLengthZoptimizedLengthrrrÚoptimizes    zTupleVariation.optimizec Cs t|tƒstS|j}t|ƒ}|j}t|ƒ|kr6tdƒ‚|jƒdkr®xÄtt|ƒ|ƒD]V\}}||}y(|d|d|d|df||<WqRt k r¦tdƒ‚YqRXqRWnZxXtt|ƒ|ƒD]F\}}||}|dk rì|dk rì||||<q¾|dkoú|dk r¾|||<q¾W|S)Nz7cannot sum TupleVariation deltas with different lengthsr2rr4z+cannot sum gvar deltas with inferred points) Ú isinstancerÚNotImplementedrr=r¦rŠÚzipr€rž)rr Zdeltas1ÚlengthZdeltas2r"Zd2Zd1rrrÚ__iadd__7s.   ( zTupleVariation.__iadd__)N)rªF)Ú__name__Ú __module__Ú __qualname__rrr!r'r+rIrOrbrTrWÚ staticmethodrorSr‰rZr‹r�rŽr�r˜r›rŠr¢r£r©r®r³rrrrr%s6)"  A 0    (     rcCs6g}x,t|ƒD] }tj|||ƒ\}}|j|ƒqW|S)N)r€rrorV)rCZsharedTupleCountrlrmrgÚ_ÚtrrrÚdecompileSharedTuples]s rºr4cCsRtƒ}x&|D]}|j|ƒ}||d7<q Wt|j|ƒdd„d�}dd„|DƒS)Nr4cSs|d |dfS)Nr4rr)ÚitemrrrÚosz%compileSharedTuples..)ÚkeycSs g|]}|ddkr|d‘qS)r4rr)rr(rrrrqsz'compileSharedTuples..)rrTrÚ most_common)rCÚ variationsZMAX_NUM_SHARED_COORDSZ coordCountÚvarr-Z sharedCoordsrrrÚcompileSharedTupleses   rÁTcs^g}g}d‰ttƒ}xB|D]:}|jƒ} | dkr0q|| d7<|j|ƒ|j| ƒqW|}~|sfdSt|djƒ‰t‡fdd„|Dƒƒs’tdƒ‚dd„|Dƒ‰t|ƒ} g} g} |rê‡fd 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|jƒˆkVqdS)N)r=r)rÚv)Únrrr)Œsz-compileTupleVariationStore..z#Variation sets have different sizescSsi|]}tj|ƒ|“qSr)rrS)rÚpointSetrrrú Žsz.compileTupleVariationStore..cs$|d}|d}tˆ|ƒ|dS)Nrr4)r=)ZpnrÄÚcount)ÚcompiledPointsrrr½—sz'compileTupleVariationStore..key)r½cs g|]}|ˆkrˆ|nd‘qS)rPr)rru)rÇÚ sharedPointsrrr¡sz.compileTupleVariationStore..)r^)rrPrP)r r>r'rVr=rr­rRr1rÚTUPLES_SHARE_POINT_NUMBERSr±rbr)r¿Ú pointCountrCZsharedTupleIndicesZuseSharedPointsZ newVariationsZ pointDatasZ pointSetCountrÂruÚtupleVariationCountZtuplesrlr½r#Z thisTupleZthisDatar)rÇrÃrÈrÚcompileTupleVariationStoretsH       rÌc Cs¾t|ƒ}g} |t@dkr.tj||||ƒ\} }ng} x†t|t@ƒD]v} tjd|||d…ƒ\} } tj| |ƒ}||||…}|||| …}| j t ||| ||||ƒƒ||7}|| 7}q@W| S)Nrz>HHr™) r=rÉrr‰r€ÚTUPLE_COUNT_MASKr\rkr›rVÚdecompileTupleVariation_)r†rCrËrÊÚ sharedTuplesrlrnZdataPosZnumAxesrgrÈr¸ZdataSizeraZ tupleSizer_ZpointDeltaDatarrrÚdecompileTupleVariationStore¯s"   rÐcCsè|dkst|ƒ‚tjd|dd…ƒd}d}|t@dkrF||t@} ntj|||ƒ\} }|t@dkrŠtj|||ƒ\} }tj|||ƒ\} }n t| ƒ\} } i} x2|D]*} | | | | | | f}|d kr || | <q Wd}|t @dkrôtj ||||ƒ\}}n|}dg|}|dk�rbtj t |ƒ||ƒ\}}xºt ||ƒD].\}}d|k�oJ|kn�r.|||<�q.Wn||dk�rÞtj t |ƒ||ƒ\}}tj t |ƒ||ƒ\}}xDt |||ƒD]4\}}}d|k�oÄ|kn�r¦||f||<�q¦Wt| |ƒS) Nrxryz>Hr2r™rç)rxry)rÑrÑrÑ)rRr\rkrUÚTUPLE_INDEX_MASKrrorXÚ inferRegion_rYr‰r˜r=r±)rÊrÏrÈr†rCrlr_rarnÚpeakÚstartÚendrr/Zregionrur�Z deltas_cvtr#r3Zdeltas_xZdeltas_yr6r7rrrrÎÆsH         rÎcCsDii}}x0|jƒD]$\}}t|dƒ||<t|dƒ||<qW||fS)aÙInfer 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)rÔrÕrÖr/rrrrrÓõs rÓ)T)*ZfontTools.misc.fixedToolsrrjrrerr;rrJrZfontTools.misc.textToolsrr�Ú collectionsrr ÚioÚloggingr\rƒrUrXrYr’r•r—rtrrÉrÍrÒÚ getLoggerr´r?ÚobjectrrºrÁrÌrÐrÎrÓrrrrÚs<  <  9/