
    +g                         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y)    )ttLib)otTablesc                     t        j                         }| D cg c]  }t        |       c}\  |_        |_        |_        |S c c}w N)otVarRegionAxisfloat
StartCoord	PeakCoordEndCoord)axisSupportselfvs      p/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/site-packages/fontTools/varLib/builder.pybuildVarRegionAxisr      s<    DHS5T1eAh5T2DOT^T]K 6Us   Ac                     t        j                         }| |_        |D cg c]  }t        |       c}\  |_        |_        |_        |S c c}w r   )r   SparseVarRegionAxis	AxisIndexr	   r
   r   r   )	axisIndexr   r   r   s       r   buildSparseVarRegionAxisr      sC    !!#DDNHS5T1eAh5T2DOT^T]K 6Us   A
c           	         t        fd| j                         D              s
J d| f       t        j                         }g |_        D ]6  }|j                  j                  t        | j                  |d                   8 |S )Nc              3   &   K   | ]  }|v  
 y wr    .0tagaxisTagss     r   	<genexpr>z!buildVarRegion.<locals>.<genexpr>        93sh9   Unknown axis tag found.r   r   r   )allkeysr   	VarRegionr   appendr   get)supportr   r   r   s    `  r   buildVarRegionr)      s    9',,.99 !< 9
 <<>DD S!!"4W[[i5P"QRSK    c           
      d   t        fd| j                         D              s
J d| f       t        j                         }g |_        t              D ]?  \  }}|| vr|j                  j                  t        || j                  |d                   A t        |j                        |_
        |S )Nc              3   &   K   | ]  }|v  
 y w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   buildSparseVarRegionr2   !   s    9',,.99 !< 9
 D!DH% 
3g  ''$QC(CD	

 !!9!9:DKr*   c                     t        j                         }t        |      |_        g |_        | D ]'  }|j                  j                  t        ||             ) t        |j                        |_        |S r   )r   VarRegionListr/   RegionAxisCountRegionr&   r)   RegionCountsupportsr   r   r(   s       r   buildVarRegionListr:   3   sa    Dx=DDK >>'8<=>4;;'DKr*   c                     t        j                         }t        |      |_        g |_        | D ]'  }|j                  j                  t        ||             ) t        |j                        |_        |S r   )r   SparseVarRegionListr/   r5   r6   r&   r2   r7   r8   s       r   buildSparseVarRegionListr=   =   sd    !!#Dx=DDK D/BCD4;;'DKr*   c                 2    |D cg c]  }| |   	 c}S c c}w r   r   )lstmappingr1   s      r   _reorderItemrA   G   s    #$qCF$$$s   c                    | j                   }| j                  }dg|z  }|D ]D  }|D cg c]  }||dk  z   j                          }}t        ||      D cg c]
  }t	        |  }}F |D 	cg c]  }	|	r|	dz   dz	  nd }
}	t        d |
D              }|rg }|j                  d t        |
      D               |j                  d t        |
      D               |j                  d t        |
      D               t        |
|      }
t        | j                  |      | _	        t        | j                        | _         t        t        |            D ]  }t        ||   |      ||<    |r;t	        d	 t        |
      D        d
      dz   | _        | xj                  dz  c_        n%t	        d t        |
      D        d
      dz   | _        t        | j                        | _         | S c c}w c c}w c c}	w )Nr         c              3   &   K   | ]	  }|d kD    yw   Nr   )r   bs     r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>c   s     0aAE0s   c              3   2   K   | ]  \  }}|d kD  s|  ywrG   r   r   r1   rI   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>h   s     FTQAqF   c              3   2   K   | ]  \  }}|d k(  s|  ywrG   r   rK   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>i        GTQQqGrL   c              3   2   K   | ]  \  }}|d k(  s|  yw   Nr   rK   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>j   rN   rL   c              3   2   K   | ]  \  }}|d kD  s|  ywrG   r   rK   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>t        @tq!!a%@rL   )defaultrQ      c              3   2   K   | ]  \  }}|d kD  s|  ywrP   r   rK   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>y   rS   rL   )VarRegionCountItem
bit_lengthzipmaxanyextendr.   rA   VarRegionIndexr/   range	NumShorts)r   optimizecountitemsbit_lengthsitemr1   blpairrI   byte_lengths	longWordsr@   s                r   VarData_calculateNumShortsrj   K   s   EIIE#+K D 488aqAF|'')88.1"k.BCdsDzCCD" 9DD1aa!e\Q.DLD 0<00IFY|%<FFGY|%<GGGY|%<GG#L':*4+>+>H!$"5"56s5z" 	7A#E!Hg6E!H	7 @y6@"MPQQ 	 	&  @y6@"MPQQ 	 d112DKQ 9C Es   G$G),G.c                     t        | |      S )zDeprecated name for VarData_calculateNumShorts() which
    defaults to optimize=True.  Use varData.calculateNumShorts()
    or varData.optimize().ra   rj   )r   ra   s     r   VarData_CalculateNumShortsrn      s     &dX>>r*   c                     t        | d      S )NTrl   rm   )r   s    r   VarData_optimizerp      s    %dT::r*   c                 V   t        j                         }t        |       |_        t	        |j                        x}|_        g x}|_        |r1|D ],  }t	        |      |k(  sJ |j                  t        |             . t	        |j                        |_        |j                  |       |S )Nrl   )
r   VarDatalistr^   r/   rW   rX   r&   	ItemCountcalculateNumShorts)varRegionIndicesrc   ra   r   regionCountrecordsre   s          r   buildVarDatary      s    ::<D/0D(+D,?,?(@@K$%Gdi 	'Dt9+++NN4:&	' ^DNX.Kr*   c                     t        j                         }d|_        | |_        t	        |      |_        t        |j
                        |_        |S NrQ   )r   VarStoreFormatr4   rs   rr   r/   VarDataCount)varRegionListvarDataListr   s      r   buildVarStorer      s>    ;;=DDK&D$DLDLL)DKr*   c                 @   t        j                         }d|_        t        |       |_        t        |j                        x}|_        g x}|_        |r1|D ],  }t        |      |k(  sJ |j                  t        |             . t        |j                        |_	        |S r{   )
r   MultiVarDatar}   rs   r^   r/   rW   rX   r&   rt   )rv   rc   r   rw   rx   re   s         r   buildMultiVarDatar      s    ??DDK/0D(+D,?,?(@@K$%Gdi 	'Dt9+++NN4:&	' ^DNKr*   c                     t        j                         }d|_        | |_        t	        |      |_        t        |j
                        |_        |S r{   )r   MultiVarStorer}   r<   rs   r   r/   MultiVarDataCount)r   multiVarDataListr   s      r   buildMultiVarStorer      sE    DDK,D-.D !2!23DKr*   c                     t        j                         }t        ||       D ci c]  \  }}||
 c}}|_        |S c c}}w r   )r   	VarIdxMaprZ   r@   )varIdxes
glyphOrderr   gr   s        r   buildVarIdxMapr      s9    <<>D%(X%>?TQAqD?DLK @s   <c                     t        |       }t        d t        |      D              ry t        j                         }||_        t        |      dkD  r	d|_        |S d|_        |S )Nc              3   ,   K   | ]  \  }}||k(    y wr   r   )r   r1   r   s      r   r   z(buildDeltaSetIndexMap.<locals>.<genexpr>   s     
1da16
1s     rQ   r   )rs   r#   r.   r   DeltaSetIndexMapr@   r/   r}   )r   r@   r   s      r   buildDeltaSetIndexMapr      s[    8nG

1i0
11 DDL7|f,!DKK 34DKKr*   c                 d    t        j                         }d|_        | dz	  |_        | dz  |_        |S )NrU      r   )r   DeviceDeltaFormat	StartSizeEndSize)varIdxr   s     r   buildVarDevTabler      s0    99;DDr\DNF?DLKr*   N)F)T)	fontToolsr   fontTools.ttLib.tablesr   r   r   r   r)   r2   r:   r=   rA   rj   rr   ru   rn   rp   ra   ry   r   r   r   r   r   r   r   r*   r   <module>r      s}     1

$%2j !;

 ?; '

 r*   