a
    ZXh%                     @   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rd 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   Z/var/www/viveiro_mudafortebrasil/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 rqr| D ]<}t|}t| }||
krq||vrq|| |kr qrqt|d ddD ]`}|| }t| }||
krq||vrqdd | D }|| |krd |t	| <  qrqd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rq|| }|||jf g }|jdkr|||jf |jdkr6|||jf || qt	t| }t|}d |	|< |
| |
| qqd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rtd fddfdd| D |< qt|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rdndd ||j}d|vrt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 rt|jd(d)d*}n|j}|rt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