
    ]Mhg                     &    d gZ d Zd ZddZd ZdS )
maxCtxFontc           	          d}dD ]L}|| vr| |         j         }|j        s|j        j        D ]#}|j        D ]}t	          |||j        |          }$M|S )z4Calculate the usMaxContext value for an entire font.    )GSUBGPOS)table
LookupListLookupSubTablemaxCtxSubtable
LookupType)fontmaxCtxtagr   lookupsts         _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/otlLib/maxContextCalc.pyr   r      s     F L Ld??S	 	&- 	L 	LFo L L'V5FKKL	L M    c                    |dk    r|dk    s
|dk    r|dv rt          | d          } n|dk    r|dk    rt          | d          } n|dk    r=|dk    r7|j                                        D ]}|D ]}t          | |j                  } n|dk    r|dk    s|dk    r |dk    rt	          | ||dk    rd	nd
          } n|dk    r|dk    s|dk    r!|dk    rt	          | ||dk    rd	nd
d          } nR|dk    r|dk    s|dk    r#|dk    rt          | ||j        |j                  } n|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1VQ 
:??VQ 
:??,,.. 	9 	9I% 9 9VX%7889	9
 --J!OO:QR??)&"sf}}eeRWXX --J!OO:QR??)BE7
 

 --J!OO:QR??R-CR^TT 
:??%fb)<<Mr    c                    |j         dk    rHt          |||d          D ]1}|t          |||d          D ]}|t          | ||          } 2no|j         dk    rHt          |||d          D ]1}|t          |||d          D ]}|t          | ||          } 2n|j         dk    rt          | ||          } | S )	z>Calculate usMaxContext based on a contextual feature subtable.r   RuleSetNRuler   ClassSet	ClassRuler   )Formatgetattrr)   )r   r   ruleTypechainrulesetrules         r   r&   r&   >   s5    
yA~~rEE888#DEE 	C 	CGuuhhh)GHH C C<-fdEBBC	C 
arUUHHH#EFF 	C 	CGEE888)LMM C C<-fdEBBC	C 
a%fb%88Mr   c                     |st          | |j                  S |dk    rt          | d|j        z             S t          | |j        |j        z             S )z:Calculate usMaxContext based on a contextual feature rule.r!   r   )r"   
GlyphCountLookAheadGlyphCountInputGlyphCount)r   r   r5   s      r   r)   r)   Y   s\      762=)))	)		61r55666vr)B,BBCCCr   N)r,   )__all__r   r   r&   r)    r   r   <module>r>      s]   .   ' ' 'T   6D D D D Dr   