a
    —Æàg¯%  ã                   @   s¢   d dl mZmZ d dlmZ d dlmZ d dlmZ	 d dl
mZ d dlmZ d dlZe d¡Zd	d
„ Zdd„ Zddd„Zddd„Zedkržd dlZe eƒ ¡ dS )é    )Ú	_add_avarÚload_designspace)ÚVariationModel)ÚVarStoreInstancer)ÚfixedToFloat)ÚmakeOutputFileName)ÚproductNzfontTools.varLib.avarc                 C   s8   | dkr|j | |j|j    S |j | |j |j   S d S )Nr   )ÚdefaultValueZmaxValueZminValue)ÚvÚaxis© r   úN/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/varLib/avar.pyÚ_denormalize   s    r   c              	   C   s\  t | |ƒ}|j}|j}dd„ |D ƒ}|D �]}|  |¡}|| }|| }	t|	 ¡ ƒ}
|	 ¡ D ]ê\}\}}}||fD ]Ò}|dv r€qr| ¡ D ]<}t|ƒ}t| ¡ ƒ}||
krªqˆ||vr´qˆ|| |krˆ qrqˆt|d ddƒD ]`}|| }t| ¡ ƒ}||
krøqÖ||v�rqÖdd„ | ¡ D ƒ}|| |krÖd |t	| ¡ ƒ<  qrqÖdsrJ dƒ‚qrq\q(d	d
„ | ¡ D ƒS )Nc                 S   s   i | ]}t | ¡ ƒd “qS ©N)ÚtupleÚitems)Ú.0Úkr   r   r   Ú
<dictcomp>'   ó    z#_pruneLocations.<locals>.<dictcomp>©éÿÿÿÿr   é   r   r   c                 S   s   i | ]\}\}}}||“qS r   r   )r   r   Ú_ZdefaultVr   r   r   r   G   s   FzNo pin foundc                 S   s   g | ]}t |ƒ‘qS r   ©Údict©r   Útr   r   r   Ú
<listcomp>O   r   z#_pruneLocations.<locals>.<listcomp>)
r   ÚmappingZsupportsÚindexÚsetÚkeysr   r   Úranger   )Ú	locationsÚpolesÚaxisTagsÚmodelZmodelMappingZmodelSupportsZpinsÚlocationÚiZsupportZsupportAxesÚaxisTagZminVr   ZmaxVr
   ZpinZpinLocationZpinAxesZcandidateIdxÚ	candidateZcandidateAxesr   r   r   Ú_pruneLocations   sJ    



ÿr,   Tc                     s2  | d j }dd„ |D ƒ‰dd„ |D ƒ}dd„ t|ƒD ƒ‰ d| vrHi i fS | d }dd„ |j ¡ D ƒ}g }t|d	d
ƒdk�r€|jj}|jj}dd i}	t	dhƒ}
|j
D ]Ò}|j}|D ]Â}g }g }|| }t|jƒD ]r\}}|jdkrâqÎ|| }| ||jf¡ g }|jdk�r| ||jf¡ |jdk�r6| ||jf¡ | |¡ qÎt	t|Ž ƒ}t|ƒ}d |	|< |
 |¡ |
 |¡ q°q¢dd„ t|
‡ fdd„d�D ƒ}
dd„ |	 ¡ D ƒ}	t|
t|	ƒ|ƒ}
|jj}t||ƒ}|
D ]€}| |¡ i }t|ƒD ]T\}}|}|d u�r|| }|| }|dk�ræ| |d¡}|t|dƒ }|||< �qæ| ||f¡ �qÌ|d d i k�sdJ ‚|d d
 i k�r€| d¡ |�r*| ¡ D ]J\‰}ˆˆv�r®tdˆ› �ƒ‚‡‡fdd„‰‡fdd„| ¡ D ƒ|ˆ< �qŽt|ƒD ]F\}\}}‡fdd„| ¡ D ƒ}‡fdd„| ¡ D ƒ}||f||< �qâ||fS )NÚfvarc                 S   s   i | ]}|j |“qS r   ©r*   ©r   Úar   r   r   r   T   r   z&mappings_from_avar.<locals>.<dictcomp>c                 S   s   g | ]
}|j ‘qS r   r.   r/   r   r   r   r   U   r   z&mappings_from_avar.<locals>.<listcomp>c                 S   s   i | ]\}}|j |“qS r   r.   )r   r)   r0   r   r   r   r   V   r   Úavarc                 S   s*   i | ]"\}}|r|d dddœkr||“qS )r   r   r   r   r   )r   ÚtagÚsegr   r   r   r   Z   s   þZmajorVersionr   é   r   r   c                 S   s   g | ]}t |ƒ‘qS r   r   r   r   r   r   r   „   s   ÿc                    s   t | ƒt‡ fdd„| D ƒƒfS )Nc                 3   s   | ]\}}ˆ | V  qd S r   r   )r   r2   r   ©ÚaxisIndexesr   r   Ú	<genexpr>ˆ   r   z7mappings_from_avar.<locals>.<lambda>.<locals>.<genexpr>)Úlenr   )r   r5   r   r   Ú<lambda>ˆ   r   z$mappings_from_avar.<locals>.<lambda>)Úkeyc                 S   s   g | ]}t |ƒ‘qS r   r   r   r   r   r   r   ‹   r   é   zUnknown axis tag c                    s   t | ˆ ˆ ƒS r   ©r   )r
   )ÚaxisMapr2   r   r   r9   ª   r   c                    s   i | ]\}}ˆ |ƒˆ |ƒ“qS r   r   )r   r   r
   )Údenormr   r   r   «   r   c                    s    i | ]\}}|t |ˆ | ƒ“qS r   r<   ©r   r2   Úval©r=   r   r   r   ®   s   c                    s    i | ]\}}|t |ˆ | ƒ“qS r   r<   r?   rA   r   r   r   ±   s   ) ÚaxesÚ	enumerateÚsegmentsr   ÚgetattrÚtableZVarStoreZVarRegionListZRegionr!   ZVarDataZVarRegionIndexZVarRegionAxisZ	PeakCoordÚappendZ
StartCoordZEndCoordr   r   ÚaddÚupdateÚsortedr"   r,   ÚlistZ	VarIdxMapr   ZsetLocationÚgetÚfi2flÚpopÚ
ValueError) ÚfontZdenormalizeZfvarAxesr&   r1   ZaxisMapsÚmappingsZvarStoreZregionsr%   ZinputLocationsZvarDataZregionIndicesZregionIndexZpeakLocationZcornersZregionZ	axisIndexr   r*   ZcornerZ	varIdxMapZ	instancerr(   ZoutputLocationZvarIdxÚdeltar
   r3   r)   ZinputLocZ	outputLocr   )r6   r=   r>   r2   r   Úmappings_from_avarR   sž    
þ




þþ






ÿ
ÿrS   c                 C   s¶  | du rddl }|jdd… } ddlm} ddlm} ddlm} ddl}|j	dd d�}|j
d	d
dd� |j
dddddd� |j
ddtdd� |j
ddddd� | | ¡}||jr¶dndd� ||jƒ}d|vrÞt d¡ dS |jdu �r$dd lm}	 t|ƒ\}
}|	|
ƒ |	|ƒ tt|ƒd!ƒ dS d"d#„ |d jD ƒ}t|jd$d%�}d&|v �r`t d'¡ |d&= t||j|j|ƒ |jdu �r�t|jd(d)d*�}n|j}|�r²t d+|¡ | |¡ dS ),z8Add `avar` table from designspace file to variable font.Nr   r   )ÚconfigLogger)ÚTTFont)ÚDesignSpaceDocumentzfonttools varLib.avar)ÚdescriptionrP   zvarfont.ttfzVariable-font file.)ÚmetavarÚhelpÚdesignspacezfamily.designspacezDesignspace file.ú?)rX   rY   ÚnargsÚdefaultz-oz--output-filezOutput font file name.)ÚtyperY   z-vz	--verboseÚ
store_truezRun more verbosely.)ÚactionrY   ÚINFOÚWARNING)Úlevelr-   zNot a variable font.)ÚpprintrQ   c                 S   s   g | ]
}|j ‘qS r   r.   r/   r   r   r   r   î   r   zmain.<locals>.<listcomp>F)Zrequire_sourcesr1   z(avar table already present, overwriting.Tz.avar)Z	overWriteÚsuffixz	Saving %s)ÚsysÚargvZ	fontToolsrT   ZfontTools.ttLibrU   ZfontTools.designspaceLibrV   ÚargparseÚArgumentParserÚadd_argumentÚstrÚ
parse_argsÚverboserP   ÚlogÚerrorrZ   rd   rS   Úprintr8   rB   r   Úwarningr   ZaxisMappingsZoutput_filer   ÚinfoÚsave)Úargsrf   rT   rU   rV   rh   ÚparserÚoptionsrP   rd   rD   rQ   r&   ZdsÚoutfiler   r   r   Úmain¹   sj    þûüÿ




rx   Ú__main__)T)N)ZfontTools.varLibr   r   ZfontTools.varLib.modelsr   ZfontTools.varLib.varStorer   ZfontTools.misc.fixedToolsr   rM   ZfontTools.misc.cliToolsr   Ú	itertoolsr   ÚloggingÚ	getLoggerrn   r   r,   rS   rx   Ú__name__rf   Úexitr   r   r   r   Ú<module>   s   
?
g
H