
    hg                     &    S /r S rS rSS jrS rg)
maxCtxFontc           	          SnS Hr  nX ;  a  M
  X   R                   nUR                  (       d  M+  UR                  R                   H-  nUR                   H  n[	        XUR
                  U5      nM     M/     Mt     U$ )z4Calculate the usMaxContext value for an entire font.    )GSUBGPOS)table
LookupListLookupSubTablemaxCtxSubtable
LookupType)fontmaxCtxtagr   lookupsts         Q/var/www/html/env/lib/python3.13/site-packages/fontTools/otlLib/maxContextCalc.pyr   r      sq     F?	&&--Foo'V5F5FK & .   M    c                    US:X  a  US:X  d  US:X  a  US;   a  [        U S5      n U $ US:X  a  US:X  a  [        U S5      n U $ US:X  aG  US:X  aA  UR                  R                  5        H!  nU H  n[        XR                  5      n M     M#     U $ US:X  a  US:X  d  US:X  a  US:X  a  [	        XUS:X  a  S	OS
5      n U $ US:X  a  US:X  d  US:X  a  US:X  a  [	        XUS:X  a  S	OS
S5      n U $ US:X  a  US:X  d  US:X  a)  US:X  a#  [        XUR                  UR                  5      n U $ US:X  a  US:X  a  [        XS5      n U $ )zSCalculate 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      sh    	v*/v*	1VQ< M7 
:?VQ4 M/ 
:?,,.I%V%7%78 & /, M# -J!O:QR?)&sf}eRWX  M -J!O:QR?)E7
 M -J!O:QR?R-C-CR^^T M 
:?%f)<Mr   c                    UR                   S:X  aJ  [        X< U< S35       H2  nUc  M  [        XC< U< S35       H  nUc  M  [        XU5      n M     M4     U $ UR                   S:X  aJ  [        X< U< S35       H2  nUc  M  [        XC< U< S35       H  nUc  M  [        XU5      n M     M4     U $ UR                   S:X  a  [        XU5      n U $ )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EGuh)GH<-fEB I F( M 
arUH#EFGE8)LM<-fEB N G M 
a%f%8Mr   c                     U(       d  [        XR                  5      $ US:X  a  [        U SUR                  -   5      $ [        XR                  UR                  -   5      $ )z:Calculate usMaxContext based on a contextual feature rule.r!   r   )r"   
GlyphCountLookAheadGlyphCountInputGlyphCount)r   r   r4   s      r   r)   r)   Y   sR     6==))	)	61r55566v))B,B,BBCCr   N) )__all__r   r   r&   r)    r   r   <module>r>      s"   . 'T6Dr   