
    jke                         d dl mZ d dlm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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      :/usr/lib/python3/dist-packages/fontTools/varLib/builder.pybuildVarRegionAxisr      s<    DHS5T1eAh5T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>   s     93sh9s   z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                     t        j                         }t        |      |_        g |_        | D ]'  }|j                  j                  t        ||             ) t        |j                        |_        |S r   )r   VarRegionListlenRegionAxisCountRegionr   r   RegionCount)supportsr   r   r   s       r   buildVarRegionListr(      sa    Dx=DDK >>'8<=>4;;'DKr    c                 2    |D cg c]  }| |   	 c}S c c}w r   r   )lstmappingis      r   _reorderItemr-   $   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>@   s     0aAE0s   c              3   2   K   | ]  \  }}|d kD  s|  ywr3   r   r   r,   r5   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>E   s     FTQAqF   c              3   2   K   | ]  \  }}|d k(  s|  ywr3   r   r7   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>F        GTQQqGr8   c              3   2   K   | ]  \  }}|d k(  s|  yw   Nr   r7   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>G   r:   r8   c              3   2   K   | ]  \  }}|d kD  s|  ywr3   r   r7   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>Q        @tq!!a%@r8   )defaultr=      c              3   2   K   | ]  \  }}|d kD  s|  ywr<   r   r7   s      r   r   z-VarData_calculateNumShorts.<locals>.<genexpr>V   r?   r8   )VarRegionCountItem
bit_lengthzipmaxanyextend	enumerater-   VarRegionIndexr#   range	NumShorts)r   optimizecountitemsbit_lengthsitemr,   blpairr5   byte_lengths	longWordsr+   s                r   VarData_calculateNumShortsrW   (   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().rN   rW   )r   rN   s     r   VarData_CalculateNumShortsr[   `   s     &dX>>r    c                     t        | d      S )NTrY   rZ   )r   s    r   VarData_optimizer]   g   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 )NrY   )
r   VarDatalistrK   r#   rC   rD   r   	ItemCountcalculateNumShorts)varRegionIndicesrP   rN   r   regionCountrecordsrR   s          r   buildVarDatarf   n   s    ::<D/0D(+D,?,?(@@K$%Gdi 	'Dt9+++NN4:&	' ^DNX.Kr    c                     t        j                         }d|_        | |_        t	        |      |_        t        |j
                        |_        |S )Nr=   )r   VarStoreFormatr"   r`   r_   r#   VarDataCount)varRegionListvarDataListr   s      r   buildVarStorerm   |   s>    ;;=DDK&D$DLDLL)DKr    c                     t        j                         }t        ||       D ci c]  \  }}||
 c}}|_        |S c c}}w r   )r   	VarIdxMaprF   r+   )varIdxes
glyphOrderr   gr   s        r   buildVarIdxMaprs      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   r,   r   s      r   r   z(buildDeltaSetIndexMap.<locals>.<genexpr>   s     
1da16
1s     r=   r   )r`   r   rJ   r   DeltaSetIndexMapr+   r#   ri   )rp   r+   r   s      r   buildDeltaSetIndexMaprx      s[    8nG

1i0
11 DDL7|f,!DKK 34DKKr    c                 d    t        j                         }d|_        | dz	  |_        | dz  |_        |S )NrA      rv   )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(   r-   rW   r_   rb   r[   r]   rN   rf   rm   rs   rx   r   r   r    r   <module>r      sd     1

%2j !;

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

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