U
    md                     @   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 }|rg }	|	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 )zDeprecated 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


