U
    »mœdû  ã                   @   s’   d dl mZ d dlmZ dd„ Zdd„ Zdd„ Zd	d
„ Zddd„Z	e	ej
_ddd„Zdd„ Zeej
_d dd„Zdd„ Zdd„ Zdd„ Zdd„ ZdS )!é    )ÚttLib)ÚotTablesc                 C   s&   t  ¡ }dd„ | D ƒ\|_|_|_|S )Nc                 S   s   g | ]}t |ƒ‘qS © )Úfloat)Ú.0Úvr   r   úQ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/fontTools/varLib/builder.pyÚ
<listcomp>	   s     z&buildVarRegionAxis.<locals>.<listcomp>)ÚotÚVarRegionAxisZ
StartCoordZ	PeakCoordZEndCoord)ZaxisSupportÚselfr   r   r   ÚbuildVarRegionAxis   s    r   c                    s\   t ‡ fdd„|  ¡ D ƒƒs(td| ˆ fƒ‚t ¡ }g |_ˆ D ]}|j t|  |d¡ƒ¡ q:|S )Nc                 3   s   | ]}|ˆ kV  qd S ©Nr   )r   Útag©ÚaxisTagsr   r   Ú	<genexpr>   s     z!buildVarRegion.<locals>.<genexpr>zUnknown axis tag found.)r   r   r   )	ÚallÚkeysÚAssertionErrorr
   Z	VarRegionr   Úappendr   Úget)Úsupportr   r   r   r   r   r   ÚbuildVarRegion   s    ýr   c                 C   sD   t  ¡ }t|ƒ|_g |_| D ]}|j t||ƒ¡ qt|jƒ|_|S r   )r
   ÚVarRegionListÚlenZRegionAxisCountÚRegionr   r   ZRegionCount)Zsupportsr   r   r   r   r   r   ÚbuildVarRegionList   s    
r   c                    s   ‡ fdd„|D ƒS )Nc                    s   g | ]}ˆ | ‘qS r   r   ©r   Úi©Úlstr   r   r	   %   s     z _reorderItem.<locals>.<listcomp>r   )r!   Úmappingr   r    r   Ú_reorderItem$   s    r#   Fc                 C   s`  | j }| j}dg| }|D ]&}dd„ |D ƒ}dd„ t||ƒD ƒ}qdd„ |D ƒ}tdd„ |D ƒƒ}|rúg }	|	 dd„ t|ƒD ƒ¡ |	 d	d„ t|ƒD ƒ¡ |	 d
d„ t|ƒD ƒ¡ t||	ƒ}t| j|	ƒ| _t| jƒ| _ t	t|ƒƒD ]}
t||
 |	ƒ||
< qâ|�r0t
dd„ t|ƒD ƒdd�d | _|  jdO  _n t
dd„ t|ƒD ƒdd�d | _t| jƒ| _ | S )Nr   c                 S   s   g | ]}||d k    ¡ ‘qS )éÿÿÿÿ)Ú
bit_lengthr   r   r   r   r	   2   s     z.VarData_calculateNumShorts.<locals>.<listcomp>c                 S   s   g | ]}t |Ž ‘qS r   )Úmax)r   Úpairr   r   r   r	   3   s     c                 S   s    g | ]}|r|d  d? nd‘qS )é   é   r   r   ©r   Úbr   r   r   r	   =   s     c                 s   s   | ]}|d kV  qdS ©é   Nr   r*   r   r   r   r   @   s     z-VarData_calculateNumShorts.<locals>.<genexpr>c                 s   s   | ]\}}|d kr|V  qdS r,   r   ©r   r   r+   r   r   r   r   E   s      c                 s   s   | ]\}}|d kr|V  qdS r,   r   r.   r   r   r   r   F   s      c                 s   s   | ]\}}|d kr|V  qdS ©é   Nr   r.   r   r   r   r   G   s      c                 s   s   | ]\}}|d kr|V  qdS r,   r   r.   r   r   r   r   Q   s      r$   )Údefaultr0   é €  c                 s   s   | ]\}}|d kr|V  qdS r/   r   r.   r   r   r   r   V   s      )ÚVarRegionCountÚItemÚzipÚanyÚextendÚ	enumerater#   ÚVarRegionIndexr   Úranger&   Z	NumShorts)r   ÚoptimizeÚcountÚitemsZbit_lengthsÚitemÚblZbyte_lengthsZ	longWordsr"   r   r   r   r   ÚVarData_calculateNumShorts(   s4    


ÿÿr@   Tc                 C   s   t | |d�S )z’Deprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().©r;   ©r@   )r   r;   r   r   r   ÚVarData_CalculateNumShorts`   s    rC   c                 C   s   t | dd�S )NTrA   rB   )r   r   r   r   ÚVarData_optimizeg   s    rD   c                 C   st   t  ¡ }t| ƒ|_t|jƒ }|_g  }|_|rX|D ]"}t|ƒ|ksHt‚| t|ƒ¡ q4t|jƒ|_	|j
|d� |S )NrA   )r
   ÚVarDataÚlistr9   r   r3   r4   r   r   Z	ItemCountÚcalculateNumShorts)ZvarRegionIndicesr=   r;   r   ZregionCountÚrecordsr>   r   r   r   ÚbuildVarDatan   s    

rI   c                 C   s.   t  ¡ }d|_| |_t|ƒ|_t|jƒ|_|S )Nr0   )r
   ZVarStoreÚFormatr   rF   rE   r   ZVarDataCount)ZvarRegionListZvarDataListr   r   r   r   ÚbuildVarStore|   s    
rK   c                 C   s"   t  ¡ }dd„ t|| ƒD ƒ|_|S )Nc                 S   s   i | ]\}}||“qS r   r   )r   Úgr   r   r   r   Ú
<dictcomp>Š   s      z"buildVarIdxMap.<locals>.<dictcomp>)r
   Z	VarIdxMapr5   r"   )ÚvarIdxesZ
glyphOrderr   r   r   r   ÚbuildVarIdxMapˆ   s    rO   c                 C   sJ   t | ƒ}tdd„ t|ƒD ƒƒr"d S t ¡ }||_t|ƒdkr@dnd|_|S )Nc                 s   s   | ]\}}||kV  qd S r   r   )r   r   r   r   r   r   r   �   s     z(buildDeltaSetIndexMap.<locals>.<genexpr>éÿÿ  r0   r   )rF   r   r8   r
   ZDeltaSetIndexMapr"   r   rJ   )rN   r"   r   r   r   r   ÚbuildDeltaSetIndexMapŽ   s    rQ   c                 C   s&   t  ¡ }d|_| d? |_| d@ |_|S )Nr2   é   rP   )r
   ZDeviceZDeltaFormatZ	StartSizeZEndSize)ZvarIdxr   r   r   r   ÚbuildVarDevTable˜   s
    

rS   N)F)T)T)Z	fontToolsr   ZfontTools.ttLib.tablesr   r
   r   r   r   r#   r@   rE   rG   rC   rD   r;   rI   rK   rO   rQ   rS   r   r   r   r   Ú<module>   s   

5


