
    jkes                     $    d gZ d Zd ZddZd Zy)
maxCtxFontc           	          d}dD ]g  }|| vr| |   j                   }|j                  s$|j                  j                  D ]+  }|j                  D ]  }t	        |||j
                  |      } - i |S )z4Calculate the usMaxContext value for an entire font.    )GSUBGPOS)table
LookupListLookupSubTablemaxCtxSubtable
LookupType)fontmaxCtxtagr   lookupsts         A/usr/lib/python3/dist-packages/fontTools/otlLib/maxContextCalc.pyr   r      s     F Ld?S	&&-- 	LFoo L'V5F5FKL	LL M    c                 \   |dk(  r|dk(  s	|dk(  r|dv rt        | d      } | S |dk(  r|dk(  rt        | d      } | S |dk(  rC|dk(  r>|j                  j                         D ]  }|D ]  }t        | |j                        }  ! | S |dk(  r|dk(  s
|dk(  r!|dk(  rt	        | ||dk(  rd	      } | S d
      } | S |dk(  r|dk(  s
|dk(  r|dk(  rt	        | ||dk(  rd	nd
d      } | S |dk(  r|dk(  s
|dk(  r)|dk(  r$t        | ||j                  |j                        } | S |dk(  r|dk(  rt        | |d      } | S )z[Calculate usMaxContext based on a single lookup table (and an existing
    max value).
    r      r   )r         r            PosSub      Chain	   Reverse)	max	ligaturesvalues	CompCountmaxCtxContextualSubtabler   ExtensionLookupTypeExtSubTablemaxCtxContextualRule)r   r   
lookupTyper   r#   ligatures         r   r   r      s    	v*/v*	1VQ< M7 
:?VQ4 M/ 
:?,,. 	9I% 9VX%7%789	9, M# -J!O:QR?)&"sf}eX  M! SXX  M -J!O:QR?)BE7
 M -J!O:QR?R-C-CR^^T M 
:?%fb)<Mr   c                 ~   |j                   dk(  rAt        |||d      D ]+  }|t        |||d      D ]  }|t        | ||      }  - | S |j                   dk(  rAt        |||d      D ]+  }|t        |||d      D ]  }|t        | ||      }  - | S |j                   dk(  rt        | ||      } | S )z>Calculate usMaxContext based on a contextual feature subtable.r   RuleSetRuler   ClassSet	ClassRuler   )Formatgetattrr)   )r   r   ruleTypechainrulesetrules         r   r&   r&   >   s     
yyA~rE8#DE 	CGuh)GH C<-fdEBC	C( M 
arUH#EF 	CGE8)LM C<-fdEBC	C M 
a%fb%8Mr   c                     |st        | |j                        S |dk(  r#t        | |j                  |j                  z         S t        | |j                  |j                  z         S )z:Calculate usMaxContext based on a contextual feature rule.r!   )r"   
GlyphCountLookAheadGlyphCountInputGlyphCount)r   r   r4   s      r   r)   r)   Y   sZ     62==))	)	62==2+A+AABBvr))B,B,BBCCr   N) )__all__r   r   r&   r)    r   r   <module>r>      s"   . 'T6Dr   