
    ]Mh                         d dl mZ d dlmZ d Zd Zd Zd Zd Z	d Z
d	 ZddZeej        _        ddZd Zeej        _        ddZd Zd Zd Zd Zd Zd ZdS )    )ttLib)otTablesc                 j    t          j                    }d | D             \  |_        |_        |_        |S )Nc                 ,    g | ]}t          |          S  float.0vs     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/varLib/builder.py
<listcomp>z&buildVarRegionAxis.<locals>.<listcomp>	       5T5T5T1eAhh5T5T5T    )otVarRegionAxis
StartCoord	PeakCoordEndCoord)axisSupportselfs     r   buildVarRegionAxisr      s5    D5T5T5T5T5T2DOT^T]Kr   c                 x    t          j                    }| |_        d |D             \  |_        |_        |_        |S )Nc                 ,    g | ]}t          |          S r   r   r
   s     r   r   z,buildSparseVarRegionAxis.<locals>.<listcomp>   r   r   )r   SparseVarRegionAxis	AxisIndexr   r   r   )	axisIndexr   r   s      r   buildSparseVarRegionAxisr      s<    !##DDN5T5T5T5T5T2DOT^T]Kr   c           	      0   t          fd|                                 D                       sJ d| f            t          j                    }g |_        D ]=}|j                            t          |                     |d                               >|S )Nc              3       K   | ]}|v V  	d S Nr   r   tagaxisTagss     r   	<genexpr>z!buildVarRegion.<locals>.<genexpr>   '      993sh999999r   Unknown axis tag found.r   r   r   )allkeysr   	VarRegionr   appendr   get)supportr$   r   r#   s    `  r   buildVarRegionr/      s    9999',,..99999  !<   
 <>>DD S S!!"4W[[i5P5P"Q"QRRRRKr   c           
         t          fd|                                 D                       sJ d| f            t          j                    }g |_        t                    D ]F\  }}|| vr
|j                            t          ||                     |d                               Gt          |j                  |_
        |S )Nc              3       K   | ]}|v V  	d S r!   r   r"   s     r   r%   z'buildSparseVarRegion.<locals>.<genexpr>"   r&   r   r'   r(   )r)   r*   r   SparseVarRegionr   	enumerater,   r   r-   lenSparseRegionCount)r.   r$   r   ir#   s    `   r   buildSparseVarRegionr7   !   s    9999',,..99999  !<   
 D!DH%% 
 
3g ''$QC(C(CDD	
 	
 	
 	
 !!9::DKr   c                     t          j                    }t          |          |_        g |_        | D ]*}|j                            t          ||                     +t          |j                  |_        |S r!   )r   VarRegionListr4   RegionAxisCountRegionr,   r/   RegionCountsupportsr$   r   r.   s       r   buildVarRegionListr?   3   sn    Dx==DDK > >>'8<<====4;''DKr   c                     t          j                    }t          |          |_        g |_        | D ]*}|j                            t          ||                     +t          |j                  |_        |S r!   )r   SparseVarRegionListr4   r:   r;   r,   r7   r<   r=   s       r   buildSparseVarRegionListrB   =   sq    !##Dx==DDK D D/BBCCCC4;''DKr   c                        fd|D             S )Nc                      g | ]
}|         S r   r   )r   r6   lsts     r   r   z _reorderItem.<locals>.<listcomp>H   s    $$$qCF$$$r   r   )rE   mappings   ` r   _reorderItemrG   G   s    $$$$G$$$$r   Fc                    | j         }| j        }dg|z  }|D ](}d |D             }d t          ||          D             })d |D             }t          d |D                       }|rg }	|	                    d t          |          D                        |	                    d t          |          D                        |	                    d t          |          D                        t          ||	          }t          | j        |	          | _        t          | j                  | _         t          t          |                    D ]}
t          ||
         |	          ||
<   |rAt          d	 t          |          D             d
          dz   | _        | xj        dz  c_        n0t          d t          |          D             d
          dz   | _        t          | j                  | _         | S )Nr   c                 D    g | ]}||d k     z                                    S ))
bit_length)r   r6   s     r   r   z.VarData_calculateNumShorts.<locals>.<listcomp>U   s,    888aqAF|''))888r   c                      g | ]}t          | S r   )max)r   pairs     r   r   z.VarData_calculateNumShorts.<locals>.<listcomp>V   s    CCCdsDzCCCr   c                 &    g | ]}|r|d z   dz	  ndS )      r   r   r   bs     r   r   z.VarData_calculateNumShorts.<locals>.<listcomp>`   s)    DDD1a.a!e\\QDDDr   c              3   "   K   | ]
}|d k    V  dS    Nr   rR   s     r   r%   z-VarData_calculateNumShorts.<locals>.<genexpr>c   s&      00aAE000000r   c              3   ,   K   | ]\  }}|d k    |V  dS rU   r   r   r6   rS   s      r   r%   z-VarData_calculateNumShorts.<locals>.<genexpr>h   s*      FFTQAqFFr   c              3   ,   K   | ]\  }}|d k    |V  dS rU   r   rX   s      r   r%   z-VarData_calculateNumShorts.<locals>.<genexpr>i   *      GGTQQqGGr   c              3   ,   K   | ]\  }}|d k    |V  dS    Nr   rX   s      r   r%   z-VarData_calculateNumShorts.<locals>.<genexpr>j   rZ   r   c              3   ,   K   | ]\  }}|d k    |V  dS rU   r   rX   s      r   r%   z-VarData_calculateNumShorts.<locals>.<genexpr>t   *      @@tq!!a%%%%%%@@r   rJ   )defaultr]      c              3   ,   K   | ]\  }}|d k    |V  dS r\   r   rX   s      r   r%   z-VarData_calculateNumShorts.<locals>.<genexpr>y   r_   r   )VarRegionCountItemzipanyextendr3   rG   VarRegionIndexr4   rangerM   	NumShorts)r   optimizecountitemsbit_lengthsitemblbyte_lengths	longWordsrF   r6   s              r   VarData_calculateNumShortsrs   K   s*   EIE#+K D D 984888CCc"k.B.BCCC EDDDDL 00<00000I 7FFY|%<%<FFFFFFGGY|%<%<GGGGGGGGY|%<%<GGGGGG#L'::*4+>HH!$"566s5zz"" 	7 	7A#E!Hg66E!HH 
@@y66@@@"MMMPQQ 	 	&  @@y66@@@"MMMPQQ 	 d122DKr   Tc                 $    t          | |          S )zDeprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().rk   rs   )r   rk   s     r   VarData_CalculateNumShortsrw      s     &dX>>>>r   c                 $    t          | d          S )NTru   rv   )r   s    r   VarData_optimizery      s    %dT::::r   c                 v   t          j                    }t          |           |_        t	          |j                  x}|_        g x}|_        |r<|D ]9}t	          |          |k    sJ |                    t          |                     :t	          |j                  |_        |	                    |           |S )Nru   )
r   VarDatalistrh   r4   rc   rd   r,   	ItemCountcalculateNumShorts)varRegionIndicesrm   rk   r   regionCountrecordsro   s          r   buildVarDatar      s    :<<D/00D(+D,?(@(@@K$%Gdi ' 	' 	'Dt99++++NN4::&&&&^^DNX...Kr   c                     t          j                    }d|_        | |_        t	          |          |_        t          |j                  |_        |S Nr]   )r   VarStoreFormatr9   r|   r{   r4   VarDataCount)varRegionListvarDataListr   s      r   buildVarStorer      sB    ;==DDK&D$$DLDL))DKr   c                 X   t          j                    }d|_        t          |           |_        t          |j                  x}|_        g x}|_        |r<|D ]9}t          |          |k    sJ |                    t          |                     :t          |j                  |_	        |S r   )
r   MultiVarDatar   r|   rh   r4   rc   rd   r,   r}   )r   rm   r   r   r   ro   s         r   buildMultiVarDatar      s    ?DDK/00D(+D,?(@(@@K$%Gdi ' 	' 	'Dt99++++NN4::&&&&^^DNKr   c                     t          j                    }d|_        | |_        t	          |          |_        t          |j                  |_        |S r   )r   MultiVarStorer   rA   r|   r   r4   MultiVarDataCount)r   multiVarDataListr   s      r   buildMultiVarStorer      sH    DDK,D-..D !233DKr   c                 j    t          j                    }d t          ||           D             |_        |S )Nc                     i | ]\  }}||	S r   r   )r   gr   s      r   
<dictcomp>z"buildVarIdxMap.<locals>.<dictcomp>   s    ???TQAq???r   )r   	VarIdxMapre   rF   )varIdxes
glyphOrderr   s      r   buildVarIdxMapr      s1    <>>D??SX%>%>???DLKr   c                     t          |           }t          d t          |          D                       rd S t          j                    }||_        t          |          dk    rdnd|_        |S )Nc              3   (   K   | ]\  }}||k    V  d S r!   r   )r   r6   r   s      r   r%   z(buildDeltaSetIndexMap.<locals>.<genexpr>   s*      
1
1da16
1
1
1
1
1
1r     r]   r   )r|   r)   r3   r   DeltaSetIndexMaprF   r4   r   )r   rF   r   s      r   buildDeltaSetIndexMapr      sn    8nnG

1
1i00
1
1
111 t  DDL7||f,,!!!DKKr   c                 b    t          j                    }d|_        | dz	  |_        | dz  |_        |S )Nra      r   )r   DeviceDeltaFormat	StartSizeEndSize)varIdxr   s     r   buildVarDevTabler      s0    9;;DDr\DNF?DLKr   N)F)T)	fontToolsr   fontTools.ttLib.tablesr   r   r   r   r/   r7   r?   rB   rG   rs   r{   r~   rw   ry   rk   r   r   r   r   r   r   r   r   r   r   <module>r      sZ         1 1 1 1 1 1
    
 
 
  $    % % %2 2 2 2j !;
 ? ? ? ?; ; ; '
                  r   