+
    f7i**  c                   s    ^ RI Ht ^ RIHtHt ^ RIHtHt	 ^RI
Ht ^ RIt^ RIt^ RIt^ RIt]P                   ! ]4      t ! R R]P                  4      t ! R R	]4      t ! R
 R]4      t^ ]/tR# )i    )getSearchRange)safeEvalreadHex)fixedToFloatfloatToFixed)DefaultTableNc                   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__k_e_r_naA  Kerning table

The ``kern`` table contains values that contextually adjust the inter-glyph
spacing for the glyphs in a ``glyf`` table.

Note that similar contextual spacing adjustments can also be stored
in the "kern" feature of a ``GPOS`` table.

See also https://learn.microsoft.com/en-us/typography/opentype/spec/kern
c                sV    V P                    F  pVP                  V8X  g   K  Vu # 	  R # N)
kernTablesformat)selfr	   subtables   && F/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/_k_e_r_n.pygetkernZtable__k_e_r_n.getkern   s&    H&( (     c                sp   \         P                  ! R VR,          4      w  r4Rp\        V4      ^8  dE   V^8X  d>   \         P                  ! RVR,          4      w  r4\        V^4      V n        VR,          pRpMW0n        VR,          p. V n        \        V4       EF  pV P                  R8X  d#   \         P                  ! R	VR
,          4      w  rxp	M\         P                  ! RVR
,          4      w  rrV^8X  d]   V	^ 8X  dV   \         P                  ! RVR,          4      w  pV^,          ^,           pW|8w  d   \        P                  RW3,          4       TpV	\        9  d   \        V	4      pM\        V	,          ! V4      pVP                  VRV V4       V P
                  P                  V4       WR pEK  	  R# )>HH:N   NF>LLN   Nr   NNT:r   NN      ?z>LBBN   N>HHBBz>H:r   r   NzA'kern' subtable longer than defined: %d bytes instead of %d bytesN)structunpacklenfi2flversionr   rangelogwarningkern_classesKernTable_format_unkown	decompileappend)r
   datattFontr   nTablesappleZilengthcoveragesubtableFormatZ_nPairsZcalculated_lengthr   s   &&&           r   r#   Ztable__k_e_r_n.decompile    sw   !==R9INA%}}UDH=G "-DL8DE"L8DwA||s"39==b3R0. 7=mmGTRTX6V3>a<Na$7 !'dDI >IV)/!r(9%2;>O=XY /F\12>B'7>tGV}f5OO""8,=D9  r   c                s   \        V R 4      '       d   \        V P                  4      pM^ pV P                  R8X  d.   \        P
                  ! R\        V P                  ^4      V4      pM"\        P
                  ! RV P                  V4      p\        V R 4      '       d+   V P                   F  pW4P                  V4      ,           pK  	  V# )r   r   r   r   )hasattrr   r   r   r   packfl2ficompile)r
   r&   r'   r%   r   s   &&   r   r0   Ztable__k_e_r_n.compileK   s    4&&$//*GG<<3;;ueDLL"&=wGD;;udllG<D4&& OO..v66 ,r   c                s    VP                  R V P                  R7       VP                  4        V P                   F  pVP	                  W4       K  	  R# )r   )valueN)	simpletagr   newliner   toXML)r
   writerr&   r   s   &&& r   r4   Ztable__k_e_r_n.toXMLZ   s=    $,,7HNN6* (r   c                sz   VR 8X  d   \        VR,          4      V n        R# VR8w  d   R# \        V R4      '       g   . V n        \        VR,          4      pV\        9  d   \        V4      pM"V P                  R8H  p\        V,          ! V4      pV P                  P                  V4       VP                  WW44       R# )r   r1   Nkernsubtabler   r	   r   )r   r   r-   r   r!   r"   r$   fromXML)r
   nameattrscontentr&   r	   r   r(   s   &&&&&   r   r7   Ztable__k_e_r_n.fromXML`   s    9#E'N3DL>!t\** DO%/*%.v6HLLC'E#F+E2Hx(g6r   )r   r   N)__name__
__module____qualname____firstlineno__Z__doc__r   r#   r0   r4   r7   __static_attributes____classdictcell__Z__classdict__   @r   r   r      s)     	)!V+7 7r   r   c                   s\   a  ] tR t^rt o ^ ;ttRR ltR tR tR t	R t
R tR tR tR	tV tR
# )KernTable_format_0c                    Wn         R # r   )r(   )r
   r(      &&r   __init__ZKernTable_format_0.__init__v   s    
r   c                s8   V P                   '       gJ   \        P                  ! R VR,          4      w  r4rVV^ 8w  d   ^ RIHp V! RV,          4      hRpVR,          pM*\        P                  ! RVR,          4      w  rFrXVR,          pV P
                  V8X  g   Q R	4       hW`n        Wn        / ;V n        p	\        P                  ! R
VR,          4      w  rrVR,          p\        P                  ! RVR^V
,           4      p\        P                  R8w  d   VP                  4        \        V4      pVP                  4       p\        V
4       FJ  p\!        V4      \!        V4      \!        V4      pppVR8  d
   VR,          p VV	VV,          VV,          3&   KL  	  \'        V4      ^V
,          ^,           8  d0   \(        P+                  R\'        V4      ^V
,          ,
          4       R# R#   \"         d)    TYP%                  T4      TP%                  T4      3&    K  i ; i)r   r   )
TTLibErrorz%unsupported kern subtable version: %dN:r   NN>LBBHr   r   unsupported format>HHHHZHZbigi      z(excess data in 'kern' subtable: %d bytes)r(   r   r   fontTools.ttLibrG   r	   r*   
tupleIndex	kernTablearraysysZ	byteorderZbyteswapZiterZgetGlyphOrderr   ZnextZ
IndexErrorZgetGlyphNamer   r   r    )r
   r%   r&   r   r)   r+   r*   rG   rM   rN   r,   searchRangeentrySelector
rangeShiftZdatasZitZ
glyphOrderZkleftrightr1   s   &&&                  r   r#   ZKernTable_format_0.decompiley   s   zzz8>gtTVx8X5G^!|6 !H7!RSSJ8D;A==b<8Fn 8D{{n,B.BB, $%''9?T"X:
6] BxClF
!34==E!NN%[))+
vA!%b48T"X%D~CH	:d+Z->?@  t9q6zA~%KK:CIF
<R &    ..t4f6I6I%6PQRs   >G&&/HHc                s2  aa \        \        V P                  4      R 4      p\        V^4      w  r4pVR ,          p\        VR 4      p\        VR 4      p\        P
                  ! RW#WE4      p VP                  4       o\        V3R lV P                  P                  4        4       4      pV F%  w  rp
V\        P
                  ! RWV
4      ,           pK'  	  V P                  '       go   ^ p\        V4      ^,           pVR8  d   \        P                  R4       VR ,          p\        P
                  ! RWV P                  V P                  4      pW,           # V P                   f   \        P                  R4       ^ V n        \        V4      ^,           p\        P
                  ! R	WP                  V P                  V P                   4      pW,           #   \         d>    TP                  o\        T3R lT P                  P                  4        4       4      p ELmi ; i)
i  rJ   c              3   sT   <"   T F  w  w  rpSV,          SV,          V3x  K  	  R # 5ir    ).0rT   rU   r1   reverseOrder   &   r   	<genexpr>-KernTable_format_0.compile.<locals>.<genexpr>   s0      .D*]dE d#\%%8%@.Ds   %(c              3   sP   <"   T F  w  w  rpS! V4      S! V4      V3x  K  	  R # 5ir   rV   )rW   rT   rU   r1   
getGlyphIDrY   r   rZ   r[      s0      .D*]dE D!:e#4e<.Ds   #&z>HHhrK   zI"kern" subtable overflow, truncating length value while preserving pairs.r   "'tupleIndex' is None; default to 0rH   )Zminr   rN   r    r   r.   ZgetReverseGlyphMapsorteditemsZKeyErrorr\   r(   r   r    r	   r*   rM   )r
   r&   r,   rQ   rR   rS   r%   rN   rT   rU   r1   r   r)   Zheaderr\   rX   s   &&            @@r   r0   ZKernTable_format_0.compile   s   S(&11?1J.JvM62V,
{{7FS	!446L .2nn.B.B.D I #,D&++fd5AAD #, zzzGY]F F & [['4;;VF } & @A"#Y]F[[T__F }A  	**J .2nn.B.B.D I	s   +=G AHHc                s   \        V P                  V P                  R 7      pV P                  '       d9   V P                  f   \
        P                  R4       ^ VR&   MV P                  VR&   VP                  ! R	/ VB  VP                  4        \        V P                  P                  4       4      pV F3  w  w  rVpVP                  RRV3RV3RV3.4       VP                  4        K5  	  VP                  R4       VP                  4        R# )
)r*   r	   Nr]   rM   r6   pairlrv)r6   )Zdictr*   r	   r(   rM   r   r    begintagr3   r^   rN   r_   r2   endtag)r
   r5   r&   r9   r_   rT   rU   r1   s   &&&     r   r4   ZKernTable_format_0.toXML   s    dmmDKK@:::&@A&'l#&*ool#0%0t~~++-.$) MT5VsDkC<#u%NONN %* 	n%r   c                s   \        VR ,          4      V n        \        VR,          4      pV P                  '       d=   RV9   d   \        VR,          4      V n        M$\        P                  R4       RV n        MRV n        WPP                  8X  g   Q R4       h\        V R4      '       g   / V n        V FO  p\        V\        4      '       g   K  Vw  rp\        VR,          4      V P                  VR,          VR	,          3&   KQ  	  R# )
r*   r	   rM   z5Apple kern subtable is missing 'tupleIndex' attributeNrI   rN   rc   ra   rb   )r   r*   r(   rM   r   r    r	   r-   rN   Z
isinstanceZtuple)r
   r8   r9   r:   r&   r+   Zelements   &&&&&  r   r7   ZKernTable_format_0.fromXML   s     z!23!%/2:::u$"*5+>"? ST"&"DO,B.BB,t[))DNGgu--#* D7?c
7KDNNE#Jc
34	 r   c                s(    V P                   V,          # r   rN   r
   r`   rE   r   __getitem__ZKernTable_format_0.__getitem__   s    ~~d##r   c                s"    W P                   V&   R # r   rf   )r
   r`   r1      &&&r   __setitem__ZKernTable_format_0.__setitem__  s    $tr   c                s     V P                   V R # r   rf   rg   rE   r   __delitem__ZKernTable_format_0.__delitem__  s    NN4 r   )r(   r*   rN   rM   N)F)r;   r<   r=   r>   r   r	   rF   r#   r0   r4   r7   rh   rj   rk   r?   r@   rA   rB   r   rC   rC   r   s?     Gf.`/b"L*$%! !r   rC   c                   s>   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	r"   i
  c                rD   r   r	   )r
   r	   rE   r   rF   Z KernTable_format_unkown.__init__  s    r   c                rD   r   r%   )r
   r%   r&   ri   r   r#   Z!KernTable_format_unkown.decompile  s    	r   c                s    V P                   # r   rm   )r
   r&   rE   r   r0   ZKernTable_format_unkown.compile  s    yyr   c                s   VP                  R V P                  R7       VP                  4        VP                  R4       VP                  4        VP	                  V P
                  4       VP                  R 4       VP                  4        R# )r6   rl   zunknown 'kern' subtable formatN)rd   r	   r3   ZcommentZdumphexr%   re   )r
   r5   r&   ri   r   r4   ZKernTable_format_unkown.toXML  s]    t{{;78tyy!n%r   c                s<    V P                  \        V4      V4       R # r   )r#   r   )r
   r8   r9   r:   r&   s   &&&&&r   r7   ZKernTable_format_unkown.fromXML  s    ww'0r   )r%   r	   N)r;   r<   r=   r>   rF   r#   r0   r4   r7   r?   r@   rA   rB   r   r"   r"   
  s#     1 1r   r"   )rL   r    ZfontTools.misc.textToolsr   r   ZfontTools.misc.fixedToolsr   r   r   r/   Z r   r   rP   rO   ZloggingZ	getLoggerr;   r   r   ZobjectrC   r"   r!   rV   r   r   <module>rn      sl    * 6 R   
   !a7\.. a7HU! U!p1f 1. %&r   