+
    f7i/  c                   sX   ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^RIHt ^ R	It^ R	It^ R	It^ R	It^ R	It^ R	IHu Hu Ht ]P0                  ! ]4      tR
tRt]P:                  ! ]4      t]P:                  ! ]4      t ! R R]P                  4      t RR/R lt!R t"R	# )    )deque)partial)sstruct)safeEval)LazyDict)OPTIMIZE_FONT_SPEED)TupleVariation)DefaultTableNzn
	> # big endian
	version:			H
	reserved:			H
	axisCount:			H
	sharedTupleCount:		H
	offsetToSharedTuples:		I
z=
	> # big endian
	flags:				H
	offsetToGlyphVariationData:	I
c                   s   a  ] tR t^/t o RtRR.t^tRR ltR tR t	R t
RR	 lt]R
 4       t]R 4       tR tR t]R 4       tRtV tR# )table__g_v_a_ra(  Glyph Variations table

The ``gvar`` table provides the per-glyph variation data that
describe how glyph outlines in the ``glyf`` table change across
the variation space that is defined for the font in the ``fvar``
table.

See also https://learn.microsoft.com/en-us/typography/opentype/spec/gvar
fvarglyfNc                sp    \         P                   P                  W4       ^^ uV n        V n        / V n        R# )   N)r   __init__versionreserved
variations)selfZtag   &&F/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/_g_v_a_r.pyr   Ztable__g_v_a_r.__init__=   s-    !!**45&'#dm    c                s   VR ,          P                    Uu. uF  q"P                  NK  	  pp\        P                  ! V\        P
                  ! V P                  P                  4       !  4      p\        V4       UUu/ uF  w  rVWebK	  	  ppp\        V Uu. uF  p\        V4      NK  	  up4      p	V P                  WV4      p
^ p. pV
 F&  pVP                  V4       V\        V4      ,          pK(  	  VP                  V4       V P                  V4      w  r\        V P                  ,           \         ,           p/ pV P"                  VR&   V P$                  VR&   \        V4      VR&   \        V4      VR&   V\        V4      ,           VR&   VVR&   VR,          V	,           VR&   \&        P(                  ! \*        V4      \        V
4      P-                  V P                  R4      \&        P(                  ! \.        V4      .pVP                  V4       VP1                  V4       VP1                  V
4       R	P3                  V4      # u upi u uppi u upi )
r
   r   r   Z	axisCountsharedTupleCountoffsetToSharedTuplesflagsoffsetToGlyphVariationDatabigr   )axesaxisTagtvZcompileSharedTuples	itertoolsZchainr   valuesZ	enumerateZsumlencompileGlyphs_appendcompileOffsets_GVAR_HEADER_SIZE_HEADgid_sizeGVAR_HEADER_SIZE_TAILr   r   r   ZpackGVAR_HEADER_FORMAT_HEADto_bytesGVAR_HEADER_FORMAT_TAILZextendjoin)r   ttFontaxisaxisTagssharedTuplesiZcoordZsharedTupleIndicesZcZsharedTupleSizeZcompiledGlyphsZoffsetoffsetsglyphZcompiledOffsetstableFormatGVAR_HEADER_SIZEZheaderresults   &&                 r   compileZtable__g_v_a_r.compileB   s   -3F^-@-@A-@TLL-@A--ioot'='='?@
 8A7NO7N81eh7NO|<|!s1v|<=,,V?QR#ENN6"c%j F $ 	v'+';';G'D$04==@CXX LLy!]]z!(m{%(%6!")9C<P)P%&%w)*_< 	+,
 LL0&9((>LL0&9
 	o&l#n%xxI B P<s   H>;II	c                sH   VP                   \        ,          p. pVR ,          pVP                  4        Fk  pV P                  P	                  V. 4      pV'       g   VP                  R4       K:  ^ p	VP                  \        V P                  VV	VVV'       * R7      4       Km  	  V# )r   r   optimizeSize)Zcfgr   getGlyphOrderr   getr!   compileGlyph_r$   )
r   r*   r,   sharedCoordIndicesZoptimizeSpeedr3   r   	glyphNamer   ZpointCountUnuseds
   &&&&      r   r    Ztable__g_v_a_r.compileGlyphs_i   s    

#67f~--/I,,Y;Jc" MMMM$&%2!2	 0  r   c                sn  a aaa
aaaa SR ,          P                    Uu. uF  q3P                  NK  	  upoSP                  4       p\        S P                  ,           \
        ,           o
\        P                  ! \        SR\         S 4       \        P                  S\        \        S P                  ,            R4      S n        \        P                  ! \        S\        S P                  ,           S
 S 4       \        P                  ! SS P                  SS P                   4      o/ pS P"                  oSR,          oV
VVVVV VV3R lpV! 4       p\%        \'        S P                  4       Uu/ uF  qV,          VbK  	  up4      p	V	S n        SP*                  RJ d   S P-                  4        R# R# u upi u upi )r
   Nr   r   c            	      sn   <aa S
P                  4       oSP                  ^,          oVVVVVVVV	V3	R lp V # )r   c                 sX  <	 SV ,          pS^ 8X  d   ^M^pS	W!,          ,           pW2^,          ,           p\         P                  SW4 S^R7      pSSV^ ,          ,           SV^,          ,            pV'       g   . # SV ,          pSP                  V4      p\        SP                  VSS
V4      # )r    )r1   
glyphCount)r	   decompileOffsets_getNumPoints_decompileGlyph_r$   )r;   gidZ
offsetSizeZstartOffsetZ	endOffsetr/   ZgvarDatar0   numPointsInGlyphr2   r,   datar   offsetToDatareverseGlyphMapr   sharedCoordsr1   s   &        r   	read_itemZBtable__g_v_a_r.decompile.<locals>.get_read_item.<locals>.read_item   s    %i0"-"2Q
.1AA'q.8	(::/ +  ; 
  wqz 9L7ST:<UVIY#'#5#5e#< &MM#3\8X r   )ZgetReverseGlyphMapr   )rF   rD   r1   r2   r,   rB   r   rC   r   rE   r*   s    @@r   get_read_itemZ/table__g_v_a_r.decompile.<locals>.get_read_item   s0    $779O**q.K & r   F)r   r   r7   r#   r$   r%   r   Zunpackr&   int
from_bytesr<   r(   r   ZdecompileSharedTuplesr   r   r   r   ranger   ZlazyensureDecompiled)r   rB   r*   r+   Zglyphsr   rG   rF   r@   Zlr2   r,   r   rC   rE   s   fff       @@@@@r   	decompileZtable__g_v_a_r.decompile   sg   -3F^-@-@A-@TLL-@A%%' 14==@CXX.5K6K0LdS..&)>)NOQV
 	#&69IJ	
 //d++T43L3L
 
66f~	 	2 "O	doo8NO8NSk9,8NOP;;%!!#  u Bl Ps   F-)F2c                sP    \        V P                  P                  4       ^ R7       R# )r    )ZmaxlenN)r   r   r   )r   Zrecurser   r   rK   Ztable__g_v_a_r.ensureDecompiled   s     	doo$$&q1r   c                sf   V^ 8X  d(   \         P                   ! R4      pV^,           ^,          pM&\         P                   ! R4      pV^,           ^,          pVP                  V ^ V 4       \        P                  R8w  d   VP	                  4        V^ 8X  d   V Uu. uF  qU^,          NK  	  ppV# u upi )r    HIr   )arrayZ	frombytessys	byteorderbyteswap)rB   r1   r<   r/   ZoffsetsSizeZoffs   &&&   r   r=   Z table__g_v_a_r.decompileOffsets_   s    !kk#&G%>Q.K kk#&G%>Q.K$q-.==E! !*12'3Qww'G2 3s   B.c                sd   \        ^\        V 4      4       F  pK  	  \        V 4      R8:  d1   \        P                  ! RV  Uu. uF  q"^,	          NK  	  up4      p^ pM\        P                  ! RV 4      p^p\        P
                  R8w  d   VP                  4        VP                  4       V3# u upi )a<  Packs a list of offsets into a 'gvar' offset table.

Returns a pair (bytestring, tableFormat). Bytestring is the
packed offset table. Format indicates whether the table
uses short (tableFormat=0) or long (tableFormat=1) integers.
The returned tableFormat should get packed into the flags field
of the 'gvar' header.
rM   rN   r   i )rJ   r   ZmaxrO   rP   rQ   rR   Ztobytes)r/   r.   ZnZpackedr1   s   &    r   r"   Ztable__g_v_a_r.compileOffsets_   s     q#g,'A'w<:%[[w&?w!Avvw&?@FK[[g.FK==E!OO +.. '@s   B-
c                sN   VP                  R V P                  R7       VP                  4        VP                  RV P                  R7       VP                  4        VR,          P                   Uu. uF  q3P
                  NK  	  ppVP                  4        F  pV P                  P                  V4      pV'       g   K(  VP                  RVR7       VP                  4        V F  pVP                  W4       K  	  VP                  R4       VP                  4        K  	  R# u upi )r   )valuer   r
   glyphVariations)r0   N)Z	simpletagr   Znewliner   r   r   ZgetGlyphNamesr   r8   ZbegintagtoXMLZendtag)r   Zwriterr*   r+   r,   r;   r   gvars   &&&     r   rU   Ztable__g_v_a_r.toXML   s    $,,74==9-3F^-@-@A-@TLL-@A--/I,,Y7JOO-YO?NN"

6, #MM+,NN 0 Bs   0D"c                sV   VR 8X  d   \        VR,          4      V n        R# VR8X  d   \        VR,          4      V n        R# VR8X  d   \        V R4      '       g   / V n        VR,          pVR,          V,          pV P                  V4      p. pV F  p	\        V	\        4      '       g   K  V	w  rpVR8X  g   K)  \        / R.V,          4      p
VP                  V
4       V F2  p\        V\        4      '       g   K  Vw  rpV
P                  WV4       K4  	  K  	  WP                  V&   R# R# )	r   rS   r   rT   r   r0   r   tupleN)r   r   r   Zhasattrr   r>   Z
isinstancerW   r   r!   fromXML)r   ZnameZattrsZcontentr*   r;   r0   rA   rT   ZelementrV   ZtupleElementZ	tupleNameZ
tupleAttrsZtupleContents   &&&&&          r   rX   Ztable__g_v_a_r.fromXML  s   9#E'N3DLZ$U7^4DM&&4.."$gI6N9-E#11%8 O"gu--+2(Dw-b4&;K2KL'..t4,3L),>>FR C	| $YL Q -4 # *9OOI&# 'r   c                s    ^pV P                  4       '       d   \        V P                  4      V,           # \        \        V R. 4      4      V,           # )i   Zcoordinates)ZisCompositer   Z
componentsZgetattr)r0   ZNUM_PHANTOM_POINTSs   & r   r>   Ztable__g_v_a_r.getNumPoints_  sJ    u''(+=== wumR89<NNNr   )r<   r   r   r   )N)F)__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__Zdependenciesr$   r   r4   r    rL   rK   Zstaticmethodr=   r"   rU   rX   r>   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r	   r	   /   s~      F#LH
% N,<$|2  , / /,"90 O Or   r	   r6   Tc                sJ   \         P                  ! WW4VR 7      w  rgpV^ 8X  d   R# ^V ,           \        V4      ,           p	VP                  ^R4      V	P                  V R4      VV.p
V	\        V4      ,           ^,          ^ 8w  d   V
P	                  R4       RP                  V
4      # )r5   r   r   s    )r   ZcompileTupleVariationStorer   r'   r!   r)   )dataOffsetSizer   
pointCountr,   r:   r6   tupleVariationCountZtuplesrB   rC   r3   s   &&&&&$     r   r9   r9   %  s     )+(E(E<)% a~%F3L 	$$Q.ne4	F 	s4y A%*e88Fr   c           
      s    \        V4      ^V ,           8  d   . # \        P                  VR,          R4      p\        P                  V^^V ,            R4      pTp\        P                  ! RVVVVV^V ,           V4      # )   :Nr]   Nr   rV   )r   rH   rI   r   ZdecompileTupleVariationStore)rZ   r[   r-   r,   rB   r\   rC   ZdataPoss   &&&&&   r   r?   r?   B  s~    
4y1~%%	..b59>>$q1~+=">FLG**	N	 	r   )#Zcollectionsr   Z	functoolsr   ZfontTools.miscr   ZfontTools.misc.textToolsr   ZfontTools.misc.lazyToolsr   ZfontTools.ttLibr   Z%fontTools.ttLib.tables.TupleVariationr   Z r   rO   r   ZloggingZstructrP   ZttLibZtablesr   Z	getLoggerrY   Zlogr&   r(   Zcalcsizer#   r%   r	   r9   r?   ) r   r   <module>r^      s      " - - / @      
 2 2!    (()@A (()@A sO\.. sOl :r   