Ë
    £ehL(  ã                   óú  — d Z dZ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mZ ddlmZ dd	lmZmZmZmZmZmZmZ d
Zdeegef   dee   deee      fd„Zdededefd„Z G d„ de	«      Z ed¬«       G d„ de«      «       Z ed¬«       G d„ de«      «       Zi ej>                  df e«       g“ej>                  df ed¬«      g“ej@                  df ed¬«      g“ejB                  d f ed!d"¬#«      g“ej@                  df e«       g“ejD                  df ed$¬«      g“ejF                  df ed%d&¬'«       ed(d)¬'«      g“ejH                  df ed%d&¬'«       ed*d+¬'«      g“ejJ                  df ed,d-¬'«       ed.d/¬'«      g“ejL                  df ed0¬«      g“ejL                  df e«       g“ejL                  d1f e«       g“ejN                  df ed2¬«      g“ejN                  df e«       g“ejN                  d1f ed3¬4«       ed5¬4«       ed6¬4«      g“ejP                  df ed7¬«      g“ejP                  df e«       g“ejP                  d1f e«       gejR                  df ed8¬«      gejR                  df e«       gejR                  d1f ed3¬4«       ed5¬4«       ed6¬4«      gejT                  df ed9¬«       ed3¬4«       ed6¬4«      gejV                  d f ed:¬«      gejX                  d f ed;¬«      gejZ                  d f e«       gej\                  d f ed<¬4«      gej^                  d f ed=¬«      gej`                  d f ed>d?¬'«      gejb                  d f ed@dA¬'«      gejd                  d f edBdC¬'«       edDdE¬'«      gi¥Z3eejh                  jj                  dFf   Z6dGejh                  dHedee6   fdI„Z7eee6   ee6   gd f   Z8dGejh                  dHedJe8dee6   fdK„Z9dLejt                  dMee   fdN„Z;y )OzReorder glyphs in a font.zRod Sheeteré    )ÚttLib)ÚotBase)ÚotTables)ÚABCÚabstractmethod)Ú	dataclass)Údeque)ÚOptionalÚAnyÚCallableÚDequeÚIterableÚListÚTupleÚCoverageÚget_glyph_idÚglyphsÚparallel_listc                 ó®   ‡ — |r@t        d„ t        ||«      D «       ˆ fd„¬«      }t        t        t        |Ž «      \  }}||d d  nt        |‰ ¬«      }||d d  y )Nc              3   ó*   K  — | ]  \  }}||f–— Œ y ­w©N© )Ú.0ÚgÚes      ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/ttLib/reorderGlyphs.pyú	<genexpr>z_sort_by_gid.<locals>.<genexpr>$   s   è ø€ Ò;™˜˜1ˆa�ŒVÑ;ùs   ‚c                 ó   •—  ‰| d   «      S )Nr   r   )Útr   s    €r   ú<lambda>z_sort_by_gid.<locals>.<lambda>%   s   ø€ ™, q¨¡tÓ,€ ó    ©Úkey)ÚsortedÚzipÚmapÚlist)r   r   r   Ú	reorderedÚsorted_glyphsÚsorted_parallel_lists   `     r   Ú_sort_by_gidr+      s[   ø€ ñ
 ÜÙ;¤ F¨MÓ :Ô;Û,ô
ˆ	ô /2´$¼¸Y¸Ó.HÑ+ˆÐ+Ø/ˆ‘aÑä˜v¨<Ô8ˆà€F‰1�Ir!   ÚvalueÚdotted_attrÚreturnc                 ót   — |j                  d«      }|sJ ‚|r |j                  d«      }t        | |«      } |rŒ | S )Nú.r   )ÚsplitÚpopÚgetattr)r,   r-   Ú
attr_namesÚ	attr_names       r   Ú_get_dotted_attrr6   /   sC   € Ø×"Ñ" 3Ó'€JÙÐˆ:á
Ø—N‘N 1Ó%ˆ	Ü˜˜yÓ)ˆò ð €Lr!   c                   óV   — e Zd ZdZedej                  dej                  ddfd„«       Z	y)ÚReorderRulezEA rule to reorder something in a font to match the fonts glyph order.Úfontr,   r.   Nc                  ó   — y r   r   )Úselfr9   r,   s      r   ÚapplyzReorderRule.apply<   s   € ØJMr!   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚTTFontr   Ú	BaseTabler<   r   r!   r   r8   r8   9   s,   „ ÙOàØM˜%Ÿ,™,ÐM¨v×/?Ñ/?ÐMÀDÒMó ÙMr!   r8   T)Úfrozenc                   óp   — e Zd ZU dZdZee   ed<   eZ	eed<   de
j                  dej                  ddfd„Zy)	ÚReorderCoveragezNReorder a Coverage table, and optionally a list that is sorted parallel to it.NÚparallel_list_attrÚcoverage_attrr9   r,   r.   c                 óô  — t        || j                  «      }t        |«      t        ur“d }| j                  rct        || j                  «      }t        |«      t        u sJ | j                  › d�«       ‚t        |«      t        |j                  «      k(  sJ d«       ‚t        |j                  |j                  |«       y | j                  r
J d| › �«       ‚|D ]#  }t        |j                  |j                  d «       Œ% y )Nú should be a listzNothing makes sensez2Can't have multiple coverage AND a parallel list; )	r6   rG   Útyper'   rF   Úlenr   r+   Ú
getGlyphID)r;   r9   r,   Úcoverager   Úcoverage_entrys         r   r<   zReorderCoverage.applyH   sï   € Ü# E¨4×+=Ñ+=Ó>ˆä�‹>¤Ñ%à ˆMØ×&Ò&Ü 0°¸×8OÑ8OÓ P�ä˜Ó'¬4Ñ/ðAà×-Ñ-Ð.Ð.?Ð@óAØ/ä˜=Ó)¬S°·±Ó-AÒAÐXÐCXÓXÐAä˜Ÿ™¨(¯/©/¸=ÕIð
 ×+Ò+ðKàCÀDÀ6ÐJóKØ+à"*ò K�Ü˜TŸ_™_¨n×.CÑ.CÀTÕJñKr!   )r=   r>   r?   r@   rF   r
   ÚstrÚ__annotations__Ú_COVERAGE_ATTRrG   r   rA   r   rB   r<   r   r!   r   rE   rE   @   sH   … áXð )-Ð˜ ™Ó,Ø'€M�3Ó'ðK˜%Ÿ,™,ð K¨v×/?Ñ/?ð KÀDô Kr!   rE   c                   ób   — e Zd ZU dZeed<   eed<   dej                  dej                  ddfd„Z
y)	ÚReorderLista7  Reorder the items within a list to match the updated glyph order.

    Useful when a list ordered by coverage itself contains something ordered by a gid.
    For example, the PairSet table of https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-2-pair-adjustment-positioning-subtable.
    Ú	list_attrr#   r9   r,   r.   Nc                 ó¨   ‡ ‡— t        |‰ j                  «      }t        |t        «      sJ ‰ j                  › d�«       ‚|j	                  ˆˆ fd„¬«       y )NrI   c                 óN   •— ‰j                  t        | ‰j                  «      «      S r   )rL   r3   r#   )Úvr9   r;   s    €€r   r    z#ReorderList.apply.<locals>.<lambda>n   s   ø€ ˜tŸ™¬w°q¸$¿(¹(Ó/CÓD€ r!   r"   )r6   rT   Ú
isinstancer'   Úsort)r;   r9   r,   Úlsts   ``  r   r<   zReorderList.applyk   sD   ù€ Ü˜u d§n¡nÓ5ˆÜ˜#œtÔ$ÐJ¨¯©Ð(8Ð8IÐ&JÓJÐ$Ø�‰ÔDˆÕEr!   )r=   r>   r?   r@   rO   rP   r   rA   r   rB   r<   r   r!   r   rS   rS   `   s;   … ñð ƒNØ	ƒHðF˜%Ÿ,™,ð F¨v×/?Ñ/?ð FÀDô Fr!   rS   é   é   ÚValue)rF   ÚPairSetNÚPairValueRecordÚSecondGlyphr"   ÚEntryExitRecordÚMarkCoveragezMarkArray.MarkRecord)rG   rF   ÚBaseCoveragezBaseArray.BaseRecordÚLigatureCoveragezLigatureArray.LigatureAttachÚMark1CoveragezMark1Array.MarkRecordÚMark2CoveragezMark2Array.Mark2RecordÚ
PosRuleSeté   ÚChainPosRuleSetÚBacktrackCoverage)rG   ÚInputCoverageÚLookAheadCoverageÚ
SubRuleSetÚChainSubRuleSetÚ
SubstituteÚAttachPointÚLigGlyphÚExtendedShapeCoverageÚItalicsCorrectionÚTopAccentCoverageÚTopAccentAttachmentÚMathKernCoverageÚMathKernInfoRecordsÚVertGlyphCoverageÚVertGlyphConstructionÚHorizGlyphCoverageÚHorizGlyphConstruction.ÚrootÚroot_accessorc              #   ó<   K  — t        | |d„ «      E d {  –—†  y 7 Œ­w)Nc                 ó$   — | j                  |«      S r   )Úextend)ÚfrontierÚnews     r   r    z!_bfs_base_table.<locals>.<lambda>×   s   € °8·?±?À3Ó3G€ r!   )Ú_traverse_ot_data)r|   r}   s     r   Ú_bfs_base_tabler„   Ó   s"   è ø€ ô !ØˆmÑGó÷ ò ús   ‚”•Úadd_to_frontier_fnc              #   ó<  K  — t        «       }|j                  t        j                  j	                  || «      f«       |r\|j                  «       }|d   j                  }|–— g }|j                  «       D ]  }|j                  ||fz   «       Œ  |||«       |rŒ[y y ­w)Néÿÿÿÿ)r	   Úappendr   rB   ÚSubTableEntryÚpopleftr,   ÚiterSubTables)r|   r}   r…   r�   ÚpathÚcurrentÚnew_entriesÚsubtable_entrys           r   rƒ   rƒ   ß   s˜   è ø€ ô
 %*£G€HØ‡O�O”V×%Ñ%×3Ñ3°MÀ4ÓHÐJÔKÙ
à×ÑÓ!ˆØ�r‘(—.‘.ˆàŠ
àˆØ%×3Ñ3Ó5ò 	9ˆNØ×Ñ˜t ~Ð&7Ñ7Õ8ð	9ñ 	˜8 [Ô1ô ùs   ‚BBÂBr9   Únew_glyph_orderc           	      óN  ‡ — ‰ j                  «       }t        |«      t        |«      k7  r$t        dt        |«      › dt        |«      › d�«      ‚t        |«      t        |«      k7  r;t        dt        |«      t        |«      z
  › dt        |«      t        |«      z
  › �«      ‚‰ j	                  «        t        ˆ fd„‰ j                  «       D «       «      }|rt        d|› �«      ‚‰ j                  |«       h d£}|D ]‹  }|‰ j                  «       v sŒt        ‰ |   j                  d	|› d
�«      D ]V  }|d   j                  }t        |«      t        |dd «      f}t        j                  |g «      D ]  }	|	j                  ‰ |«       Œ ŒX Œ� d‰ v r—‰ d   }
|
j                   j"                  d   j$                  j&                  }||
j                   j"                  d   _        |D �ci c]  }||j                  |«      “Œ c}|
j                   j"                  d   j$                  _        y y c c}w )NzNew glyph order contains z glyphs, but font has z glyphszTNew glyph order does not contain the same set of glyphs as the font:
* only in new: z
* only in old: c              3   óF   •K  — | ]  }‰j                  |«      rŒ|–— Œ y ­wr   )ÚisLoaded)r   r   r9   s     €r   r   z reorderGlyphs.<locals>.<genexpr>  s   øè ø€ ÒG˜a°d·m±mÀAÕ6FœÑGùs   ƒ!š!z/Everything should be loaded, following aren't: >   ÚGDEFÚGPOSÚGSUBÚMATHzfont["z"]r‡   ÚFormatzCFF r   )ÚgetGlyphOrderrK   Ú
ValueErrorÚsetÚensureDecompiledr$   ÚkeysÚsetGlyphOrderr„   Útabler,   rJ   r3   Ú_REORDER_RULESÚgetr<   ÚcffÚtopDictIndexÚCharStringsÚcharStringsÚcharset)r9   r�   Úold_glyph_orderÚ
not_loadedÚcoverage_containersÚtagrŒ   r,   Úreorder_keyÚreorderÚ	cff_tableÚcharstringsÚks   `            r   ÚreorderGlyphsr°   ô   s!  ø€ Ø×(Ñ(Ó*€OÜ
ˆ?Óœs ?Ó3Ò3ÜØ'¬¨OÓ(<Ð'=ð >Ü Ó0Ð1°ð:ó
ð 	
ô
 ˆ?Óœs ?Ó3Ò3ÜðÜ! /Ó2´S¸Ó5IÑIÐJð KÜ! /Ó2´S¸Ó5IÑIÐJðLó
ð 	
ð 	×ÑÔÜÓG 4§9¡9£;ÔGÓG€JÙÜÐJÈ:È,ÐWÓXÐXà×Ñ�Ô'â:ÐØ"ò /ˆØ�$—)‘)“+ÒÜ'¨¨S©	¯©¸6À#ÀÀbÐ9IÓJò /�Ø˜R™Ÿ™�Ü# E›{¬G°E¸8ÀTÓ,JÐK�Ü-×1Ñ1°+¸rÓBò /�GØ—M‘M $¨Õ.ñ/ñ/ð/ð ��~Ø˜‘Lˆ	Ø—m‘m×0Ñ0°Ñ3×?Ñ?×KÑKˆØ0?ˆ	�‰×"Ñ" 1Ñ%Ô-à+:öA
Ø&'ˆAˆ{�‰˜qÓ!Ñ!òA
ˆ	�‰×"Ñ" 1Ñ%×1Ñ1Õ=ð	 ùòA
s   ÇH")<r@   Ú
__author__Ú	fontToolsr   ÚfontTools.ttLib.tablesr   r   ÚotÚabcr   r   Údataclassesr   Úcollectionsr	   Útypingr
   r   r   r   r   r   r   rQ   rO   Úintr+   r6   r8   rE   rS   Ú	SinglePosÚPairPosr^   Ú
CursivePosÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosÚ
ContextPosÚChainContextPosÚContextSubstÚChainContextSubstÚReverseChainSingleSubstÚ
AttachListÚLigCaretListÚMarkGlyphSetsDefÚMathGlyphInfoÚMathItalicsCorrectionInfoÚMathTopAccentAttachmentÚMathKernInfoÚMathVariantsr    rB   r‰   ÚSubTablePathr„   ÚAddToFrontierFnrƒ   rA   r°   r   r!   r   ú<module>rÏ      s•  ðÙ à€
õ Ý )Ý 1ß #Ý !Ý ÷÷ ñ ð €ðØ˜C˜5 #˜:Ñ&ðà�‰Iðð ˜D ™IÑ&óð$˜Cð ¨cð °có ôN�#ô Nñ �$ÔôK�kó Kó ðKñ> �$ÔôF�+ó Fó ðFð$Xà‡\�\�1Ð™Ó)Ð*ðXð ‡\�\�1Ð™¸7ÔCÐDðXð ‡Z�Z�€O‘o¸ÔCÐDð	Xð
 ‡Z�Z�Ð™Ð%6¸MÔJÐKðXð ‡Z�Z�€O‘oÓ'Ð(ðXð ‡]�]�AÐ™Ð<MÔNÐOðXð ‡^�^�QÐÙØ(Ð=Sô	
ñ 	Ø(Ð=Sô	
ð	ðXð  ‡]�]�AÐÙØ(Ð=Sô	
ñ 	Ø,Ø=ô	
ð	ð!Xð2 ‡^�^�QÐÙØ)Ð>Uô	
ñ 	Ø)Ð>Vô	
ð	ð3XðB ‡]�]�AÐ™¸LÔIÐJðCXðD ‡]�]�AÐ™Ó*Ð+ðEXðF ‡]�]�AÐ™Ó*Ð+ðGXðH ×Ñ˜Ð™oÐARÔSÐTðIXðJ ×Ñ˜Ð™oÓ/Ð0ðKXðL ×Ñ˜ÐÙÐ&9Ô:Ù oÔ6ÙÐ&9Ô:ððMXðX ‡_�_�aÐ™?¸lÔKÐLðYXðZ ‡_�_�aÐ™?Ó,Ð-ð[Xð\ ‡_�_�aÐ™?Ó,Ð-Ø×Ñ˜1Ð¡ÐCTÔ UÐVØ×Ñ˜1Ð¡Ó 1Ð2Ø×Ñ˜1ÐÙÐ&9Ô:Ù oÔ6ÙÐ&9Ô:ð ð
 ×Ñ Ð#Ù¨<Ô8ÙÐ&9Ô:ÙÐ&9Ô:ð&ð ‡]�]�DÐ™O¸}ÔMÐNØ‡_�_�dÐ™oÀÔLÐMØ×Ñ˜$Ð¡/Ó"3Ð!4à×Ñ�tÐ™Ð=TÔUÐVØ×!Ñ! 4Ð(ÙÐ+>Ô?ð+ð ×Ñ Ð&ÙØ-ÐBWô	
ð)ð
 ‡_�_�dÐÙØ,ÐAVô	
ðð
 ‡_�_�dÐÙØ-Ø6ô	
ñ 	Ø.Ø7ô	
ð	ñ]X€ðz �V×%Ñ%×3Ñ3°SÐ8Ñ9€ðØ
×
Ñ
ðØ+.ðàˆlÑóð ˜E ,Ñ/°°lÑ1CÐDÀdÐJÑK€ð2Ø
×
Ñ
ð2Ø+.ð2ØDSð2àˆlÑó2ð*(
˜Ÿ™ð (
°t¸C±yô (
r!   