a
    ZXh                     @   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   s   g | ]}t |qS  float.0vr   r   ]/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/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   s   g | ]}t |qS 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   s   | ]}| v V  qd S Nr   r   tagaxisTagsr   r
   	<genexpr>   r   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rPq>|jt|| |d q>t	|j|_
|S )Nc                 3   s   | ]}| v V  qd S 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   sD   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   s    
r.   c                 C   sD   t  }t||_g |_| D ]}|jt|| qt|j|_|S r   )r   SparseVarRegionListr&   r*   r+   r!   r(   r,   r-   r   r   r
   buildSparseVarRegionList=   s    
r0   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   )r3   mappingr   r2   r
   _reorderItemG   s    r5   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_lengthr1   r   r   r
   r   U   r   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   `   r   c                 s   s   | ]}|d kV  qdS    Nr   r<   r   r   r
   r   c   r   z-VarData_calculateNumShorts.<locals>.<genexpr>c                 s   s   | ]\}}|d kr|V  qdS r>   r   r   r'   r=   r   r   r
   r   h   r   c                 s   s   | ]\}}|d kr|V  qdS r>   r   r@   r   r   r
   r   i   r   c                 s   s   | ]\}}|d kr|V  qdS    Nr   r@   r   r   r
   r   j   r   c                 s   s   | ]\}}|d kr|V  qdS r>   r   r@   r   r   r
   r   t   r   r6   )defaultrB      c                 s   s   | ]\}}|d kr|V  qdS rA   r   r@   r   r   r
   r   y   r   )VarRegionCountItemzipanyextendr%   r5   VarRegionIndexr&   ranger8   Z	NumShorts)r   optimizecountitemsZbit_lengthsitemblZbyte_lengthsZ	longWordsr4   r'   r   r   r
   VarData_calculateNumShortsK   s4    


rQ   Tc                 C   s   t | |dS )zDeprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().rL   rQ   )r   rL   r   r   r
   VarData_CalculateNumShorts   s    rT   c                 C   s   t | ddS )NTrR   rS   )r   r   r   r
   VarData_optimize   s    rU   c                 C   st   t  }t| |_t|j }|_g  }|_|rX|D ]"}t||ksHJ |t| q4t|j|_|j	|d |S )NrR   )
r   VarDatalistrJ   r&   rE   rF   r!   	ItemCountcalculateNumShorts)varRegionIndicesrN   rL   r   regionCountrecordsrO   r   r   r
   buildVarData   s    

r]   c                 C   s.   t  }d|_| |_t||_t|j|_|S NrB   )r   ZVarStoreFormatr)   rW   rV   r&   ZVarDataCount)varRegionListZvarDataListr   r   r   r
   buildVarStore   s    
ra   c                 C   sn   t  }d|_t| |_t|j }|_g  }|_|r^|D ]"}t||ksNJ |t| q:t|j|_	|S r^   )
r   MultiVarDatar_   rW   rJ   r&   rE   rF   r!   rX   )rZ   rN   r   r[   r\   rO   r   r   r
   buildMultiVarData   s    

rc   c                 C   s.   t  }d|_| |_t||_t|j|_|S r^   )r   ZMultiVarStorer_   r/   rW   rb   r&   ZMultiVarDataCount)r`   ZmultiVarDataListr   r   r   r
   buildMultiVarStore   s    
rd   c                 C   s"   t  }dd t|| D |_|S )Nc                 S   s   i | ]\}}||qS r   r   )r   gr	   r   r   r
   
<dictcomp>   r   z"buildVarIdxMap.<locals>.<dictcomp>)r   Z	VarIdxMaprG   r4   )varIdxesZ
glyphOrderr   r   r   r
   buildVarIdxMap   s    rh   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      r   z(buildDeltaSetIndexMap.<locals>.<genexpr>  rB   r   )rW   r   r%   r   ZDeltaSetIndexMapr4   r&   r_   )rg   r4   r   r   r   r
   buildDeltaSetIndexMap   s    rj   c                 C   s&   t  }d|_| d? |_| d@ |_|S )NrD      ri   )r   ZDeviceZDeltaFormatZ	StartSizeZEndSize)ZvarIdxr   r   r   r
   buildVarDevTable   s
    

rl   N)F)T)T)Z	fontToolsr   ZfontTools.ttLib.tablesr   r   r   r   r$   r(   r.   r0   r5   rQ   rV   rY   rT   rU   rL   r]   ra   rc   rd   rh   rj   rl   r   r   r   r
   <module>   s(   


5

	
