+
    i^                        ^ RI HtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHtHt ^ RIHt ^ RIHt ^ RIHtHt ]P,                  t]]P.                  n        R	 t ! R
 R]4      tR]/R lt]]P:                  n        R t]]P@                  n!        R t"]"]P.                  n#         ! R R]4      t$RR]%! 4       3RR/R llt&]&]P.                  n'        RRRR/R lt(](]P.                  n)        R t*R t+R t,],]PZ                  n.        ],]P^                  n.        R t0R t1]1]PZ                  n2        ]1]P^                  n2         ! R R]4      t3 ! R R ]44      t5R%R! lt6]6]P.                  n7        R&R# lt8]9R$8X  dd   ^ R"I:t:];! ]:Px                  4      ^8  d   ]:Pz                  ! ]8! 4       4       ^ R"I>t>]:Pz                  ! ]>P~                  ! 4       P                  4       R"# R"# )'    )noRoundotRound	bit_count)otTables)supportScalar)buildVarRegionListbuildVarStorebuildVarRegionbuildVarData)partial)defaultdict)heappushheappopc                 L    \        \        V P                  4       R  R7      4      # )c                     V ^ ,          # r    )kvs   &y/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/fontTools/varLib/varStore.py<lambda>!_getLocationKey.<locals>.<lambda>   s    BqE    key)tuplesorteditems)locs   &r   _getLocationKeyr       s    		)9:;;r   c                   ~   a  ] tR t^t o R tR tR tRR ltRR ltR]	/R lt
R]	/R ltR]	/R	 ltR]	/R
 ltRtV tR# )OnlineVarStoreBuilderc                    Wn         / V n        \        . V4      V n        \	        V P                  . 4      V n        R V n        R V n        R V n        / V n	        / V n
        R V n        R # N)	_axisTags
_regionMapr	   _regionListr
   _store_data_model	_supports_varDataIndices_varDataCaches_cache)selfaxisTagss   &&r   __init__OnlineVarStoreBuilder.__init__   s]    !-b(;#D$4$4b9
! r   c                H    V P                  VP                  4       Wn        R # r$   )setSupportssupportsr*   )r/   models   &&r   setModelOnlineVarStoreBuilder.setModel%   s    (r   c                    R V n         \        V4      V n        V P                  '       d'   V P                  ^ ,          '       g   V P                  ^  R V n        R V n        R # r$   )r*   listr+   r.   r)   )r/   r5   s   &&r   r4   !OnlineVarStoreBuilder.setSupports)   sE    h>>>$.."3"3q!
r   c                d   \        V P                  P                  4      V P                  n        \        V P                  P
                  4      V P                  n        V P                  P
                   F/  p\        VP                  4      Vn        VP                  VR 7       K1  	  V P                  # )optimize)
lenr'   RegionRegionCountr(   VarDataVarDataCountItem	ItemCountcalculateNumShorts)r/   r>   datas   && r   finishOnlineVarStoreBuilder.finish1   s|    '*4+;+;+B+B'C$#&t{{':':#; KK''D ^DN##X#6 ( {{r   c                   V P                   pV P                  pV P                  p. pV F}  p\        V4      pVP	                  V4      pVfJ   \        W`P                  4      p	\        VP                  4      ;qV&   VP                  P                  V	4       VP                  V4       K  	  \        V4      pV P                  P	                  V4      p
V
en   Wn        V P                  P                  V
,          V n        V P                   V,          V n        \        V P                  P$                  4      V,           R8  d   R p
V
f   \'        V. RR7      V n        \        V P                  P                  4      V n        V P                  P                  P                  V P                  4       V P                  V P                  V&   WpP                   9  d   / V P                   V&   V P                   V,          V n        R # R # )N  Fr=   )r&   r'   r+   r    getr   r%   r?   r@   appendr   r,   _outerr(   rB   r)   r-   r.   rD   r   )r/   	num_items	regionMap
regionListregionsregionIndicesregionr   idx	varRegion
varDataIdxs   &&         r   _add_VarData"OnlineVarStoreBuilder._add_VarData9   s   OO	%%
..F!&)C--$C{*6>>B	'*:+<+<'==n!!((3  %  M"))--c2
!$K,,Z8DJ--c2DK4::??#i/&8!
%mR%HDJdkk112DKKK&&tzz2(,D  %---+-##C(--c2DK r   roundc                   V P                   P                  WR 7      pVP                  ^ 4      pW@P                  V\        R 7      3# rZ   )r*   	getDeltaspopstoreDeltasr   )r/   master_valuesrZ   deltasbases   &&$  r   storeMasters"OnlineVarStoreBuilder.storeMasters\   s?    &&}&Bzz!}%%fG%<<<r   c                   V Uu. uF  pV P                   P                  W2R 7      NK!  	  ppV Uu. uF  qUP                  ^ 4      NK  	  ppW`P                  V\        R 7      3# u upi u upi r\   )r*   r^   r_   storeDeltasManyr   )r/   master_values_listrZ   ra   deltas_listrb   	base_lists   &&$    r   storeMastersMany&OnlineVarStoreBuilder.storeMastersManya   su     "4
!3 KK!!-!=!3 	 
 2==vZZ]	=..{'.JJJ
 >s
   %A#A(c                  V Uu. uF
  q2! V4      NK  	  pp\        V4      \        V P                  4      ^,           8X  d   \        VR,          4      pM0\        V4      \        V P                  4      8X  g   Q h\        V4      pV P                  '       g   V P	                  4        V P
                  P                  V4      pVe   V# \        V P                  P                  4      pVR8X  d(   V P	                  4        V P                  V\        R7      # V P                  P                  V\        R7       V P                  ^,          V,           pW@P
                  V&   V# u upi )   rn   NNrK   r]   )r?   r+   r   r)   rX   r.   rL   rD   r`   r   addItemrN   )r/   rb   rZ   dvarIdxinners   &&$   r   r`   !OnlineVarStoreBuilder.storeDeltasi   s   $*+Fq%(F+v;#dnn-116":&Fv;#dnn"55556]Fzzz(MDJJOO$F?##F'#::

61++#u,$F/ ,s   Ec          
     B   V UUu. uF  q3 Uu. uF
  qB! V4      NK  	  upNK  	  ppp\         ;QJ d    . R  V 4       F  NK  	  5M! R  V 4       4      pV P                  '       g   V P                  \        V4      4       V P                  P                  V4      pVe   V# \        V P                  P                  4      pV\        V4      ,           R8  d2   V P                  \        V4      4       V P                  V\        R7      # \        V4       FU  w  rsV P                  P                  V\        R7       V P                  ^,          V,           V,           pWPP                  V&   KW  	  V P                  ^,          V,           pWPP                  V&   V# u upi u uppi )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir$   )r   ).0rb   s   & r   	<genexpr>8OnlineVarStoreBuilder.storeDeltasMany.<locals>.<genexpr>   s     DfE&MMs   rK   r]   )r   r)   rX   r?   r.   rL   rD   rg   r   	enumeraterp   rN   )r/   ri   rZ   rb   rq   rr   rs   is   &&$     r   rg   %OnlineVarStoreBuilder.storeDeltasMany   sG   @KLf&1&Qa&1LeDDeeDDDzzzc+./-MDJJOO$3{##f,c+./''7'CC";/IAJJvW5kkR'5014F"(KK	 0 ++#u,#)K 1 2Ls   FFFF)r%   r.   r)   r*   rN   r'   r&   r(   r+   r-   r,   N)T)rn   )__name__
__module____qualname____firstlineno__r1   r7   r4   rH   rX   rZ   rd   rk   r`   rg   __static_attributes____classdictcell____classdict__s   @r   r"   r"      sV     
!3F=5 =
KE K5 4E  r   r"   rZ   c                H   V Uu. uF
  q2! V4      NK  	  ppV P                   p\        V4      pV^,           V8X  d   \        VR,          4      pMWE8X  g	   Q WE34       h\        V4      pV P                  P	                  V4       \        V P                  4      V n        R# u upi )rn   ro   N)VarRegionCountr?   r:   rD   rM   rE   )r/   rb   rZ   rq   countUs	countThems   &&$   r   VarData_addItemr      s     &'1eAhF'!!GFI{ifRj!#9g%99#fIIV^DN (s   Bc                     \        V P                  4       UUu/ uFL  w  r#VP                  ^ 8w  g   K  W,          P                  VP                  VP                  VP
                  3bKN  	  upp# u uppi r   )rz   VarRegionAxis	PeakCoordaxisTag
StartCoordEndCoord)r/   	fvar_axesr{   regs   &&  r   VarRegion_get_supportr      se       2 233FA==A 	L	s~~s}}cllKK3  s
   A/8A/c                 ,    \        V P                  4      # r$   )boolrB   r/   s   &r   VarStore___bool__r      s    r   c                   Z   a  ] tR t^t o / 3R ltR tR tR t]R 4       t	R t
R tRtV tR	# )
VarStoreInstancerc                    W n         Ve   VP                  ^8X  g   Q hV'       d   VP                  M. V n        V'       d   VP                  P
                  M. V n        V P                  V4       R # r$   )r   FormatrB   _varDataVarRegionListr@   _regionssetLocation)r/   varstorer   locations   &&&&r   r1   VarStoreInstancer.__init__   sT    "8??a#777,4(("9A..55r"r   c                F    \        V4      V n        V P                  4        R # r$   )dictr   _clearCaches)r/   r   s   &&r   r   VarStoreInstancer.setLocation   s    Xr   c                    / V n         R # r$   )_scalarsr   s   &r   r   VarStoreInstancer._clearCaches   s	    r   c                    V P                   P                  V4      pVfQ   V P                  V,          P                  V P                  4      p\        V P                  V4      pW P                   V&   V# r$   )r   rL   r   get_supportr   r   r   )r/   	regionIdxscalarsupports   &&  r   
_getScalarVarStoreInstancer._getScalar   sY    ""9->mmI.::4>>JG"4==':F'-MM)$r   c                d    R p\        W4       F  w  r4V'       g   K  W#V,          ,          pK   	  V# )        )zip)rb   scalarsdeltarq   ss   &&   r   interpolateFromDeltasAndScalars1VarStoreInstancer.interpolateFromDeltasAndScalars   s0    (DAUNE ) r   c                   V^,	          VR,          r2V\         8X  d   R# V P                  pWB,          P                   Uu. uF  qPP                  V4      NK  	  ppWB,          P                  V,          pV P                  Wv4      # u upi )   rK   r   )NO_VARIATION_INDEXr   VarRegionIndexr   rD   r   )r/   varidxmajorminorvarDatarir   rb   s   &&      r   __getitem__VarStoreInstancer.__getitem__   st    |Vf_u''--181N1NO1N2??2&1NO$$U+33FDD Ps   Bc                    V P                   pW1,          P                   Uu. uF  q@P                  V4      NK  	  ppV P                  W%4      # u upi r$   )r   r   r   r   )r/   varDataIndexrb   r   r   r   s   &&&   r   interpolateFromDeltas'VarStoreInstancer.interpolateFromDeltas   sH    --181F1U1UV1U2??2&1UV33FDD Ws   A)r   r   r   r   r   N)r}   r~   r   r   r1   r   r   r   staticmethodr   r   r   r   r   r   s   @r   r   r      sB     57 #  EE Er   r   TFrB   c          	      <   \        \        4      pV F9  pV\        8X  d   K  V^,	          pVR,          p	Wh,          P                  V	4       K;  	  ?\	        W4      p
. p\        \        /p\        V
4       EFk  w  rVP                  V4      pVf   K  \        V4      pVP                  V4       VP                  p. pV^ 8X  da   V'       dY   \        \        V4      4       F?  p	TP                  W9   d
   VV	,          M^ .\        VV	,          4      ,          4       WV	&   KA  	  MV^ 8X  d#   \        V4      \        W,
          4      ,           pM\        V4      pV FF  p	\        V4      pVP                  VV	,          4       V^,          V,           W^,          V	,           &   KH  	  VVn	        \        VP                  4      Vn        VR8X  g   EKY  VP                  VR7       EKn  	  \        WV4       \        WR,           \        V4      4       V P                  4        V# )r   rK   rB   r=   Count)r   setr   addgetattrrz   rL   r?   rM   rD   ranger   rE   rF   setattrprune_regions)r/   varIdxesr>   retainFirstMapadvIdxesrB   usedrr   r   r   r   
newVarData
varDataMaprG   
usedMinorsnewMajorr   newItemsminorsnewMinors   &&&&&$              r   VarStore_subset_varidxesr      s    sD''"  	 d$GJ$&89J )XXe_
z?$		A:.s5z*$)$7E%LaS3uU|CT=T %*5!	 + z)F:3H,II
+x=e-5=^x4O
RK501  
 	TYYi##X#6; *> D:&DG#S_5r   r   c                  \        4       p\        W4       F  pVP                  VP                  4       K   	  \        W4      pVP                  p. p/ p\        V4       F'  p	\        V4      W&   VP                  Wi,          4       K)  	  Wun        \        VP                  4      Vn        \        W4       F*  pVP                   U	u. uF  qV	,          NK  	  up	Vn        K,  	  R# u up	i )zRemove unused VarRegions.N)	r   r   updater   r@   r   r?   rM   rA   )
r/   rB   r   usedRegionsrG   rQ   rR   
newRegionsrP   r{   s
   &$$       r   VarStore_prune_regionsr   <  s     %K&4../ ' -JGJIK :	'*% ! # !2!23J&595H5HI5H||5HI 'Is   C$c                   \        V 4      \        P                  8X  d   V! V 4       R# \        V \        4      '       d   V  F  p\        W!4       K  	  R# \        V R4      '       dS   \        V R4      '       gA   V P                  4        F*  p\        WP                  R4      pVf   K  \        W!4       K,  	  R# \        V \        P                  4      '       d/   V P                  P                  4        F  p\        W!4       K  	  R# R# )zmRecurse down from self, if type of an object is ot.Device,
call func() on it.  Works on otData-style classes.getConverterspostReadN)typeotDevice
isinstancer:   _visithasattrr   r   nameValueRecord__dict__values)r/   functhatconvs   &&  r   r   r   X  s     DzRYYT
	D$		D4  
	'	'j0I0I&&(D4D1Dt" )
 
D"..	)	)MM((*D4 + 
*r   c                    V P                   R8X  d6   VP                  V P                  ^,          V P                  ,           4       R# R# )z6Add VarIdx in this Device table (if any) to the set s.   N)DeltaFormatr   	StartSizeEndSize)r/   r   s   &&r   _Device_recordVarIdxr   n  s3    6!	t~~#t||34 "r   c                 >    \        \        VR 7      p\        W4       R# ))r   N)r   r   r   )r/   varidxesadders   && r   Object_collect_device_varidxesr   t  s    (H5E
4r   c                   \        V 4      V9   d   R# VP                  \        V 4      4       V P                  R8X  dI   WP                  ^,          V P                  ,           ,          pV^,	          V n        VR,          V n        R# R# )z9Map VarIdx in this Device table (if any) through mapping.Nr   rK   )idr   r   r   r   )r/   mappingdonerr   s   &&& r   _Device_mapVarIdxr   }  sd    	$x4HHRX6!..B.$,,>?2 "r   c                 P    \        \        V\        4       R 7      p\        W4       R# ))r   r   N)r   r   r   r   )r/   varidxes_mapmappers   && r   Object_remap_device_varidxesr    s    &35IF
4r   c                   ^   a  ] tR tRt o R tR tR tR t]R 4       t	]R 4       t
R tR	tV tR
# )	_Encodingi  c                    Wn         \        V4      V n        V P                  V4      V n        V P                  V P                  4      V n        \        4       V n        R # r$   )	charsr   width_columnscolumns_characteristic_overheadoverheadr   r   )r/   r  s   &&r   r1   _Encoding.__init__  sB    
u%
}}U+55dllCU
r   c                <    V P                   P                  V4       R # r$   )r   r   )r/   rows   &&r   rM   _Encoding.append  s    

sr   c                <    V P                   P                  V4       R # r$   )r   r   )r/   lsts   &&r   extend_Encoding.extend  s    

#r   c                2    V P                   V P                  3# r$   )r  r  r   s   &r   width_sort_key_Encoding.width_sort_key  s    zz4::%%r   c                <    ^
pV\        V 4      ^,          ,          pV# )zGReturns overhead in bytes of encoding this characteristic
as a VarData.r   )r
  cs   & r   r  "_Encoding._characteristic_overhead  s"     	Yw!##r   c                t    ^ p^pV '       d,   V ^,          '       d	   W,          pV ^,          p V^,          pK3  V# r   r   )r  colsr{   s   &  r   r	  _Encoding._columns  s6    v~~	aKE!GAr   c                   VP                   V P                   ,          p\        V4      pV P                  VP                  ,          p\        P	                  V4      pV P
                  5VP
                  ,           V,
          W0P                  ,
          \        V P                  4      ,          ,
          W1P                  ,
          \        VP                  4      ,          ,
          pV# r$   )	r  r   r
  r  r  r  r  r?   r   )r/   other_encodingcombined_charscombined_widthcombined_columnscombined_overheadcombined_gains   &&     r   gain_from_merging_Encoding.gain_from_merging  s    '--

:">2<<.*@*@@%>>?OP]]N%%&  

*c$**o=>  4 44N<P<P8QQ	R 	 r   )r  r
  r   r  r  N)r}   r~   r   r   r1   rM   r  r  r   r  r	  r%  r   r   r   s   @r   r  r    sK     &     r   r  c                   <   a  ] tR tRt o R tR t]R 4       tRtV t	R# )_EncodingDicti  c                $    \        V4      ;q V&   V# r$   )r  )r/   r  rs   && r   __missing___EncodingDict.__missing__  s    #E**Kr   c                V    V P                  V4      pW,          P                  V4       R # r$   )_row_characteristicsrM   )r/   r  r  s   && r   add_row_EncodingDict.add_row  s"    ))#.3r   c                j   Rp^ p^pV  FQ  pV'       d	   W#,          pRTu;8:  d   ^8:  g   M W#^,          ,          pRTu;8:  d   R8:  g   M Rp MV^,          pKS  	  V'       dN   ^ p^pV  FC  pV'       d   W#^,          ,          pRTu;8:  d   R8:  g   M W#^,          ,          pV^,          pKE  	  V# )z+Returns encoding characteristics for a row.Fi  Tii r   )r  	longWordsr  r{   vs   &    r   r.  "_EncodingDict._row_characteristics  s     	A
A$$V#a(5( 	!GA  EAZ'E!,u,Z'Ea  r   r   N)
r}   r~   r   r   r+  r/  r   r.  r   r   r   s   @r   r(  r(    s#        r   r(  c           
     F
   \        V P                  P                  4      p^ .V,          p/ p\        4       p\	        V P
                  4       EF  w  rxVP                  p	\	        VP                  4       F  w  r\        V4      pV^8X  d*   \        W4       F  w  rW;;,          V,          uu&   K  	  M>\        W4       F/  w  rW;;,          \        W,          4      V,          ,          uu&   K1  	  \        V4      pV'       d&   \        V4      '       g   RWW^,          V
,           &   K  VP                  V4       WV^,          V
,           &   K  	  EK  	  \        VP                  4       \         P"                  R7      p?. p\	        V4       F\  w  pp\%        V^,           \        V4      4       F6  pVV,          pVP'                  V4      pV^ 8  g   K&  \)        VV) VV34       K8  	  K^  	  V'       Ed8   \+        V4      w  pppVV,          e   VV,          f   K0  VV,          VV,          ppRRuVV&   VV&   VP,                  VP,                  ,          p\!        V4      pVP/                  VP0                  4       VP/                  VP0                  4       \	        V4       Fr  w  ppVf   K  VP,                  V8X  d#   VP/                  VP0                  4       RVV&   K?  VP'                  V4      pV^ 8  g   KY  \)        VV) V\        V4      34       Kt  	  VP3                  V4       EK@  V Uu. uF  pVf   K	  VNK  	  pp/ pVP5                  \         P"                  R7       . V n        V F  p\        VP0                  4      pV'       g   K"  \        V P
                  4      p\6        P
                  ! 4       pV P
                  P3                  V4       \%        V4      Vn        \        VP                  4      Vn        VR,          VR,          uVn        p\	        VP                  4       F  w  rV^,          V
,           VV&   K  	  K  	  \:        \:        /pVP1                  4        F  w  ppVe
   VV,          M\:        VV&   K  	  \        V P                  P                  4      V P                  n        \        V P
                  4      V n        V P
                   F-  p\        VP                  4      Vn         VPC                  4        K/  	  V PE                  4        V# u upi )z@Optimize storage. Returns mapping from old VarIdxes to new ones.Nr   :Ni  N:i  NN)#r?   r   r@   r(  rz   rB   r   rD   r:   r   rZ   r   anyr/  r   r   r  r  r   r%  r   r   r  r  r   rM   sortr   r   r   rA   rC   rE   r>   r   )r/   use_NO_VARIATION_INDEXquantizationnzeroesfront_mapping	encodingsr   rG   rS   r   itemr  r   r3  todoheapr{   encodingjr  combining_gain_r   combined_encodingkencback_mappingr   
varidx_maps   &&&                           r   VarStore_optimizerJ    s;   X 	D%%&AS1WFMI !.++$TYY/KEv,Cq $'$<LINa'N %= %($<LINa./,>N %=
 *C%c#hh7;{e34c"365B;%/0' 0 /2 )""$)*B*BCD D 8q1uc$i(A!!WN%77GN!A67	 ) ' $$-1a7?d1go#'7DG.Qa (-->%n5  0  !5!56oFAs{ yyN*!((3Q.@@EN!CI>? & 	%&*.G$h($IG LNNy//N0DLx~~&e%E::<DLL%"'(D"%d&9&9":D  %W~uW~DIu(3&+rkU%:T"  4 " %&89J##%1+,=Q>P
1 & &)););)B)B%CD"DLL)DTYY 
 	K Hs   /T:TNc                   ^ RI Hp ^ RIHp ^ RIHp ^ RIHp V! R\        P                  R7      pVP                  R\        ^R7       VP                  R	4       VP                  R
RR7       VP                  V 4      pV! RR7       VP                  pVP                  pVP                  p	V! V4      p
V
R,          pVP                   P"                  pV! 4       pVP%                  W4       \'        VP)                  4       4      p\+        RV,          4       VP-                  VR7      pV! 4       pVP%                  W4       \'        VP)                  4       4      p\+        RV,          4       V	eX   VP                   P/                  V4       RV
9   d#   V
R,          P                   P/                  V4       V
P1                  V	4       R# R# )z&Optimize a font's GDEF variation store)ArgumentParser)configLogger)TTFont)OTTableWriterzvarLib.varStore)progdescriptionz--quantization)r   defaultfontfileoutfile?)nargsINFO)levelGDEFzBefore: %7d bytes)r9  zAfter:  %7d bytesNGPOS)argparserL  	fontToolsrM  fontTools.ttLibrN  fontTools.ttLib.tables.otBaserO  main__doc__add_argumentint
parse_argsr9  rS  rT  tableVarStorecompiler?   
getAllDataprintr>   remap_device_varidxessave)argsrL  rM  rN  rO  parseroptionsr9  rS  rT  fontgdefstorewritersizerI  s   &               r   r_  r_    sq   '&&;!2MF
(sA>

#
	-%G v''LHooG(D<DJJE_F	MM&v  "#D	

$%\:J_F	MM&v  "#D	

$%

((4T>L44Z@		' r   __main__)Trn   r$   )AfontTools.misc.roundToolsr   r   fontTools.misc.intToolsr   fontTools.ttLib.tablesr   r   fontTools.varLib.modelsr   fontTools.varLib.builderr	   r
   r   r   	functoolsr   collectionsr   heapqr   r   r   re  r    objectr"   rZ   r   rB   rp   r   	VarRegionr   r   __bool__r   r   r   subset_varidxesr   r   r   r   r   rY  collect_device_varidxesrZ  r   r  ri  r  r   r(  rJ  r>   r_  r}   sysr?   argvexitdoctesttestmodfailedr   r   r   <module>r     s   6 - 1 1   # # ** !3 <DF DN$5 $ %

  1  ) ,E ,Er U> >B 7 JI J_ J2 3 ,5
 #A "@ '
 !=  < 0 0f%D %P~B ) )X z
388}qHHW__%%& r   