o
    i>                     @   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   e/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/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      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   ~   i }| D ]}|D ]}|j }||vrg ||< || |j qqg }t| D ]}t }||_ t|| |_|| q'|S r   )
FeatureTagappendr   sortedkeysr   FeatureRecordr   )r   dr   ftagretrecr   r   r   mergeFeatureLists       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   s    z!mergeLangSyses.<locals>.<genexpr>r+   c                 S   r   r   )FeatureIndexr   r   r   r   r   ;   r   z"mergeLangSyses.<locals>.<listcomp>)	allr   LangSysZLookupOrderr,   r)   r.   r   FeatureCountr   r   r   r   mergeLangSyses1   s   r2   c           	      C   s   | sJ t | dkr| d S i }| D ]}|jD ]}|j|vr#g ||j< ||j |j qqg }t| D ]\}}t }t||_||_|| q6t	 }||_t ||_
dd | D }|rht||_|S d |_|S )N   r   c                 S   r   r   )DefaultLangSys)r   sr   r   r   r   V   r   z mergeScripts.<locals>.<listcomp>)r   LangSysRecordZ
LangSysTagr    r0   r!   itemsr   r2   ScriptZLangSysCountr4   )	r   Z	langSysessrZlsrZ	lsrecordsr&   ZlangSys_listr   ZdfltLangSysesr   r   r   mergeScriptsA   s2   





r:   c                 C   r   r   )	ScriptTagr    r8   r!   r"   r   ScriptRecordr:   )r   r$   r   r5   r&   r'   r(   r   r   r   mergeScriptRecords^   r*   r=   c                 C      d S r   r   r
   r   r   r   <lambda>p       r?   )ZScriptCountr<   c                 C   r>   r   r   r
   r   r   r   r?   t   r@   c                 C      t t| dd dS )Nc                 S      | j S r   )ZBaseScriptTagr5   r   r   r   r?   w       <lambda>.<locals>.<lambda>keyr!   r	   r
   r   r   r   r?   v   s    )ZBaseScriptCountZBaseScriptRecordc                 C   rA   )Nc                 S   rB   r   r   rC   r   r   r   r?   }   rD   rE   rF   rH   r
   r   r   r   r?   }       )r1   r#   )r   Lookup)FormatZglyphs)rL   Z	classDefs)CoverageZLigGlyphCountZLigGlyph)rM   Z
GlyphCountZAttachPoint)ZMarkSetTableFormatZMarkSetCountrM   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 s$|tu r0td|j| j| qd }d }|j	j
jD ]}|jdkrAq9|jjgdd |jjD  D ]}	|	d u rVqOdd |	jD }
t |
dksfJ |
rm|
d }
n;|st }d|_t  }|_d |_d|_g |_|j	jj| |j	j jd7  _|}
|	j|
 |	jjd	d
 d |st }||_t }d|_d|_ d|_!|g|_"|j	j#d u rt# |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  _qOq9q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   )r0   r   r   r   r   r      s    zmerge.<locals>.<listcomp>c                 S   s   g | ]	}|j d kr|qS )loclrI   )r   vr   r   r   r      s    r3   r   rV   c                 S   rB   r   rI   )rW   r   r   r   r?      rD   zmerge.<locals>.<lambda>rF   )&r   ZduplicateGlyphsPerFont	enumeratezipNotImplementedlogwarningZfontsZ_merger__namerO   
ScriptListr<   r;   r8   r4   r6   r.   r   r#   r   r   r   r   r   FeatureListr    r1   sortSingleSubstmappingrK   
LookupFlagZ
LookupTypeZSubTableCountSubTable
LookupListr   merge)r   mZtablesirO   ZdupsZsynthFeatureZsynthLookupscriptZlangsysfeaturer%   Zsubtabler   r   r   re      sv   




0re   c                 C   r>   r   r   r   	lookupMapr   r   r   
mapLookups  s   rl   c                 C   sj   G dd dt }| jdvrd S t| jdsi | 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rd}nd}|| }|| _|| _|| _|| _|d | _|dkr?|d | _|d	 | _	d S |d
krO|d | _|d | _	d S d S )NZSubstSubPosChain LookupRecordr3   RuleRuleSet   Z	ClassRuleZClassSet)
__name__endswith
startswithTypTypero   ChainTyprq   rr   rs   )r   klassrL   rx   ry   ro   rz   r   r   r   __init__  s*   


z8__merge_classify_context.<locals>.ContextHelper.__init__N)ru   
__module____qualname__r|   r   r   r   r   ContextHelper  s    r   )r3   rt      _merge__ContextHelpers)objectrL   hasattr	__class__r   )r   r   helperr   r   r   __merge_classify_context  s   
r   c                 C   s   |   }| jdv r5t| |jD ]#}|sqt||jD ]}|sqt||jD ]}|s*q%||j |_q%qqd S | jdkrNt| |jD ]}|sEq@||j |_q@d S J d| j )N)r3   rt   r   r   unknown format: %s)r   rL   getattrrs   rr   rq   r   )r   rk   crsrllr   r   r   rl   B  s,   


c                 C   s(   | j dkr| j| d S J d| j  )Nr3   r   r   )rL   ZExtSubTablerl   rj   r   r   r   rl   _  s   
c                 C       | j D ]
}|sq|| qd S r   )rc   rl   )r   rk   str   r   r   rl   g  
   
c                 C   r   r   )rK   rl   )r   rk   r   r   r   r   rl   o  r   c                 C   s   | j d@ r|| j | _d S d S )N   )rb   ZMarkFilteringSet)r   markFilteringSetMapr   r   r   mapMarkFilteringSetsw  s   
r   c                 C   r   r   )rK   r   )r   r   r   r   r   r   r   }  r   c                    s    fdd| j D | _ d S )Nc                       g | ]} | qS r   r   r   rg   rk   r   r   r     rJ   zmapLookups.<locals>.<listcomp>r   rj   r   r   r   rl     s   c                 C   (   | j D ]}|r
|jsq|j| qd S r   )r#   r   rl   )r   rk   r%   r   r   r   rl     
   

c                    s4    fdd| j D | _ | jdkr | j | _d S d S )Nc                    r   r   r   r   
featureMapr   r   r     rJ   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   )r4   r   r6   r0   )r   r   r   r   r   r   r     s   

c                 C   r   r   )r<   r8   r   )r   r   r5   r   r   r   r     r   c                 C   s   |  d}|  d}|  d}||fD ]]}|sq|jjrUdd t|jjjD }|jj| |jj| |rU|jjdkrU|jjrUdd t|jjj	D }|jj
| |jjrp|jjrpdd t|jjjD }|jj| qd S )	NrP   rQ   rR   c                 S      i | ]\}}||qS r   r   r   rg   rW   r   r   r   
<dictcomp>      z"layoutPreMerge.<locals>.<dictcomp>  c                 S   r   r   r   r   r   r   r   r     s    
c                 S   r   r   r   r   r   r   r   r     r   )getrO   rd   rX   rK   rl   r^   rN   MarkGlyphSetsDefrM   r   r]   r#   r   )fontrP   rQ   rR   trk   r   r   r   r   r   layoutPreMerge  s0   


r   c                    s  |  d}|  d}|  d}||fD ]}|sq|jjrh|jjrht|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rt|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rt
|jjj}|jj| qd S )NrP   rQ   rR   c                       g | ]
\}}| v r|qS r   r   )r   rg   r%   ZusedIndicesr   r   r     s
    z#layoutPostMerge.<locals>.<listcomp>c                    r   r   r   )r   rg   r   r   r   r   r     s    r   )r   rO   r^   r]   ZGregariousIdentityDictr#   r   ZAttendanceRecordingIdentityDictr5   rX   ZNonhashableDictr   r1   rd   rK   rl   r   rN   r   rM   r   )r   rP   rQ   rR   r   r   rk   r   r   r   r   layoutPostMerge  sT   




r   )JZ	fontToolsr   Z#fontTools.ttLib.tables.DefaultTabler   ZfontTools.ttLib.tablesr   ZfontTools.merge.baser   r   ZfontTools.merge.utillogging	getLoggerr[   r   r   r)   r2   r:   r=   r]   ZmergeMapZBaseScriptListsumr^   r	   rd   minrM   ZsumDictsClassDefZLigCaretListZ
AttachListequalr   ZAxisZBaseTagListmaxrP   rQ   rR   rS   rT   rU   ZonlyExistingZgetTableClassre   r`   ZMultipleSubstZAlternateSubstZLigatureSubstZReverseChainSingleSubstZ	SinglePosZPairPosZ
CursivePosZMarkBasePosZ
MarkLigPosZMarkMarkPosrl   ZContextSubstZChainContextSubstZ
ContextPosZChainContextPosr   ZExtensionSubstZExtensionPosrK   r   r   r4   r0   r   r8   r   r   r   r   r   r   <module>   s   


	










C

'









	
!