
    Wh(                         d dl mZ d dlmZ d dlmZ d dlmZ d dl	Z	d Z
d ZddZe	j                  fd	Zdd
Zedk(  rd dl	Z	 e	j"                   e              yy)    )VariationModel)VarStoreInstancer)fixedToFloat)productNc                     | dk\  r)|j                   | |j                  |j                   z
  z  z   S |j                   | |j                   |j                  z
  z  z   S )Nr   )defaultValuemaxValueminValue)vaxiss     W/var/www/html/jupyter_env/lib/python3.12/site-packages/fontTools/varLib/avar/unbuild.py_denormalizer      sS    Av  18I8I(I#JJJ  1(9(9DMM(I#JJJ    c                    t        | |      }|j                  }|j                  }|D ci c]  }t        |j	                               d  }}|D ]B  }| j                  |      }	||	   }	||	   }
t        |
j                               }|
j	                         D ]  \  }\  }}}||fD ]  }|dv r|j                         D ];  }t        |      }t        |j                               }||k7  r-||vr2||   |k(  s; U t        |	dz
  dd      D ]z  }||   }t        |j                               }||k7  r'||vr,|j	                         D ci c]  \  }\  }}}|| }}}}||   |k(  s^d |t        |j	                               <     J d         E |j                         D cg c]  }t        |       c}S c c}w c c}}}w c c}w )Nr      r   r   zNo pin found)
r   mappingsupportstupleitemsindexsetkeysdictrange)	locationspolesaxisTagsmodelmodelMappingmodelSupportskpinslocationisupportsupportAxesaxisTagminV_maxVr   pinpinLocationpinAxescandidateIdx	candidatecandidateAxesdefaultVts                            r   _pruneLocationsr5      s   " 9h/E==LNNM,12qE!'')d"2D2 &5OOH%O"',,.)(/ !	5$G_dAtD\  5
?99; 5C"&s)K!+"2"2"45G+- g- "7+q05 ).a!eR(< 5$1,$?	(+INN,<(=(K7$"-7$CL??CT% %,?A/?8QAxK%	 % %W-2=ADy'8!9:!5 5n4uA 5!	5&5N "YY[)DG))Q 3@% *s   !F;
G &Gc                   &' | d   j                   }|D ci c]  }|j                  | c}'|D cg c]  }|j                   }}t        |      D ci c]  \  }}|j                  | c}}&d| vri i fS | d   }|j                  j	                         D ci c]  \  }}|r|ddddk7  r|| }	}}g }
t        |dd      dk(  r|j                  j                  }|j                  j                  }d	d i}t        d	h      }|j                  D ]  }|j                  }|D ]	  }g }g }||   }t        |j                        D ]  \  }}|j                  dk(  r||   }|j                  ||j                  f       g }|j                   dk7  r|j                  ||j                   f       |j"                  dk7  r|j                  ||j"                  f       |j                  |        t        t%        |       }t'        |      }d ||<   |j)                  |       |j+                  |        ! t-        |&fd
      D cg c]  }t/        |       }}|j1                         D cg c]  }t/        |       }}t3        |t5        |      |      }|j                  j6                  }t9        ||      }|D ]u  }|j;                  |       i }t        |      D ]?  \  }}|}|||   }||   }|dk7  s|j=                  |d      } | t?        |d      z   } | ||<   A |
j                  ||f       w |
d   d   i k(  sJ |
d   d   i k(  r|
jA                  d       |r|	j	                         D ]P  \  }'vrtC        d       'fd}!|j	                         D " ci c]  \  }"}  |!|"       |!|        c} }"|	<   R t        |
      D ]o  \  }\  }#}$|#j	                         D %ci c]  \  }}%|tE        |%'|          }#}}%|$j	                         D %ci c]  \  }}%|tE        |%'|          }$}}%|#|$f|
|<   q |	|
fS c c}w c c}w c c}}w c c}}w c c}w c c}w c c} }"w c c}%}w c c}%}w )Nfvaravarr   r   r   r   majorVersion    c                 B    t        |       t        fd| D              fS )Nc              3   .   K   | ]  \  }}|     y wNr;   ).0tagr+   axisIndexess      r   	<genexpr>z7mappings_from_avar.<locals>.<lambda>.<locals>.<genexpr>   s     ,N&#q[-=,Ns   )lenr   )r4   rA   s    r   <lambda>z$mappings_from_avar.<locals>.<lambda>   s    s1vu,NA,N'NO r   )key   zUnknown axis tag c                 "    t        |          S r>   )r   )r   axisMapr@   s    r   rD   z$mappings_from_avar.<locals>.<lambda>   s    |Aws|< r   )#axesr)   	enumeratesegmentsr   getattrtableVarStoreVarRegionListRegionr   VarDataVarRegionIndexVarRegionAxis	PeakCoordappend
StartCoordEndCoordr   r   addupdatesortedr   r   r5   list	VarIdxMapr   setLocationgetfi2flpop
ValueErrorr   )(fontdenormalizefvarAxesar   r&   r8   r@   segaxisMapsmappingsvarStoreregionsr   inputLocationsvarDataregionIndicesregionIndexpeakLocationcornersregion	axisIndexr   r)   cornerr4   	varIdxMap	instancerr%   outputLocationvarIdxdeltar   denormr#   inputLoc	outputLocvalrA   rH   s(          `                              @@r   mappings_from_avarr}   N   s   F|  H%-.qyy!|.G#+,a		,H,,5h,?@DAq199a<@KT2v<D ++-C3raA.. 	SH 
 Ht^Q'1,::&&((// T
bT'' 	/G#22M, /! -'01E1E'F 
+OIt~~* &y1G ''$..(ABF!+w&@A}})w&>?NN6*
+ gw/0$\2&*l#""<0%%g.'/	/4 O
 G
 
 #(**,/Qa//(ehO JJ((	%h9	& 	8H!!(+N&/&9 
0"	7"(&v.F!&)A: Wa0AE%,,A /0N7+
0 OOX~67	8" {1~###A;q>RLLO ( 	KHC'! #4SE!:;;<F>AiikJdaVAYq	1JHSM		K )2((; 	0$A$)EM^^EU9Ac\#ws|44H  FO__EV9Ac\#ws|44I  $Y/HQK	0 XE /,@T
 0@ Ks4   P?QQ	QQ*QQ%Q%Q+c                 H   | d   }|j                   }t        |       \  }}d| v r9| d   }|D ci c](  }|j                  |j                  |j                        * }}n$|D 	ci c]  }	|	j                  |	j                   }}	t        d|       t        d|       t        d|       |D ]-  }||j                     }
|j                  |j                  |j                  f}|D cg c]  }|t        |      k(  rt        |      n| }}|j                  |j                        }|dnd}t        d	|j                   d
|
 d|d    d|d    d|d    d| |       |t        |j                               D ]Q  }||   }|t        |      k(  rt        |      n|}|t        |      k(  rt        |      n|}t        d| d| d|       S t        d|       0 |rt        d|       |D ]  \  }}t        d|       t        d|       t        |j                               D ]9  }||   }|t        |      k(  rt        |      n|}t        d||    d| d|       ; t        d|       t        d|       t        |j                               D ]9  }||   }|t        |      k(  rt        |      n|}t        d||    d| d|       ; t        d|       t        d|        t        d|       t        d |       t        d!|       y c c}w c c}	w c c}w )"Nr7   namez&<?xml version='1.0' encoding='UTF-8'?>filez<designspace format="5.1">z  <axes>z/>>z    <axis tag="z" name="z" minimum="r   z" maximum="r:   z" default="r   "z      <map input="z
" output="z"/>z    </axis>z    <mappings>z      <mapping>z        <input>z          <dimension name="z
" xvalue="z        </input>z        <output>z        </output>z      </mapping>z    </mappings>z	  </axes>z</designspace>)rI   r}   r)   getDebugName
axisNameIDprintr
   r   r	   intr^   rZ   r   )rb   fr7   rI   rK   rh   r   r   	axisNamesre   axisNametripletr   rH   closingr#   rz   r{   r@   s                      r   unbuildr      sR   <D99D+D1Hh~F|RVW$T\\4#4#4T__#EEW	W378aQYY		)8	8	
2;	
&Q/	*1 )T\\*==$"3"3T]]C9@AAQ#a&[3q6a/AA,,t||,!/$sdll^8H:[QRT_`ghi`j_kkvw~  @A  xB  wC  CD  EL  DM  N	
 GLLN+ HAJ3q6kCFq3q6kCFq*1#Zs#>QG	H
 -a())* Q'#+ 	.Hi#!,#!,hmmo. SM3q6kCFq1)C.1AA3cR $1-$1-inn./ cN3q6kCFq1)C.1AA3cR %A.$1-)	.* 	a(	+A	
#k X8 Bs   -L!L$"Lc                 ,   | t         j                  dd } ddlm} ddl}|j                  dd       }|j                  ddd	
       |j                  |       } ||j                        }d|vrt        dt         j                         yt        |       y)z,Print `avar` table as a designspace snippet.Nr   r   )TTFontzfonttools varLib.avar.unbuild)descriptionrb   zvarfont.ttfzVariable-font file.)metavarhelpr7   zNot a variable font.r   )sysargvfontTools.ttLibr   argparseArgumentParseradd_argument
parse_argsrb   r   stderrr   )argsr   r   parseroptionsrb   s         r   mainr      s     |xx|&$$'B % F <QR%G',,DT$3::6DMr   __main__)Tr>   )fontTools.varLib.modelsr   fontTools.varLib.varStorer   fontTools.misc.fixedToolsr   r_   	itertoolsr   r   r   r5   r}   stdoutr   r   __name__exitr;   r   r   <module>r      s]    2 7 ;  
K<*~dN JJ <$~0 zCHHTV r   