U
    Q»{j¯%  ã                   @   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   )ZdefaultValueZmaxValueZminValue)ÚvÚaxis© r   úT/var/www/html/bwave/python/venv/lib/python3.8/site-packages/fontTools/varLib/avar.pyÚ_denormalize   s    r   c              	   C   s\  t | |ƒ}|j}|j}dd„ |D ƒ}|D �]}|  |¡}|| }|| }	t|	 ¡ ƒ}
|	 ¡ D ]ê\}\}}}||fD ]Ò}|dkr€qr| ¡ D ]<}t|ƒ}t| ¡ ƒ}||
krªqˆ||kr´qˆ|| |krˆ qrqˆt|d ddƒD ]`}|| }t| ¡ ƒ}||
krøqÖ||k�rqÖdd„ | ¡ D ƒ}|| |krÖd |t	| ¡ ƒ<  qrqÖdsrt
dƒ‚qrq\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   Ú_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   s     z#_pruneLocations.<locals>.<listcomp>)r   ÚmappingZsupportsÚindexÚsetÚkeysr   r   Úranger   ÚAssertionError)Ú	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| k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 k	�r|| }|| }|dk�ræ| |d¡}|t|dƒ }|||< �qæ| ||f¡ �qÌ|d d i k�sdt‚|d d
 i k�r€| d¡ |�r*| ¡ D ]J\‰}ˆˆk�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   s      z&mappings_from_avar.<locals>.<dictcomp>c                 S   s   g | ]
}|j ‘qS r   r-   r.   r   r   r   r   U   s     z&mappings_from_avar.<locals>.<listcomp>c                 S   s   i | ]\}}|j |“qS r   r-   )r   r(   r/   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
    þ 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   r1   r   ©ÚaxisIndexesr   r   Ú	<genexpr>ˆ   s     z7mappings_from_avar.<locals>.<lambda>.<locals>.<genexpr>)Úlenr   )r   r4   r   r   Ú<lambda>ˆ   ó    z$mappings_from_avar.<locals>.<lambda>)Úkeyc                 S   s   g | ]}t |ƒ‘qS r   r   r   r   r   r   r   ‹   s     é   zUnknown axis tag c                    s   t | ˆ ˆ ƒS r   ©r   )r	   )ÚaxisMapr1   r   r   r8   ª   r9   c                    s   i | ]\}}ˆ |ƒˆ |ƒ“qS r   r   )r   r   r	   )Údenormr   r   r   «   s      c                    s    i | ]\}}|t |ˆ | ƒ“qS r   r<   ©r   r1   Ú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VarRegionListÚRegionr   ZVarDataZVarRegionIndexZVarRegionAxisZ	PeakCoordÚappendZ
StartCoordZEndCoordr   r   ÚaddÚupdateÚsortedr    r+   ÚlistZ	VarIdxMapr   ZsetLocationÚgetÚfi2flr"   ÚpopÚ
ValueError) ÚfontZdenormalizeZfvarAxesr%   r0   ZaxisMapsÚmappingsZvarStoreZregionsr$   ZinputLocationsZvarDataZregionIndicesZregionIndexZpeakLocationZcornersÚregionZ	axisIndexr
   r)   ZcornerZ	varIdxMapZ	instancerr'   ZoutputLocationZvarIdxÚdeltar	   r2   r(   ZinputLocZ	outputLocr   )r5   r=   r>   r1   r   Úmappings_from_avarR   sž    
þ




þþ






ÿ
ÿrU   c                 C   s¶  | dk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|krÞt d¡ dS |jdk�r$dd lm}	 t|ƒ\}
}|	|
ƒ |	|ƒ tt|ƒd!ƒ dS d"d#„ |d jD ƒ}t|jd$d%�}d&|k�r`t d'¡ |d&= t||j|j|ƒ |jdk�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)ÚdescriptionrQ   zvarfont.ttfzVariable-font file.)ÚmetavarÚhelpÚdesignspacezfamily.designspacezDesignspace file.ú?)rZ   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.)ÚpprintrR   c                 S   s   g | ]
}|j ‘qS r   r-   r.   r   r   r   r   î   s     zmain.<locals>.<listcomp>F)Zrequire_sourcesr0   z(avar table already present, overwriting.Tz.avar)Z	overWriteÚsuffixz	Saving %s)ÚsysÚargvZ	fontToolsrV   ZfontTools.ttLibrW   ZfontTools.designspaceLibrX   ÚargparseÚArgumentParserÚadd_argumentÚstrÚ
parse_argsÚverboserQ   ÚlogÚerrorr\   rf   rU   Úprintr7   rB   r   Úwarningr   ZaxisMappingsZoutput_filer   ÚinfoÚsave)Úargsrh   rV   rW   rX   rj   ÚparserÚoptionsrQ   rf   rD   rR   r%   ZdsÚoutfiler   r   r   Úmain¹   sp    þûü   ÿ




rz   Ú__main__)T)N)ZfontTools.varLibr   r   ZfontTools.varLib.modelsr   ZfontTools.varLib.varStorer   ZfontTools.misc.fixedToolsr   rN   ZfontTools.misc.cliToolsr   Ú	itertoolsr   ÚloggingÚ	getLoggerrp   r   r+   rU   rz   Ú__name__rh   Úexitr   r   r   r   Ú<module>   s   
?
g
H