a
    w=ics                     @   s,   d gZ dd  Zdd Zd
ddZdd Zd	S )
maxCtxFontc                 C   sX   d}dD ]J}|| vrq| | j }|js(q|jjD ] }|jD ]}t|||j|}q:q0q|S )z4Calculate the usMaxContext value for an entire font.    )GSUBGPOS)tableZ
LookupListZLookupZSubTablemaxCtxSubtableZ
LookupType)ZfontmaxCtxtagr   lookupst r   p/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/fontTools/otlLib/maxContextCalc.pyr      s    

c                 C   sZ  |dkr|dks |dkr.|dv r.t | d} n(|dkrL|dkrLt | d} n
|dkr|dkr|j D ]}|D ]}t | |j} qnqfn|dkr|dks|dkr|dkrt| ||dkrd	nd
} n|dkr|dks|dkr|dkrt| ||dkrd	nd
d} n\|dkr|dks"|dkr6|dkr6t| ||j|j} n |dkrV|dkrVt| |d} | S )z[Calculate usMaxContext based on a single lookup table (and an existing
    max value).
    r      r   )r         r            PosSub      ZChain	   Reverse)	max	ligaturesvaluesZ	CompCountmaxCtxContextualSubtabler   ZExtensionLookupTypeZExtSubTablemaxCtxContextualRule)r   r   Z
lookupTyper
   r   Zligaturer   r   r   r      s.      (r    c                 C   s   |j dkr\t|d||f D ]<}|du r*qt|d||f D ]}|du rJq<t| ||} q<qnr|j dkrt|d||f D ]<}|du rqxt|d||f D ]}|du rqt| ||} qqxn|j dkrt| ||} | S )	z>Calculate usMaxContext based on a contextual feature subtable.r   z%s%sRuleSetNz%s%sRuler   z%s%sClassSetz%s%sClassRuler   )ZFormatgetattrr   )r   r
   ZruleTypechainZrulesetruler   r   r   r   >   s&    


r   c                 C   s<   |st | |jS |dkr*t | |j|j S t | |j|j S )z:Calculate usMaxContext based on a contextual feature rule.r   )r   Z
GlyphCountZLookAheadGlyphCountZInputGlyphCount)r   r
   r    r   r   r   r   Y   s
    r   N)r   )__all__r   r   r   r   r   r   r   r   <module>   s   *
