o
    %e                     @   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   K/var/www/html/venv/lib/python3.10/site-packages/fontTools/varLib/builder.py
<listcomp>	       z&buildVarRegionAxis.<locals>.<listcomp>)otVarRegionAxis
StartCoord	PeakCoordEndCoord)axisSupportselfr   r   r   buildVarRegionAxis   s   r   c                    s\   t  fdd|  D sJ d|  ft }g |_ D ]}|jt| |d q|S )Nc                 3   s    | ]}| v V  qd S Nr   )r   tagaxisTagsr   r   	<genexpr>       z!buildVarRegion.<locals>.<genexpr>zUnknown axis tag found.)r   r   r   )allkeysr   	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lenRegionAxisCountRegionr   r   RegionCount)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	   %   r
   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||
 |	||
< qq|rt
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   r
   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   r3   r   r   r   r   @   r   z-VarData_calculateNumShorts.<locals>.<genexpr>c                 s        | ]\}}|d kr|V  qdS r5   r   r   r(   r4   r   r   r   r   E       c                 s        | ]\}}|d kr|V  qdS r5   r   r8   r   r   r   r   F   r9   c                 s   r:      Nr   r8   r   r   r   r   G   r9   c                 s   r7   r5   r   r8   r   r   r   r   Q   r9   r-   )defaultr<      c                 s   r7   r;   r   r8   r   r   r   r   V   r9   )VarRegionCountItemzipanyextend	enumerater,   VarRegionIndexr!   ranger/   	NumShorts)r   optimizecountitemsbit_lengthsitemblbyte_lengths	longWordsr+   r(   r   r   r   VarData_calculateNumShorts(   s4   


rP   Tc                 C   s   t | |dS )zDeprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().rH   rP   )r   rH   r   r   r   VarData_CalculateNumShorts`   s   rS   c                 C   s   t | ddS )NTrQ   rR   )r   r   r   r   VarData_optimizeg   s   rT   c                 C   st   t  }t| |_t|j }|_g  }|_|r,|D ]}t||ks$J |t| qt|j|_|j	|d |S )NrQ   )
r   VarDatalistrE   r!   r?   r@   r   	ItemCountcalculateNumShorts)varRegionIndicesrJ   rH   r   regionCountrecordsrL   r   r   r   buildVarDatan   s   

r\   c                 C   s.   t  }d|_| |_t||_t|j|_|S )Nr<   )r   VarStoreFormatr    rV   rU   r!   VarDataCount)varRegionListvarDataListr   r   r   r   buildVarStore|   s   
rb   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   	VarIdxMaprA   r+   )varIdxes
glyphOrderr   r   r   r   buildVarIdxMap   s   rh   c                 C   sP   t | }tdd t|D rd S t }||_t|dkr#d|_|S d|_|S )Nc                 s   s    | ]	\}}||kV  qd S r   r   )r   r(   r   r   r   r   r      s    z(buildDeltaSetIndexMap.<locals>.<genexpr>  r<   r   )rV   r   rD   r   DeltaSetIndexMapr+   r!   r^   )rf   r+   r   r   r   r   buildDeltaSetIndexMap   s   rk   c                 C   s&   t  }d|_| d? |_| d@ |_|S )Nr>      ri   )r   DeviceDeltaFormat	StartSizeEndSize)varIdxr   r   r   r   buildVarDevTable   s
   

rr   N)F)T)	fontToolsr   fontTools.ttLib.tablesr   r   r   r   r&   r,   rP   rU   rX   rS   rT   rH   r\   rb   rh   rk   rr   r   r   r   r   <module>   s     

5


