+
    f7is,  c                   s   ^ RI Ht ^ RIHtHtHtH	t
 ^ RIHtHt ^ RIHt ^RIHt ^ RIt^ RIHt Rt]P,                  ! ]4      tR	t]P,                  ! ]4      tR
t]P,                  ! ]4      tRt]P,                  ! ]4      tRt]P,                  ! ]4      t ! R R]P"                  4      t  ! R R]4      t! ! R R]4      t"R# )    )sstruct)fixedToFloatfloatToFixedfloatToFixedToStrstrToFixedToFloat)	bytesjoinsafeEval)
TTLibError)DefaultTableN)MutableMappingzf
	> # big endian
	version:     16.16F
	format:      H
	horizOffset: H
	vertOffset:  H
	reserved:    H
zM
	> # big endian
	nTracks:         H
	nSizes:          H
	sizeTableOffset: L
zM
	> # big endian
	track:      16.16F
	nameIndex:       H
	offset:          H
z>lz>hc                   sB   a  ] tR t^<t o RtR.tR tR tR tR t	Rt
V tR# )	table__t_r_a_ka  The AAT ``trak`` table can store per-size adjustments to each glyph's
sidebearings to make when tracking is enabled, which applications can
use to provide more visually balanced line spacing.

See also https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6trak.html
namec                s   . p\         pR F  p\        WR,           \        4       4      pVR,           pV'       g   \        W^ 4       K=  V^,           R,          pRWs,
          ,          Tr8\        WV4       VP	                  V4      p	V\        V	4      ,          pVP                  W,           4       K  	  ^ V n        \        \        P                  ! \        V 4      .V,           4      p
V
# )horizDataOffsets    r   Zverti)TRAK_HEADER_FORMAT_SIZEgetattr	TrackDatasetattrcompilelenappendreservedr   r   packTRAK_HEADER_FORMAT)selfttFontZdataListoffset	direction	trackDataZ
offsetNameZalignedOffsetZpaddingdataZ	tableDatas   &&         F/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/_t_r_a_k.pyr   Ztable__t_r_a_k.compileF   s    (*I&&8)+FI"X-J!,#aZ2-M%)?@-VDf-$$V,Dc$iFOOGN+ +  w||,>EFQR	    c                s    \         P                  ! \        VR \         V 4       R FJ  p\	        4       p\        WR,           4      pV^ 8w  d   VP                  W4       \        WR,           V4       KL  	  R # )Nr   r   r   )r   unpackr   r   r   r   	decompiler   )r   r    r   r   r   r      &&&   r!   r$   Ztable__t_r_a_k.decompile]   s`    )40H1H+I4P*I!ITx#78F{##D1Df,i8 +r"   c                s   VP                  R V P                  R7       VP                  4        VP                  RV P                  R7       VP                  4        R Fs  pVR,           pVP	                  V4       VP                  4        \        W\        4       4      pVP                  W4       VP                  V4       VP                  4        Ku  	  R# )version)valueformatr   Nr   )		simpletagr&   newliner(   begintagr   r   toXMLendtag)r   writerr   r   ZdataNamer   r%   r!   r,   Ztable__t_r_a_k.toXMLf   s    $,,75*I 6)HOOH%NN	<IOOF+MM(#NN +r"   c                s4   VR 8X  d   \        VR,          4      V n        R# VR8X  d   \        VR,          4      V n        R# VR9   dQ   \        4       p\	        WV4       V F2  p\        V\        4      '       g   K  Vw  rpVP                  WWt4       K4  	  R# R# )r&   r'   r(   N)Z	horizDataZvertData)r   r&   r(   r   r   
isinstancetuplefromXML)r   r   attrscontentr   r   elementZcontent_   &&&&&   r!   r1   Ztable__t_r_a_k.fromXMLt   s    9#E'N3DLX"5>2DK..!ID	*"!'511(/%X!!$x@	 # /r"   )r(   r   r&   N)__name__
__module____qualname____firstlineno__Z__doc__Zdependenciesr   r$   r,   r1   __static_attributes____classdictcell__Z__classdict__   @r!   r   r   <   s.      8L.9A Ar"   r   c                   sx   a  ] tR t^t o / 3R ltR tR tR tR tR t	R t
R tR	 tR
 tR tR t]tR tRtV tR# )r   c                s&    \        V4      V n        R # N)dict_map)r   Zinitialdata   &&r!   __init__ZTrackData.__init__   s    %	r"   c           
     s   \        V 4      pV P                  4       p\        V4      pV\        \        V,          ,           ,          p\        P
                  ! \        R VRVRV/4      p. p. pV\        V,          ,          p\        V P                  4       4       F  w  rWn
        Wn        V\        P
                  ! \        V	4      .,          p\        V	P                  4       4       F(  w  rV\        P
                  ! \        V4      .,          pK*  	  V\        V,          ,          pK  	  \        V4       Uu. uF(  p\        P
                  ! \         \#        V^4      4      NK*  	  pp\%        V.V,           V,           V,           4      pV# u upi )nTracksnSizessizeTableOffset)r   sizesTRACK_DATA_FORMAT_SIZETRACK_TABLE_ENTRY_FORMAT_SIZEr   r   TRACK_DATA_FORMATSIZE_VALUE_FORMAT_SIZEsorteditemstrackr   TRACK_TABLE_ENTRY_FORMATstructPER_SIZE_VALUE_FORMATPER_SIZE_VALUE_FORMAT_SIZESIZE_VALUE_FORMATfl2fir   )r   r   rC   rF   rD   trackDataHeaderZentryDataListZperSizeDataListrM   entrysizer'   ZsvZsizeDataListr    s   &&             r!   r   ZTrackData.compile   sR   d)

U 	(+H7+RRR!,,63DfM

 (611"4::<0LEK!Lgll+CUKLLM%ekkm4FKK0Eu$M#NN  50699F 1 EK5M
DQbFKK)5R=9M 	 
 -<N
 
s   6.F	c                s   WV\         ,            p\        V4      \         8w  d   \        R 4      h\        P                  ! \
        W04       V\         ,          pV P                  pV P                  p. p\        V4       Fv  pVWU\        ,            p\        V4      \        8  d   \        R4      h\        P                  ! \        V4      w  p	VP                  \        V	^4      4       V\        ,          pKx  	  \        V P                  4       F  p\        4       p
WV\         ,            p\        V4      \         8  d   \        R4      h\        P                  ! \"        W4       V
P$                  p\        V4       Fg  pWm,          pVW\&        ,            p\        V4      \&        8  d   \        R4      h\        P                  ! \(        V4      w  pVW&   V\&        ,          pKi  	  WV
P*                  &   V\         ,          pK  	  R# )z-not enough data to decompile TrackData headerz4not enough data to decompile TrackData size subtablez3not enough data to decompile TrackTableEntry recordz2not enough data to decompile per-size track valuesN)rG   r   r   r   r#   rI   rD   rE   ZrangerJ   rO   rR   r   fi2flrC   TrackTableEntryrH   rN   r   rQ   rP   rM   )r   r    r   rT   rD   rE   Z	sizeTableZiZsizeValueDataZ	sizeValuerU   Z	entryDataZperSizeOffsetZjrV   ZperSizeValueDataperSizeValues   &&&              r!   r$   ZTrackData.decompile   s   1G(GH#99LMM(/@((..	vA 4J"JM =!$:: !WXX!==):MJLYU9b1255O  t||$A#%Ef/L&LMI9~ == !VWWNN3YF!LLM6] |#'!4N$N$  '(+EE$L  #)--0EGW"X*!;; # !&33F) %r"   c                s   \        V 4      p\        V P                  4       4      pVP                  R W43,          4       VP                  4        \	        V P                  4       4       F  w  rVWVn        VP                  W4       K  	  R# )znTracks=%d, nSizes=%dN)r   rF   commentr*   rK   rL   rM   r,   )r   r.   r   rC   rD   rM   rU   s   &&&    r!   r,   ZTrackData.toXML   sb    d)TZZ\".'1BBC"4::<0LEKKK' 1r"   c                sl    VR 8w  d   R# \        4       pVP                  WW44       WPVP                  &   R# )
trackEntryN)rX   r1   rM   )r   r   r2   r3   r   rU   s   &&&&& r!   r1   ZTrackData.fromXML   s/    <!d73!U[[r"   c           	     sL   V '       g   \        4       # \        V P                  4       4      pWP                  ^ 4      ,          P	                  4       pV FD  pW,          P	                  4       pW$8w  g   K!  \        R\        V4      : R\        V4      : 24      h	  \        V4      # )r    z2'trak' table entries must specify the same sizes: z != )Z	frozensetZlisttracksZpoprF   r   rK   )r   r\   rF   rM   Z
entrySizess   &    r!   rF   ZTrackData.sizes   s    ;dkkm$ZZ]#))+E**,J" "(-
1CE   r"   c                (    V P                   V,          # r>   r@   r   rM   rA   r!   __getitem__ZTrackData.__getitem__   s    yyr"   c                     V P                   V R # r>   r^   r_   rA   r!   __delitem__ZTrackData.__delitem__   s    IIer"   c                "    W P                   V&   R # r>   r^   )r   rM   rU      &&&r!   __setitem__ZTrackData.__setitem__   s     		%r"   c                ,    \        V P                  4      # r>   r   r@   r      &r!   __len__ZTrackData.__len__       499~r"   c                rf   r>   Ziterr@   rh   ri   r!   __iter__ZTrackData.__iter__      DIIr"   c                6    V P                   P                  4       # r>   r@   keysrh   ri   r!   rq   ZTrackData.keys      yy~~r"   c                sT    R P                  V '       d   V P                  4      # R4      # )zTrackData({}) )r(   r@   rh   ri   r!   __repr__ZTrackData.__repr__	  s!    %%4dii@@R@@r"   r^   N)r6   r7   r8   r9   rB   r   r$   r,   r1   rF   r`   rb   re   rj   rm   rq   r\   rt   r:   r;   r<   r=   r!   r   r      sY     #% &"H)4V("  !  FA Ar"   r   c                   st   a  ] tR tRt o / R3R ltR tR tR tR tR t	R	 t
R
 tR t]tR tR tR tRtV tR# )rX   i  Nc                s2    W n         \        V4      V n        R # r>   )	nameIndexr?   r@   )r   Zvaluesru   rd   r!   rB   ZTrackTableEntry.__init__  s    "L	r"   c                s
   VR ,          P                  V P                  4      pVP                  RR\        V P                  ^4      3RV P                  334       VP                  4        V'       d"   VP                  V4       VP                  4        \        V P                  4       4       F3  w  rEVP                  R\        V^4      VR7       VP                  4        K5  	  VP                  R4       VP                  4        R# )r   r[   r'   ru   rM   )rV   r'   N)ZgetDebugNameru   r+   fl2strrM   r*   rZ   rK   rL   r)   r-   )r   r.   r   r   rV   rY   r%   r!   r,   ZTrackTableEntry.toXML  s    f~**4>>:vdjj"-.dnn0MN	
 	NN4 NN"("6DW6$+;<PNN #7 	l#r"   c                s   \        VR ,          ^4      V n        \        VR,          4      V n        V FP  p\	        V\
        4      '       g   K  Vw  rpVR8w  d   K)  \        VR,          ^4      p\        VR ,          4      W&   KR  	  R# )r'   ru   rM   rV   N)str2flrM   r   ru   r/   r0   )r   r   r2   r3   r   r4   Z_rV   r5   r!   r1   ZTrackTableEntry.fromXML"  sr    E'NB/
!%"45Ggu--$NDw%-,D!%.1DJ r"   c                r]   r>   r^   r   rV   rA   r!   r`   ZTrackTableEntry.__getitem__.  s    yyr"   c                ra   r>   r^   rx   rA   r!   rb   ZTrackTableEntry.__delitem__1  s    IIdOr"   c                rc   r>   r^   )r   rV   r'   rd   r!   re   ZTrackTableEntry.__setitem__4  s    		$r"   c                rf   r>   rg   rh   ri   r!   rj   ZTrackTableEntry.__len__7  rk   r"   c                rf   r>   rl   rh   ri   r!   rm   ZTrackTableEntry.__iter__:  rn   r"   c                ro   r>   rp   rh   ri   r!   rq   ZTrackTableEntry.keys=  rr   r"   c                sN    R P                  V P                  V P                  4      # )z!TrackTableEntry({}, nameIndex={}))r(   r@   ru   rh   ri   r!   rt   ZTrackTableEntry.__repr__B  s    299$))T^^TTr"   c                s    \        WP                  4      '       g   \        # V P                  VP                  8H  ;'       d    \	        V 4      \	        V4      8H  # r>   )r/   Z	__class__NotImplementedru   r?   )r   otherrA   r!   __eq__ZTrackTableEntry.__eq__E  s?    %00!!~~0NNT$Z4;5NNr"   c                sJ    V P                  V4      pV\        J d   V# V'       * # r>   )r{   ry   )r   rz   Zresults   && r!   __ne__ZTrackTableEntry.__ne__J  s$    U#>1vA6zAr"   )r@   ru   rM   )r6   r7   r8   r9   rB   r,   r1   r`   rb   re   rj   rm   rq   rF   rt   r{   r|   r:   r;   r<   r=   r!   rX   rX     sV      D ! 
2   EUO
B Br"   rX   )#ZfontTools.miscr   ZfontTools.misc.fixedToolsr   rW   r   rS   r   rv   r   rw   ZfontTools.misc.textToolsr   r   ZfontTools.ttLibr   rs   r	   rO   Zcollections.abcr
   r   Zcalcsizer   rI   rG   rN   rH   rR   rJ   rP   rQ   r   r   rX   ) r"   r!   <module>r}      s    "  9 &   *  "**+=>   !))*;<   !( 0 01I J 
  ):;   #__-BC DA\.. DANGA GAT?Bn ?Br"   