B
    0ufs                 @   s,   d gZ dd  Zdd Zd
ddZdd Zd	S )
maxCtxFontc             C   sd   d}xZdD ]R}|| krq
| | j }|js*q
x0|jjD ]$}x|jD ]}t|||j|}q@W q4W q
W |S )z4Calculate the usMaxContext value for an entire font.    )GSUBGPOS)tableZ
LookupListZLookupZSubTablemaxCtxSubtableZ
LookupType)ZfontmaxCtxtagr   lookupst r   a/home/ankuromar296_gmail_com/myenv/lib/python3.7/site-packages/fontTools/otlLib/maxContextCalc.pyr      s    

c             C   sf  |dkr|dks |dkr.|dkr.t | d} n4|dkrL|dkrLt | d} n|dkr|dkrx,|j D ]}x|D ]}t | |j} qrW qhW n|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rt| ||dkrd	nd
d} n\|dkr|dks.|dkrB|dkrBt| ||j|j} n |dkrb|dkrbt| |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rdxt|d||f D ]@}|dkr,qx0t|d||f D ]}|dkrNq@t| ||} q@W qW nz|j dkrxnt|d||f D ]@}|dkrqx0t|d||f D ]}|dkrqt| ||} qW qW n|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   *
