
    h>                        S SK Jr  S SKJr  S SKJr  S SKJrJr  S SK	7  S SK
r
\
R                  " S5      rS rS	 rS
 rS rS rS rS \S.\R&                  l        S S S.\R*                  l        \S S.\R.                  l        \\S.\R2                  l        \\S.\R6                  l        \\S.\R:                  l        \\\S.\R<                  l        \\\S.\R>                  l        \ \\S.\RB                  l        S\0\RD                  l        \\S.\RF                  l        \\$S.=\RJ                  l        =\RL                  l        =\RN                  l        =\RP                  l        =\RR                  l        \RT                  l        \+" \ 5      \S.=\RX                  " S5      l        =\RX                  " S 5      l        =\RX                  " S!5      l        =\RX                  " S"5      l        =\RX                  " S#5      l        \RX                  " S$5      l        \" \RX                  " S 5      5      S% 5       r-\" \R\                  \R^                  \R`                  \Rb                  \Rd                  \Rf                  \Rh                  \Rj                  \Rl                  \Rn                  \Rp                  5      S& 5       r9\" \Rt                  \Rv                  \Rx                  \Rz                  5      S' 5       r>\" \Rt                  \Rv                  \Rx                  \Rz                  5      S( 5       r9\" \R~                  \R                  5      S) 5       r9\" \R                  5      S* 5       r9\" \R2                  5      S+ 5       r9\" \R                  5      S, 5       rB\" \R2                  5      S- 5       rB\" \R                  5      S. 5       r9\" \R.                  5      S/ 5       r9\" \R                  \R                  5      S0 5       rF\" \R                  5      S1 5       rF\" \R&                  5      S2 5       rFS3 rHS4 rIg)5    )ttLib)DefaultTable)otTables)
add_methodmergeObjects)*NzfontTools.mergec                     [        U 5      $ N)sumListslsts    H/var/www/html/env/lib/python3.13/site-packages/fontTools/merge/layout.pymergeLookupListsr      s    C=    c                    U (       d   e[         R                  " 5       nS Ul        [        U  Vs/ s H!  o"R                  (       d  M  UR                  PM#     sn5      Ul        [        UR                  5      Ul        U$ s  snf r
   )r   FeatureFeatureParamsr   LookupListIndexlenLookupCountr   selfls      r   mergeFeaturesr      sl    J3DD+$'=Cq+<+<			C=D 4//0DK 	>s   A?A?c                 R   0 nU  H>  nU H5  nUR                   nXA;  a  / X'   X   R                  UR                  5        M7     M@     / n[        UR	                  5       5       HA  n[
        R                  " 5       nXFl         [        X   5      Ul        UR                  U5        MC     U$ r
   )
FeatureTagappendr   sortedkeysr   FeatureRecordr   )r   dr   ftagretrecs          r   mergeFeatureListsr&       s    
AA,,C|FMM!))$	   Caffh$$&#AF+

3	  
 Jr   c                 H   U (       d   e[        S U  5       5      (       d   e[        R                  " 5       nS Ul        SUl        [        U  Vs/ s H!  o"R                  (       d  M  UR                  PM#     sn5      Ul        [        UR                  5      Ul        U$ s  snf )Nc              3   >   #    U  H  oR                   S :H  v   M     g7f)  N)ReqFeatureIndex).0r   s     r   	<genexpr>!mergeLangSyses.<locals>.<genexpr>5   s     8Cq  F*Cs   r)   )	allr   LangSysLookupOrderr*   r&   FeatureIndexr   FeatureCountr   s      r   mergeLangSysesr3   1   s    J3 8C88888DD!D)!$7A7D D--.DK 	8s   B'Bc                    U (       d   e[        U 5      S:X  a  U S   $ 0 nU  H[  nUR                   HH  nUR                  U;  a  / XR                  '   XR                     R                  UR                  5        MJ     M]     / n[        UR                  5       5       HA  u  pV[        R                  " 5       n[        U5      Ul        XSl        UR                  U5        MC     [        R                  " 5       nXGl        [        U5      Ul
        U  Vs/ s H!  oR                  (       d  M  UR                  PM#     n	nU	(       a  [        U	5      Ul        U$ S Ul        U$ s  snf )N   r   )r   LangSysRecord
LangSysTagr   r/   r   itemsr   r3   ScriptLangSysCountDefaultLangSys)
r   	langSysessrlsr	lsrecordsr#   langSys_listr   sdfltLangSysess
             r   mergeScriptsrC   A   s)   J3
3x1}1vI##C~~Y.,.	..)nn%,,S[[9 $ 
 I#IOO$56$$&$\2	 7 ??D"ID/2Gs!6F6F%Q%%sMG,]; K #K Hs   E(Ec                 R   0 nU  H>  nU H5  nUR                   nXA;  a  / X'   X   R                  UR                  5        M7     M@     / n[        UR	                  5       5       HA  n[
        R                  " 5       nXFl         [        X   5      Ul        UR                  U5        MC     U$ r
   )	ScriptTagr   r9   r   r   r   ScriptRecordrC   )r   r!   r   rA   r#   r$   r%   s          r   mergeScriptRecordsrG   ^   s    
AA++C|FMM!((#	   Caffh##%!!&)


3	  
 Jr   c                     g r
    r   s    r   <lambda>rJ   p   s    tr   )ScriptCountrF   c                     g r
   rI   r   s    r   rJ   rJ   t   s    4r   c                 *    [        [        U 5      S S9$ )Nc                     U R                   $ r
   )BaseScriptTagrA   s    r   rJ   <lambda>.<locals>.<lambda>w   s    Q__r   keyr   r   r   s    r   rJ   rJ   v   s    F4%r   )BaseScriptCountBaseScriptRecordc                 *    [        [        U 5      S S9$ )Nc                     U R                   $ r
   r   rP   s    r   rJ   rQ   }   s    Q\\r   rR   rT   r   s    r   rJ   rJ   }   s    ;Q!Rr   )r2   r    )r   Lookup)Formatglyphs)r[   	classDefs)CoverageLigGlyphCountLigGlyph)r^   
GlyphCountAttachPoint)MarkSetTableFormatMarkSetCountr^   r   )BaseTagCountBaselineTag)r   Version)tableTagtableGDEFGSUBGPOSBASEJSTFMATHc                    [        U5      [        UR                  5      :X  d   e[        [        X!R                  5      5       GH  u  nu  pEU(       d  M  Ub	  U[        L a0  [
        R                  SUR                  U   R                  U5        MN  S nS nUR                  R                  R                   GH  nUR                  S:X  a  M  UR                  R                  /UR                  R                   V	s/ s H  oR                   PM     sn	-    GH  n
U
c  M	  U
R"                   Vs/ s H  oR$                  S:X  d  M  UPM     nn[        U5      S::  d   eU(       a  US   nOU(       d  [&        R(                  " 5       nSUl        [&        R*                  " 5       =ol        S Ul        SUl        / Ul        UR                  R2                  R(                  R5                  U5        UR                  R2                  =R6                  S-  sl        UnU
R"                  R5                  U5        U
R"                  R9                  S S9  U(       Gd  [&        R:                  " 5       nX^l        [&        R>                  " 5       nSUl         SUl!        SUl"        U/Ul#        UR                  RH                  cZ  [&        RH                  " 5       UR                  l$        / UR                  RH                  l        SUR                  RH                  l        UR                  RH                  R>                  R5                  U5        UR                  RH                  =R.                  S-  sl        UR*                  R0                  S S U/:w  d  GMu  U/UR*                  R0                  S S& UR*                  =R.                  S-  sl        GM     GM     GM     [J        RL                  " XU5        U $ s  sn	f s  snf )Nz[Have non-identical duplicates to resolve for '%s' but no GSUB. Are duplicates intended?: %sDFLTloclr5   r   c                     U R                   $ r
   rY   )vs    r   rJ   merge.<locals>.<lambda>   s    ALLr   rR   )'r   duplicateGlyphsPerFont	enumeratezipNotImplementedlogwarningfonts_merger__nameri   
ScriptListrF   rE   r9   r;   r6   r/   r1   r   r   r    r   r   r   r   FeatureListr   r2   sortSingleSubstmappingrZ   
LookupFlag
LookupTypeSubTableCountSubTable
LookupListr   merge)r   mtablesiri   dupssynthFeaturesynthLookupscriptr   langsysrt   featurer"   subtables                  r   r   r      s#   v;#a667777%c&2J2J&KL=E=E^3KKm
((
 kk,,99F6)"MM889#)==#>#>=#>a		#>=  ?&-&:&:U&:llf>T1&:U7|q(((%ajG''/'='='?28/3;3C3C3EE0*.(),.)//==DD\R//<<A<*G((//8((--2H-I"'335H'+$"*//"3K-.K*-.K*01K-,4:K({{--5 2:1D1D1F.8:..5=>..:KK**1188EKK**66!;6??222A6;-G;F-GOO33BQ7OO//14//W : Mz t'K]=
 Vs   9O)
*O.
O.
c                     g r
   rI   r   	lookupMaps     r   
mapLookupsr     s     	r   c                     " S S[         5      nU R                  S;  a  g [        U R                  S5      (       d  0 U R                  l        U R                  U R                  R                  ;  a?  U" U R                  U R                  5      nX R                  R                  U R                  '   U R                  R                  U R                     $ )Nc                       \ rS rSrS rSrg)/__merge_classify_context.<locals>.ContextHelperi  c                 X   UR                   R                  S5      (       a  SnSnOSnSnUR                   R                  S5      (       a  SnOSnXS-   nX0l        X@l        XPl        X`l        US-   U l        US:X  a  US-   U l        US	-   U l	        g US
:X  a  US-   U l        US-   U l	        g g )NSubstSubPosChain LookupRecordr5   RuleRuleSet   	ClassRuleClassSet)
__name__endswith
startswithTypTyper   ChainTypr   r   r   )r   klassr[   r   r   r   r   s          r   __init__8__merge_classify_context.<locals>.ContextHelper.__init__  s    ~~&&w//~~((11{HHIJ$M $~ 5D{$v-	')31${2	'*4 r   )r   r   r   r   r   r   r   N)r   
__module____qualname____firstlineno__r   __static_attributes__rI   r   r   ContextHelperr     s    	5r   r   )r5   r      _merge__ContextHelpers)objectr[   hasattr	__class__r   )r   r   helpers      r   __merge_classify_contextr     s    5 58 {{)#4>>#;<<02-{{$..???t~~t{{;=C--dkk:>>00==r   c                    U R                  5       nU R                  S;   a  [        XR                  5       Hi  nU(       d  M  [        X2R                  5       HD  nU(       d  M  [        XBR
                  5       H  nU(       d  M  XR                     Ul        M!     MF     Mk     g U R                  S:X  a9  [        XR
                  5       H  nU(       d  M  XR                     Ul        M!     g  SU R                  -  5       e)N)r5   r   r   unknown format: %s)r   r[   getattrr   r   r   r   )r   r   crsrlls         r   r   r   B  s     	%%'A{{f$		*BR(!!^^4B )23E3E)FB& 5 ) + 
	$/B!*+=+=!>B 0
 	5&44qr   c                     U R                   S:X  a  U R                  R                  U5        g  SU R                   -  5       e)Nr5   r   )r[   ExtSubTabler   r   s     r   r   r   _  s6    {{a##I.4&44qr   c                 ^    U R                    H  nU(       d  M  UR                  U5        M     g r
   )r   r   )r   r   sts      r   r   r   g  s"    mm
i  r   c                 ^    U R                    H  nU(       d  M  UR                  U5        M     g r
   )rZ   r   )r   r   r   s      r   r   r   o  s"    [[	Y r   c                 T    U R                   S-  (       a  XR                     U l        g g )N   )r   MarkFilteringSet)r   markFilteringSetMaps     r   mapMarkFilteringSetsr   w  s$     34I4I J  r   c                 ^    U R                    H  nU(       d  M  UR                  U5        M     g r
   )rZ   r   )r   r   r   s      r   r   r   }  s%    [[	23 r   c                 V    U R                    Vs/ s H  o!U   PM	     snU l         g s  snf r
   )r   )r   r   r   s      r   r   r     s&    262F2FG2FQaL2FGDGs   &c                     U R                    H8  nU(       a  UR                  (       d  M  UR                  R                  U5        M:     g r
   )r    r   r   )r   r   r"   s      r   r   r     s0    					Y'  r   c                     U R                    Vs/ s H  o!U   PM	     snU l         U R                  S:w  a  XR                     U l        g g s  snf )Nr)   )r1   r*   )r   
featureMapr   s      r   mapFeaturesr     sM    040A0AB0A1A0ABDu$)*>*>? % Cs   A
c                     U R                   (       a  U R                   R                  U5        U R                   H8  nU(       a  UR                  (       d  M  UR                  R                  U5        M:     g r
   )r;   r   r6   r/   )r   r   r   s      r   r   r     sM    ''
3					j)  r   c                     U R                    H8  nU(       a  UR                  (       d  M  UR                  R                  U5        M:     g r
   )rF   r9   r   )r   r   rA   s      r   r   r     s0    	Z( r   c                 v   U R                  S5      nU R                  S5      nU R                  S5      nX#4 GH  nU(       d  M  UR                  R                  (       Ga%  [        UR                  R                  R                  5       VVs0 s H  u  pVXV_M	     nnnUR                  R                  R                  U5        UR                  R                  R                  U5        U(       a  UR                  R                  S:  a}  UR                  R                  (       ab  [        UR                  R                  R                  5       VVs0 s H  u  pVXV_M	     nnnUR                  R                  R                  U5        UR                  R                  (       d  GMl  UR                  R                  (       d  GM  [        UR                  R                  R                  5       VVs0 s H  u  pVXV_M	     n	nnUR                  R                  R                  U	5        GM     g s  snnf s  snnf s  snnf Nrj   rk   rl   i  )getri   r   rw   rZ   r   r   rg   MarkGlyphSetsDefr^   r   r~   r    r   )
fontrj   rk   rl   tr   rt   r   r   r   s
             r   layoutPreMerger     s    88FD88FD88FD\77*3AGG4F4F4M4M*NO*N$!*NIOGG)))4GG**95 JJ&&*4JJ// &/tzz/J/J/S/S%T'%TTQAD%T $ ' ""778KL77177#5#5#5+4QWW5H5H5V5V+WX+W41!$+WJXGG**:6+ 
 P' Ys   H)H/-H5c                 x	   U R                  S5      nU R                  S5      nU R                  S5      nX#4 GHs  nU(       d  M  UR                  R                  (       Ga  UR                  R                  (       Ga  [	        UR                  R                  R
                  5      nUR                  R                  R                  U5        [        UR                  R                  R
                  5      nUR                  R                  R                  U5        UR                  n[        UR                  R                  R
                  5       VVs/ s H  u  pxXv;   d  M  UPM     snnUR                  R                  l        [        UR                  R                  R
                  5      nUR                  R                  R                  U5        [        UR                  R                  R
                  5      UR                  R                  l        UR                  R                  (       d  GM  [	        UR                  R                  R                  5      n	UR                  R                  R                  U	5        UR                  R                  R                  U	5        [        UR                  R                  R                  5      n	UR                  R                  R                  U	5        UR                  R                  R                  U	5        U	R                  n[        UR                  R                  R                  5       VV
s/ s H  u  pzXv;   d  M  U
PM     sn
nUR                  R                  l        [        UR                  R                  R                  5      n	UR                  R                  R                  U	5        UR                  R                  R                  U	5        [        UR                  R                  R                  5      UR                  R                  l        U(       d  GM  UR                  R"                  S:  d  GM%  [        UR                  R$                  R&                  5      nUR                  R                  R)                  U5        GMv     g s  snnf s  sn
nf r   )r   ri   r   r~   GregariousIdentityDictr    r   AttendanceRecordingIdentityDictrA   rw   NonhashableDictr   r2   r   rZ   r   r   rg   r   r^   r   )r   rj   rk   rl   r   r   usedIndicesr   r"   r   r   r   s               r   layoutPostMerger     s8    88FD88FD88FD\77177#5#5#5/0C0C0Q0QRJGG**:6 9##11J GG**:6$,,K
 &agg&9&9&G&GH1HDA# H1AGG- ))<)<)J)JKJGG**:6/21773F3F3T3T/UAGG,77.qww/A/A/H/HIIGG**95GG)))4 88J8J8Q8QRIGG**95GG)))4#++K ((:(:(A(AB)BdaaFVB)AGG%
 ((:(:(A(ABIGG**95GG)))4-01C1C1J1J-KAGG*t

**j8&5JJ//88'# ""778KLs "12)s   R0R0R6R6)J	fontToolsr   #fontTools.ttLib.tables.DefaultTabler   fontTools.ttLib.tablesr   fontTools.merge.baser   r   fontTools.merge.utillogging	getLoggerrz   r   r   r&   r3   rC   rG   r~   mergeMapBaseScriptListsumr   r   r   minr^   sumDictsClassDefLigCaretList
AttachListequalr   AxisBaseTagListmaxrj   rk   rl   rm   rn   ro   onlyExistinggetTableClassr   r   MultipleSubstAlternateSubstLigatureSubstReverseChainSingleSubst	SinglePosPairPos
CursivePosMarkBasePos
MarkLigPosMarkMarkPosr   ContextSubstChainContextSubst
ContextPosChainContextPosr   ExtensionSubstExtensionPosrZ   r   r   r;   r/   r   r9   r   r   rI   r   r   <module>r     s  
  < + 9 "  )*
" :$ $&    
 ($     R!                 "          &   "   !    
7  / (--2H MMMMX]]3 U#	  F  $ 	u':':6'B'K 		(		(	+0+>+>
,
U  

 E'(@ )@F $$		
 	$>$>N 	55. H##X%:%:;5 <5 HOO! ! H   !  HOOK K
 H 4 !4 HH H H  !( "( H##X%5%56@ 7@ HOO* * H ) !)7B@Mr   