o
    i                     @   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 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#d$ Zd%d& Zd'S )*    )ttLib)otTablesc                 C   s&   t  }dd | D \|_|_|_|S )Nc                 S      g | ]}t |qS  float.0vr   r   g/var/www/html/eduruby.in/lip-sync/lip-sync-env/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                 C   s,   t  }| |_dd |D \|_|_|_|S )Nc                 S   r   r   r   r   r   r   r   r      r   z,buildSparseVarRegionAxis.<locals>.<listcomp>)r   SparseVarRegionAxisZ	AxisIndexr   r   r   )Z	axisIndexr   r   r   r   r   buildSparseVarRegionAxis   s   r   c                    s\   t  fdd|  D sJ d|  ft }g |_ D ]}|jt| |d q|S )Nc                 3       | ]}| v V  qd S Nr   r	   tagaxisTagsr   r   	<genexpr>       z!buildVarRegion.<locals>.<genexpr>Unknown axis tag found.r   r   r   )allkeysr   Z	VarRegionr   appendr   get)supportr   r   r   r   r   r   buildVarRegion   s   r'   c              	      s|   t  fdd|  D sJ d|  ft }g |_t D ]\}}|| vr(q|jt|| |d qt	|j|_
|S )Nc                 3   r   r   r   r   r   r   r   r   "   r   z'buildSparseVarRegion.<locals>.<genexpr>r    r!   )r"   r#   r   ZSparseVarRegionr   	enumerater$   r   r%   lenZSparseRegionCount)r&   r   r   ir   r   r   r   buildSparseVarRegion!   s   r+   c                 C   D   t  }t||_g |_| D ]}|jt|| qt|j|_|S r   )r   VarRegionListr)   RegionAxisCountRegionr$   r'   RegionCountZsupportsr   r   r&   r   r   r   buildVarRegionList3      
r2   c                 C   r,   r   )r   SparseVarRegionListr)   r.   r/   r$   r+   r0   r1   r   r   r   buildSparseVarRegionList=   r3   r5   c                    s    fdd|D S )Nc                    s   g | ]} | qS r   r   r	   r*   lstr   r   r   H   r   z _reorderItem.<locals>.<listcomp>r   )r8   mappingr   r7   r   _reorderItemG   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_lengthr6   r   r   r   r   U   s    z.VarData_calculateNumShorts.<locals>.<listcomp>c                 S   s   g | ]}t | qS r   )max)r	   pairr   r   r   r   V   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   rA   r   r   r   r   c   r   z-VarData_calculateNumShorts.<locals>.<genexpr>c                 s        | ]\}}|d kr|V  qdS rC   r   r	   r*   rB   r   r   r   r   h       c                 s        | ]\}}|d kr|V  qdS rC   r   rF   r   r   r   r   i   rG   c                 s   rH      Nr   rF   r   r   r   r   j   rG   c                 s   rE   rC   r   rF   r   r   r   r   t   rG   r;   )defaultrJ      c                 s   rE   rI   r   rF   r   r   r   r   y   rG   )VarRegionCountItemzipanyextendr(   r:   VarRegionIndexr)   ranger=   Z	NumShorts)r   optimizecountitemsZbit_lengthsitemblZbyte_lengthsZ	longWordsr9   r*   r   r   r   VarData_calculateNumShortsK   s4   


rY   Tc                 C   s   t | |dS )zDeprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().rT   rY   )r   rT   r   r   r   VarData_CalculateNumShorts   s   r\   c                 C   s   t | ddS )NTrZ   r[   )r   r   r   r   VarData_optimize   s   r]   c                 C   st   t  }t| |_t|j }|_g  }|_|r,|D ]}t||ks$J |t| qt|j|_|j	|d |S )NrZ   )
r   VarDatalistrR   r)   rM   rN   r$   	ItemCountcalculateNumShorts)varRegionIndicesrV   rT   r   regionCountrecordsrW   r   r   r   buildVarData   s   

re   c                 C   .   t  }d|_| |_t||_t|j|_|S NrJ   )r   ZVarStoreFormatr-   r_   r^   r)   ZVarDataCount)varRegionListZvarDataListr   r   r   r   buildVarStore      
rj   c                 C   sn   t  }d|_t| |_t|j }|_g  }|_|r/|D ]}t||ks'J |t| qt|j|_	|S rg   )
r   MultiVarDatarh   r_   rR   r)   rM   rN   r$   r`   )rb   rV   r   rc   rd   rW   r   r   r   buildMultiVarData   s   

rm   c                 C   rf   rg   )r   ZMultiVarStorerh   r4   r_   rl   r)   ZMultiVarDataCount)ri   ZmultiVarDataListr   r   r   r   buildMultiVarStore   rk   rn   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	VarIdxMaprO   r9   )varIdxesZ
glyphOrderr   r   r   r   buildVarIdxMap   s   rr   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>  rJ   r   )r_   r"   r(   r   ZDeltaSetIndexMapr9   r)   rh   )rq   r9   r   r   r   r   buildDeltaSetIndexMap   s   rt   c                 C   s&   t  }d|_| d? |_| d@ |_|S )NrL      rs   )r   ZDeviceZDeltaFormatZ	StartSizeZEndSize)ZvarIdxr   r   r   r   buildVarDevTable   s
   

rv   N)F)T)Z	fontToolsr   ZfontTools.ttLib.tablesr   r   r   r   r'   r+   r2   r5   r:   rY   r^   ra   r\   r]   rT   re   rj   rm   rn   rr   rt   rv   r   r   r   r   <module>   s*    


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