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øªj9Fã@sÚddlZddlmZmZddlmZddlmZddlm Z ddl m Z m Z m Z mZmZmZddlmZmZddlmZdd lmZmZd Zd Zejd ƒZeeed œdd„Zeeejddœdd„Z eeejddœdd„Z!eeeej"eej"dœdd„Z#eeej"eej"dœdd„Z$ej%e&dœdd„Z'e eeedfeedffeej(ej(ffZ)e e*dœd d!„Z+d3eeeee*e*fe*e*fee*d#œd$d%„Z,ed&d'd(d)d*d+d,gƒZ-Gd-d.„d.ƒZ.d4ee)e*ee)d0œd1d2„Z/dS)5éN)Ú defaultdictÚ namedtuple)Úreduce)Úchain)Úlog2)Ú DefaultDictÚDictÚIterableÚListÚSequenceÚTuple)Ú bit_countÚ bit_indices)ÚTTFont)ÚotBaseÚotTablesZFONTTOOLS_GPOS_COMPACT_MODEÚ0zfontTools.otlLib.optimize.gpos)ÚfontÚmodeÚreturncCs^|d}xP|jjjD]B}|jdkr0t|||ƒq|jdkr|jdjdkrt|||ƒqW|S)NZGPOSéé r)ÚtableZ LookupListÚLookupZ LookupTypeÚcompact_lookupÚSubTableZExtensionLookupTypeÚcompact_ext_lookup)rrZgposÚlookup©rúC/tmp/pip-build-_d5lkt3n/fonttools/fontTools/otlLib/optimize/gpos.pyÚcompacts r )rrrrcCs"t|||jƒ}||_t|ƒ|_dS)N)Úcompact_pair_posrÚlenÚ SubTableCount)rrrÚ new_subtablesrrrr,srcCs\t||dd„|jDƒƒ}g}x*|D]"}tjƒ}d|_||_|j|ƒq"W||_t|ƒ|_dS)NcSsg|] }|j‘qSr)Ú ExtSubTable)Ú.0Ú ext_subtablerrrú 4sz&compact_ext_lookup..é) r!rrZ ExtensionPosÚFormatr%Úappendr"r#)rrrr$Znew_ext_subtablesÚsubtabler'rrrr2s r)rrÚ subtablesrcCsHg}x>|D]6}|jdkr$|j|ƒq |jdkr |jt|||ƒƒq W|S)Nr)r)r*r+ÚextendÚcompact_class_pairs)rrr-r$r,rrrr!@s    r!)rrr,rc CsNddlm}g}ttƒ}x*|jjD]}||jjj|dƒj |ƒq"Wttƒ}x&|j jj ƒD]\}}||j |ƒqZWi} xpt |j ƒD]b\}} xXt | jƒD]J\} } t| ƒrªq˜t| ddƒt| ddƒf| tt||ƒƒtt|| ƒƒf<q˜Wq„Wt|ƒdkoü|dk�r6t|| t|ƒƒ} x8| D]}|j |||jƒƒƒ�qWntdt›d|›�ƒ‚|S) Nr)ÚbuildPairPosClassesSubtableÚValue1ÚValue2r)Z 123456789zBad ú=)ZfontTools.otlLib.builderr0rÚlistZCoverageZglyphsZ ClassDef1Z classDefsÚgetr+Z ClassDef2ÚitemsÚ enumerateZ Class1RecordÚ Class2RecordÚis_really_zeroÚgetattrÚtupleÚsortedr"Ú,cluster_pairs_by_class2_coverage_custom_costÚintÚgetReverseGlyphMapÚ ValueErrorÚGPOS_COMPACT_MODE_ENV_KEY)rrr,r0r-Zclasses1ÚgZclasses2ÚiZ all_pairsÚclass1ÚjÚclass2Z grouped_pairsÚpairsrrrr/Ms.  6 r/)rFrcCs@t|ddƒ}t|ddƒ}|dks,|jƒdko>|dkp>|jƒdkS)Nr1r2r)r:ÚgetEffectiveFormat)rFZv1Zv2rrrr9ps  r9.)ÚglyphIDscCsxt|ƒ}|d}|gg}x>|dd…D].}||dkrP|dj|ƒ|j|gƒ|}q&W|dj|ƒ||d|dfS)Nrr)éÿÿÿÿrJrJ)r<r+)rIÚlastÚrangesZglyphIDrrrÚ_getClassRanges~s  rMF)Ú class_dataÚ class_idsc Csš|sdS||d\}}}t|ƒ}xH|dd…D]8}||}|t|dƒ7}t||dƒ}t||dƒ}q0W||d} d| d} d|d} t| | ƒS)Nrr)réé)r"ÚminÚmax) rNrOZcoverageZ first_rangesZ min_glyph_idZ max_glyph_idZ range_countrCÚdataZ glyphCountÚ format1_bytesÚ format2_bytesrrrÚ_classDef_bytesŒs   rWÚClusteringContextÚlinesÚ all_class1Úall_class1_dataÚall_class2_dataÚvalueFormat1_bytesÚvalueFormat2_bytesc@steZdZdZeedœdd„Zed d „ƒZed d „ƒZ ed d„ƒZ edd„ƒZ edd„ƒZ edd„ƒZ edd„ƒZdS)ÚClusterÚctxÚindices_bitmaskÚ_indicesÚ_column_indicesÚ_cost)r`racCs"||_||_d|_d|_d|_dS)N)r`rarbrcrd)Úselfr`rarrrÚ__init__¼s zCluster.__init__cCs|jdkrt|jƒ|_|jS)N)rbrra)rerrrÚindicesÃs  zCluster.indicescs6ˆjdkr0ttj‡fdd„ˆjDƒƒ}t|ƒˆ_ˆjS)Nc3s|]}ˆjj|VqdS)N)r`rY)r&rC)rerrú Îsz)Cluster.column_indices..)rcrr>Ú__or__rgr)reZbitmaskr)rerÚcolumn_indicesÉs  zCluster.column_indicescCst|jƒdS)Nr))r"rj)rerrrÚwidthÒsz Cluster.widthcCs`|jdkrZd|jddd|jd|jdd|jj|jjt|jƒ|j |_|jS)NrrQrP) rdÚcoverage_bytesÚclassDef1_bytesÚclassDef2_bytesr`r]r^r"rgrk)rerrrÚcost×s ,$z Cluster.costcsŽdt‡fdd„ˆjDƒƒd}ttj‡fdd„ˆjDƒƒƒ}d}d}x0|D](\}}|dk rp||dkrp|d7}|}qLWd|d}t||ƒS) NrQc3s|]}tˆjj|ƒVqdS)N)r"r`rZ)r&rC)rerrrhsz)Cluster.coverage_bytes..rc3s|]}ˆjj|dVqdS)rN)r`r[)r&rC)rerrrhsrr)rP)Úsumrgr<rÚ from_iterablerR)rerUrLZmerged_range_countrKÚstartÚendrVr)rerrlùs zCluster.coverage_bytescs4tˆj‡fdd„d�‰tˆjj‡fdd„ˆjDƒƒS)Ncstˆjj|ƒS)N)r"r`rZ)rC)rerrÚ sz)Cluster.classDef1_bytes..)Úkeycsg|]}|ˆkr|‘qSrr)r&rC)Ú biggest_indexrrr("sz+Cluster.classDef1_bytes..)rSrgrWr`r[)rer)rvrerrmszCluster.classDef1_bytescCst|jj|jƒS)N)rWr`r\rj)rerrrrn%szCluster.classDef2_bytesN)r`rarbrcrd)Ú__name__Ú __module__Ú __qualname__Ú __slots__rXr>rfÚpropertyrgrjrkrorlrmrnrrrrr_¯s    " r_é)rrGÚ compressionrc"s`ˆs ˆgSttdd„ˆDƒƒƒ}ttdd„ˆDƒƒƒ‰‡‡fdd„|Dƒ}|jƒ‰‡fdd„|Dƒ}‡fdd„ˆDƒ}d}d}xLˆjƒD]@\} } || dr¦| djƒndO}|| d rÂ| d jƒndO}qˆWt|ƒd } t|ƒd } t||||| | ƒ‰i‰ttd œ‡‡fd d „ ‰tttdœ‡fdd„ } ‡fdd„t t |ƒƒDƒ}ˆd t |ƒ>d ƒj }t j dt |ƒ›�ƒ�xrt |ƒd k�rÞd}d}d}d}x‚t|ƒD]v\}}xjt||d d…ƒD]R\}}| ||ƒ}|j |j |j }|dk�sì||k�r´|}|}|d |}|}�q´W�q–W|dk �st‚|dk �s,t‚|dk �s:t‚|dk �sHt‚|dk�rÌtdd„|Dƒƒ}d ||}td |ƒ |}t j dt |ƒd›d|d›d|›�ƒ|dk�r¸t |ƒ}t |ƒ|d k�rÌP||=|||<�qnWttƒ}x&ˆjƒD]\} }||| d| <�qòWg}xF|D]>}tƒ} x&|jD]}||}!| j||!ƒ�q,W|j| ƒ�qW|S)Ncss|]}|dVqdS)rNr)r&Úpairrrrrh5sz?cluster_pairs_by_class2_coverage_custom_cost..css|]}|dVqdS)r)Nr)r&r~rrrrh6scs(g|] ‰t‡‡fdd„tˆƒDƒƒ‘qS)c3s*|]"\}}ˆ|fˆkrd|>ndVqdS)r)rNr)r&rCrF)rDrGrrrh;szJcluster_pairs_by_class2_coverage_custom_cost...)rpr7)r&)Ú all_class2rG)rDrr(:sz@cluster_pairs_by_class2_coverage_custom_cost..cs"g|]}t‡fdd„|Dƒƒ‘qS)c3s|]}ˆ|VqdS)Nr)r&Úname)Ú name_to_idrrrhEszJcluster_pairs_by_class2_coverage_custom_cost...)rM)r&Úcls)r�rrr(Escs"g|]}t‡fdd„|Dƒƒ‘qS)c3s|]}ˆ|VqdS)Nr)r&r€)r�rrrhHszJcluster_pairs_by_class2_coverage_custom_cost...)rM)r&r‚)r�rrr(Hsrr)r)rgrcs.ˆj|dƒ}|dk r|Stˆ|ƒ}|ˆ|<|S)N)r5r_)rgÚcluster)Ú cluster_cacher`rrÚ make_cluster^s   zBcluster_pairs_by_class2_coverage_custom_cost..make_cluster)rƒÚotherrcsˆ|j|jBƒS)N)ra)rƒr†)r…rrÚmergefsz;cluster_pairs_by_class2_coverage_custom_cost..mergecsg|]}ˆd|>ƒ‘qS)r)r)r&rC)r…rrr(msz len(clusters) = css|] }|jVqdS)N)ro)r&Úcrrrrh�sz len(clusters) = Z3dz size_reduction=z5.2fz max_new_subtables=r)r<Úsetr?r6rHr rXr>r_Úranger"roÚlogÚdebugr7ÚAssertionErrorrprrÚdictrgÚupdater+)"rrGr}rZrYr[r\Zformat1Zformat2r~Úvaluer]r^r‡ZclustersZcost_before_splittingZlowest_cost_changeZbest_cluster_indexZbest_other_indexZ best_mergedrCrƒrEr†ZmergedZ cost_changeZcost_after_splittingZsize_reductionZmax_new_subtablesZpairs_by_class1ÚvaluesZ pairs_groupsZ pairs_grouprDr)rr„r`r…r�rGrr=+sŒ            r=)F)r|)0ÚloggingÚ collectionsrrÚ functoolsrÚ itertoolsrÚmathrÚtypingrrr r r r ZfontTools.misc.intToolsr rZfontTools.ttLibrZfontTools.ttLib.tablesrrrAZGPOS_COMPACT_MODE_DEFAULTÚ getLoggerr‹Ústrr rrrZPairPosr!r/r8Úboolr9Z ValueRecordZPairsr>rMrWrXr_r=rrrrÚsF        !0