a
    ¥Q•hg  ã                   @   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)ÚtableÚ
LookupListÚLookupÚSubTableÚmaxCtxSubtableÚ
LookupType)ÚfontÚmaxCtxÚtagr   ÚlookupÚst© r   úX/var/www/sistema_ama/venv/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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ƒ} 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é   é   ÚChainé	   ÚReverse)	ÚmaxÚ	ligaturesÚvaluesÚ	CompCountÚmaxCtxContextualSubtabler	   ÚExtensionLookupTypeÚExtSubTableÚmaxCtxContextualRule)r   r   Ú
lookupTyper   r    Ú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r¸t|d||f ƒD ]<}|du r†qxt|d||f ƒD ]}|du r¦q˜t| ||ƒ} q˜qxn|j dkrÎt| ||ƒ} | S )	z>Calculate usMaxContext based on a contextual feature subtable.r   z%s%sRuleSetNz%s%sRuler   z%s%sClassSetz%s%sClassRuler   )Ú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 | d|j ƒS t | |j|j ƒS )z:Calculate usMaxContext based on a contextual feature rule.r   r   )r   Ú
GlyphCountÚLookAheadGlyphCountÚInputGlyphCount)r   r   r,   r   r   r   r&   Y   s
    r&   N)r)   )Ú__all__r   r	   r#   r&   r   r   r   r   Ú<module>   s   *
