+
    K<iz                    P   R t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIt^ RI	H
t
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HtHt ^ RIHt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(H)t) ^ RI*H+t,H-t.H/t0H1t2 ^ RI3H4t4H5t5 ^ RI6t6^ RI7t7^ RI8t8^ RI9t9^ RIH:t: ^ RI;H<t<H=t=H>t>H?t?H@t@ ]<'       d   ^ RIAHBtB ]6P                  ! ]D4      tE ! R R]:4      tF]! R. RO4      tGR]G! ]FP                  ^ ^^ 4      R]G! ]FP                  ^ ^^ 4      R]G! ]FP                  ^^^ 4      R]G! ]FP                  ^
^^4      R]G! ]FP                  ^
^^4      R]G! ]FP                  ^R^ 4      R]G! ]FP                  ^^^ 4      R ]G! ]FP                  ^ ^^ 4      R!]G! ]FP                  ^ ^^ 4      /	tQ^R" ^R# ^R$ ^R% /tR^R& ^R' ^R( ^R) /tSR* tTR+ tU ! R, R-4      tV ! R. R/4      tW ! R0 R1]X4      tY ! R2 R3]X4      tZ ! R4 R5]X4      t[ ! R6 R7][4      t\ ! R8 R9][4      t] ! R: R;]X4      t^ ! R< R=][4      t_ ! R> R?][4      t` ! R@ RA]%4      ta ! RB RC]a4      tb ! RD RE]a4      tc ! RF RG]a4      td ! RH RI]&4      teRJtf ! RK RL])! RM4      4      tg ! RN RO]%4      th ! RP RQ]%4      ti ! RR RS]&4      tj ! RT RU]&4      tk ! RV RW]&4      tl ! RX RY]&4      tm ! RZ R[]&4      tn ! R\ R]]%4      to ! R^ R_]%4      tp ! R` Ra]%4      tq ! Rb Rc]%4      tr ! Rd Re]4      ts ! Rf Rg])! RM4      4      tt ! Rh Ri])! RM4      4      tu ! Rj Rk]4      tv ! Rl Rm]4      tw ! Rn Ro]4      tx ! Rp Rq])! RM4      4      tyRrRRsRRIRRWRRtRRuRRvRRwRRxRRyRRzRR{RR|RR}RR~R/tzR t{R t|R t}R t~R tR tR^]|^]}^]~/R^]^]//tR tR t]! 4        R tR# )zfontTools.ttLib.tables.otTables -- A collection of classes representing the various
OpenType subtables.

Most are constructed upon import from data in otData.py, all are populated with
converter objects from otConverters.py.
N)IntEnum)reduce)radians)defaultdict
namedtuple)OPTIMIZE_FONT_SPEED)TupleVariation)dfs_base_table)quantizeRect)otRound)	TransformIdentityDecomposedTransform)	bytesjoinpadsafeEval)Vector)ControlBoundsPen)TransformPen)	BaseTableFormatSwitchingBaseTableValueRecordCountReference getFormatSwitchingBaseTableClass)fixedToFloatfloatToFixedfloatToFixedToStrstrToFixedToFloat)LookupDebugInfoLOOKUP_DEBUG_INFO_KEY)IntFlag)TYPE_CHECKINGIteratorListOptionalSet)_TTGlyphSetc                   V    ] tR t^4t^t^t^t^t^t^ t	^@t
^tRtRtRtRtRtRtR	tR
tRtR# )VarComponentFlags N   i                 @  l      )__name__
__module____qualname____firstlineno__RESET_UNSPECIFIED_AXES	HAVE_AXESAXIS_VALUES_HAVE_VARIATIONTRANSFORM_HAS_VARIATIONHAVE_TRANSLATE_XHAVE_TRANSLATE_YHAVE_ROTATIONHAVE_CONDITIONHAVE_SCALE_XHAVE_SCALE_YHAVE_TCENTER_XHAVE_TCENTER_YGID_IS_24BITHAVE_SKEW_XHAVE_SKEW_YRESERVED_MASK__static_attributes__r)       A/usr/lib/python3/dist-packages/fontTools/ttLib/tables/otTables.pyr(   r(   4   sW    #I!'$MNLLNNLKK)MrE   r(   VarTransformMappingValues
translateX
translateYrotationscaleXscaleYskewXskewYtCenterXtCenterYc                 0    \         P                  ! R V 4      # >Bstructpackvs   &rF   <lambda>rY   f       T1%rE   c                 0    \         P                  ! R V 4      # >HrT   rW   s   &rF   rY   rY   g   rZ   rE   c                 >    \         P                  ! R V 4      R,          # )>L   NNrT   rW   s   &rF   rY   rY   h   s    T1%b)rE   c                 0    \         P                  ! R V 4      # r_   rT   rW   s   &rF   rY   rY   i   rZ   rE   c                 >    \         P                  ! R V 4      ^ ,          # rR   rU   unpackrW   s   &rF   rY   rY   l       tQ'*rE   c                 >    \         P                  ! R V 4      ^ ,          # r\   re   rW   s   &rF   rY   rY   m   rg   rE   c                 L    \         P                  ! R RV ,           4      ^ ,          # )r_       re   rW   s   &rF   rY   rY   n   s    tUQY/2rE   c                 >    \         P                  ! R V 4      ^ ,          # rc   re   rW   s   &rF   rY   rY   o   rg   rE   c                   W,          pV^8  d   W!^,           3# V^8  d.   V^,
          ^,          W^,           ,          ,          V^,           3# V^8  dI   V^,
          ^,          W^,           ,          ^,          ,          W^,           ,          ,          V^,           3# V^8  de   V^,
          ^,          W^,           ,          ^,          ,          W^,           ,          ^,          ,          V V^,           ,          ,          V^,           3# V^,
          ^ ,          W^,           ,          ^,          ,          W^,           ,          ^,          ,          V V^,           ,          ^,          ,          W^,           ,          ,          V^,           3# )zdRead a variable-length number from data starting at index i.

Return the number and the next index.
r)   )dataib0s   && rF   _read_uint32varrp   s   sD    
B	Dyq5y	dT	a$1u+-q1u44	dT	b 4A;!#33dq5kA1q5HH	dT	b 4A;"#44tE{a7GG$EK
 
q5 	 T	b 4A;"#44tE{b7HH4EL
L !e!e$ 	$rE   c                   V ^8  d   \         P                  ! RV 4      # V R8  d   \         P                  ! RV R,          4      # V R8  d&   \         P                  ! RV R,          4      R,          # V R	8  d   \         P                  ! RV R
,          4      # \         P                  ! R^4      \         P                  ! RV 4      ,           # )z2Write a variable-length number.

Return the data.
rS   r/   r]      i    r_   i   r`   i   l      @ rT   rW   s   &rF   _write_uint32varrs      s    
 	4x{{4##	
V{{4!f*..	
X{{4!h,044	
Z{{4!j.22{{4&T1)===rE   c                   Z   a  ] tR t^t o R tRR ltR tR tR tR t	R t
R	 tR
 tRtV tR# )VarComponentc                &    V P                  4        R # N)populateDefaultsselfs   &rF   __init__VarComponent.__init__   s    rE   Nc                    ^ V n         RV n        RV n        RV n        RV n        \
        V n        \
        V n        \        4       V n	        R# )    Nr)   )
flags	glyphNameconditionIndexaxisIndicesIndex
axisValuesNO_VARIATION_INDEXaxisValuesVarIndextransformVarIndexr   	transformrz   
propagators   &&rF   rx   VarComponent.populateDefaults   sA    
" $"4!3,.rE   c                  aaa ^ o\        SS4      w  V n        oV P                  oS\        P                  ,          '       d   ^M^p\        V,          ! SSSV,            4      pSV,          oVP
                  V,          V n        S\        P                  ,          '       d   \        SS4      w  V n        oS\        P                  ,          '       d   \        SS4      w  V n
        oMRV n
        V P                  f   ^ pM/VR,          P                  V P                  ,          p\        V4      pS\        P                  ,          '       dN   \        P                  ! VSS4      w  po\        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      V n        MRV n        \        V P                   4      V8X  g   Q hS\        P"                  ,          '       d   \        SS4      w  V n        oM\&        V n        S\        P(                  ,          '       d   \        SS4      w  V n        oM\&        V n        \-        4       V n        VVV3R lp	\0        P3                  4        F#  w  rV	! V4      p\5        V P.                  W4       K%  	  S\        P6                  ,          '       g&   V P.                  P8                  V P.                  n        S\        P<                  ,          pV'       d!   \        SS4      w  poW^,
          ,          pK(  SSR # )r~   NAxisIndicesListc              3   :   "   T F  p\        V^4      x  K  	  R# 5i   N)fi2fl.0rX   s   & rF   	<genexpr>)VarComponent.decompile.<locals>.<genexpr>   s     #E*QE!RLL*   c           	         < SV P                   ,          '       dY   \        \        P                  ! R SSS^,            4      ^ ,          V P                  4      V P
                  ,          pS^,          oV# V P                  # )>h)flagr   rU   rf   fractionalBitsscaledefaultValue)valuesrX   rm   r   rn   s   & rF   read_transform_component8VarComponent.decompile.<locals>.read_transform_component   sn    v{{""dDQUO<Q?AVAV ll#  Q***rE   r)   )rp   r   r(   r@   	_unpacker
glyphOrderr   r;   r   r5   r   Itemlenr   decompileDeltas_tupler   r6   r   r   r7   r   r   r   VAR_TRANSFORM_MAPPINGitemssetattrr=   rK   rL   rC   )rz   rm   font
localStategidSizeglyphIDnumAxesaxisIndicesr   r   	attr_namemapping_valuesvaluen_r   rn   s   &f&&           @@rF   	decompileVarComponent.decompile   sa   'a0
A

0====!1G$T!a'k%:;	W1$3333%4T1%="D$....'6tQ'?$D!1$(D!  (G$%67<<T=R=RSK+&G$....*;;GT1MMJ#e#E*#Eee#E*#EEDO DO4??#w...$????)8q)A&D#Q&8D#$<<<<(7a(@%D"A%7D",.	+ *?)D)D)F%I,^<EDNNI5 *G )6666$(NN$9$9DNN!%333"4+DAqQJAABxrE   c                  a VP                   \        ,          p. pV P                  oVP                  V P                  4      pVR 8  d;   S\
        P                  ,          oVP                  \        ^,          ! V4      4       M:S\
        P                  ( ,          oVP                  \        ^,          ! V4      4       V P                  e<   S\
        P                  ,          oVP                  \        V P                  4      4       \        V P                  4      pV'       d   S\
        P                  ,          oVP                  \        V P                  4      4       TP                  \         P"                  ! V P                   Uu. uF  p\%        V^4      NK  	  upV'       * R7      4       MS\
        P                  ( ,          oV P&                  \(        8w  d=   S\
        P*                  ,          oVP                  \        V P&                  4      4       MS\
        P*                  ( ,          oV P,                  \(        8w  d=   S\
        P.                  ,          oVP                  \        V P,                  4      4       MS\
        P.                  ( ,          oV3R lp\0        P3                  4        F2  w  r\5        V P6                  V4      p
VP                  V! W4      4       K4  	  \        S4      \9        V4      ,           # u upi )  )optimizeSizec                    < SVP                   ,          '       d<   \        P                  ! R \        WP                  ,          VP
                  4      4      # R# )r   rE   )r   rU   rV   fl2fir   r   )r   r   r   s   &&rF   write_transform_component7VarComponent.compile.<locals>.write_transform_component  sA    v{{""{{% 4f6K6KL  rE   )cfgr   r   
getGlyphIDr   r(   r@   append_packerr   r;   rs   r   r   r5   r   r   compileDeltaValues_r   r   r   r6   r   r7   r   r   getattrr   r   )rz   r   optimizeSpeedrm   r   r   rX   r   r   r   r   r   s   &&         @rF   compileVarComponent.compile   s<   !45

//$..1U?&333EKK
7+,'4444EKK
7+,*&555EKK()<)<=>doo&&000EKK()>)>?@KK22+/??;?aU1b\?;%2!2 '1111E""&88&AAAEKK()@)@AB'BBBBE!!%77&>>>EKK()?)?@A'????E	 *?)D)D)F%IDNNI6EKK1%HI *G  &488= <s   Lc                
  a SP                  R V4       SP                  4        R
V3R llpV! RV P                  4       V P                  e   V! RV P                  4       V P                  e   V! RV P                  4       V P                  f(   V P
                  \        P                  ,          '       dd   V P
                  \        P                  ,          '       d   RpMR	pT! RV P                   Uu. uF  p\        \        V^4      4      NK  	  upV4       V P                  \        8w  d   V! RV P                  4       V P                  \        8w  d   V! RV P                  4       \        P                  4        F\  w  rgV P
                  VP                   ,          '       g   K*  \#        V P$                  V4      pV! V\        WWP&                  4      4       K^  	  SP)                  R 4       SP                  4        R# u upi )ru   c                 l   < Ve/   SP                  V RV33V,           4       SP                  4        R # R # )Nr   )	simpletagnewline)namer   attrswriters   &&&rF   write!VarComponent.toXML.<locals>.write-  s5       %(8':U'BC  !rE   r   Nr   r   r   r   r   r)   )r)   ))resetUnspecifiedAxesra   )begintagr   r   r   r   r   r(   r4   r   floatfl2strr   r   r   r   r   r   r   r   r   endtag)rz   r   ttFontr   r   rX   r   mappings   &f&&    rF   toXMLVarComponent.toXML)  s   .	!
 	k4>>**"D$7$78  ,$d&;&;<!!-zz-DDDDzz-DDDD6,t O!va}!5 OQVW""&88&(?(?@!!%77%t'='=> #8"="="?IJJ--	2A)VA'='=>?	 #@ 	n%! !Ps   3H 
c                   V Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV P                  4        V EF  w  rpV'       d   Q hVR ,          pVR8X  d	   W`n        K)  VR8X  d   \	        V4      V n        KB  VR8X  d   \	        V4      V n        K[  VR8X  d   \        ;QJ d    . R \	        V4       4       F  NK  	  5M! R \	        V4       4       4      V n        \	        VP                  RR4      4      '       d*   V ;P                  \        P                  ,          un	        K  K  VR8X  d   \	        V4      V n        EK  VR	8X  d   \	        V4      V n        EK%  V\        9   dR   \        V P                   V\	        V4      4       V ;P                  \        V,          P"                  ,          un	        EK  Q T4       h	  R
# u upi )r   r   r   r   r   c              3   :   "   T F  p\        V^4      x  K  	  R# 5ir   )str2flr   s   & rF   r   'VarComponent.fromXML.<locals>.<genexpr>b  s     'K{!q"{r   r   0r   r   N)
isinstancer   rx   r   r   r   r   r   getr   r(   r4   r   r   r   r   r   r   )rz   r   r   contentr   crX   s   &&&&&  rF   fromXMLVarComponent.fromXMLR  s_   %>gAu)=11g>$+ D;gA{"!"))&.qk#++(0%%"'%'Kx{'K%%'Kx{'K"KEII&<cBCCJJ"3"J"JJJ D--*21+',,)1!&..NNQK
 

3D9>>>

"d"u5 %,	 ?s
   GGc           	       a aa ^ oVVV 3R lp\         P                  4        F?  w  r4V! V4      p\        S P                  V\	        S P                  V4      V,           4       KA  	  S P
                  \        P                  ,          '       g&   S P                  P                  S P                  n	        S\        S4      8X  g   Q S\        S4      34       hR# )r~   c                    < SP                   V P                  ,          '       d:   \        SS,          V P                  4      V P                  ,          pS^,          oV# ^ # ra   )r   r   r   r   r   )r   rX   deltasrn   rz   s   & rF   read_transform_component_deltaIVarComponent.applyTransformDeltas.<locals>.read_transform_component_deltav  sF    zzFKK''&)V%:%:;fllJQrE   N)r   r   r   r   r   r   r(   r=   rK   rL   r   )rz   r   r   r   r   r   rn   s   ff    @rF   applyTransformDeltas!VarComponent.applyTransformDeltass  s    	 *?)D)D)F%I2>BE	74>>9+MPU+U *G 

.;;;;$(NN$9$9DNN!CK1!S[!11rE   c                r    \        V 4      \        V4      8w  d   \        # V P                  VP                  8H  # rw   )typeNotImplemented__dict__)rz   others   &&rF   __eq__VarComponent.__eq__  s+    :e$!!}}..rE   c                J    V P                  V4      pV\        J d   V# V'       * # rw   )r   r   )rz   r   results   && rF   __ne__VarComponent.__ne__  s$    U#>1vA6zArE   )r   r   r   r   r   r   r   r   rw   )r0   r1   r2   r3   r{   rx   r   r   r   r   r   r   r   rD   __classdictcell____classdict__s   @rF   ru   ru      s>      /DL89t'R#B2./
B BrE   ru   c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
VarCompositeGlyphi  Nc                ,    Ve	   Wn         R # . V n         R # rw   
components)rz   r   s   &&rF   r{   VarCompositeGlyph.__init__  s    (2(>*BrE   c                    . V n         V'       d:   \        4       pVP                  WV4      pV P                   P                  V4       KA  R # rw   )r   ru   r   r   )rz   rm   r   r   	components   &&&& rF   r   VarCompositeGlyph.decompile  s<    $I&&t:>DOO""9- rE   c                    . pV P                    F#  pVP                  VP                  V4      4       K%  	  \        V4      # rw   )r   r   r   r   )rz   r   rm   r   s   &&  rF   r   VarCompositeGlyph.compile  s6    IKK	))$/0 )rE   c                    VP                  R V4       VP                  4        \        V P                  4       F  w  rVVP	                  WRV3.4       K  	  VP                  R 4       VP                  4        R# )r   indexN)r   r   	enumerater   r   r   )rz   	xmlWriterr   r   r   rn   r   s   &&&&&  rF   r   VarCompositeGlyph.toXML  sc    .6%doo6LAOOIwl^< 7,-rE   c                    V Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV FF  w  rpVR 8X  g   Q h\        4       pVP                  WW44       V P                  P                  V4       KH  	  R# u upi )ru   N)r   r   ru   r   r   r   )rz   r   r   r   r   r   r   s   &&&&&  rF   r   VarCompositeGlyph.fromXML  sl    %>gAu)=11g>$+ D>)))$Id79OO""9-	 %, ?s
   A8A8r   rw   )r0   r1   r2   r3   r{   r   r   r   r   rD   r   r   s   @rF   r   r     s$     G.. .rE   r   c                   &   a  ] tR tRt o R tRtV tR# )AATStateTablei  c                0    / V n         . V n        . V n        R # rw   )GlyphClassesStatesPerGlyphLookupsry   s   &rF   r{   AATStateTable.__init__  s    !rE   )r  r  r  Nr0   r1   r2   r3   r{   rD   r   r   s   @rF   r  r    s     " "rE   r  c                   &   a  ] tR tRt o R tRtV tR# )AATStatei  c                    / V n         R # rw   Transitionsry   s   &rF   r{   AATState.__init__  s
    rE   r  Nr  r   s   @rF   r  r    s      rE   r  c                   @   a  ] tR tRt o Rt]R 4       tR tR tRt	V t
R# )	AATActioni  Nc                    R# )NNNr)   )r   statess   &&rF   compileActionsAATAction.compileActions  s    rE   c                |   V P                    Uu. uF  q P                  V,          '       g   K  VNK!  	  ppV'       d3   VP                  R RP                  V4      R7       VP	                  4        V P
                  ^ 8w  d7   VP                  RRV P
                  ,          R7       VP	                  4        R# R# u upi )Flags,r   ReservedFlagsz0x%04XN)_FLAGSr   r   joinr   r#  )rz   r  fr   s   &&  rF   _writeFlagsToXMLAATAction._writeFlagsToXML  s     KK<Kq==+;+;K<sxx?"x$BTBT7TU #	 =s
   B9B9c                `    WP                   9   g   Q R V,          4       hRV P                  V&   R# )zunsupported flag %sTN)r$  r   rz   r   s   &&rF   _setFlagAATAction._setFlag  s+    {{"@$9D$@@""drE   r)   )r0   r1   r2   r3   r$  staticmethodr  r'  r+  rD   r   r   s   @rF   r  r    s+     F  # #rE   r  c                      a  ] tR tRt o ^t^ t. ROt/ ^ Rb^Rb^Rb^Rb^Rb^Rb^Rb^R	b^R
b^	Rb^
Rb^Rb^Rb^Rb^Rb^RbtR tR t	R t
R tR tRtV tR# )RearrangementMorphActioni  z	no changeu	   Ax ⇒ xAu	   xD ⇒ Dxu   AxD ⇒ DxAu   ABx ⇒ xABu   ABx ⇒ xBAu   xCD ⇒ CDxu   xCD ⇒ DCxu   AxCD ⇒ CDxAu   AxCD ⇒ DCxAu   ABxD ⇒ DxABu   ABxD ⇒ DxBAu   ABxCD ⇒ CDxABu   ABxCD ⇒ CDxBAu   ABxCD ⇒ DCxABu   ABxCD ⇒ DCxBAc                Z    ^ V n         ^ V n        RV n        RV n        RV n        ^ V n        R# r~   FN)NewStateVerb	MarkFirstDontAdvanceMarkLastr#  ry   s   &rF   r{   !RearrangementMorphAction.__init__  s.    	 rE   c                   Ve   Q hVP                  V P                  4       V P                  ^ 8  d   V P                  ^8:  g   Q V P                  4       hV P                  V P                  ,          pV P                  '       d
   VR,          pV P
                  '       d
   VR,          pV P                  '       d
   VR,          pVP                  V4       R # Nrr   r/   r.   )writeUShortr2  r3  r#  r4  r5  r6  rz   r   r   actionIndexr   s   &&&& rF   r    RearrangementMorphAction.compile  s    """4==)yyA~$))r/<499<1		D...>>>VOEVOE===VOE5!rE   c                   Ve   Q hVP                  4       V n        VP                  4       pV^,          V n        \        VR,          4      V n        \        VR,          4      V n        \        VR,          4      V n        VR,          V n        R # )Nrr   r/   r.   i  )
readUShortr2  r3  boolr4  r5  r6  r#  rz   readerr   actionReaderr   s   &&&& rF   r   "RearrangementMorphAction.decompile  st    ###))+!!#CK	efn-/UV^,"V^rE   c                   VP                   ! V3/ VB  VP                  4        VP                  R V P                  R7       VP                  4        V P	                  V4       VP                  RV P
                  R7       V P                  P                  V P
                  4      pVe   VP                  V4       VP                  4        VP                  V4       VP                  4        R# )r2  r"  r3  N)
r   r   r   r2  r'  r3  _VERBSr   commentr   )rz   r  r   r   r   verbComments   &&&&& rF   r   RearrangementMorphAction.toXML  s    4)5)Jdmm<i(F$))4kkoodii0"k*rE   c                   ^ ;V n         ;V n        V n        R;V n        ;V n        V n        V Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV F  w  rgpVR8X  d   \        VR,          4      V n         K&  VR8X  d   \        VR,          4      V n        KF  VR8X  d   \        VR,          4      V n        Kf  VR8X  g   Ko  VR,          P                  R4       F"  p	V P                  V	P                  4       4       K$  	  K  	  R# u upi )	r~   Fr2  r   r3  r#  r   r!  N)r2  r3  r#  r4  r5  r6  r   r   r   splitr+  strip
rz   r   r   r   r   teltNameeltAttrs
eltContentr   s
   &&&&&     rF   r    RearrangementMorphAction.fromXML  s    9:::	D$6<AAA)DM%>gAu)=11g>-4)Gz*$ ('): ;F"$Xg%67	O+%-hw.?%@"G#$W-33C8DMM$**,/ 9 .5 ?s   D	D	)r5  r4  r6  r2  r#  r3  N)r4  r5  r6  )r0   r1   r2   r3   
staticSizeactionHeaderSizer$  rF  r{   r   r   r   r   rD   r   r   s   @rF   r/  r/    s     J5F	;	; 	
; 	
=	
 	
= 	
= 	
= 	
= 	
? 	
? 	O 	O 	 	 	  	!F&",0 0rE   r/  c                   N   a  ] tR tRt o ^t^ tRR.tR tR tR t	R t
R tR	tV tR
# )ContextualMorphActioni,  SetMarkr5  c                ^    ^ V n         RRuV n        V n        ^ V n        RRuV n        V n        R# )r~   Fr   N)r2  rW  r5  r#  	MarkIndexCurrentIndexry   s   &rF   r{   ContextualMorphAction.__init__1  s3    ).&d&,2F))rE   c                Z   Ve   Q hVP                  V P                  4       V P                  pV P                  '       d
   VR,          pV P                  '       d
   VR,          pVP                  V4       VP                  V P
                  4       VP                  V P                  4       R # )Nrr   r/   )r:  r2  r#  rW  r5  rY  rZ  r;  s   &&&& rF   r   ContextualMorphAction.compile7  s    """4==)""<<<VOEVOE5!4>>*4,,-rE   c                (   Ve   Q hVP                  4       V n        VP                  4       p\        VR,          4      V n        \        VR,          4      V n        VR,          V n        VP                  4       V n        VP                  4       V n        R # )Nrr   r/   i?  )r?  r2  r@  rW  r5  r#  rY  rZ  rA  s   &&&& rF   r   ContextualMorphAction.decompileC  sz    ###))+!!#EFN+/"V^**,"--/rE   c                   VP                   ! V3/ VB  VP                  4        VP                  R V P                  R7       VP                  4        V P	                  V4       VP                  RV P
                  R7       VP                  4        VP                  RV P                  R7       VP                  4        VP                  V4       VP                  4        R# )r2  r"  rY  rZ  N)r   r   r   r2  r'  rY  rZ  r   rz   r  r   r   r   s   &&&&&rF   r   ContextualMorphAction.toXMLM  s    4)5)Jdmm<i(Kt~~>N$2C2CDrE   c                ^   ^ ;V n         V n        R;V n        V n        RRuV n        V n        V Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV F  w  rgpVR8X  d   \        VR,          4      V n         K&  VR8X  dA   VR,          P                  R4       F"  p	V P                  V	P                  4       4       K$  	  Km  VR8X  d   \        VR,          4      V n        K  VR8X  d   \        VR,          4      V n        K  VR	8X  g   K  \        VR,          4      V n        K  	  R
# u upi )r~   Fr   r2  r   r   r!  r#  rY  rZ  N)r2  r#  rW  r5  rY  rZ  r   r   r   rK  r+  rL  rM  s
   &&&&&     rF   r   ContextualMorphAction.fromXMLZ  s    -..**//t',2F))%>gAu)=11g>-4)Gz*$ ('): ;G#$W-33C8DMM$**,/ 9O+%-hw.?%@"K'!)(7*;!<N*$,Xg->$?! .5 ?s   D*D*)rZ  r5  rY  r2  r#  rW  N)r0   r1   r2   r3   rS  rT  r$  r{   r   r   r   r   rD   r   r   s   @rF   rV  rV  ,  s:     J'F;
.0@ @rE   rV  c                   &   a  ] tR tRt o R tRtV tR# )	LigActionim  c                "    R V n         ^ V n        R# )FN)StoreGlyphIndexDeltary   s   &rF   r{   LigAction.__init__n  s    
  !rE   )ri  rh  Nr  r   s   @rF   rf  rf  m  s     ! !rE   rf  c                   j   a  ] tR tRt o ^t^tRR.tR tR tR t	]
R 4       tR tR	 tR
 tR tRtV tR# )LigatureMorphActioni|  SetComponentr5  c                N    ^ V n         RRuV n        V n        ^ V n        . V n        R# r1  )r2  rm  r5  r#  Actionsry   s   &rF   r{   LigatureMorphAction.__init__  s*    .3U+4+rE   c                   Vf   Q hVP                  V P                  4       V P                  pV P                  '       d
   VR,          pV P                  '       d
   VR,          p\        V P                  4      ^ 8  d
   VR,          pVP                  V4       \        V P                  4      ^ 8  d*   V P                  4       pVP                  W5,          4       R # VP                  ^ 4       R # r9  )r:  r2  r#  rm  r5  r   ro  compileLigActions)rz   r   r   r<  r   actionss   &&&&  rF   r   LigatureMorphAction.compile  s    &&&4==)""VOEVOEt||q VOE5!t||q ,,.G{34q!rE   c                f   Vf   Q hVP                  4       V n        VP                  4       p\        VR,          4      V n        \        VR,          4      V n        \        VR,          4      pVR,          V n        VP                  4       pV'       d   V P                  W64      V n        R # . V n        R # )Nrr   r/   r.   i  )r?  r2  r@  rm  r5  r#  _decompileLigActionsro  )rz   rB  r   rC  r   performActionr<  s   &&&&   rF   r   LigatureMorphAction.decompile  s    '''))+!!# 0/UV^, #V^'')44\ODLDLrE   c                   R \        4       / rCpV FE  pVP                  P                  4        F$  w  rgVP                  VP	                  4       4       K&  	  KG  	  \        VR R7       F^  pW9  g   K  \        ^ \        V4      ^4       F1  p	WR p
\        V4      V	,           ^,          pVP                  W4       K3  	  W(,          pK`  	  \        V^4      pW$3# )rE   c                     \        V 4      ) V 3# rw   r   xs   &rF   rY   4LigatureMorphAction.compileActions.<locals>.<lambda>  s    Q|rE   keyN)
setr  r   addrr  sortedranger   
setdefaultr   )r   r  r   rs  r<  state_glyphClasstransarn   suffixsuffixIndexs   &&          rF   r  "LigatureMorphAction.compileActions  s    '*CE2E&+&7&7&=&=&?"E3356 '@  %;<A#q#a&!,ArUF#&v;?q"8K**6? -  = VQ$$rE   c                d   . p\        V P                  4       F  w  r#V\        V P                  4      ^,
          8H  pVP                  R,          pYT'       d   RM^ ,          pYSP                  '       d   RM^ ,          pVP                  \        P                  ! RV4      4       K  	  \        V4      # )ra   ?           @r_   )	r  ro  r   ri  rh  r   rU   rV   r   )rz   r   rn   actionlastr   s   &     rF   rr  %LigatureMorphAction.compileLigActions  s    "4<<0IADLL)A--D**Z7E4ZQ.E<<<ZQ6EMM&++dE23 1   rE   c                Z   . pR pVP                  VP                  V^,          ,           4      pV'       gv   VP                  4       p\        VR,          4      p\	        4       pVP                  V4       \        VR,          4      Vn        VR,          pVR8  d
   RV,           pWn        K}  V# )Fr  r  r  i    i   )getSubReaderpos	readULongr@  rf  r   rh  ri  )	rz   rC  r<  rs  r  rB  r   r  deltas	   &&&      rF   rv  (LigatureMorphAction._decompileLigActions  s    **<+;+;kAo+MN$$&E
*+D[FNN6"
 23FLJ&E
"#e+%*"rE   c                   ^ ;V n         V n        R;V n        V n        ^ V n        . V n        V Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV EF  w  rgpVR8X  d   \        VR,          4      V n         K'  VR8X  dA   VR,          P                  R4       F"  p	V P                  V	P                  4       4       K$  	  Kn  VR8X  d   \        VR,          4      V n        K  VR8X  g   K  \        4       p
VP                  RR4      P                  R4      pV Uu. uF  qP                  4       NK  	  ppR	V9   V
n        \        VR
,          4      V
n        V P                  P                  V
4       EK  	  R# u upi u upi )r~   Fr2  r   r   r!  r#  Action rh  ri  N)r2  r#  rm  r5  ro  r   r   r   rK  r+  rL  rf  r   rh  ri  r   )rz   r   r   r   r   rN  rO  rP  rQ  r   r  r   r&  s   &&&&&        rF   r   LigatureMorphAction.fromXML  sB   -..*/44D,%>gAu)=11g>-4)Gz*$ ('): ;G#$W-33C8DMM$**,/ 9O+%-hw.?%@"H$" Wb177<,12EqE2&%/)1(;L2M)N&##F+ .5 ? 3s   E9E9E>c                   VP                   ! V3/ VB  VP                  4        VP                  R V P                  R7       VP                  4        V P	                  V4       V P
                   FW  pRVP                  3.pVP                  '       d   VP                  R4       VP                  RV4       VP                  4        KY  	  VP                  V4       VP                  4        R# )r2  r"  ri  r  N)r   rh  )
r   r   r   r2  r'  ro  ri  rh  r   r   )rz   r  r   r   r   r  attribss   &&&&&  rF   r   LigatureMorphAction.toXML  s    4)5)Jdmm<i(llF)6+A+ABCG|||12'2 # 	rE   )ro  r5  r2  r#  rm  N)r0   r1   r2   r3   rS  rT  r$  r{   r   r   r-  r  rr  rv  r   r   rD   r   r   s   @rF   rl  rl  |  sX     J m,F""& % %4! ,, rE   rl  c                   d   a  ] tR tRt o ^t^t. ROtR tR tR t	R t
R tR t]R 4       tR	tV tR
# )InsertionMorphActioni	  c                ~    ^ V n         V P                   F  p\        WR4       K  	  ^ V n        . . uV n        V n        R# r1  )r2  r$  r   r#  CurrentInsertionActionMarkedInsertionActionr*  s   & rF   r{   InsertionMorphAction.__init__  s;    KKDD&  BDb?#T%?rE   c                l   Vf   Q hVP                  V P                  4       V P                  pV P                  '       d
   VR,          pV P                  '       d
   VR,          pV P
                  '       d
   VR,          pV P                  '       d
   VR,          pV P                  '       d
   VR,          pV P                  '       d
   VR,          pV\        V P                  4      ^,          ,          pV\        V P                  4      ,          pVP                  V4       \        V P                  4      ^ 8  d   V\        V P                  4      ,          pMRpVP                  V4       \        V P                  4      ^ 8  d   V\        V P                  4      ,          pMRpVP                  V4       R # )Nrr   r/   r.   r-   r,   r+   r   )r:  r2  r#  rW  r5  CurrentIsKashidaLikeMarkedIsKashidaLikeCurrentInsertBeforeMarkedInsertBeforer   r  r  r   )rz   r   r   r<  r   currentIndexmarkedIndexs   &&&&   rF   r   InsertionMorphAction.compile  sY   &&&4==)""<<<VOEVOE$$$VOE###VOE###VOE"""VOET001Q66T//005!t**+a/&uT-H-H'IJL!L<(t))*Q.%eD,F,F&GHK K;'rE   c                6   Vf   Q hVP                  4       V n        VP                  4       p\        VR,          4      V n        \        VR,          4      V n        \        VR,          4      V n        \        VR,          4      V n        \        VR,          4      V n        \        VR,          4      V n        V P                  W2VP                  4       VR,          ^,	          R7      V n
        V P                  W2VP                  4       V^,          R7      V n        R # )	Nrr   r/   r.   r-   r,   r+   i  )r  count)r?  r2  r@  rW  r5  r  r  r  r  _decompileInsertionActionr  r  rA  s   &&&& rF   r   InsertionMorphAction.decompile:  s    '''))+!!#EFN+/$($8!#'#7 #'#7 "&uv~"6&*&D&Df&7&7&956>VWBW 'E '
# &*%C%Cf&7&7&9%&. &D &
"rE   c                    VR 8X  g   V^ 8X  d   . # VP                  VP                  V^,          ,           4      pVP                  VP                  V4      4      # )r   )r  r  getGlyphNameManyreadUShortArray)rz   rC  r   r  r  rB  s   &&&&& rF   r  .InsertionMorphAction._decompileInsertionActionK  sO    F?eqjI**<+;+;eai+GH$$V%;%;E%BCCrE   c                   VP                   ! V3/ VB  VP                  4        VP                  R V P                  R7       VP                  4        V P	                  V4       V P
                   F&  pVP                  RVR7       VP                  4        K(  	  V P                   F&  pVP                  RVR7       VP                  4        K(  	  VP                  V4       VP                  4        R# )r2  r"  r  glyphr  N)r   r   r   r2  r'  r  r  r   )rz   r  r   r   r   gs   &&&&& rF   r   InsertionMorphAction.toXMLQ  s    4)5)Jdmm<i(,,A 8B - ++A 7qA , 	rE   c                   V P                  4        V Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV F  w  rgpVR 8X  d   \        VR,          4      V n        K&  VR8X  dA   VR,          P                  R4       F"  p	V P                  V	P                  4       4       K$  	  Km  VR8X  d%   V P                  P                  VR,          4       K  VR8X  d%   V P                  P                  VR,          4       K  Q T4       h	  R# u upi )r2  r   r   r!  r  r  r  N)r{   r   r   r   r2  rK  r+  rL  r  r   r  rM  s
   &&&&&     rF   r   InsertionMorphAction.fromXML`  s    %>gAu)=11g>-4)Gz*$ ('): ;G#$W-33C8DMM$**,/ 944++228G3DE33**11(72CD%g%u .5 ?s
   D
D
c                   \        4       / R rCpV F  pVP                  P                  4        Fk  w  rgVP                  e%   VP	                  \        VP                  4      4       VP                  f   KG  VP	                  \        VP                  4      4       Km  	  K  	  \        VR R7       F  pW9   d   K  \        ^ \        V4      4       FT  p	\        V4      ^,          V	,           p
\        V	\        V4      4       F  pWV^,            pVP                  W4       K!  	  KV  	  V F2  pV P                  V4      pV\        P                  ! RV4      ,          pK4  	  K  	  WC3# )rE   c                     \        V 4      ) V 3# rw   r{  r|  s   &rF   rY   5InsertionMorphAction.compileActions.<locals>.<lambda>|  s    c!fWaLrE   r  r]   )r  r  r   r  r  r   r  r  r  r   r  r   rU   rV   )r   r  rs  r<  r   r  r  r  r  start
startIndexlimitglyphsr  r   s   &&             rF   r  #InsertionMorphAction.compileActionsp  s/   '*ub#fE&+&7&7&=&=&?"//;KKe&B&B CD..:KKe&A&A BC	 '@  W*@AF $q#f+.!&kQ.%7
"5#f+6E#EAI6F**6> 7 /
  //%0&++dG44   B" ""rE   )
r  r  r  r5  r  r  r  r2  r#  rW  N)rW  r5  r  r  r  r  )r0   r1   r2   r3   rS  rT  r$  r{   r   r   r  r   r   r-  r  rD   r   r   s   @rF   r  r  	  sK     JFI(<
"D&  # #rE   r  c                   0   a  ] tR tRt o R tRR ltRtV tR# )FeatureParamsi  c                    \         P                  VR ,          4      V P                  8X  g+   Q RVR ,          : RV P                  P                  : 24       h\        P
                  ! WV4       R# )
FeatureTagz&Wrong FeatureParams type for feature 'z': N)featureParamTypesr   	__class__r0   r   r   )rz   r   r   s   &&&rF   r   FeatureParams.compile  s\    !!&"674>>I	
 <  NN##
	
I
 	$-rE   Nc                `    \         P                  ! WW#V P                  P                  R 7       R# ))r   N)r   r   r  r0   ra  s   &&&&&rF   r   FeatureParams.toXML  s    4>>;R;RSrE   r)   r  )r0   r1   r2   r3   r   r   rD   r   r   s   @rF   r  r    s     .T TrE   r  c                       ] tR tRtRtR# )FeatureParamsSizei  r)   Nr0   r1   r2   r3   rD   r)   rE   rF   r  r        rE   r  c                       ] tR tRtRtR# )FeatureParamsStylisticSeti  r)   Nr  r)   rE   rF   r  r    r  rE   r  c                       ] tR tRtRtR# )FeatureParamsCharacterVariantsi  r)   Nr  r)   rE   rF   r  r    r  rE   r  c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
Coveragei  Nc                <    \        V R 4      '       g
   . V n        R# R# )r  N)hasattrr  r   s   &&rF   rx   Coverage.populateDefaults  s    tX&&DK 'rE   c           	     (   V P                   ^8X  d   VR,          V n        V = R# V P                   ^8X  d   . ;q0n        VR,          p\        VR R7      pWE8w  d   \        P	                  R4       Tp?V Fm  pVP
                  pVP                  pVP                  V4      p	VP                  V4      ^,           p
VP                  VP                  \        W4      4      4       Ko  	  V = R# . V n        \        P	                  RV P                   4       V = R# )ra   
GlyphArrayRangeRecordc                     V P                   # rw   )StartCoverageIndexr  s   &rF   rY   #Coverage.postRead.<locals>.<lambda>  s
    9M9MrE   r  .GSUB/GPOS Coverage is not sorted by glyph ids.zUnknown Coverage format: %sN)Formatr  r  logwarningStartEndr   extendr  r  )rz   rawTabler   r  rangessorted_rangesrr  endstartIDendIDs   &&&        rF   postReadCoverage.postRead  s    ;;!"<0DK* K) [[A#%%F[m,F #6/MNM&LM&ee//%0,q0d33E'4IJK  K DKKK5t{{CKrE   c                8   \        V R R4      pVf	   . ;q n        ^pRV/pV'       Edl   VP                  V4      p\        V4      V8g  pV^ ,          pV..pVR,           F<  p	W^,           8w  d+   VR,          P	                  V4       VP	                  V	.4       T	pK>  	  VR,          P	                  V4       V'       g!   \        V4      ^,          \        V4      8  d   ^ p
\        V4       Fd  w  pw  r\        4       pWn        VP                  V4      Vn
        VP                  V4      Vn        Wn        WV&   W,           V,
          ^,           p
Kf  	  V'       d)   \        P                  R4       VP                  R R7       V F  pV=K  	  ^pRV/pW0n        V# )	r  Nr  r`   r  c                     V P                   # rw   )StartIDr  s   &rF   rY   #Coverage.preWrite.<locals>.<lambda>  s    aiirE   r  r  )r   r  getGlyphIDManyr  r   r   r  r  r  getGlyphNamer  r  r  r  r  sortr  )rz   r   r  formatr  glyphIDsbrokenOrderr  r  r   r  rn   r  r  r  s   &&             rF   preWriteCoverage.preWrite  s   x.>#%%F[ &)6**62H *h6KA;DfXF#B<<Qh&2J%%d+MM7),	 (
 2Jd#c&kAoF;'0'8OA|#A %I"//6AG --c2AE+0( !1I!K%/!3E (9 KK PQKK$7K8A	  )62 rE   c                t    \        V R . 4       F&  pVP                  RVR7       VP                  4        K(  	  R# )r  Glyphr"  N)r   r   r   )rz   r  r   r   s   &&& rF   toXML2Coverage.toXML2  s4     x4Iy9 5rE   c                h    \        V R R4      pVf	   . pWPn        VP                  VR,          4       R# )r  Nr   )r   r  r   )rz   r   r   r   r   r  s   &&&&& rF   r   Coverage.fromXML  s/    x.>F KeGn%rE   )r  r  rw   r0   r1   r2   r3   rx   r  r  r  r   rD   r   r   s   @rF   r  r    s$     2)V 
& &rE   r  l    c                   X   a  ] tR tRt o RR ltR t]R 4       tR tR t	R t
R	 tR
tV tR# )DeltaSetIndexMapi  Nc                <    \        V R 4      '       g
   . V n        R# R# r   Nr  r   r   s   &&rF   rx   !DeltaSetIndexMap.populateDefaults      tY''DL (rE   c                P    VR ,          R,          ^ 8X  g   Q hVR,          V n         R# )EntryFormat  r   Nr   )rz   r  r   s   &&&rF   r  DeltaSetIndexMap.postRead  s&    '&0Q666	*rE   c                t   ^ pV  F  pW,          pK  	  VR,          p^ pV'       d   V^,          pV^,          pK  \        V^4      pV^8:  g   Q hV^V,
          ,	          V^V,          ^,
          ,          ,          pV^8:  d   ^pMVR8:  d   ^pMVR8:  d   ^pM^pV^,
          ^,          V^,
          ,          # )r~   r   i )max)r   oredidxinner	innerBits	entrySizes   &     rF   getEntryFormatDeltaSetIndexMap.getEntryFormat  s    CKD  v	NIaKE	1%	Bi(Ta9n5I-JK:IZIZIIQ1$Q77rE   c                    \        V R R4      pVf	   . ;q n        \        V4      R8  d   ^M^ V n        V P                  P                  4       p\        V4      VR&   V P                  V4      VR&   V# )r   Nr   MappingCountr  )r   r   r   r  r   copyr  )rz   r   r   r  s   &&  rF   r  DeltaSetIndexMap.preWrite*  sm    $	40?%''Glw<&0aa==%%'#&w< "&"5"5g">rE   c                4   VP                  R 4       VP                  4        \        \        V R. 4      4       F\  w  r4RV3.pV\        8w  d&   VP                  RV^,	          3RVR,          3.4       VP                  RV4       VP                  4        K^  	  R# )z7Omitted values default to 0xFFFF/0xFFFF (no variations)r   r  outerr  r   MapN)rG  r   r  r   r   r  r   )rz   r  r   rn   r   r   s   &&&   rF   r  DeltaSetIndexMap.toXML24  s     	ST!'$	2">?HAq\NE** %2+. %&.1 u- @rE   c                   \        V R R4      pVf
   . ;V n        p\        VR,          4      p\        VP                  RR4      4      p\        VP                  RR4      4      pVR8:  g   Q hVP	                  Wg^,          V,          4       R# )r   Nr  r!  0xFFFFr  r   )r   r   r   r   insert)	rz   r   r   r   r   r   r  r!  r  s	   &&&&&    rF   r   DeltaSetIndexMap.fromXMLE  sz    $	40?%''DL7w(7H567H56u{e34rE   c                h    V\        V P                  4      8  d   V P                  V,          # \        # rw   )r   r   r   )rz   rn   s   &&rF   __getitem__DeltaSetIndexMap.__getitem__O  s&    "#c$,,&7"7t||AO=OOrE   r  r   rw   )r0   r1   r2   r3   rx   r  r-  r  r  r  r   r)  rD   r   r   s   @rF   r  r    s>     + 8 82 "5P PrE   r  uint8c                   H   a  ] tR tRt o R
R ltR tR tR tR tR t	R	t
V tR# )	VarIdxMapiS  Nc                <    \        V R 4      '       g
   / V n        R# R# r
  r  r   s   &&rF   rx   VarIdxMap.populateDefaultsT  r  rE   c                
   VR ,          R,          ^ 8X  g   Q hVP                  4       pVR,          pVP                  VR,          .\        V4      \        V4      ,
          ,          4       \        \	        W44      4      V n        R# )r  r  r   Nr  )getGlyphOrderr  r   dictzipr   )rz   r  r   r   mapLists   &&&  rF   r  VarIdxMap.postReadX  sg    '&0Q666'')
9%}J#g,(FGHC
45rE   c                8   \        V R R4      pVf	   / ;q n        VP                  4       pV Uu. uF  qBV,          NK  	  pp\        V4      ^8  d   VR,          VR,          8X  d   VR K*  R V/p\        V4      VR&   \        P                  V4      VR&   V# u upi )r   Nr  r  r  )r   r   r2  r   r  r  )rz   r   r   r   r  r  s   &&    rF   r  VarIdxMap.preWrite_  s    $	40?%''Gl'')
'12z!1::z2'lQ72;'"+#=w'#&w< "2"A"A'"J 3s   Bc                    \        \        V R / 4      P                  4       4       F@  w  r4RV3RV^,	          3RVR,          33pVP                  RV4       VP	                  4        KB  	  R# )r   r  r!  r  r   r"  N)r  r   r   r   r   )rz   r  r   r  r   r   s   &&&   rF   r  VarIdxMap.toXML2n  sk    "74B#?#E#E#GHLE% %2+&%&.)E
 u- IrE   c                   \        V R R4      pVf	   / pWPn         VR,          p\        TR,          4      p\        TR,          4      pTR8:  g   Q hT^,          T,          YV&   R#    TP                  4       TR,          ,          p Lc; i)r   Nr  r  r!  r  r   )r   r   r2  r   )	rz   r   r   r   r   r   r  r!  r  s	   &&&&&    rF   r   VarIdxMap.fromXMLx  s    $	40?G"L	9'NE w(w(2+.	9&&(w8Es   	A% % Bc                B    V P                   P                  V\        4      # rw   )r   r   r   )rz   r   s   &&rF   r)  VarIdxMap.__getitem__  s    ||	+=>>rE   r  rw   )r0   r1   r2   r3   rx   r  r  r  r   r)  rD   r   r   s   @rF   r.  r.  S  s(     6 /? ?rE   r.  c                   &   a  ] tR tRt o R tRtV tR# )VarRegionListi  c                    VP                  R 4      pV'       d   \        VP                  4      V n        / V P                  CR\        V P                  R4      /C# )fvarRegionAxisCount)r   r   axesrD  r   r   )rz   r   	fvarTables   && rF   r  VarRegionList.preWrite  sR     HHV$	#&y~~#6D 
mm
~dmm=NO
 	
rE   )rD  Nr0   r1   r2   r3   r  rD   r   r   s   @rF   rA  rA    s     
 
rE   rA  c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
SingleSubsti  Nc                <    \        V R 4      '       g
   / V n        R# R# r
  r  r   s   &&rF   rx   SingleSubst.populateDefaults  r  rE   c                    / p\        VR ,          4      pV P                  ^8X  dc   VR,          pVP                  V4      pV Uu. uF  qwV,           R,          NK  	  ppVP                  V4      p	\	        WI4       F	  w  rWV
&   K  	  MiV P                  ^8X  dA   \        V4      VR,          8X  g   Q R4       hVR,          p\	        WL4       F	  w  rWV
&   K  	  MQ RT P                  ,          4       hW0n        V =R# u upi )r  DeltaGlyphID   
GlyphCountz invalid SingleSubstFormat2 table
Substituteunknown format: %sN)_getGlyphsFromCoverageTabler  r  r  r4  r   r   )rz   r  r   r   inputr  	inputGIDSr   outGIDSoutNamesinpoutsubstsubs   &&&           rF   r  SingleSubst.postRead  s    +HZ,@A;;!^,E++E2I@IJ	W%500	GJ,,W5H0" 1[[AE
h|442124\*E-" . 9*T[[881K Ks   C;c                t   \        V R R4      pVf	   / ;q n        \        VP                  4       4      pVP                  pV UUu. uF  w  rVV! V4      V! V4      3NK  	  ppp\        \        Ws4      4      p^p	Rp
V F.  w  rV
f   W,
          R,          p
W,           R,          V8w  g   K.   M	  V
f   ^p	M^p	/ pWn        \        4       pV Uu. uF  q^,          ^ ,          NK  	  ppV Uu. uF  q^,          ^,          NK  	  ppVVn	        WR&   V	^8X  d   V
f   Q hWR&   V# VVR&   V# u uppi u upi u upi )r   NrO  r  rN  rQ  )
r   r   listr   r   r  r4  r  r  r  )rz   r   r   r   r   r  bgidItemssortableItemsr  r  inIDoutIDr  covitemrT  rZ  s   &&                rF   r  SingleSubst.preWrite  sO   $	40?%''GlW]]_%__
?DEutqZ]JqM2uEs834 #KD}.%. $ }j(56a6(56a6
"Q;$$$',^$  &+H\"? F, 76s   D*D0+D5c                    \        V P                  P                  4       4      pV F-  w  rEVP                  R RV3RV3.4       VP	                  4        K/  	  R# )SubstitutioninrY  N)r  r   r   r   r   )rz   r  r   r   inGlyphoutGlyphs   &&&   rF   r  SingleSubst.toXML2  sP    t||))+,!&G$5(BS0TU "'rE   c                \    \        V R R4      pVf	   / pWPn        VR,          WRR,          &   R# )r   NrY  ri  )r   r   )rz   r   r   r   r   r   s   &&&&& rF   r   SingleSubst.fromXML  s/    $	40?G"L$U|drE   r+  rw   r  r   s   @rF   rJ  rJ    s$     ,%N , ,rE   rJ  c                   R   a  ] tR tRt o R
R ltR tR tR tR t]	R 4       t
R	tV tR# )MultipleSubsti  Nc                <    \        V R 4      '       g
   / V n        R# R# r
  r  r   s   &&rF   rx   MultipleSubst.populateDefaults  r  rE   c                   / pV P                   ^8X  dI   \        VR,          4      pVR,           Uu. uF  qUP                  NK  	  pp\        \	        WF4      4      pMQ RT P                   ,          4       hW0n        V = R# u upi )ra   r  SequencerR  N)r  rS  rQ  r3  r4  r   )rz   r  r   r   r  srZ  s   &&&    rF   r  MultipleSubst.postRead  sr    ;;!0*1EFF+3J+?@+?a\\+?E@3v-.G8*T[[881K As   A>c           
     2   \        V R R4      pVf	   / ;q n        \        4       p\        \	        VP                  4       4      VP                  R7      Vn        ^V n        RTRVP                   Uu. uF  q@P                  W$,          4      NK  	  up/pV# u upi )r   Nr  r  rt  )
r   r   r  r  r^  keysr   r  r  makeSequence_)rz   r   r   rd  r  r  s   &&    rF   r  MultipleSubst.preWrite  s    $	40?%''GljD0dooF
T++GN;T
  Us   /B
c                    \        V P                  P                  4       4      pV F>  w  rER P                  V4      pVP	                  RRV3RV3.4       VP                  4        K@  	  R# )r!  rh  ri  rY  N)r  r   r   r%  r   r   )rz   r  r   r   rj  	outGlyphsrY  s   &&&    rF   r  MultipleSubst.toXML2	  s]    t||))+,"'G((9%C$5#,0OP #(rE   c                   \        V R R4      pVf	   / pWPn        VR8X  d[   . V n        V FK  p\        V\        4      '       g   K  Vw  rxp	VR8X  g   K)  V P                  P                  VR,          4       KM  	  R# VR8X  d   \        VP                  R\        V4      4      4      p
V P                  V
,          p. ;qV&   V FA  p\        V\        4      '       g   K  Vw  rxp	VR8X  g   K)  VP                  VR,          4       KC  	  R# VR,          '       d   VR,          P                  R	4      M. pV Uu. uF  qP                  4       NK  	  upWRR
,          &   R# u upi )r   Nr  r  r   rt  r  rQ  rY  r!  ri  )r   r   old_coverage_r   r   r   intr   r   rK  rL  )rz   r   r   r   r   r   elementelement_nameelement_attrsr   r  r  glyph_mappingr|  r  s   &&&&&          rF   r   MultipleSubst.fromXML  s>   $	40?G"L :!#D"!'51118.Q7*&&--mG.DE # :		'3w<89E&&u-E-//MEN"!'51118.Q</!((w)?@ #  05U||E%L&&s+	3<=9a	9=d=s   5Ec                &    \        4       pWn        V# rw   )rt  rQ  )r  seqs   & rF   ry  MultipleSubst.makeSequence_0  s    j
rE   )r  r   r  rw   )r0   r1   r2   r3   rx   r  r  r  r   r-  ry  rD   r   r   s   @rF   rp  rp    s3     	 >@  rE   rp  c                   H   a  ] tR tRt o R
R ltR tR tR tR tR t	R	t
V tR# )ClassDefi7  Nc                <    \        V R 4      '       g
   / V n        R# R# )	classDefsN)r  r  r   s   &&rF   rx   ClassDef.populateDefaults8      t[))DN *rE   c                   / pV P                   ^8X  ds   VR,          pVR,          pVP                  V4      pV\        V4      ,           pVP                  \	        Wg4      4      p\        W4       F  w  rV
'       g   K  WV	&   K  	  MV P                   ^8X  d   VR,          pV F  pVP                  p
V
'       g   K  VP                  pVP                  pVP                  V4      pVP                  V4      ^,           pVP                  \	        Wg4      4      pV F  p	WV	&   K	  	  K  	  M \        P                  RV P                   4       W0n        V = R# )ra   
StartGlyphClassValueArrayClassRangeRecordzUnknown ClassDef format: %sN)r  r   r   r  r  r4  Classr  r  r  r  r  )rz   r  r   r  r  	classListr  r  
glyphNamesr   clsrecordsrecr  s   &&&           rF   r  ClassDef.postRead<  s"   	;;!\*E !23Iooe,Gc)n,E..uW/DEJ"%j"<	3+.i( #= [[A12Gii		gg//%0,q0!2253HI
!+I+.i( ",  KK5t{{C"KrE   c                   \        V R R4      pVf
   / V n        R# VP                  p. pVP                  4        F(  w  rVV'       g   K  VP	                  V! V4      WV34       K*  	  V'       d   VP                  4        V^ ,          w  rxp	WV..p
VR,           FK  w  rpW^,           8w  g   Wi8w  d-   V
R,          P                  Wx.4       V
P	                  WkV.4       TpTpTp	KM  	  V
R,          P                  Wx.4       V
# R# )r  Nr`   r  )r   r  r   r   r   r  r  )rz   r   r  r   r   r   r  r  lastNamelastClsr  r   s   &&          rF   _getClassRangesClassDef._getClassRanges[  s    D+t4	DN__
'oo/NILL*Y/@A 0 JJL&+Ah#DGh/0F+099'CQh&#.2J%%t&67MM3";<$ ,5 2Jt./M rE   c                   ^pR. /pV P                  V4      pV'       d   V^ ,          ^,          pVR,          ^,          pWe,
          ^,           p\        V4      ^,          V^,           8  dA   \        V4       F*  w  pw  rrp\        4       pWn        Wn        Wn        WV&   K,  	  ^pRV/pMZV^ ,          ^,          p^ .V,          pV F2  w  rrp\        W,
          W,
          ^,           4       F  pV	VV&   K
  	  K4  	  ^pRVRV/pW n        V# )   r  r  r  r  )	r  r   r  r  r  r  r  r  r  )rz   r   r  r  r  
startGlyphendGlyph
glyphCountrn   r  r  	startNamer  endNamer  startGlyphNameclassesr  s   &&                rF   r  ClassDef.preWritet  s   &+%%d+1Jbz!}H!.2J6{Qa/@I&@Q<A<IG*,C )I%G #I #1I AR .7 "(1#
*;A7C	"5#5s7G!7KL%(
 M <B (.:KWUrE   c                    \        V P                  P                  4       4      pV F-  w  rEVP                  R RV3RV3.4       VP	                  4        K/  	  R# )r  r  classN)r  r  r   r   r   )rz   r  r   r   r   r  s   &&&   rF   r  ClassDef.toXML2  sO    t~~++-.#NI
gy-AGS>,RS $rE   c                n    \        V R R4      pVf	   / pWPn        \        VR,          4      WRR,          &   R# )r  Nr  r  )r   r  r  )rz   r   r   r   r   r  s   &&&&& rF   r   ClassDef.fromXML  s5    D+t4	I&N$'g$7	.!rE   )r  r  rw   )r0   r1   r2   r3   rx   r  r  r  r  r   rD   r   r   s   @rF   r  r  7  s(      >2< 8 8rE   r  c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
AlternateSubsti  Nc                <    \        V R 4      '       g
   / V n        R# R# )
alternatesN)r  r  r   s   &&rF   rx   AlternateSubst.populateDefaults  s    t\** DO +rE   c                   / pV P                   ^8X  dZ   \        VR,          4      pVR,          p\        V4      \        V4      8X  g   Q h\        WE4       F  w  rgVP                  W6&   K  	  MQ RT P                   ,          4       hW0n        V = R# )ra   r  AlternateSetrR  N)r  rS  r   r4  	Alternater  )rz   r  r   r  rT  altsrX  alts   &&&     rF   r  AlternateSubst.postRead  s~    
;;!/0DEEN+Du:T***,"%--
 - 9*T[[881$KrE   c                   ^V n         \        V RR4      pVf	   / ;q n        \        VP	                  4       4      p\        V4       F  w  pw  rVVP                  V4      WV3W4&   K  	  VP                  4        \        4       pV Uu. uF  q^,          NK  	  upVn	        . pV Uu. uF  qR,          NK  	  p	pV	 F$  p\        4       p
Wjn        VP                  V
4       K&  	  ^V n        RVRV/# u upi u upi )ra   r  Nr  r  r  )r  r   r  r^  r   r  r   r  r  r  r  r  r   sortCoverageLast)rz   r   r  r   rn   r   r  rd  re  setListr  s   &&         rF   r  AlternateSubst.preWrite  s    T<6
+--JZ%%'(#,U#3A	y19AEH $4

j*/0%$1gg%0

(-.88.C>D Nd#  !"C<< 1.s   C-#C2c                B   \        V P                  P                  4       4      pV Fu  w  rEVP                  R VR7       VP	                  4        V F&  pVP                  RVR7       VP	                  4        K(  	  VP                  R 4       VP	                  4        Kw  	  R# )r  r  r  N)r  r  r   r   r   r   r   )rz   r  r   r   r   r  r  s   &&&    rF   r  AlternateSubst.toXML2  s    t,,./%*!I~Y?!##Ks#;!!# " ^, &+rE   c                    \        V R R4      pVf	   / pWPn        VR,          p. pWuV&   V F8  p\        V\        4      '       g   K  Vw  rpVP	                  VR,          4       K:  	  R# )r  Nr  )r   r  r   r   r   )	rz   r   r   r   r   r  r   r  r  s	   &&&&&    rF   r   AlternateSubst.fromXML  sj    T<6
J(O'N	 #9Ggu--#* DJJuW~&	 rE   )r  r  r  rw   r  r   s   @rF   r  r    s#     !=2	 ' 'rE   r  c                   R   a  ] tR tRt o R
R ltR t]R 4       tR tR t	R t
R	tV tR# )LigatureSubsti  Nc                <    \        V R 4      '       g
   / V n        R# R# )	ligaturesN)r  r  r   s   &&rF   rx   LigatureSubst.populateDefaults  r  rE   c                *   / pV P                   ^8X  d`   \        VR,          4      pVR,          p\        V4      \        V4      8X  g   Q h\        V4       F  w  rgWV,          P                  W7&   K  	  MQ RT P                   ,          4       hW0n        V = R# )ra   r  LigatureSetrR  N)r  rS  r   r  Ligaturer  )rz   r  r   r  rT  ligSetsrn   rX  s   &&&     rF   r  LigatureSubst.postRead  s    	;;!/0DEE}-Gu:W---#E*!(!4!4	 + 9*T[[881"KrE   c                    \        V 4      ) # rw   r{  r   s   &rF   _getLigatureSortKey!LigatureSubst._getLigatureSortKey  s    6 JrE   c                   ^V n         \        V RR4      pVf	   / ;q n        V'       d   \        \	        \        V4      4      \        4      '       d   \        4       p\        VP                  4       V P                  R7       F`  p\        4       pVR,          Vn        \        V4      Vn        W$,          Vn        VP!                  V^ ,          . 4      P#                  V4       Kb  	  Tp\%        VP'                  4       4      p\)        V4       F  w  pw  rVP+                  V4      W3Wg&   K  	  VP-                  4        \/        4       p
V Uu. uF  q^,          NK  	  upV
n        . pV Uu. uF  qR,          NK  	  ppV F@  p	\3        4       p. ;qn        V	 F  pVP#                  V4       K  	  VP#                  V4       KB  	  ^V n        RV
RV/# u upi u upi )ra   r  Nr  r`   r  r  r  )r  r   r  r   nextiterr   r3  r  rx  r  r  	Componentr   	CompCountLigGlyphr  r   r^  r   r  r   r  r  r  r  r  )rz   r   r  newLigaturescompsligaturer   rn   r   r  rd  re  r  r  ligSetligsligs   &&               rF   r  LigatureSubst.preWrite  s   D+t4	)++IDi$95AA
  6L	 0d6N6NO#:%*2Y"%(Z"$-$4!''a"5<<XF P %IY__&'#,U#3A	y19AEH $4

j*/0%$1gg%0
(-.88.C ]F%''D?C  NN6"  !"C88 1 /s   	G(Gc           	        \        V P                  P                  4       4      pV F  w  rEVP                  R VR7       VP	                  4        V FJ  pVP                  RVP                  RP                  VP                  4      R7       VP	                  4        KL  	  VP                  R 4       VP	                  4        K  	  R# )r  r  r  r!  )r  r   N)
r  r  r   r   r   r   r  r%  r  r   )rz   r  r   r   r   r  r  s   &&&    rF   r  LigatureSubst.toXML2=  s    t~~++-."'I}I>##cllsxx?V $  !!#	 
 ]+ #(rE   c                z   \        V R R4      pVf	   / pWPn        VR,          p. pWuV&   V F  p\        V\        4      '       g   K  Vw  rp\	        4       p	VR,          V	n        VR,          p
V
'       d   V
P                  R4      M. V	n        \        V	P                  4      V	n	        VP                  V	4       K  	  R# )r  Nr  r   r!  )r   r  r   r   r  r  rK  r  r   r  r   )rz   r   r   r   r   r  r   r  r  r  r   s   &&&&&      rF   r   LigatureSubst.fromXMLJ  s    D+t4	I&N'N	#)Ggu--#* D*C >CL|,J5?J,,S1RCM.CMKK rE   )r  r  r  rw   )r0   r1   r2   r3   rx   r  r-  r  r  r  r   rD   r   r   s   @rF   r  r    s8          8'9R  rE   r  c                   B   a  ] tR tRt o R tR tRV 3R lR lltRtV tR# )	COLRi^  c                2   VP                  ^ R7      pV P                  4        FP  pVP                  R8w  d   VP                  VP                  4       K1  VP                  W2/ R7      WP                  &    M	  \        R4      h\        P                  ! WV4      # )r~   )offsetLayerRecordCount)	tableDictz$LayerRecordCount converter not found)	r  getConvertersr   advancerS  readAssertionErrorr   r   )rz   rB  r   	subReaderconvs   &&&  rF   r   COLR.decompile_  s     ''q'1	&&(Dyy..!!$//2 $		)R	 HF99 ) !!GHH""466rE   c                \    R V n         / V P                  CR\        V P                  R4      /C# )Nr  )r  r   r   rz   r   s   &&rF   r  COLR.preWritep  s8     !%
mm
t}}>P Q
 	
rE   c                $   < V ^8  d   QhRRRS[ /# )r  glyphSetr&   quantization)r  )r  r   s   "rF   __annotate__COLR.__annotate__z  s     ( ( (c (rE   c                   V P                   ^ 8X  d   R# / pV P                  P                   F4  p VP                  P	                  WV4      pTf   K&  YSTP                  &   K6  	  \        V R4      ;'       d    V P                  RJpV'       g   V'       d
   RV n
        R# R# V'       g!   \        4       V n
        ^V P                  n        W0P                  n        R#   \
         d#   p^ RIHp T! RTP                  : 24      ThRp?ii ; i)r~   N)
TTLibErrorz#Failed to compute COLR ClipBox for ClipList)VersionBaseGlyphListBaseGlyphPaintRecordPaintcomputeClipBox	ExceptionfontTools.ttLibr  	BaseGlyphr  r  r  clips)	rz   r  r  r  r  clipBoxer  hasClipLists	   &&&      rF   computeClipBoxesCOLR.computeClipBoxesz  s    <<1%%::C))224<P "'.cmm$ ; dJ/MMDMM4M $   (
'($"'MM%  6 9#--9JKs   CD&DD)r  r  Nr   )	r0   r1   r2   r3   r   r  r  rD   r   r   s   @rF   r  r  ^  s     7"
( ( (rE   r  c                   B   a a ] tR tRt o]R 4       tV 3R ltRtVtV ;t	# )
LookupListi  c                   V P                    Fr  pVP                   F_  p\        V4      P                  P	                  R 4      '       d     R# \        V4      P                  P	                  R4      '       g   K]    R# 	  Kt  	  \
        h)SubstGSUBPosGPOS)LookupSubTabler   r0   endswith
ValueError)rz   lsts   &  rF   tableLookupList.table  sb    Ajj8$$--g66!8$$--e44!	 !  rE   c           
       < V'       d$   R V9  g   \         VR ,          P                  9  d   \        SV `  W4      # VR ,          P                  \         ,          V P                  ,          pV P                  4        EFy  pVP                  '       d   \        WP                  . 4      p\        V4       F  w  rg\        V4      V9   d   \        V\        V4      ,          !  pVP                  p	VP                  '       d   VP                   RV	 2p	VP                  '       d   VP                  w  rpV	 RV RV
 RV R2p	VP                  V	4       VP                  4        VP!                  WWtP                  RV3.4       K  	  EK  VP"                  '       d*   \%        VP"                  R\'        V 4      4      '       g   EKF  \        WP                  R4      pVP!                  WWTP                  . 4       EK|  	  R# )Debgz: z in z (/)r  N)r   rm   superr  r  r  repeatr   r   r  strr   locationfeaturerG  r   xmlWriteauxevalvars)rz   r  r   	debugDatar  r   lookupIndexre  infotagscriptlanguager  r  s   &&&          rF   r  LookupList.toXML2  s   T!$DL,=,==7>)22L%%&;<TZZH	&&(D{{{ii4)25)9%K;'94.	#k:J0KL"mm999%)YYKr#"7C<<<8<5Fg%(EgYb(1"MC!))#.!))+MM!yyG[;Q:R *:  888D4d$D$D))T iuiiD1 )rE   r)   )
r0   r1   r2   r3   propertyr  r  rD   r   __classcell__)r  r   s   @@rF   r  r    s#       E  ErE   r  c                   &   a  ] tR tRt o R tRtV tR# )BaseGlyphRecordArrayi  c                x   a \        V P                  V3R  lR7      V n        V P                  P                  4       # )c                 :   < SP                  V P                  4      # rw   r   r  r  r   s   &rF   rY   /BaseGlyphRecordArray.preWrite.<locals>.<lambda>  s    $//#--2PrE   r  )r  BaseGlyphRecordr   r  r  s   &frF   r  BaseGlyphRecordArray.preWrite  s1    %  &P 
 }}!!##rE   )r1  NrH  r   s   @rF   r+  r+         $ $rE   r+  c                   &   a  ] tR tRt o R tRtV tR# )r  i  c                x   a \        V P                  V3R  lR7      V n        V P                  P                  4       # )c                 :   < SP                  V P                  4      # rw   r.  r/  s   &rF   rY   (BaseGlyphList.preWrite.<locals>.<lambda>  s    ts}}7UrE   r  )r  r  r   r  r  s   &frF   r  BaseGlyphList.preWrite  s1    $*%%+U%
! }}!!##rE   )r  NrH  r   s   @rF   r  r    r3  rE   r  c                   4   a  ] tR tRt o ^t^tR tR tRtV t	R# )ClipBoxFormati  c                    W P                   J # rw   Variablery   s   &rF   is_variableClipBoxFormat.is_variable  s    }}$$rE   c                    V P                   # rw   r<  ry   s   &rF   as_variableClipBoxFormat.as_variable  s    }}rE   r)   N)
r0   r1   r2   r3   Staticr=  r>  rA  rD   r   r   s   @rF   r:  r:    s     FH% rE   r:  c                   0   a  ] tR tRt o ]tR tR tRtV t	R# )ClipBoxi  c                   a  \         ;QJ d%    . V 3R  lS P                  4        4       F  NK  	  5# ! V 3R  lS P                  4        4       4      # )c              3   P   <"   T F  p\        SVP                  4      x  K  	  R # 5irw   )r   r   )r   r  rz   s   & rF   r   #ClipBox.as_tuple.<locals>.<genexpr>  s!     O:N$WT499--:Ns   #&)r   r  ry   s   frF   as_tupleClipBox.as_tuple  s7    uO$:L:L:NOuOuO$:L:L:NOOOrE   c                R    V P                   P                   V P                  4        2# rw   )r  r0   rI  ry   s   &rF   __repr__ClipBox.__repr__  s#    ..))*4==?*;<<rE   r)   N)
r0   r1   r2   r3   r:  
formatEnumrI  rL  rD   r   r   s   @rF   rE  rE    s     JP= =rE   rE  c                   L   a  ] tR tRt o R
R ltR tR tR tRR ltR t	R	t
V tR# )r  i  Nc                <    \        V R 4      '       g
   / V n        R# R# )r  N)r  r  r   s   &&rF   rx   ClipList.populateDefaults  s    tW%%DJ &rE   c           	        / pVP                  4       p\        VR ,          4       EF,  w  rVVP                  VP                  8  d/   \        P                  RVVP                  VP                  4       KO  . p. p\        VP                  VP                  ^,           4       FG  p	 WI,          p
Y9  d%   \        P                  ! TP                  4      Y:&   K6  TP                  T	4       KI  	  V'       d+   \        P                  RV\        V4      \        V4      4       V'       g   EK  \        P                  RV\        V4      \        V4      4       EK/  	  W0n        R#   \         d    TP                  T	4        K  i ; i)
ClipRecordzCinvalid ClipRecord[%i].StartGlyphID (%i) > EndGlyphID (%i); skippedzqClipRecord[%i] overlaps previous records; ignoring redefined clip boxes for the following glyph ID range: [%i-%i]z:ClipRecord[%i] range references missing glyph IDs: [%i-%i]N)r2  r  StartGlyphID
EndGlyphIDr  r  r  
IndexErrorr   r  rE  minr  r  )rz   r  r   r  r   rn   r  redefinedGlyphsmissingGlyphsr   r  s   &&&        rF   r  ClipList.postRead  sG   '')
 67FA#..0/$$NN  OM !1!13>>A3EF&/E %#'99S[[#9EL#**73 G 8 (( }S&&	A 8L 
/ " !((1s   #EE>=E>c                D   \        \        4      p/ pV P                  P                  4        F8  w  r4VP	                  4       pW,          P                  V4       WR9  g   K4  WBV&   K:  	  VP                  4        UUu/ uF  w  rV\        V4      W%,          bK  	  upp# u uppi rw   )r   r^  r  r   rI  r   	frozenset)rz   glyphsByClipuniqueClipsr   r   r  r  s   &      rF   groupsClipList.groups  s    "4("&**"2"2"4I""$C$$Y/%#*C 	 #5 DPCUCUCW
CWKCIf{//CW
 	
 
s   ;Bc                  a \        V R 4      '       g   / V n        / pVP                  4       oV P                  4       P	                  4        F  w  r4\        V3R lV 4       4      pV'       g   K$  V^ ,          pV..pVR,           F<  pW^,           8w  d+   VR,          P                  V4       VP                  V.4       TpK>  	  VR,          P                  V4       V F  w  rW3V9  g   Q hWBW3&   K  	  K  	  . p\        VP	                  4       4       F5  w  w  rp\        4       pWn        Wn	        WLn
        VP                  V4       K7  	  R\        V4      RV/pV# )r  c              3   F   <"   T F  qS9   g   K  SV,          x  K  	  R # 5irw   r)   )r   r   glyphMaps   & rF   r   $ClipList.preWrite.<locals>.<genexpr>,  s$      5;	H?T###Vs   !!r`   	ClipCountrS  r  )r  r  getReverseGlyphMapr_  r   r  r   rS  rT  rU  rE  r   )rz   r   clipBoxRangesr  r   r  r  r  r   r  r  clipRecordsrecordr  rc  s   &&            @rF   r  ClipList.preWrite&  s[   tW%%DJ**,#{{}224OF 5; H A;DfXF#B<<Qh&2J%%d+MM7),	 (
 2Jd#$
|=888.5ul+ %  5$ %+M,?,?,A%B!LU'\F"' #$Nv& &C [)+
 rE   c                J   V'       d   TMV P                   P                  pVf   . p\        V R4      '       d   VP                  RV P                  34       VP                  WS4       VP                  4        \        V P                  4       P                  4       R R7       F  w  rgVP                  R4       VP                  4        \        V4       F&  pVP                  RVR7       VP                  4        K(  	  VP                  RRVP                  3.4       VP                  4        VP                  W4       VP                  R4       VP                  4        VP                  R4       VP                  4        K  	  VP                  V4       VP                  4        R # )Nr  c                 &    \        V ^ ,          4      # )r~   )rW  )re  s   &rF   rY    ClipList.toXML.<locals>.<lambda>T  s    CQLrE   r  Clipr  r"  rE  )r  r0   r  r   r  r   r   r  r_  r   r   r  r   )	rz   r  r   r   r   	tableNamer  r   r   s	   &&&&&    rF   r   ClipList.toXMLJ  sP    Ddnn&=&=	=E4""LL(DKK019,%KKM!'@ 
OF v&#F^	##G9#=!!# , yHgnn+E*FGNN9+Y'V$ 
 	#rE   c                   \        V R R4      pVf
   / ;V n        pVR8X  g   Q h. pRpV F  p\        V\        4      '       g   K  Vw  rpVR8X  d   VP	                  VR,          4       KA  VR8X  g   KJ  \        4       p\        VR,          4      Vn        V F2  p\        V\        4      '       g   K  Vw  rpVP                  WW44       K4  	  K  	  V'       d   V F  p	WuV	&   K	  	  R# R# )r  Nrn  r  r   rE  r  )	r   r  r   r   r   rE  r   r  r   )
rz   r   r   r   r   r  r  r   elemr   s
   &&&&&     rF   r   ClipList.fromXMLe  s    gt,=!##DJv~~DdE**#' DweGn-"!)!)%/!:#D%dE22 +/(DOOD?	 $  #	#*i  $ rE   )r  rw   r  )r0   r1   r2   r3   rx   r  r_  r  r   r   rD   r   r   s   @rF   r  r    s*     )V

"H6+ +rE   r  c                   "    ] tR tRt^ t^t^tRtR# )
ExtendModei  r)   N)r0   r1   r2   r3   PADREPEATREFLECTrD   r)   rE   rF   ru  ru    s    
CFGrE   ru  c                       ] tR tRt^ t^t^t^t^t^t	^t
^t^t^	t^
t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^tRt R# )CompositeModei  r)   N)!r0   r1   r2   r3   CLEARSRCDESTSRC_OVER	DEST_OVERSRC_INDEST_INSRC_OUTDEST_OUTSRC_ATOP	DEST_ATOPXORPLUSSCREENOVERLAYDARKENLIGHTENCOLOR_DODGE
COLOR_BURN
HARD_LIGHT
SOFT_LIGHT
DIFFERENCE	EXCLUSIONMULTIPLYHSL_HUEHSL_SATURATION	HSL_COLORHSL_LUMINOSITYrD   r)   rE   rF   rz  rz    s    E
CDHIFGGHHI
CDFGFGKJJJJIHGNINrE   rz  c                      a  ] tR tRt o ^t^t^t^t^t^t	^t
^t^	t^
t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t ^t!^t"^ t#R t$R t%Rt&V t'R# )PaintFormati  c                8    V P                   P                  R 4      # )PaintVar)r   
startswithry   s   &rF   r>  PaintFormat.is_variable  s    yy##J//rE   c                    V P                  4       '       d   V #  \        P                  R V P                  R,           2,          #   \         d     R# i ; i)r  :   NNN)r>  r  __members__r   KeyErrorry   s   &rF   rA  PaintFormat.as_variable  sM    K	**Xdiim_+EFF 		s   *A AAr)   N)(r0   r1   r2   r3   PaintColrLayers
PaintSolidPaintVarSolidPaintLinearGradientPaintVarLinearGradientPaintRadialGradientPaintVarRadialGradientPaintSweepGradientPaintVarSweepGradient
PaintGlyphPaintColrGlyphPaintTransformPaintVarTransformPaintTranslatePaintVarTranslate
PaintScalePaintVarScalePaintScaleAroundCenterPaintVarScaleAroundCenterPaintScaleUniformPaintVarScaleUniformPaintScaleUniformAroundCenter PaintVarScaleUniformAroundCenterPaintRotatePaintVarRotatePaintRotateAroundCenterPaintVarRotateAroundCenter	PaintSkewPaintVarSkewPaintSkewAroundCenterPaintVarSkewAroundCenterPaintCompositer>  rA  rD   r   r   s   @rF   r  r    s     OJMJNNNJM "$&!')$KN !#IL!N0 rE   r  c                      a  ] tR tRt o ]tR tRR ltV 3R lR ltV 3R lR lt	V 3R	 lR
 lt
V 3R lR ltRV 3R lR lltRtV tR# )r  i  c                     V P                  V P                  4      P                  #   \         d    \	        R T P                   24      hi ; i)zUnknown Paint format: )rN  r  r   r  NotImplementedErrorry   s   &rF   getFormatNamePaint.getFormatName  sI    	N??4;;/444 	N%(>t{{m&LMM	Ns	   $' $ANc                p   V'       d   TMV P                   P                  pVf   . pVP                  RV P                  34       VP	                  WS4       VP                  V P                  4       4       VP                  4        V P                  W4       VP                  V4       VP                  4        R # )Nr  )
r  r0   r   r  r   rG  r  r   r  r   )rz   r  r   r   r   ro  s   &&&&& rF   r   Paint.toXML  s     Ddnn&=&=	=Eh,-9,$,,./I$#rE   c                J   < V ^8  d   QhRS[ RS[S[P                  ,          /# )r  colrreturn)r  r"   r   SubTableEntry)r  r   s   "rF   r  Paint.__annotate__  s*     K Kt K9P9P0Q KrE   c              #  `  "   V P                   \        P                  8X  dj   . pVP                  e   VP                  P                  pR \        W P                  V P                  V P                  ,            4       4        R j  xL
  R # V P                   \        P                  8X  dy   VP                  P                   FE  pVP                  V P                  8X  g   K   \        P                  ! RVP                  R7      x   R # 	  \        V P                  : R24      hV P!                  4        Fs  pVP"                  f   K  \%        VP"                  \'        V 4      4      '       g   K:  \)        WP*                  4      p\        P                  ! VP*                  VR7      x  Ku  	  R #  EL'5i)Nc              3   V   "   T F  w  r\         P                  ! R W!R7      x  K!  	  R# 5i)Layers)r   r   r  N)r   r  )r   rn   rX   s   &  rF   r   +Paint.iterPaintSubTables.<locals>.<genexpr>  s-      DA ''XQHHs   ')r  )r   r   z not in colr.BaseGlyphList)r  r  r  	LayerListr  r  FirstLayerIndex	NumLayersr  r  r  r  r  r   r  r  r  
tableClass
issubclassr   r   r   )rz   r  layersri  r  r   s   &&    rF   iterPaintSubTablesPaint.iterPaintSubTables  s=    ;;+555F~~)--%//$2F2F2WX   ;;+444,,AA##tzz1#11{&,,WW B
 $**/IJKK&&(D*z$//4PT:/V/Vii0--499EJJ )!s'   BF.F+AF. A F."F.,A F.c                .   < V ^8  d   QhRS[ R,          /# )r  r  r  )r#   )r  r   s   "rF   r  r    s     @ @4= @rE   c                `    V P                  V4       Uu. uF  q"P                  NK  	  up# u upi rw   )r  r   )rz   r  ps   && rF   getChildrenPaint.getChildren  s)    !%!8!8!>?!>A!>???s   +c                    < V ^8  d   QhRS[ /# )r  r  )r  )r  r   s   "rF   r  r    s     	 	T 	rE   c                   a \        V4      '       g   \        R4      h\        V V3R lR7       F  pVR,          P                  pV! V4       K   	  R# )zEDepth-first traversal of graph rooted at self, callback on each node.zcallback must be callablec                 &   < V P                  S4      # rw   r  paintr  s   &rF   rY    Paint.traverse.<locals>.<lambda>      %2J2J42PrE   iter_subtables_fnNr  )callable	TypeErrorr	   r   )rz   r  callbackpathr  s   &f&  rF   traversePaint.traverse  sE    !!788"$P
D HNNEUO	
rE   c                    < V ^8  d   QhRS[ /# )r  r  )r   )r  r   s   "rF   r  r    s     ) )i )rE   c                	   V P                   \        P                  8X  dY   V P                  p\        VP                  VP
                  VP                  VP                  VP                  VP                  4      # V P                   \        P                  8X  d,   \        P                  ! V P                  V P                  4      # V P                   \        P                  8X  d,   \        P                  ! V P                  V P                   4      # V P                   \        P"                  8X  dv   \        P                  ! V P$                  V P&                  4      P                  V P                  V P                   4      P                  V P$                  ) V P&                  ) 4      # V P                   \        P(                  8X  d!   \        P                  ! V P                  4      # V P                   \        P*                  8X  dk   \        P                  ! V P$                  V P&                  4      P                  V P                  4      P                  V P$                  ) V P&                  ) 4      # V P                   \        P,                  8X  d*   \        P.                  ! \1        V P2                  4      4      # V P                   \        P4                  8X  dt   \        P                  ! V P$                  V P&                  4      P/                  \1        V P2                  4      4      P                  V P$                  ) V P&                  ) 4      # V P                   \        P6                  8X  d?   \        P8                  ! \1        V P:                  ) 4      \1        V P<                  4      4      # V P                   \        P>                  8X  d   \        P                  ! V P$                  V P&                  4      P9                  \1        V P:                  ) 4      \1        V P<                  4      4      P                  V P$                  ) V P&                  ) 4      # \        V P                   4      PA                  4       '       d   \C        R V P                    24      h\        # )zVariable Paints not supported: )"r  r  r  r   xxyxxyyydxdyr  r   	translater  r   rK   rL   r  centerXcenterYr  r  r  rotater   angler  r  skew
xSkewAngle
ySkewAngler  r>  r  )rz   rN  s   & rF   getTransformPaint.getTransform  s   ;;+444AQTT144qttQTT144@@[[K666%%dggtww77[[K222>>$++t{{;;[[K>>>""4<<>t{{DKK0DLL=4<<-8
 [[K999>>$**--[[KEEE""4<<>tzz"DLL=4<<-8
 [[K333??74::#677[[K???""4<<>

+,DLL=4<<-8
 [[K111==$//)9!:GDOO<TUU[[K===""4<<>gt./1IJDLL=4<<-8
 t{{#//11%(G}&UVVrE   c          	      @   < V ^8  d   QhRS[ RRRS[RS[S[,          /# )r  r  r  r&   r  r  )r  r  r$   rE  )r  r   s   "rF   r  r  >  s2      $1AD	'	rE   c                $  a \        V4      p\        V V3R  lR7       F  pVR,          P                  pVP                  \        P
                  8X  g   K7  \        \        P                  R V 4       \        4      pW&P                  ,          P                  \        WG4      4       K  	  VP                  f   R# \        4       p\        \         P"                  4      Vn        \%        VP                  V4      w  Vn        Vn        Vn        Vn        V# )c                 &   < V P                  S4      # rw   r  r  s   &rF   rY   &Paint.computeClipBox.<locals>.<lambda>C  r  rE   r  c              3   T   "   T F  qP                   P                  4       x  K   	  R # 5irw   )r   r  )r   r  s   & rF   r   'Paint.computeClipBox.<locals>.<genexpr>I  s     <tXX**,,ts   &(Nr  )r   r	   r   r  r  r  r   r   r   r   r  drawr   boundsrE  r  r:  rC  r
   xMinyMinxMaxyMax)	rz   r  r  r  penr  r  transformationcbs	   &f&&     rF   r  Paint.computeClipBox>  s     x("$P
D HNNE||{555!'''<t<"
 %**<+LM
 ::Y,,-	-9#**l-S*"'27	rE   r)   r  r   )r0   r1   r2   r3   r  rN  r  r   r  r  r  r  r  rD   r   r   s   @rF   r  r    sQ     JN
K K6@ @	 	) )V  rE   r  	MarkArrayLangSysAnchorDeviceAxisMinMax	BaseCoordJstfLangSysJstfGSUBModListJstfGPOSModListJstfMaxMathKernMathGlyphConstructionc                   ^ pVP                   pVP                  f
   V^,
          pV^ 8  d   V# VP                  R8X  d   ^pMVP                  R8X  d   ^	pWP                  ,          P                  P                  P
                  pWS,          pVP                  ^ ,          P                  P                  X8X  d   V^,
          pV^ 8  d   V# WS,          pKH  \        V\        V4      4       F  pWS,          pVP                  V8w  g   K  WFn        \        VP                  4       FE  w  rx\        VP                  ,          V,          p	V	! 4       p
^V
n        Wn        WP                  V&   KG  	  K  	  ^pV# )a  Either the offset from the LookupList to a lookup overflowed, or
an offset from a lookup to a subtable overflowed.

The table layout is::

  GPSO/GUSB
          Script List
          Feature List
          LookUpList
                  Lookup[0] and contents
                          SubTable offset list
                                  SubTable[0] and contents
                                  ...
                                  SubTable[n] and contents
                  ...
                  Lookup[n] and contents
                          SubTable offset list
                                  SubTable[0] and contents
                                  ...
                                  SubTable[n] and contents

If the offset to a lookup overflowed (SubTableIndex is None)
        we must promote the *previous* lookup to an Extension type.

If the offset from a lookup to subtable overflowed, then we must promote it
        to an Extension Lookup type.
r	  r  )LookupListIndexSubTableIndex	tableTyper  r  r  r  r  
LookupTyper  r   r  lookupTypesr  ExtSubTable)ttfoverflowRecordokr"  extTypelookupslookupsisubTableextSubTableClassextSubTables   &&         rF   fixLookupOverFlowsr/    sG   8 
B 00K##+!AoQ	6)		!	!V	+**+11<<CCG!F
//!

&
&
1
1W
<!Ao?I%[#g,7%' ' )&// :#.~/G/G#H#Q .0%&"*2'&1# !;	 8 
BIrE   c                    ^p\        V P                  P                  4       4      p\        V4      pVP                  R9   d   V^,          pM$VP                  R8X  d   VP
                  ^,
          p/ Vn        \        XV4       F7  pWG,          pV^ ,          p	V^,          VP                  V	&   V P                  V	 K9  	  V# )ra   rt  r  r  )r  r   r   r   itemName	itemIndexr  )
oldSubTablenewSubTabler&  r'  
oldMappingoldLennewLenrn   re  r  s
   &&&       rF   splitMultipleSubstr9    s    	
B++1134J_F"== 1		 	 J	.  ))A-K66"}1g#'7C $	 # IrE   c                    ^p\        V R4      '       d   V P                  Vn        \        V P                  P	                  4       4      p\        V4      pVP                  R9   d   V^,          pM$VP                  R8X  d   VP                  ^,
          p/ Vn        \        XV4       F7  pWG,          pV^ ,          p	V^,          VP                  V	&   V P                  V	 K9  	  V# )ra   r  r  r1  )	r  r  r  r  r   r   r2  r3  r  )
r4  r5  r&  r'  oldAltsr7  r8  rn   re  r  s
   &&&       rF   splitAlternateSubstr<  
	  s    	
B{.//'2'C'C$[++1134G\F"== 1		 	 N	2  ))A-K66"z1g&*1gs#""3'	 # IrE   c                    ^p\        V P                  P                  4       4      p\        V4      pVP                  R9   d   V^,          pM$VP                  R8X  d   VP
                  ^,
          p/ Vn        \        XV4       F7  pWG,          pV^ ,          p	V^,          VP                  V	&   V P                  V	 K9  	  V# )ra   r  r1  )r  r  r   r   r2  r3  r  )
r4  r5  r&  r'  oldLigsr7  r8  rn   re  r  s
   &&&       rF   splitLigatureSubstr?  '	  s    	
B[**0023G\F"== 1		 	 M	1  ))A-K66"z1g%)!Wc"!!#&	 # IrE   c           	      R  a T pR pV P                   Vn         V P                   ^8X  Ed
   \        V P                  4      ^8  d   R F  p\        W\	        W4      4       K  	  V P
                  P                  4       Vn        V P
                  P                  pV P                  p\        V P                  4      ^,          oVRS V P
                  n        VRS V n        VSR VP
                  n        VSR Vn        \        V P                  4      V n        \        VP                  4      Vn        RpV# V P                   ^8X  EdN   \        V P                  4      ^8  Ed3   \        V R4      '       g,   \        V P                  ^ ,          P                  4      V n        R F  p\        W\	        W4      4       K  	  RV n        V P
                  P                  4       Vn        V P                  P                  4       Vn        V P
                  P                  pV P                  P                  pV P                  p\        V P                  4      ^,          o\!        V3R lVP#                  4        4       4      p	V U
u. uF  qV	9  g   K  V
NK  	  up
V P
                  n        VP#                  4        UUu/ uF  w  rVS8  g   K  WbK  	  uppV P                  n        VRS V n	        V U
u. uF  qV	9   g   K  V
NK  	  up
VP
                  n        VP#                  4        UUu/ uF  w  rVS8  g   K  WS,
          bK  	  uppVP                  n        VSR Vn	        \        V P                  4      V n        \        VP                  4      Vn        RpV# u up
i u uppi u up
i u uppi )FNTClass2Countc              3   >   <"   T F  w  rVS8  g   K  Vx  K  	  R # 5irw   r)   )r   krX   oldCounts   &  rF   r   splitPairPos.<locals>.<genexpr>r	  s     I&7da1=&7s   
)ValueFormat1ValueFormat2)rA  	ClassDef2rF  rG  )r  r   PairSetr   r   r  r  r  PairSetCountClass1Recordr  Class2RecordrA  	DontShare	ClassDef1r  r  r   Class1Count)r4  r5  r&  r  r'  r   coverager  r  	newGlyphsr  rC  rX   rD  s   &&&          @rF   splitPairPosrR  A	  s5   	B	B$++KQ3{':':#;a#?2DKw{'AB 3
  +33==?''..%%{**+q0&.y&9#%ix0&.xy&9#%hi0#&{':':#; #&{':':#; T IQ 
		q	 S)A)A%BQ%F{M22&)+*B*B1*E*R*R&SK#NDKw{'AB O !%  +33==? + 5 5 ? ? A''..))33	**{//0A5Iioo&7II	2:&Q(Qy>Pqq(&Q#&__.+
.TQ!h,DAD.+
' $+9H#5 2:&M(Q9nqq(&M#*3//*;+
*;$!q8|AH*;+
' $+89#5 "%k&>&>"?"%k&>&>"?I# 'R+

 'N+
s0   :NN2NN)N6N!N#1N#c                 r   V P                   pV^8  d   R# V^,          pW4,
          p. . rv. . r\        V P                  P                  V P                  P
                  4       Fu  w  rVP                  V8  d%   VP                  V
4       VP                  V4       K:  V;P                  V,          un        VP                  V
4       V	P                  V4       Kw  	  . . rV P                  P                   Fm  pVP                  4       VP                  4       ppVP                  RV Vn        VP                  VR Vn        VP                  V4       VP                  V4       Ko  	  V P                  Vn        W`P                  n        V P                  P                  4       Vn        WP                  n        V P                  Vn        W@n         WQn         WpP                  n        V P                  P                  4       Vn        WP                  n        \        V4      V P                  n        \        V	4      VP                  n        WP                  n	        V P                  P                  4       Vn        WP                  n	        \        V4      V P                  n        \        V4      VP                  n        R# )r  FNT)
ClassCountr4  MarkCoverager  r  
MarkRecordr  r   	BaseArray
BaseRecordr  
BaseAnchorr  BaseCoverager   	MarkCount	BaseCount)r4  r5  r&  
classCountoldClassCountnewClassCountoldMarkCoverageoldMarkRecordsnewMarkCoveragenewMarkRecordsr   
markRecordoldBaseRecordsnewBaseRecordsr  oldBaseRecordnewBaseRecords   &&&              rF   splitMarkBasePosri  	  s<   ''JA~!OM.M&("^&("^!$  '')>)>)I)I"	 m+""9-!!*--""9-!!*-" &(N$$//'*}}}#&>>.=#A #&>>-.#A m,m, 0 %++K&5#*77AACK&5#  +77K**'5$'11;;=K'5$&).&9K#&).&9K#'5$'11;;=K'5$&).&9K#&).&9K#rE   r	  r  c                J   WP                   ,          P                  pVP                  P                  VP                  ,          pVP
                  pVP                  V,          p\        VR4      '       g
   RVn        R# \        VR4      '       d   VP                  P                  P                  pTpVP                  p\        VP                   ,          VP                  P                  ,          pV! 4       p	VP                  V	n        T	p
\        VP                   ,          V,          pV! 4       pWn	        M=VP                  P                  p\        VP                   ,          V,          pV! 4       pTp
\        VR4      '       d   VP                  ^,           Vn         \        VP                   ,          V,          pT! Y\T4      pT'       d$   TP                  P'                  T^,           T
4       T#   \          d&    \"        P%                  RTP                   T4        R# i ; i)zb
An offset has overflowed within a sub-table. We need to divide this subtable into smaller parts.
rM  Tr$  SubTableCountz)Don't know how to split %s lookup type %sF)r!  r  r  r  r  r   r  r  rM  r$  r  r"  r#  r  rk  
splitTabler  r  errorr&  )r%  r&  r  r*  subIndexsubtablesubTableTyper.  newExtSubTableClassnewExtSubTabletoInsertnewSubTableClassr5  	splitFuncr'  s   &&             rF   fixSubTableOverFlowsrv  	  s    (()//E$$^%C%CDF++Hx(H 8[))!x''  ++55@@**).*B*BC!!,,
 -. + 2 2!&~'?'?@N&(%0"))44&~'?'?@N&(v''%33a7~778F	 
8.	9B	x!|X6I  		7$$	

 s   G2 2,H"!H"c                  t   ^ RI p ^RIHp V P                  R4      p\        4       pV Fw  w  rE\        pVP                  V4      pV'       d-   VP                  ^4      pV^ ,          ^ ,          p\        V4      pWC9  g   KX  \        WF3/ 4      p	VR9   d   RV	n	        WV&   Ky  	  V Fc  w  rJVP                  R4      '       g   K  \        V4      ^8  g   K0  VR,          V9   g   K@  W4,          pW4R,          ,          pWn        Wn        Ke  	  \        P                  4        F  w  rW=,          pV F  pWV&   K	  	  K  	  R^\         ^\"        ^\$        ^\&        ^\(        ^\*        ^\,        ^\.        /R^\0        ^\2        ^\4        ^\6        ^\8        ^\:        ^\<        ^\>        ^	\@        /	R	^\B        /R
^ \D        ^\F        ^\H        ^\B        ^\J        //s&\L        R,          \L        R&   \L        PO                  4        F$  pVP                  4        F  w  pp	VV	n(        K  	  K&  	  R\R        /s*\W        ^^4       F  p\X        \T        RV,          &   K  	  \W        ^^d4       F  p\Z        \T        RV,          &   K  	  ^RI.H/p V F  w  rEVP                  V4      pV'       dz   VPa                  4       w  pp\c        V4      pW4,          p	\e        V	R4      '       g   / V	n3        / V	n4        V! VR,          V4      w  ppVV	Pf                  V&   VV	Ph                  V&   K  W4,          p	V! WS4      w  V	n3        V	n4        K  	  R# )r~   N)otDataz([A-Za-z0-9]+)Format(\d+)$r	  r  TVar:   NNmortmorxJSTFsizezss%02dzcv%02d)buildConverters
convertersr`   )r	  r  )5rerx  r   globalsr   matchgroupr   r   rM  r  r   	NoVarTypeVarType_equivalentsr   rJ  rp  r  r  ContextSubstChainContextSubstExtensionSubstReverseChainSingleSubst	SinglePosPairPos
CursivePosMarkBasePos
MarkLigPosMarkMarkPos
ContextPosChainContextPosExtensionPosNoncontextualMorphRearrangementMorphContextualMorphLigatureMorphInsertionMorphr#  r   r"  r  r  r  r  r  otConvertersr  r_  r  r  r  convertersByName)r  rx  	formatPat	namespacer   r  	baseClassm
formatTyper  r   varType	noVarTypebaser  r  
lookupEnumenumrn   r  r  r  r  s                          rF   _buildClassesr  
  s   

89I	I 	OOD!771:D q!J8DI t\2.C'' $!dO! & ??5!!c$i!mRI8MoG!r(+I ) '  #((*
C!cN  + 	{}~}| ~&	
 	ywz{z{z|

 	!
 	!}!~
3!KD &f-K!((*
#))+ID#!CN , + 	! 1f*C(Q,' 1f*H(Q,'  .OOD!88:LD&[F/C3--!#')$+:59i+P(J(%/CNN6"+;C  ( /C3B53T0CNC0! rE   c                 &    V f   . # V P                   # rw   )r  )rP  s   &rF   rS  rS  
  s    	rE   )r   r   r   r   iL)
Mark1Array)DefaultLangSys)rU  rZ  LigatureCoverageMark1CoverageMark2CoverageBacktrackCoverageInputCoverageLookAheadCoverageVertGlyphCoverageHorizGlyphCoverageTopAccentCoverageExtendedShapeCoverageMathKernCoverage)rN  rH  BacktrackClassDefInputClassDefLookAheadClassDefGlyphClassDefMarkAttachClassDef)EntryAnchor
ExitAnchorrY  LigatureAnchorMark2Anchor
MarkAnchor)
XPlaDevice
YPlaDevice
XAdvDevice
YAdvDeviceXDeviceTableYDeviceTableDeviceTable)	HorizAxisVertAxis)DefaultMinMax)MinCoordMaxCoord)DefJstfLangSys)ShrinkageEnableGSUBShrinkageDisableGSUBExtensionEnableGSUBExtensionDisableGSUB)ShrinkageEnableGPOSShrinkageDisableGPOSExtensionEnableGPOSExtensionDisableGPOS)ShrinkageJstfMaxExtensionJstfMax)TopRightMathKernTopLeftMathKernBottomRightMathKernBottomLeftMathKern)VertGlyphConstructionHorizGlyphConstruction)__doc__r  r  r   	functoolsr   mathr   	itertoolscollectionsr   r   r  r   %fontTools.ttLib.tables.TupleVariationr   !fontTools.ttLib.tables.otTraverser	   fontTools.misc.arrayToolsr
   fontTools.misc.roundToolsr   fontTools.misc.transformr   r   r   fontTools.misc.textToolsr   r   r   fontTools.misc.vectorr   fontTools.pens.boundsPenr   fontTools.pens.transformPenr   otBaser   r   r   r   r   fontTools.misc.fixedToolsr   r   r   r   r   r   r   r    fontTools.feaLib.lookupDebugInfor   r   loggingrU   arraysysr    typingr!   r"   r#   r$   r%   fontTools.ttLib.ttGlyphSetr&   	getLoggerr0   r  r(   rG   r8   r9   r:   r<   r=   rA   rB   r>   r?   r   r   r   rp   rs   ru   r   objectr  r  r  r/  rV  rf  rl  r  r  r  r  r  r  r   r  r.  rA  rJ  rp  r  r  r  r  r  r+  r  r:  rE  r  ru  rz  r  r  r  r/  r9  r<  r?  rR  ri  rl  rv  r  rS  r)   rE   rF   <module>r     s        / / @ < 2 - M M = = ( 5 4   T    
  ? ?6 !* *6 '7  +**Aq! +**Aq! )*;*I*I2sTUV'(9(F(FAqQ'(9(F(FAqQ&'8'D'Db$PQR&'8'D'Db#qQ)*;*J*JAqRST)*;*J*JAqRST $ %%)%	 **2*		$.>"vB vBr. .D"F "v 
# #*R0y R0j>@I >@B! !J) JZD#9 D#NTI T	 		 		] 	U&' U&t   IP7@ IPX4?	 4?n
I 
$M,* M,`H, HVf8' f8RB'- B'Jv, vr6(9 6(r+E +E\$9 $$I $G =.w7 =R+/8 R+j G >+' +\@,W5 @T "             &        PYMj;|4:4DN9z 					 	<		

25vkU^ rE   