
    ]Mh>                     @   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
j        d          Zd Zd	 Zd
 Zd Zd Zd Zd edej        _        d d dej        _        e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xej%        _        xej&        _        xej'        _        xej(        _        xej)        _        ej*        _         e+e           edx ej,        d          _        x ej,        d           _        x ej,        d!          _        x ej,        d"          _        x ej,        d#          _         ej,        d$          _         e ej,        d                     d%             Z- eej.        ej/        ej0        ej1        ej2        ej3        ej4        ej5        ej6        ej7        ej8                  d&             Z9 eej:        ej;        ej<        ej=                  d'             Z> eej:        ej;        ej<        ej=                  d(             Z9 eej?        ej@                  d)             Z9 eejA                  d*             Z9 eej                  d+             Z9 eejA                  d,             ZB eej                  d-             ZB eejC                  d.             Z9 eej                  d/             Z9 eejD        ejE                  d0             ZF eejG                  d1             ZF eej                  d2             ZFd3 ZHd4 ZIdS )5    )ttLib)DefaultTable)otTables)
add_methodmergeObjects)*NzfontTools.mergec                      t          |           S N)sumListslsts    V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/merge/layout.pymergeLookupListsr      s    C==    c                     | sJ t          j                    }d |_        t          d | D                       |_        t          |j                  |_        |S )Nc                 *    g | ]}|j         	|j         S  LookupListIndex.0ls     r   
<listcomp>z!mergeFeatures.<locals>.<listcomp>   s#    ===q1+<=	===r   )r   FeatureFeatureParamsr   r   lenLookupCountr   selfs     r   mergeFeaturesr       s^    JJJDD+==C=== D 4/00DKr   c                 \   i }| D ]7}|D ]2}|j         }||vrg ||<   ||                             |j                   38g }t          |                                          D ]K}t          j                    }||_         t          ||                   |_        |                    |           L|S r
   )
FeatureTagappendr   sortedkeysr   FeatureRecordr    )r   dr   ftagretrecs          r   mergeFeatureListsr,       s    
A % % 	% 	%A,C!||#cFMM!)$$$$		%
 Caffhh  $&&#AcF++

3Jr   c                     | sJ t          d | D                       sJ t          j                    }d |_        d|_        t          d | D                       |_        t          |j                  |_        |S )Nc              3   ,   K   | ]}|j         d k    V  dS )  N)ReqFeatureIndexr   s     r   	<genexpr>z!mergeLangSyses.<locals>.<genexpr>5   s*      88qq F*888888r   r/   c                 *    g | ]}|j         	|j         S r   )FeatureIndexr   s     r   r   z"mergeLangSyses.<locals>.<listcomp>;   s!    777A7777r   )	allr   LangSysLookupOrderr0   r,   r3   r   FeatureCountr   s     r   mergeLangSysesr8   1   s    JJJ 88C88888888DD!D)77777 D D-..DKr   c                 ^   | sJ t          |           dk    r| d         S i }| D ]D}|j        D ]:}|j        |vr
g ||j        <   ||j                                     |j                   ;Eg }t          |                                          D ]H\  }}t          j                    }t          |          |_        ||_        |                    |           It          j	                    }||_        t          |          |_
        d | D             }|rt          |          |_        nd |_        |S )N   r   c                 *    g | ]}|j         	|j         S r   )DefaultLangSys)r   ss     r   r   z mergeScripts.<locals>.<listcomp>V   s#    GGG!a6FGQ%GGGr   )r   LangSysRecord
LangSysTagr#   r5   r$   itemsr   r8   ScriptLangSysCountr<   )	r   	langSysessrlsr	lsrecordsr)   langSys_listr   dfltLangSysess	            r   mergeScriptsrI   A   sM   JJJ
3xx1}}1vI : :# 	: 	:C~Y..,.	#.)cn%,,S[9999	: I#IOO$5$566  \$&&$\22?D"DIDGGsGGGM #,];;"Kr   c                 \   i }| D ]7}|D ]2}|j         }||vrg ||<   ||                             |j                   38g }t          |                                          D ]K}t          j                    }||_         t          ||                   |_        |                    |           L|S r
   )	ScriptTagr#   rA   r$   r%   r   ScriptRecordrI   )r   r'   r   r=   r)   r*   r+   s          r   mergeScriptRecordsrM   ^   s    
A $ $ 	$ 	$A+C!||#cFMM!(####		$
 Caffhh  #%%!!C&))


3Jr   c                     d S r
   r   r   s    r   <lambda>rO   p   s    t r   )ScriptCountrL   c                     d S r
   r   r   s    r   rO   rO   t   s    4 r   c                 @    t          t          |           d           S )Nc                     | j         S r
   )BaseScriptTagr=   s    r   rO   z<lambda>.<locals>.<lambda>w   s    Q_ r   keyr$   r   r   s    r   rO   rO   v   s$    F44% % % r   )BaseScriptCountBaseScriptRecordc                 @    t          t          |           d           S )Nc                     | j         S r
   r"   rU   s    r   rO   z<lambda>.<locals>.<lambda>}   s    Q\ r   rV   rX   r   s    r   rO   rO   }   s    ;Q;Q!R!R!R r   )r7   r&   )r   Lookup)Formatglyphs)r_   	classDefs)CoverageLigGlyphCountLigGlyph)rb   
GlyphCountAttachPoint)MarkSetTableFormatMarkSetCountrb   r   )BaseTagCountBaselineTag)r   Version)tableTagtableGDEFGSUBGPOSBASEJSTFMATHc                    t          |          t          |j                  k    sJ t          t          ||j                            D ]\  }\  }}|s|	|t          u r-t
                              d|j        |         j        |           Dd }d }|j	        j
        j        D ]B}|j        dk    r|j        j        gd |j        j        D             z   D ]}	|	d |	j        D             }
t          |
          dk    sJ |
r	|
d         }
n|st#          j                    }d|_        t#          j                    x}|_        d |_        d|_        g |_        |j	        j        j                            |           |j	        j        xj        dz  c_        |}
|	j                            |
           |	j                            d 	           |st#          j                    }||_        t#          j                    }d|_        d|_         d|_!        |g|_"        |j	        j#        ?t#          j#                    |j	        _#        g |j	        j#        _        d|j	        j#        _        |j	        j#        j                            |           |j	        j#        xj        dz  c_        |
j        j        d d         |gk    r'|g|
j        j        d d<   |
j        xj        dz  c_        DtI          j%        | ||           | S )
Nz[Have non-identical duplicates to resolve for '%s' but no GSUB. Are duplicates intended?: %sDFLTc                     g | ]	}|j         
S r   )r5   r   s     r   r   zmerge.<locals>.<listcomp>   s'     = = =	= = =r   c                 (    g | ]}|j         d k    |S )loclr]   )r   vs     r   r   zmerge.<locals>.<listcomp>   s$    UUUalf>T>T1>T>T>Tr   r:   r   rx   c                     | j         S r
   r]   )ry   s    r   rO   zmerge.<locals>.<lambda>   s    AL r   rV   )&r   duplicateGlyphsPerFont	enumeratezipNotImplementedlogwarningfonts_merger__namerm   
ScriptListrL   rK   rA   r<   r>   r3   r   r&   r"   r   r   r   r   FeatureListr#   r7   sortSingleSubstmappingr^   
LookupFlag
LookupTypeSubTableCountSubTable
LookupListr   merge)r   mtablesirm   dupssynthFeaturesynthLookupscriptlangsysfeaturer(   subtables                r   r   r      s7   v;;#a6777777%c&!2J&K&KLL ;5 ;5=E4 	=E^33KKm
(  
 k,9 .	5 .	5F6))"M89 = =#)=#>= = =  +5 +5 ?UUg&:UUU7||q(((( J%ajGG' B'/'='?'?28/3;3C3E3EEL0*.(),.)/=DD\RRR/<<A<<*G(//888(--2H2H-III" <'355H'+H$"*/"3"3K-.K*-.K*01K-,4:K({-5 2:1D1F1F.8:.5=>.:K*188EEEK*66!;66?22A26;-GG;F-GO3BQB7O//14//W+5.	5` tQ'''Kr   c                     d S r
   r   r   	lookupMaps     r   
mapLookupsr     s	     	Dr   c                 (    G 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                       e Zd Zd ZdS )/__merge_classify_context.<locals>.ContextHelperc                 P   |j                             d          rd}d}nd}d}|j                             d          rd}nd}||z   }|| _        || _        || _        || _        |dz   | _        |dk    r|dz   | _        |d	z   | _	        d S |d
k    r|dz   | _        |dz   | _	        d S d S )NSubstSubPosChain LookupRecordr:   RuleRuleSet   	ClassRuleClassSet)
__name__endswith
startswithTypTyper   ChainTypr   r   r   )r   klassr_   r   r   r   r   s          r   __init__z8__merge_classify_context.<locals>.ContextHelper.__init__  s    ~&&w// ~((11 s{HDHDIDJ$DM $~ 5D{{$v-	')31${2	'*4 r   N)r   
__module____qualname__r   r   r   r   ContextHelperr     s#        	5 	5 	5 	5 	5r   r   )r:   r      _merge__ContextHelpers)objectr_   hasattr	__class__r   )r   r   helpers      r   __merge_classify_contextr     s    5 5 5 5 5 5 5 58 {)##t4>#;<< 302-{$.???t~t{;;=C-dk:>0==r   c                    |                                  }| j        dv ret          | |j                  D ]M}|st          ||j                  D ]2}|st          ||j                  D ]}|s||j                 |_        3Nd S | j        dk    r/t          | |j                  D ]}|s||j                 |_        d S J d| j        z              )N)r:   r   r   r   unknown format: %s)r   r_   getattrr   r   r   r   )r   r   crsrlls         r   r   r   B  s/    	%%''A{f$	** 		G 		GB R(( G G !!Q^44 G GB ! )223E)FB&&GG		G 		G 
		$// 	? 	?B !*2+=!>B	? 	?
 	5&4444r   c                 t    | j         dk    r| j                            |           d S J d| j         z              )Nr:   r   r   )r_   ExtSubTabler   r   s     r   r   r   _  sB    {a##I.....4&4444r   c                 J    | j         D ]}|s|                    |           d S r
   )r   r   )r   r   sts      r   r   r   g  s=    m ! ! 	
i    ! !r   c                 J    | j         D ]}|s|                    |           d S r
   )r^   r   )r   r   r   s      r   r   r   o  s=    [     		Y   r   c                 B    | j         dz  r|| j                 | _        d S d S )N   )r   MarkFilteringSet)r   markFilteringSetMaps     r   mapMarkFilteringSetsr   w  s4     K 3D4I JK Kr   c                 J    | j         D ]}|s|                    |           d S r
   )r^   r   )r   r   r   s      r   r   r   }  s@    [ 4 4 		233334 4r   c                 8    fd| j         D             | _         d S )Nc                      g | ]
}|         S r   r   )r   r   r   s     r   r   zmapLookups.<locals>.<listcomp>  s    GGGQIaLGGGr   r   r   s    `r   r   r     s(    GGGG$2FGGGDr   c                 b    | j         D ]&}|r|j        s|j                            |           'd S r
   )r&   r   r   )r   r   r(   s      r   r   r     sK     ( ( 		 			Y''''( (r   c                 v    fd| j         D             | _         | j        dk    r| j                 | _        d S d S )Nc                      g | ]
}|         S r   r   )r   r   
featureMaps     r   r   zmapFeatures.<locals>.<listcomp>  s    BBB1ABBBr   r/   )r3   r0   )r   r   s    `r   mapFeaturesr     sN    BBBB0ABBBDu$$)$*>? %$r   c                     | j         r| j                             |           | j        D ]&}|r|j        s|j                            |           'd S r
   )r<   r   r>   r5   )r   r   r   s      r   r   r     sm     4''
333 * * 		 			j))))* *r   c                 b    | j         D ]&}|r|j        s|j                            |           'd S r
   )rL   rA   r   )r   r   r=   s      r   r   r     sK     ) ) 	 		Z(((() )r   c                    |                      d          }|                      d          }|                      d          }||fD ]<}|s|j        j        rd t          |j        j        j                  D             }|j        j                            |           |j        j                            |           |rc|j        j        dk    rS|j        j        rGd t          |j        j        j	                  D             }|j        j        
                    |           |j        j        rS|j        j        rGd t          |j        j        j                  D             }|j        j                            |           >d S )Nrn   ro   rp   c                     i | ]\  }}||	S r   r   r   r   ry   s      r   
<dictcomp>z"layoutPreMerge.<locals>.<dictcomp>  s    OOO$!QAOOOr     c                     i | ]\  }}||	S r   r   r   s      r   r   z"layoutPreMerge.<locals>.<dictcomp>  s+     ' ' '!QAq' ' 'r   c                     i | ]\  }}||	S r   r   r   s      r   r   z"layoutPreMerge.<locals>.<dictcomp>  s    XXX41a!QXXXr   )getrm   r   r|   r^   r   r   rk   MarkGlyphSetsDefrb   r   r   r&   r   )fontrn   ro   rp   tr   r   r   s           r   layoutPreMerger     s    88FD88FD88FDD\ 7 7 	7 	MOO)AG4F4M*N*NOOOIG)))444G**9555 MJ&*44J/ 5' '%.tz/J/S%T%T' ' '# "778KLLL7 	717#5 	7XX9QW5H5V+W+WXXXJG**:666+7 7r   c                    |                      d          }|                      d          }|                      d          }||fD ]!}|s|j        j        r1|j        j        r$t	          |j        j        j                  }|j        j                            |           t          |j        j        j                  }|j        j                            |           |j        f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t          |j        j        j                  D             |j        j        _        t          |j        j        j                  }|j        j                            |           |j        j                            |           t          |j        j        j                  |j        j        _        |rM|j        j        dk    r=t          |j        j        j                  }|j        j                            |           #d S )Nrn   ro   rp   c                 "    g | ]\  }}|v 	|S r   r   )r   r   r(   usedIndicess      r   r   z#layoutPostMerge.<locals>.<listcomp>  s2     1 1 1Aq## ###r   c                 "    g | ]\  }}|v 	|S r   r   )r   r   r   r   s      r   r   z#layoutPostMerge.<locals>.<listcomp>  s.     ) ) )aa;FVFVFVFVFVr   r   )r   rm   r   r   GregariousIdentityDictr&   r   AttendanceRecordingIdentityDictr=   r|   NonhashableDictr   r7   r   r^   r   r   rk   r   rb   r   )	r   rn   ro   rp   r   r   r   r   r   s	           @r   layoutPostMerger     s    88FD88FD88FDD\ 9M 9M 	7 	V17#5 	V/0C0QRRJG**:666 9#1 J G**:666$,K1 1 1 1%ag&9&GHH1 1 1AG- ))<)JKKJG**:666/2173F3T/U/UAG,7 	M.qw/A/HIIIG**9555G)))444 88J8QRRIG**9555G)))444#+K) ) ) )'(:(ABB) ) )AG%
 ((:(ABBIG**9555G)))444-01C1J-K-KAG* M
*j88&5J/8' '# "778KLLLs9M 9Mr   )J	fontToolsr   #fontTools.ttLib.tables.DefaultTabler   fontTools.ttLib.tablesr   fontTools.merge.baser   r   fontTools.merge.utillogging	getLoggerr   r   r    r,   r8   rI   rM   r   mergeMapBaseScriptListsumr   r   r   minrb   sumDictsClassDefLigCaretList
AttachListequalr   AxisBaseTagListmaxrn   ro   rp   rq   rr   rs   onlyExistinggetTableClassr   r   MultipleSubstAlternateSubstLigatureSubstReverseChainSingleSubst	SinglePosPairPos
CursivePosMarkBasePos
MarkLigPosMarkMarkPosr   ContextSubstChainContextSubst
ContextPosChainContextPosr   ExtensionSubstExtensionPosr^   r   r   r<   r5   r   rA   r   r   r   r   r   <module>r     s  
       < < < < < < + + + + + + 9 9 9 9 9 9 9 9 " " " "  g)**  
    "     :  $ $#&     
 (' $ $    RR! !                 " "          & &  "   ! !   
7 7  / (-2H MMX]3 U## 	  F   $ 	':u':6'B'B'K 	E(	E(	+>5+>
, ,
 U 
 
 E''((@ @ )(@F $ 	 	 	
 	 $> $> $>N 	 5 5 5. H#X%:;;5 5 <;5 HO! ! ! H      !   HOK K K
 H  4 4 ! 4 HH H H H !!( ( "!( H#X%566@ @ 76@ HO* * * H  ) ) ! )7 7 7B@M @M @M @M @Mr   