o
    h%                     @   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rQd dlZee  dS dS )    )	_add_avarload_designspace)VariationModel)VarStoreInstancer)fixedToFloat)makeOutputFileName)productNzfontTools.varLib.avarc                 C   s4   | dkr|j | |j|j    S |j | |j |j   S )Nr   )defaultValuemaxValueminValue)vaxis r   i/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/fontTools/varLib/avar.py_denormalize   s   r   c              	   C   sT  t | |}|j}|j}dd |D }|D ]}| |}|| }|| }	t|	 }
|	 D ]r\}\}}}||fD ]f}|dv r?q8| D ]}t|}t| }||
krTqC||vrYqC|| |kra n=qCt|d ddD ]/}|| }t| }||
kr{qj||vrqjdd | D }|| |krd |t	| <  nqjJ dq8q-qd	d
 | D S )Nc                 S   s   i | ]	}t | d qS N)tupleitems).0kr   r   r   
<dictcomp>'   s    z#_pruneLocations.<locals>.<dictcomp>r      r   r   c                 S   s   i | ]
\}\}}}||qS r   r   )r   r   _defaultVr   r   r   r   G   s    FzNo pin foundc                 S      g | ]}t |qS r   dictr   tr   r   r   
<listcomp>O       z#_pruneLocations.<locals>.<listcomp>)
r   mappingsupportsindexsetkeysr   r   ranger   )	locationspolesaxisTagsmodelmodelMappingmodelSupportspinslocationisupportsupportAxesaxisTagminVr   maxVr   pinpinLocationpinAxescandidateIdx	candidatecandidateAxesr   r   r   _pruneLocations   sT   

"r=   Tc                     s(  | d j }dd |D dd |D }dd t|D  d| vr$i 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 ]g}|j}|D ]_}g }g }|| }t|jD ]7\}}|jdkrqqg|| }|||jf g }|jdkr|||jf |jdkr|||jf || qgt	t| }t|}d |	|< |
| |
| qXqQdd t|
 fdddD }
dd |	 D }	t|
t|	|}
|jj}t||}|
D ]=}|| i }t|D ](\}}|}|d ur|| }|| }|dkr||d}|t|d }|||< q|||f q|d d i ks-J |d d
 i kr;|d |r| D ]%\}vrRtd fddfdd| D |< qBt|D ]#\}\}}fdd| D }fdd| D }||f||< ql||fS )Nfvarc                 S   s   i | ]}|j |qS r   r4   r   ar   r   r   r   T   r"   z&mappings_from_avar.<locals>.<dictcomp>c                 S      g | ]}|j qS r   r?   r@   r   r   r   r!   U       z&mappings_from_avar.<locals>.<listcomp>c                 S   s   i | ]\}}|j |qS r   r?   )r   r1   rA   r   r   r   r   V   s    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    majorVersionr      r   r   c                 S   r   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   rE   r   axisIndexesr   r   	<genexpr>   s    z7mappings_from_avar.<locals>.<lambda>.<locals>.<genexpr>)lenr   )r    rI   r   r   <lambda>       z$mappings_from_avar.<locals>.<lambda>)keyc                 S   r   r   r   r   r   r   r   r!      r"      zUnknown axis tag c                    s   t |   S r   r   )r   )axisMaprE   r   r   rM      s    c                    s   i | ]\}} | |qS r   r   )r   r   r   )denormr   r   r      rN   c                        i | ]\}}|t | | qS r   rQ   r   rE   valrR   r   r   r          c                    rT   r   rQ   rU   rW   r   r   r      rX   ) axes	enumeratesegmentsr   getattrtableVarStoreVarRegionListRegionr&   VarDataVarRegionIndexVarRegionAxis	PeakCoordappend
StartCoordEndCoordr   r   addupdatesortedr'   r=   list	VarIdxMapr   setLocationgetfi2flpop
ValueError) fontdenormalizefvarAxesr+   rD   axisMapsmappingsvarStoreregionsr*   inputLocationsvarDataregionIndicesregionIndexpeakLocationcornersregion	axisIndexr   r4   corner	varIdxMap	instancerr0   outputLocationvarIdxdeltar   rF   r1   inputLoc	outputLocr   )rJ   rR   rS   rE   r   mappings_from_avarR   s   














r   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rotd dS |jdu rdd lm}	 t|\}
}|	|
 |	| tt|d! dS d"d# |d jD }t|jd$d%}d&|v rtd' |d&= t||j|j| |jdu rt|jd(d)d*}n|j}|rtd+| || dS dS ),z8Add `avar` table from designspace file to variable font.Nr   r   )configLogger)TTFont)DesignSpaceDocumentzfonttools varLib.avar)descriptionrr   zvarfont.ttfzVariable-font file.)metavarhelpdesignspacezfamily.designspacezDesignspace file.?)r   r   nargsdefaultz-oz--output-filezOutput font file name.)typer   z-vz	--verbose
store_truezRun more verbosely.)actionr   INFOWARNING)levelr>   zNot a variable font.)pprintrv   c                 S   rB   r   r?   r@   r   r   r   r!      rC   zmain.<locals>.<listcomp>F)require_sourcesrD   z(avar table already present, overwriting.Tz.avar)	overWritesuffixz	Saving %s)sysargv	fontToolsr   fontTools.ttLibr   fontTools.designspaceLibr   argparseArgumentParseradd_argumentstr
parse_argsverboserr   logerrorr   r   r   printrL   rY   r   warningr   axisMappingsoutput_filer   infosave)argsr   r   r   r   r   parseroptionsrr   r   r[   rv   r+   dsoutfiler   r   r   main   sl   





r   __main__)Tr   )fontTools.varLibr   r   fontTools.varLib.modelsr   fontTools.varLib.varStorer   fontTools.misc.fixedToolsr   ro   fontTools.misc.cliToolsr   	itertoolsr   logging	getLoggerr   r   r=   r   r   __name__r   exitr   r   r   r   <module>   s     

?
gH