o
    Ae                     @   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   Y/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/fontTools/varLib/builder.py
<listcomp>	       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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   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	   %   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   r+   r   r   r   r   @   r   z-VarData_calculateNumShorts.<locals>.<genexpr>c                 s        | ]\}}|d kr|V  qdS r-   r   r   r    r,   r   r   r   r   E       c                 s        | ]\}}|d kr|V  qdS r-   r   r0   r   r   r   r   F   r1   c                 s   r2      Nr   r0   r   r   r   r   G   r1   c                 s   r/   r-   r   r0   r   r   r   r   Q   r1   r%   )defaultr4      c                 s   r/   r3   r   r0   r   r   r   r   V   r1   )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   


rD   Tc                 C   s   t | |dS )zDeprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().r?   rD   )r   r?   r   r   r   VarData_CalculateNumShorts`   s   rG   c                 C   s   t | ddS )NTrE   rF   )r   r   r   r   VarData_optimizeg   s   rH   c                 C   st   t  }t| |_t|j }|_g  }|_|r,|D ]}t||ks$J |t| qt|j|_|j	|d |S )NrE   )
r   VarDatalistr=   r   r7   r8   r   Z	ItemCountcalculateNumShorts)ZvarRegionIndicesrA   r?   r   ZregionCountrecordsrB   r   r   r   buildVarDatan   s   

rM   c                 C   s.   t  }d|_| |_t||_t|j|_|S )Nr4   )r   ZVarStoreFormatr   rJ   rI   r   ZVarDataCount)ZvarRegionListZvarDataListr   r   r   r   buildVarStore|   s   
rO   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	VarIdxMapr9   r#   )varIdxesZ
glyphOrderr   r   r   r   buildVarIdxMap   s   rS   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>  r4   r   )rJ   r   r<   r   ZDeltaSetIndexMapr#   r   rN   )rR   r#   r   r   r   r   buildDeltaSetIndexMap   s   rU   c                 C   s&   t  }d|_| d? |_| d@ |_|S )Nr6      rT   )r   ZDeviceZDeltaFormatZ	StartSizeZEndSize)ZvarIdxr   r   r   r   buildVarDevTable   s
   

rW   N)F)T)Z	fontToolsr   ZfontTools.ttLib.tablesr   r   r   r   r   r$   rD   rI   rK   rG   rH   r?   rM   rO   rS   rU   rW   r   r   r   r   <module>   s     

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