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¨dZddlmZmZddlmZddlmZddlm Z m Z ddl m Z ddl mZmZmZddlmZmZmZdd lmZdd lmZdd lmZdd lmZdd lZdd lZ dd l!Z!ddl"m#Z#e!j$dƒZ%iZ&dddddddddg Z'xHe(e)e'd d)…e'dd …ƒdd�D]"\Z*\Z+Z,e+e,dZ-e*e&e-<�q Wdd„Z.dd„Z/d d!„Z0d*d$d%„Z1d+d&d'„Z2e3d(k�r¤dd l4Z4e5e4j6ƒdk�rŒe4j7e2ƒƒdd l8Z8e4j7e8j9ƒj:ƒd S),zn Instantiate a variation font. Run, eg: $ fonttools varLib.mutator ./NotoSansArabic-VF.ttf wght=140 wdth=85 é)ÚfloatToFixedToFloatÚ floatToFixed)ÚotRound)Ú BoundsPen)ÚTTFontÚnewTable)Ú ttProgram)ÚGlyphCoordinatesÚflagOverlapSimpleÚOVERLAP_COMPOUND)Ú supportScalarÚnormalizeLocationÚpiecewiseLinearMap)Ú MutatorMerger)ÚVarStoreInstancer)Ú MVAR_ENTRIES)Ú iup_deltaN)ÚBytesIOzfontTools.varlib.mutatorgI@g@O@gÀR@gàU@gY@g \@g@_@gÀb@gi@é)Ústartéc Csäd}d}xÖ|jD]Ì}|j}t|d ƒr*|jnd }x¬|jjƒD]ž\}}||kr~t|tƒr~|||dd…ƒ} t|d | ƒ|j|<q:||kr:t|d tƒr:d } x>t |ƒD]2\} } | t||| dd…ƒƒ7} | d | || <q¢Wq:WqWdS)NÚ BlueValuesÚ OtherBluesÚ FamilyBluesÚFamilyOtherBluesÚ StemSnapHÚ StemSnapVÚ BlueScaleÚ BlueShiftÚBlueFuzzÚStdHWÚStdVWÚvsindexrr)rrrrrr)rrrr r!) ZFDArrayZPrivateÚhasattrr"ÚrawDictÚitemsÚ isinstanceÚlistrÚ enumerate) ÚtopDictÚinterpolateFromDeltasZpd_blend_listsZpd_blend_valuesZfontDictÚpdr"ÚkeyÚvalueÚdeltaÚiZval_list©r0ú=/tmp/pip-build-_d5lkt3n/fonttools/fontTools/varLib/mutator.pyÚinterpolate_cff2_PrivateDict%s$ r2cCs^|j}�xP|D�]F}||}g}d}d}�xt|jƒD]ú\} } | dkr~|j| d}|dkrt|j|j|| d…ƒ| d}q6| dkr6|j|ƒ} d| } |j| d} | | | d}|| }}xP||k�r|| }|j||…}|||ƒ}|j|t|ƒ7<|}|d7}qÄW|j|j||…ƒ| d}q6W|dkr|j|j|d…ƒ||_qWdS)Nrr"rZblend)Ú CharStringsr(ÚprogramÚextendZ getNumRegionsr)r)r*Ú glyphOrderÚ charstringsÚgnameÚ charstringZ new_programr"Zlast_ir/ÚtokenZ num_regionsZ numMastersÚnum_argsZargiZend_argsZtupleiZnext_tiÚdeltasr.r0r0r1Úinterpolate_cff2_charstrings?s<       r=cCs|j}t|ƒ}|d}d}d|krD|dj}|d}t|j|j|ƒ} xÆt|ƒD]º\} } t|| ƒ} |rŒ|jrz|jj | } n| } t | | ƒ}nd}|j ƒ|| }|j |ƒ|j dkrºd}nt |j dƒ}| d|}|sÜ|rN|rð| d|7<|rü|| d<t| ƒ|| <qNWdS)a;Unlike TrueType glyphs, neither advance width nor bounding box info is stored in a CFF2 charstring. The width data exists only in the hmtx and HVAR tables. Since LSB data cannot be interpolated reliably from the master LSB values in the hmtx table, we traverse the charstring to determine the actual bound box. ÚhmtxNÚHVARÚfvarrr)r3rÚtablerÚVarStoreÚaxesr(r'Z AdvWidthMapÚmappingrÚinitZdrawZboundsÚtuple)Úvarfontr)r6Úlocr7Z boundsPenr>Z hvar_tabler@ÚvarStoreInstancerÚgidr8ÚentryZ width_idxZ width_deltar9Z lsb_deltaZlsbr0r0r1Úinterpolate_cff2_metricsis:     rLFTcA sš|s&tƒ}|j|ƒ|jdƒt|ƒ}|d}dd„|jDƒ}t||ƒ}d|krp|dj‰‡fdd„|jƒDƒ}dd„|jƒDƒ}tj d|ƒd |k�rœtj d ƒ|d }|d ‰|d j } t |j d ƒddƒ} t |jjƒ‡fdd„d�} x¶| D]¨} |j| } ˆj| | | ƒ\}}dI\}}xn| D]f}t||jƒ}|�s6�q|j}d|k�rp|dk�rbˆj| | | ƒ\}}t|||jƒ}|t|ƒ|7}�qWˆj| || | ƒqîWnd‰d|k�rXtj dƒ|d}|d}i}xb|jD]X}t||jƒ}|�sê�qÐx:t|jƒD],\}}|dk �rö|j |dƒ||||<�qöW�qÐWx*|jƒD]\}}||t|ƒ7<�q6Wd|k�rØtj dƒ|jƒ}|d}|jjd}t|jj|j|ƒ}|j}t ||ƒ|j!ƒt"|||ƒt#||||ƒ|j$d=|`d|k�rrtj dƒ|dj%} t| j|j|ƒ}!| j&}"xd|"D]\}#|#j'}$|$t(k�r*�qt(|$\}%}&t|!|#j)ƒ}|�sN�qt*||%|&t ||%|&ƒ|ƒ�qWtj dƒ�xdJD�]}%|%|k�r˜�q„||%j%}'t |'ddƒ�s´�q„|'j+} xÈ| j,D]¾}(d})xr|(j-j.D]f}*|*j/d k�r,|*j0}+|j|+j1},|*j2}-|*j3}.||,}/|-|/k�o|.kn�s0d!})nd!})|)�sÔP�qÔW|)�rÂ|(j4j5d"k�sVt6‚x$|(j4j7D]}#|#j8|'j9j:|#j;_8�q`WP�qÂW|'`+�q„Wd#|k�rF|d#j%j5d$k�rFtj d%ƒ|d#j%}0t|0j|j|ƒ}1t<||1ƒ}2|2j=||gd#dgƒ|0`d&|0_5|0j>dk�r |0`>d"|0_5|0j?�p<|0j@�p<|0jA�p<|0jB�p<|0j5d&k�o<|0j>�sF|d#=d!}3ˆ�röxDˆjCjDƒD]6}4tE|4d'ƒ�r\|4jFjGƒ}5tHd(d)„|5Dƒƒ}3|3�r\P�q\W|�röxXˆjƒD]L}6ˆ|6}4|4jIƒ�rÒ|4jJdjKtLO_Kn|4jMdk�r¦|4jKdtNO<�q¦W|3�rtj d*ƒg}7d+|k�r(|d+}8|8jFjGƒ}7ntOd+ƒ}8tPjQƒ|8_F|8|d+<|7jRd,ƒ|7jRd-ƒtStT|ƒƒg}9x*|jD] }:|9jRtStU||:j1d.ƒƒƒ�qlW|7jRd/d0jV|9ƒƒ|7jRd1ƒ|8jFjW|7ƒd2|k�r|d2};t*|;d3d t |;d3dƒƒt*|;d4tXtT|ƒt |;d4dƒƒƒd5|k�r¾tj d6ƒd7d8„|jDƒ‰x(|jYD]}ˆjZ|j[ƒˆjZ|j\ƒ�q.Wd9|k�r˜‡fd:d;„|d5j]Dƒ}|k�rðttXd ta|d=d?ƒƒƒ|d>_bd@|k�r>|d@}=x:t tcjƒƒD] \}>}?|=|>k�r|?|d>_dP�qWdA|d>_ddB|k�rldC|k�rltXdKta|dBdDƒƒ|dC_etj dEƒxdLD]}@|@|k�r|||@=�q|W|S)Ma Generate a static instance from a variable TTFont and a dictionary defining the desired location along the variable font's axes. The location values must be specified as user-space coordinates, e.g.: {'wght': 400, 'wdth': 100} By default, a new TTFont object is returned. If ``inplace`` is True, the input varfont is modified and reduced to a static font. When the overlap parameter is defined as True, OVERLAP_SIMPLE and OVERLAP_COMPOUND bits are set to 1. See https://docs.microsoft.com/en-us/typography/opentype/spec/glyf rr@cSs i|]}|j|j|jf|j“qSr0)ZminValueÚ defaultValueZmaxValueÚaxisTag)Ú.0Úar0r0r1ú ®sz+instantiateVariableFont..Úavarcs i|]\}}t|ˆ|ƒ|“qSr0)r)rOÚkÚv)Úmapsr0r1rQ²scSsi|]\}}t|dƒ|“qS)é)r)rOrSrTr0r0r1rQ´szNormalized location: %sÚgvarzMutating glyf/gvar tablesÚglyfr>ZvmtxÚmetricsNcs$ˆ|jƒrˆ|jˆƒjnd|fS)Nr)Ú isCompositeZgetCompositeMaxpValuesZmaxComponentDepth)Úname)rXr0r1ÚÁsz)instantiateVariableFont..)r,ÚcvarzMutating cvt/cvar tableszcvt ÚCFF2zMutating CFF2 tablerBÚMVARzMutating MVAR tablezMutating FeatureVariationsÚGSUBÚGPOSÚFeatureVariationsTrFiZGDEFizMutating GDEF/GPOS/GSUB tablesir4css|]}|jdƒVqdS)Z GETVARIATIONN)Ú startswith)rOÚopr0r0r1ú =sz*instantiateVariableFont..z1Adding IDEF to fpgm table for GETVARIATION opcodeÚfpgmzPUSHB[000] 145zIDEF[ ]rVz NPUSHW[ ] ú zENDF[ ]ÚmaxpZmaxInstructionDefsZmaxStackElementsr[zPruning name tablecSsh|] }|j’qSr0)Z axisNameID)rOrPr0r0r1ú dsz*instantiateVariableFont..Últagcs0g|](}|jˆkr|jdkr|jdkr|j‘qS)riÿÿ)ÚnameIDZ platformIDZlangID)rOÚn)Úexcluder0r1ú msz+instantiateVariableFont..csg|]}|jˆkr|‘qSr0)rk)rOrl)rmr0r1rnssZwghtzOS/2ièÚwdthé ZslntÚpostéZzRemoving variable tablesr?ÚVVARÚSTAT)NN)r`rai¦ÿÿÿ)rRr]r@rWr?r_rsrt)frÚsaveÚseekrrCr Úsegmentsr%ÚlogÚinforYÚgetattrÚgetÚsortedÚ variationsÚkeysZ_getCoordinatesAndControlsr Ú coordinatesrÚendPtsr Z_setCoordinatesr(rZ getGlyphOrderZcffZ topDictIndexrrBZ otVarStorer*r2Zdesubroutinizer=rLr$rAZ ValueRecordZValueTagrZVarIdxÚsetattrrbZFeatureVariationRecordZ ConditionSetZConditionTableZFormatZ AxisIndexrNZFilterRangeMinValueZFilterRangeMaxValueZFeatureTableSubstitutionÚVersionÚAssertionErrorZSubstitutionRecordÚFeatureZ FeatureListZ FeatureRecordZ FeatureIndexrZ mergeTablesZMarkGlyphSetsDefZ LigCaretListZMarkAttachClassDefZ GlyphClassDefZ AttachListZglyphsÚvaluesr#r4Z getAssemblyÚanyrZÚ componentsÚflagsr ZnumberOfContoursr rrZProgramÚappendÚstrÚlenrÚjoinZ fromAssemblyÚmaxZ instancesÚaddZsubfamilyNameIDZpostscriptNameIDÚnamesÚsetÚrangeÚtagsÚminZ usWeightClassÚOS2_WIDTH_CLASS_VALUESZ usWidthClassZ italicAngle)ArGÚlocationÚinplaceÚoverlapÚstreamr@rCrHrWZhMetricsZvMetricsZ glyphnamesZ glyphnamer}rÚ_Z origCoordsr€ÚvarZscalarr.Úgr]Úcvtr<r/Úcr6r^r)Z vsInstancerr*ZmvarrIÚrecordsZrecZmvarTagZtableTagZitemNamerAÚrecordZappliesÚ conditionZaxisIdxrNZMinZMaxrTZgdefZ instancerZmergerZaddidefZglyphZ instructionsZ glyph_nameZasmrfÚargsrPrhZexcludedUnicodeLangIDsroÚpercentZ widthClassÚtagr0)rmrXrUr1ÚinstantiateVariableFont˜sz                   $                                            &        r¤c Cs¦ddlm}ddl}|jddd�}|jddd d �|jd d d dd�|jdddddd�|jdd�}|jddddd�|jddddd�|jdd d!d"d#�|j|ƒ}|j}|jsÄt j j |ƒdd$n|j}||j rÖd%n |j ràd&nd'd(�i}xn|jD]d} y6| jd)ƒ\} } t| ƒd*k�st‚t| ƒ|| jd*ƒ<Wqôttfk �rV|jd+| ƒYqôXqôWtjd,|ƒtjd-ƒt|ƒ} t| |d.|jd/�tjd0|ƒ| j|ƒdS)1zInstantiate a variation fontr)Ú configLoggerNzfonttools varLib.mutatorzInstantiate a variable font)Ú descriptionÚinputz INPUT.ttfzInput variable TTF file.)ÚmetavarÚhelpÚlocargszAXIS=LOCÚ*z½List of space separated locations. A location consist in the name of a variation axis, followed by '=' and a number. E.g.: wght=700 wdth=80. The default is the location of the base master.)r¨Únargsr©z-oz--outputz OUTPUT.ttfz7Output instance TTF file (default: INPUT-instance.ttf).)r¨Údefaultr©F)Úrequiredz-vz --verboseÚ store_truezRun more verbosely.)Úactionr©z-qz--quietzTurn verbosity off.z --no-overlapr—Ú store_falsez5Don't set OVERLAP_SIMPLE/OVERLAP_COMPOUND glyf flags.)Údestr°r©z -instance.ttfÚDEBUGÚERRORÚINFO)Úlevelú=éz$invalid location argument format: %rz Location: %szLoading variable fontT)r–r—zSaving instance font %s)Ú fontToolsr¥ÚargparseÚArgumentParserÚ add_argumentÚadd_mutually_exclusive_groupÚ parse_argsr§ÚoutputÚosÚpathÚsplitextÚverboseÚquietrªÚsplitr‹rƒÚfloatÚljustÚ ValueErrorÚerrorrxryrr¤r—ru) r¡r¥rºÚparserZ logging_groupÚoptionsZ varfilenameÚoutfilerHÚargr£ÚvalrGr0r0r1ÚmainŽsV            rÏÚ__main__éÿÿÿÿ)FT)N);Ú__doc__ZfontTools.misc.fixedToolsrrZfontTools.misc.roundToolsrZfontTools.pens.boundsPenrZfontTools.ttLibrrZfontTools.ttLib.tablesrZfontTools.ttLib.tables._g_l_y_fr r r ZfontTools.varLib.modelsr r rZfontTools.varLib.mergerrZfontTools.varLib.varStorerZfontTools.varLib.mvarrZfontTools.varLib.iuprZfontTools.subset.cffr¹Úos.pathrÀÚloggingÚiorÚ getLoggerrxr”Úpercentsr(Úzipr/ÚprevÚcurrZhalfr2r=rLr¤rÏÚ__name__Úsysr‹ÚargvÚexitÚdoctestÚtestmodÚfailedr0r0r0r1ÚsB         0 */ w :