a
    —ÆàgË>  ã                   @   s  d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	T d dl
Z
e
 d¡Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ edœej_dd„ dd„ dœej_edd„ dœej_eedœej_eedœej_eedœej_eeedœej_eeed œej_e eed!œej!_d"eiej"_eed#œej#_ee$d$œ ej%_ ej&_ ej'_ ej(_ ej)_ej*_e+e ƒed%œ e ,d&¡_ e ,d'¡_ e ,d(¡_ e ,d)¡_ e ,d*¡_e ,d+¡_ee ,d'¡ƒd,d-„ ƒZ-eej.ej/ej0ej1ej2ej3ej4ej5ej6ej7ej8ƒd.d/„ ƒZ9eej:ej;ej<ej=ƒd0d1„ ƒZ>eej:ej;ej<ej=ƒd2d/„ ƒZ9eej?ej@ƒd3d/„ ƒZ9eejAƒd4d/„ ƒZ9eejƒd5d/„ ƒZ9eejAƒd6d7„ ƒZBeejƒd8d7„ ƒZBeejCƒd9d/„ ƒZ9eejƒd:d/„ ƒZ9eejDejEƒd;d<„ ƒZFeejGƒd=d<„ ƒZFeejƒd>d<„ ƒZFd?d@„ ZHdAdB„ ZIdS )Cé    )ÚttLib)ÚDefaultTable)ÚotTables)Ú
add_methodÚmergeObjects)Ú*NzfontTools.mergec                 C   s   t | ƒS ©N)ÚsumLists©Úlst© r   úO/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/merge/layout.pyÚmergeLookupLists   s    r   c                 C   s:   | sJ ‚t  ¡ }d |_tdd„ | D ƒƒ|_t|jƒ|_|S )Nc                 S   s   g | ]}|j r|j ‘qS r   ©ÚLookupListIndex©Ú.0Úlr   r   r   Ú
<listcomp>   ó    z!mergeFeatures.<locals>.<listcomp>)r   ÚFeatureÚFeatureParamsr   r   ÚlenÚLookupCount©r   Úselfr   r   r   ÚmergeFeatures   s    ÿr   c                 C   s~   i }| D ]4}|D ]*}|j }||vr*g ||< ||  |j¡ qqg }t| ¡ ƒD ]*}t ¡ }||_ t|| ƒ|_| |¡ qN|S r   )Ú
FeatureTagÚappendr   ÚsortedÚkeysr   ÚFeatureRecordr   )r   Údr   ÚfÚtagÚretÚrecr   r   r   ÚmergeFeatureLists    s    r'   c                 C   sV   | sJ ‚t dd„ | D ƒƒsJ ‚t ¡ }d |_d|_tdd„ | D ƒƒ|_t|jƒ|_|S )Nc                 s   s   | ]}|j d kV  qdS )éÿÿ  N)ÚReqFeatureIndexr   r   r   r   Ú	<genexpr>5   r   z!mergeLangSyses.<locals>.<genexpr>r(   c                 S   s   g | ]}|j r|j ‘qS r   )ÚFeatureIndexr   r   r   r   r   ;   r   z"mergeLangSyses.<locals>.<listcomp>)	Úallr   ÚLangSysZLookupOrderr)   r'   r+   r   ÚFeatureCountr   r   r   r   ÚmergeLangSyses1   s    ÿr/   c           	      C   sØ   | sJ ‚t | ƒdkr| d S i }| D ]6}|jD ]*}|j|vrFg ||j< ||j  |j¡ q.q$g }t| ¡ ƒD ]*\}}t ¡ }t|ƒ|_||_| |¡ qlt 	¡ }||_t |ƒ|_
dd„ | D ƒ}|rÎt|ƒ|_nd |_|S )Né   r   c                 S   s   g | ]}|j r|j ‘qS r   )ÚDefaultLangSys)r   Úsr   r   r   r   V   r   z mergeScripts.<locals>.<listcomp>)r   ÚLangSysRecordZ
LangSysTagr   r-   r   Úitemsr   r/   ÚScriptZLangSysCountr1   )	r   Z	langSysesÚsrZlsrZ	lsrecordsr$   ZlangSys_listr   ZdfltLangSysesr   r   r   ÚmergeScriptsA   s.    




r7   c                 C   s~   i }| D ]4}|D ]*}|j }||vr*g ||< ||  |j¡ qqg }t| ¡ ƒD ]*}t ¡ }||_ t|| ƒ|_| |¡ qN|S r   )Ú	ScriptTagr   r5   r   r    r   ÚScriptRecordr7   )r   r"   r   r2   r$   r%   r&   r   r   r   ÚmergeScriptRecords^   s    r:   c                 C   s   d S r   r   r
   r   r   r   Ú<lambda>p   r   r;   )ZScriptCountr9   c                 C   s   d S r   r   r
   r   r   r   r;   t   r   c                 C   s   t t| ƒdd„ d�S )Nc                 S   s   | j S r   )ZBaseScriptTag©r2   r   r   r   r;   w   r   ú<lambda>.<locals>.<lambda>©Úkey©r   r	   r
   r   r   r   r;   v   s   ÿ)ZBaseScriptCountZBaseScriptRecordc                 C   s   t t| ƒdd„ d�S )Nc                 S   s   | j S r   ©r   r<   r   r   r   r;   }   r   r=   r>   r@   r
   r   r   r   r;   }   r   )r.   r!   )r   ÚLookup)ÚFormatZglyphs)rC   Z	classDefs)ÚCoverageZLigGlyphCountZLigGlyph)rD   Z
GlyphCountZAttachPoint)ZMarkSetTableFormatZMarkSetCountrD   r   )ZBaseTagCountZBaselineTag)r   ÚVersion)ZtableTagÚtableÚGDEFÚGSUBÚGPOSÚBASEÚJSTFÚMATHc                 C   s.  t |ƒt |jƒksJ ‚tt||jƒƒD �]ò\}\}}|s:q&|d u sJ|tu rbt d|j| j|¡ q&d }d }|j	j
jD �]¢}|jdkr†qt|jjgdd„ |jjD ƒ D �]r}	|	d u r²q¢dd„ |	jD ƒ}
t |
ƒdksÒJ ‚|
rà|
d }
nx|�s6t ¡ }d|_t ¡  }|_d |_d|_g |_|j	jj |¡ |j	j jd7  _|}
|	j |
¡ |	jjd	d
„ d� |�sÞt ¡ }||_t ¡ }d|_d|_ d|_!|g|_"|j	j#d u �r¼t #¡ |j	_#g |j	j#_d|j	j#_|j	j#j |¡ |j	j# jd7  _|
jjd d… |gkr¢|g|
jjd d…< |
j jd7  _q¢qtq&t$ %| ||¡ | S )Nz[Have non-identical duplicates to resolve for '%s' but no GSUB. Are duplicates intended?: %sZDFLTc                 S   s   g | ]
}|j ‘qS r   )r-   r   r   r   r   r   Ò   s   zmerge.<locals>.<listcomp>c                 S   s   g | ]}|j d kr|‘qS )ÚloclrA   )r   Úvr   r   r   r   ×   r   r0   r   rM   c                 S   s   | j S r   rA   )rN   r   r   r   r;   ç   r   zmerge.<locals>.<lambda>r>   )&r   ZduplicateGlyphsPerFontÚ	enumerateÚzipÚNotImplementedÚlogÚwarningZfontsZ_merger__namerF   Ú
ScriptListr9   r8   r5   r1   r3   r+   r   r!   r   r   r   r   r   ÚFeatureListr   r.   ÚsortÚSingleSubstÚmappingrB   Ú
LookupFlagZ
LookupTypeZSubTableCountÚSubTableÚ
LookupListr   Úmerge)r   ÚmZtablesÚirF   ZdupsZsynthFeatureZsynthLookupÚscriptZlangsysÚfeaturer#   Zsubtabler   r   r   r\   ¿   sp    
ý
ÿ


r\   c                 C   s   d S r   r   ©r   Ú	lookupMapr   r   r   Ú
mapLookups  s    rc   c                 C   sj   G dd„ dt ƒ}| jdvrd S t| jdƒs2i | j_| j| jjvr\|| j| jƒ}|| jj| j< | jj| j S )Nc                   @   s   e Zd Zdd„ ZdS )z/__merge_classify_context.<locals>.ContextHelperc                 S   sœ   |j  d¡rd}d}nd}d}|j  d¡r0d}nd}|| }|| _|| _|| _|| _|d | _|dkr||d | _|d	 | _	n|d
kr˜|d | _|d | _	d S )NZSubstÚSubZPosÚChainÚ ÚLookupRecordr0   ÚRuleÚRuleSeté   Z	ClassRuleZClassSet)
Ú__name__ÚendswithÚ
startswithÚTypÚTypere   ÚChainTyprg   rh   ri   )r   ÚklassrC   rn   ro   re   rp   r   r   r   Ú__init__  s(    


z8__merge_classify_context.<locals>.ContextHelper.__init__N)rk   Ú
__module__Ú__qualname__rr   r   r   r   r   ÚContextHelper  s   ru   )r0   rj   é   Ú_merge__ContextHelpers)ÚobjectrC   ÚhasattrÚ	__class__rw   )r   ru   Úhelperr   r   r   Ú__merge_classify_context  s    
r|   c                 C   s®   |   ¡ }| jdv rht| |jƒD ]F}|s(qt||jƒD ].}|s>q4t||jƒD ]}|sTqJ||j |_qJq4qnB| jdkr˜t| |jƒD ]}|sˆq~||j |_q~ndsªJ d| j ƒ‚d S )N)r0   rj   rv   r   úunknown format: %s)r|   rC   Úgetattrri   rh   rg   r   )r   rb   ÚcÚrsÚrZllr   r   r   rc   B  s$    

c                 C   s.   | j dkr| j |¡ nds*J d| j  ƒ‚d S )Nr0   r   r}   )rC   ZExtSubTablerc   ra   r   r   r   rc   _  s    
c                 C   s    | j D ]}|sq| |¡ qd S r   )rZ   rc   )r   rb   Ústr   r   r   rc   g  s    
c                 C   s    | j D ]}|sq| |¡ qd S r   )rB   rc   )r   rb   r   r   r   r   rc   o  s    
c                 C   s   | j d@ r|| j | _d S )Né   )rY   ZMarkFilteringSet)r   ÚmarkFilteringSetMapr   r   r   ÚmapMarkFilteringSetsw  s    
r…   c                 C   s    | j D ]}|sq| |¡ qd S r   )rB   r…   )r   r„   r   r   r   r   r…   }  s    
c                    s   ‡ fdd„| j D ƒ| _ d S )Nc                    s   g | ]}ˆ | ‘qS r   r   ©r   r^   ©rb   r   r   r   ‡  r   zmapLookups.<locals>.<listcomp>r   ra   r   r‡   r   rc   …  s    c                 C   s(   | j D ]}|r|jsq|j |¡ qd S r   )r!   r   rc   )r   rb   r#   r   r   r   rc   Š  s    

c                    s0   ‡ fdd„| j D ƒ| _ | jdkr,ˆ | j | _d S )Nc                    s   g | ]}ˆ | ‘qS r   r   r†   ©Ú
featureMapr   r   r   ”  r   zmapFeatures.<locals>.<listcomp>r(   )r+   r)   )r   r‰   r   rˆ   r   ÚmapFeatures’  s    
rŠ   c                 C   s:   | j r| j  |¡ | jD ]}|r|js(q|j |¡ qd S r   )r1   rŠ   r3   r-   )r   r‰   r   r   r   r   rŠ   ™  s    

c                 C   s(   | j D ]}|r|jsq|j |¡ qd S r   )r9   r5   rŠ   )r   r‰   r2   r   r   r   rŠ   £  s    

c                 C   sæ   |   d¡}|   d¡}|   d¡}||fD ]º}|s0q&|jjrªdd„ t|jjjƒD ƒ}|jj |¡ |jj |¡ |rª|jjdkrª|jjrªdd„ t|jjj	ƒD ƒ}|jj 
|¡ |jjr&|jjr&dd„ t|jjjƒD ƒ}|jj |¡ q&d S )	NrG   rH   rI   c                 S   s   i | ]\}}||“qS r   r   ©r   r^   rN   r   r   r   Ú
<dictcomp>·  r   z"layoutPreMerge.<locals>.<dictcomp>é  c                 S   s   i | ]\}}||“qS r   r   r‹   r   r   r   rŒ   À  s   c                 S   s   i | ]\}}||“qS r   r   r‹   r   r   r   rŒ   Æ  r   )ÚgetrF   r[   rO   rB   rc   rU   rE   ÚMarkGlyphSetsDefrD   r…   rT   r!   rŠ   )ÚfontrG   rH   rI   Útrb   r„   r‰   r   r   r   ÚlayoutPreMerge«  s.    


ÿ
þýÿr’   c                    sÆ  |   d¡}|   d¡}|   d¡}||fD �]˜}|s2q&|jjrÒ|jjrÒt|jjjƒ}|jj |¡ t|jjjƒ}|jj |¡ |j‰ ‡ fdd„t	|jjjƒD ƒ|jj_t
|jjjƒ}|jj |¡ t|jjjƒ|jj_|jjr&t|jjjƒ}|jj |¡ |jj |¡ t|jjjƒ}|jj |¡ |jj |¡ |j‰ ‡ fdd„t	|jjjƒD ƒ|jj_t
|jjjƒ}|jj |¡ |jj |¡ t|jjjƒ|jj_|r&|jjdkr&t
|jjjƒ}|jj |¡ q&d S )NrG   rH   rI   c                    s   g | ]\}}|ˆ v r|‘qS r   r   )r   r^   r#   ©ZusedIndicesr   r   r   ä  s   þz#layoutPostMerge.<locals>.<listcomp>c                    s   g | ]\}}|ˆ v r|‘qS r   r   )r   r^   r   r“   r   r   r   ý  s   r�   )rŽ   rF   rU   rT   ZGregariousIdentityDictr!   rŠ   ZAttendanceRecordingIdentityDictr2   rO   ZNonhashableDictr   r.   r[   rB   rc   r   rE   r�   rD   r…   )r�   rG   rH   rI   r‘   r‰   rb   r„   r   r“   r   ÚlayoutPostMergeÌ  sP    


ÿ
þ
ÿÿr”   )JZ	fontToolsr   Z#fontTools.ttLib.tables.DefaultTabler   ZfontTools.ttLib.tablesr   ZfontTools.merge.baser   r   ZfontTools.merge.utilÚloggingÚ	getLoggerrR   r   r   r'   r/   r7   r:   rT   ZmergeMapZBaseScriptListÚsumrU   r	   r[   ÚminrD   ZsumDictsÚClassDefZLigCaretListZ
AttachListÚequalr�   ZAxisZBaseTagListÚmaxrG   rH   rI   rJ   rK   rL   ZonlyExistingZgetTableClassr\   rW   ZMultipleSubstZAlternateSubstZLigatureSubstZReverseChainSingleSubstZ	SinglePosZPairPosZ
CursivePosZMarkBasePosZ
MarkLigPosZMarkMarkPosrc   ZContextSubstZChainContextSubstZ
ContextPosZChainContextPosr|   ZExtensionSubstZExtensionPosrB   r…   r   r1   r-   rŠ   r5   r’   r”   r   r   r   r   Ú<module>   sð   
þ
ý
	þ
þ
þ
þ
ý
ý
ý
ÿþ
þþÿþú
ÿ
þÿÿ
Cõ
ü
'ü









	
!