o
    h                     @   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   l/var/www/html/construction_image-detection-poc/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                 C   s,   t  }| |_dd |D \|_|_|_|S )Nc                 S   r   r   r   r   r   r   r   r      r   z,buildSparseVarRegionAxis.<locals>.<listcomp>)r   SparseVarRegionAxis	AxisIndexr   r   r   )	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   	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   SparseVarRegionr   	enumerater'   r   r(   lenSparseRegionCount)r)   r   r   ir   r   r   r   buildSparseVarRegion!   s   r0   c                 C   D   t  }t||_g |_| D ]}|jt|| qt|j|_|S r   )r   VarRegionListr-   RegionAxisCountRegionr'   r*   RegionCountsupportsr   r   r)   r   r   r   buildVarRegionList3      
r8   c                 C   r1   r   )r   SparseVarRegionListr-   r3   r4   r'   r0   r5   r6   r   r   r   buildSparseVarRegionList=   r9   r;   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   )r>   mappingr   r=   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_lengthr<   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   rG   r   r   r   r    c   r!   z-VarData_calculateNumShorts.<locals>.<genexpr>c                 s        | ]\}}|d kr|V  qdS rI   r   r	   r/   rH   r   r   r   r    h       c                 s        | ]\}}|d kr|V  qdS rI   r   rL   r   r   r   r    i   rM   c                 s   rN      Nr   rL   r   r   r   r    j   rM   c                 s   rK   rI   r   rL   r   r   r   r    t   rM   rA   )defaultrP      c                 s   rK   rO   r   rL   r   r   r   r    y   rM   )VarRegionCountItemzipanyextendr,   r@   VarRegionIndexr-   rangerC   	NumShorts)r   optimizecountitemsbit_lengthsitemblbyte_lengths	longWordsr?   r/   r   r   r   VarData_calculateNumShortsK   s4   


rc   Tc                 C   s   t | |dS )zDeprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().r[   rc   )r   r[   r   r   r   VarData_CalculateNumShorts   s   rf   c                 C   s   t | ddS )NTrd   re   )r   r   r   r   VarData_optimize   s   rg   c                 C   st   t  }t| |_t|j }|_g  }|_|r,|D ]}t||ks$J |t| qt|j|_|j	|d |S )Nrd   )
r   VarDatalistrX   r-   rS   rT   r'   	ItemCountcalculateNumShorts)varRegionIndicesr]   r[   r   regionCountrecordsr_   r   r   r   buildVarData   s   

ro   c                 C   .   t  }d|_| |_t||_t|j|_|S NrP   )r   VarStoreFormatr2   ri   rh   r-   VarDataCount)varRegionListvarDataListr   r   r   r   buildVarStore      
rw   c                 C   sn   t  }d|_t| |_t|j }|_g  }|_|r/|D ]}t||ks'J |t| qt|j|_	|S rq   )
r   MultiVarDatars   ri   rX   r-   rS   rT   r'   rj   )rl   r]   r   rm   rn   r_   r   r   r   buildMultiVarData   s   

rz   c                 C   rp   rq   )r   MultiVarStorers   r:   ri   ry   r-   MultiVarDataCount)ru   multiVarDataListr   r   r   r   buildMultiVarStore   rx   r~   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   	VarIdxMaprU   r?   )varIdxes
glyphOrderr   r   r   r   buildVarIdxMap   s   r   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>  rP   r   )ri   r$   r,   r   DeltaSetIndexMapr?   r-   rs   )r   r?   r   r   r   r   buildDeltaSetIndexMap   s   r   c                 C   s&   t  }d|_| d? |_| d@ |_|S )NrR      r   )r   DeviceDeltaFormat	StartSizeEndSize)varIdxr   r   r   r   buildVarDevTable   s
   

r   N)F)T)	fontToolsr   fontTools.ttLib.tablesr   r   r   r   r*   r0   r8   r;   r@   rc   rh   rk   rf   rg   r[   ro   rw   rz   r~   r   r   r   r   r   r   r   <module>   s*    


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