§
    |ØjºJ  ã                   óØ  — d 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	 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mZ ddlmZmZ ddlmZmZmZ d„ Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de#¦  «        Z$ G d„ de#¦  «        Z%d„ Z& G d„ de#¦  «        Z'dd œd!„Z( G d"„ d#e¦  «        Z) G d$„ d%¦  «        Z*d&S )'zGlyphSets returned by a TTFont.é    )ÚABCÚabstractmethod)ÚMapping)Úcontextmanager)ÚcopyÚdeepcopy©ÚSimpleNamespace)ÚVector)ÚotRoundÚfixedToFloat)ÚdeprecateFunction)Ú	TransformÚDecomposedTransform)ÚTransformPenÚTransformPointPen)ÚDecomposingRecordingPenÚlerpRecordingsÚreplayRecordingc                 ó~  — d| v r| d         j         S d}|                      d¦  «        }|�|j        }d| v rpt          t	          | d         j                             ¦   «         ¦  «        ¦  «        }t          |j        dd ¦  «        }|�t          ||j
        j        j        ¦  «        }d„ t          |¦  «        D ¦   «         S )NÚfvarr   ÚgvarÚCFF2ÚvarStorec                 ó.   — g | ]}t          |¬ ¦  «        ‘ŒS )©ÚaxisTagr	   )Ú.0Úis     ú�/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/fontTools/ttLib/ttGlyphSet.pyú
<listcomp>z%_getVariationAxes.<locals>.<listcomp>%   s#   € ÐAÐAÐA¨1�O AÐ&Ñ&Ô&ÐAÐAÐAó    )ÚaxesÚgetÚ	axisCountÚnextÚiterÚcffÚvaluesÚgetattrÚCharStringsÚmaxÚ
otVarStoreÚVarRegionListÚRegionAxisCountÚrange)Úfontr%   r   r(   r   s        r    Ú_getVariationAxesr2      sÃ   € Ø�€~€~Ø�FŒ|Ô Ð ð €IØ�8Š8�FÑÔ€DØÐØ”Nˆ	Ø�€~€~Ý•4˜˜VœÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ñ3Ô3ˆÝ˜3œ?¨J¸Ñ=Ô=ˆØÐÝØ˜8Ô.Ô<ÔLñô ˆIð BÐAµ°iÑ0@Ô0@ÐAÑAÔAÐAr"   c                   óŽ   — e Zd ZdZddœd„Zedefd„¦   «         Zed„ ¦   «         Zd„ Z	d	„ Z
d
„ Z ede¬¦  «        d„ ¦   «         ZdS )Ú_TTGlyphSetzlGeneric dict-like GlyphSet class that pulls metrics from hmtx and
    glyph shape from TrueType or CFF.
    T©ÚrecalcBoundsc                ó&  — || _         || _        t          |¦  «        | _        d„ | j        D ¦   «         | _        |�|ni | _        i | _        |�|ni | _        d| _        g | _	        g | _
        || _        |d         j        | _        t          |                     d¦  «        dd ¦  «        | _        d | _        |rYddlm} t          |                     d¦  «        dd ¦  «        | _        | j        �% || j        j        | j        |¦  «        | _        d S d S d S )	Nc                 ó   — i | ]
}|j         d “ŒS )r   r   )r   Úaxiss     r    ú
<dictcomp>z(_TTGlyphSet.__init__.<locals>.<dictcomp>1   s   € Ð)PÐ)PÐ)P¸d¨$¬,¸Ð)PÐ)PÐ)Pr"   r   ÚhmtxÚvmtxÚmetrics©ÚVarStoreInstancerÚHVARÚtable)r6   r1   r2   r#   ÚdefaultLocationNormalizedÚlocationÚrawLocationÚoriginalLocationÚdepthÚlocationStackÚrawLocationStackÚglyphsMappingr=   ÚhMetricsr*   r$   ÚvMetricsÚ	hvarTableÚfontTools.varLib.varStorer?   ÚVarStoreÚhvarInstancer)Úselfr1   rC   rI   r6   r?   s         r    Ú__init__z_TTGlyphSet.__init__-   s0  € Ø(ˆÔØˆŒ	Ý% dÑ+Ô+ˆŒ	Ø)PÐ)PÀdÄiÐ)PÑ)PÔ)PˆÔ&Ø$,Ð$8˜˜¸bˆŒØˆÔØ,4Ð,@  ÀbˆÔØˆŒ
ØˆÔØ "ˆÔØ*ˆÔØ˜VœÔ,ˆŒÝ §¢¨Ñ 0Ô 0°)¸TÑBÔBˆŒØˆŒØð 	ØCÐCÐCÐCÐCÐCå$ T§X¢X¨fÑ%5Ô%5°wÀÑEÔEˆDŒNØŒ~Ð)Ø%6Ð%6Ø”NÔ+¨T¬Y¸ñ&ô &�Ô"Ð"Ð"ð	ð 	ð *Ð)r"   Úresetc              #   óø  K  — | j                              | j        ¦  «         | j                             | j        ¦  «         |r\| j                             ¦   «         | _        | j                             ¦   «         | _        | j                             | j        ¦  «         n%| j                             ¦   «         | _        i | _        | j                             |¦  «         | j                             |¦  «         	 d V — | j          	                    ¦   «         | _        | j         	                    ¦   «         | _        d S # | j          	                    ¦   «         | _        | j         	                    ¦   «         | _        w xY w©N)
rG   ÚappendrC   rH   rD   rE   r   rB   ÚupdateÚpop)rP   rC   rR   s      r    ÚpushLocationz_TTGlyphSet.pushLocationF   sR  è è € àÔ×!Ò! $¤-Ñ0Ô0Ð0ØÔ×$Ò$ TÔ%5Ñ6Ô6Ð6Øð 	"Ø Ô1×6Ò6Ñ8Ô8ˆDŒMØ#Ô=×BÒBÑDÔDˆDÔØÔ×#Ò# DÔ$9Ñ:Ô:Ð:Ð:à œM×.Ò.Ñ0Ô0ˆDŒMØ!ˆDÔØŒ×Ò˜XÑ&Ô&Ð&ØÔ×Ò Ñ)Ô)Ð)ð	;ØˆJˆJˆJà Ô.×2Ò2Ñ4Ô4ˆDŒMØ#Ô4×8Ò8Ñ:Ô:ˆDÔÐÐøð !Ô.×2Ò2Ñ4Ô4ˆDŒMØ#Ô4×8Ò8Ñ:Ô:ˆDÔÐ:Ð:Ð:Ð:s   Ã9D; Ä;>E9c              #   óŒ   K  — 	 | j         }| xj         dz  c_         |V — | xj         dz  c_         d S # | xj         dz  c_         w xY w)Né   )rF   )rP   rF   s     r    Ú	pushDepthz_TTGlyphSet.pushDepthZ   sT   è è € ð	Ø”JˆEØˆJŒJ˜!‰OˆJŒJØˆKˆKˆKàˆJŒJ˜!‰OˆJŒJˆJˆJøˆDˆJŒJ˜!‰OˆJŒJˆJˆJˆJˆJs	   „1 ±Ac                 ó   — || j         v S rT   ©rI   ©rP   Ú	glyphNames     r    Ú__contains__z_TTGlyphSet.__contains__c   s   € Ø˜DÔ.Ð.Ð.r"   c                 óN   — t          | j                             ¦   «         ¦  «        S rT   )r'   rI   Úkeys©rP   s    r    Ú__iter__z_TTGlyphSet.__iter__f   s   € Ý�DÔ&×+Ò+Ñ-Ô-Ñ.Ô.Ð.r"   c                 ó*   — t          | j        ¦  «        S rT   )ÚlenrI   rc   s    r    Ú__len__z_TTGlyphSet.__len__i   s   € Ý�4Ô%Ñ&Ô&Ð&r"   z#use 'glyphName in glyphSet' instead)Úcategoryc                 ó   — || j         v S rT   r]   r^   s     r    Úhas_keyz_TTGlyphSet.has_keyl   s   € ð ˜DÔ.Ð.Ð.r"   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   r   ÚboolrX   r[   r`   rd   rg   r   ÚDeprecationWarningrj   © r"   r    r4   r4   (   sã   € € € € € ðð ð GKð ð ð ð ð ð2 ð;¨Dð ;ð ;ð ;ñ „^ð;ð& ðð ñ „^ðð/ð /ð /ð/ð /ð /ð'ð 'ð 'ð ÐØ-Ð8Jðñ ô ð/ð /ñô ð/ð /ð /r"   r4   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )Ú_TTGlyphSetGlyfTc                 óª   •— |d         | _         t          ¦   «                              ||| j         |¬¦  «         |                     d¦  «        | _        d S )NÚglyfr5   r   )Ú	glyfTableÚsuperrQ   r$   Ú	gvarTable)rP   r1   rC   r6   Ú	__class__s       €r    rQ   z_TTGlyphSetGlyf.__init__t   sH   ø€ Ø˜fœˆŒÝ‰Œ×Ò˜˜x¨¬ÀlÐÑSÔSÐSØŸš &Ñ)Ô)ˆŒˆˆr"   c                 ó0   — t          | || j        ¬¦  «        S ©Nr5   )Ú_TTGlyphGlyfr6   r^   s     r    Ú__getitem__z_TTGlyphSetGlyf.__getitem__y   s   € Ý˜D )¸$Ô:KÐLÑLÔLÐLr"   )T©rk   rl   rm   rQ   r}   Ú__classcell__©ry   s   @r    rs   rs   s   sS   ø€ € € € € ð*ð *ð *ð *ð *ð *ð
Mð Mð Mð Mð Mð Mð Mr"   rs   c                   óF   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zedefd„¦   «         Zˆ xZ	S )Ú_TTGlyphSetCFFc                 ó
  •— d|v rdnd}t          ||         j                             ¦   «         ¦  «        d         j        | _        t          ¦   «                              ||| j        ¦  «         |                      |¦  «         d S )Nr   zCFF r   )Úlistr(   r)   r+   ÚcharStringsrw   rQ   ÚsetLocation)rP   r1   rC   ÚtableTagry   s       €r    rQ   z_TTGlyphSetCFF.__init__~   sx   ø€ Ø# t˜^˜^�6�6°ˆÝ  X¤Ô 2× 9Ò 9Ñ ;Ô ;Ñ<Ô<¸QÔ?ÔKˆÔÝ‰Œ×Ò˜˜x¨Ô)9Ñ:Ô:Ð:Ø×Ò˜Ñ"Ô"Ð"Ð"Ð"r"   c                 ó"   — t          | |¦  «        S rT   )Ú_TTGlyphCFFr^   s     r    r}   z_TTGlyphSetCFF.__getitem__„   s   € Ý˜4 Ñ+Ô+Ð+r"   c                 ó°   — d | _         |rEddlm} t          | j        dd ¦  «        }|�% ||j        | j        |¦  «        }|j        | _         d S d S d | _         d S )Nr   r>   r   )ÚblenderrM   r?   r*   r…   r-   r#   ÚinterpolateFromDeltas)rP   rC   r?   r   Ú	instancers        r    r†   z_TTGlyphSetCFF.setLocation‡   s|   € ØˆŒØð 
	 ð DÐCÐCÐCÐCÐCå˜tÔ/°¸TÑBÔBˆHØÐ#Ø-Ð-¨hÔ.AÀ4Ä9ÈhÑWÔW�	Ø(Ô>�”��ð $Ð#ð  ˆDŒLˆLˆLr"   rR   c              #   ó"  K  — 	 t                                | ||¦  «        5 }|                      | j        ¦  «         |V — d d d ¦  «         n# 1 swxY w Y   |                      | j        ¦  «         d S # |                      | j        ¦  «         w xY wrT   )r4   rX   r†   rC   )rP   rC   rR   Úvalues       r    rX   z_TTGlyphSetCFF.pushLocation•   sÎ   è è € ð	,Ý×)Ò)¨$°¸%Ñ@Ô@ð ÀEØ× Ò  ¤Ñ/Ô/Ð/Ø���ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 ×Ò˜Tœ]Ñ+Ô+Ð+Ð+Ð+øˆD×Ò˜Tœ]Ñ+Ô+Ð+Ð+øøøs-   „A2  A¿A2 ÁAÁA2 ÁAÁA2 Á2B)
rk   rl   rm   rQ   r}   r†   r   ro   rX   r   r€   s   @r    r‚   r‚   }   s}   ø€ € € € € ð#ð #ð #ð #ð #ð,ð ,ð ,ð ð  ð  ð ð,¨Dð ,ð ,ð ,ñ „^ð,ð ,ð ,ð ,ð ,r"   r‚   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_TTGlyphSetVARCc                 ó€   •— || _         t          ¦   «                              |||¦  «         |d         j        | _        d S )NÚVARC)ÚglyphSetrw   rQ   rA   Ú	varcTable)rP   r1   rC   r”   ry   s       €r    rQ   z_TTGlyphSetVARC.__init__¡   s8   ø€ Ø ˆŒÝ‰Œ×Ò˜˜x¨Ñ2Ô2Ð2Ø˜fœÔ+ˆŒˆˆr"   c                 óf   — | j         }||j        j        vr| j        |         S t	          | |¦  «        S rT   )r•   ÚCoverageÚglyphsr”   Ú_TTGlyphVARC)rP   r_   Úvarcs      r    r}   z_TTGlyphSetVARC.__getitem__¦   s6   € ØŒ~ˆØ˜DœMÔ0Ð0Ð0Ø”= Ô+Ð+Ý˜D )Ñ,Ô,Ð,r"   r~   r€   s   @r    r‘   r‘       sG   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð
-ð -ð -ð -ð -ð -ð -r"   r‘   c                   ó:   — e Zd ZdZddœd„Zed„ ¦   «         Zd„ ZdS )Ú_TTGlyphaS  Glyph object that supports the Pen protocol, meaning that it has
    .draw() and .drawPoints() methods that take a pen object as their only
    argument. Additionally there are 'width' and 'lsb' attributes, read from
    the 'hmtx' table.

    If the font contains a 'vmtx' table, there will also be 'height' and 'tsb'
    attributes.
    Tr5   c                óš  — || _         || _        || _        |j        |         \  | _        | _        |j        �|j        |         \  | _        | _        nd\  | _        | _        |j	        ra|j
        �\|j
        j        €|j                             |¦  «        n|j
        j        j        |         }| xj        |j        |         z  c_        d S d S d S )N©NN)r”   Únamer6   rJ   ÚwidthÚlsbrK   ÚheightÚtsbrC   rL   ÚAdvWidthMapr1   Ú
getGlyphIDÚmappingrO   )rP   r”   r_   r6   Úvaridxs        r    rQ   z_TTGlyph.__init__·   sÚ   € Ø ˆŒØˆŒ	Ø(ˆÔØ'Ô0°Ô;ÑˆŒ
�D”HØÔÐ(Ø$,Ô$5°iÔ$@Ñ!ˆDŒK˜œ˜à$.Ñ!ˆDŒK˜œØÔð 	9 Ô!3Ð!?ð Ô%Ô1Ð9ð ”×(Ò(¨Ñ3Ô3Ð3àÔ'Ô3Ô;¸IÔFð ð
 ˆJŒJ˜(Ô0°Ô8Ñ8ˆJŒJˆJˆJð	9ð 	9Ð!?Ð!?r"   c                 ó   — t           ‚)údDraw the glyph onto ``pen``. See fontTools.pens.basePen for details
        how that works.
        )ÚNotImplementedError©rP   Úpens     r    Údrawz_TTGlyph.drawÉ   s
   € õ
 "Ð!r"   c                 óN   — ddl m} |                       ||¦  «        ¦  «         dS )úeDraw the glyph onto ``pen``. See fontTools.pens.pointPen for details
        how that works.
        r   )ÚSegmentToPointPenN)ÚfontTools.pens.pointPenr°   r­   )rP   r¬   r°   s      r    Ú
drawPointsz_TTGlyph.drawPointsÐ   s:   € ð 	>Ð=Ð=Ð=Ð=Ð=à�	Š	Ð#Ð# CÑ(Ô(Ñ)Ô)Ð)Ð)Ð)r"   N)rk   rl   rm   rn   rQ   r   r­   r²   rq   r"   r    rœ   rœ   ­   sg   € € € € € ðð ð =Að 9ð 9ð 9ð 9ð 9ð$ ð"ð "ñ „^ð"ð*ð *ð *ð *ð *r"   rœ   c                   ór   ‡ — e Zd Zddœˆ fd„
Zed„ ¦   «         Zej        d„ ¦   «         Zd„ Zd„ Zd„ Z	d	„ Z
ˆ xZS )
r|   Tr5   c                ó”   •— t          ¦   «                              |||¬¦  «         |j        r|j        €|j        �d | _        d S d S d S d S r{   )rw   rQ   rC   rL   rx   Ú_width)rP   r”   r_   r6   ry   s       €r    rQ   z_TTGlyphGlyf.__init__Ú   sb   ø€ Ý‰Œ×Ò˜ 9¸<ÐÑHÔHÐHð Ôð	àÔ"Ð*ØÔ"Ð.àˆDŒKˆKˆKð	ð 	à*Ð*Ø.Ð.r"   c                 ó¼   — | j         €O| j        | j        j        j        v r|                      ¦   «          n"| j        j        | j                 d         | _         | j         S )Nr   )rµ   rŸ   r”   rx   Ú
variationsÚ_getGlyphInstancerJ   rc   s    r    r    z_TTGlyphGlyf.widthå   sV   € àŒ;ÐØŒy˜DœMÔ3Ô>Ð>Ð>à×&Ò&Ñ(Ô(Ð(Ð(ð #œmÔ4°T´YÔ?ÀÔB�”ØŒ{Ðr"   c                 ó   — || _         d S rT   )rµ   )rP   r�   s     r    r    z_TTGlyphGlyf.widthð   s   € àˆŒˆˆr"   c                 óâ   — |                       ¦   «         \  }}| j                             ¦   «         5 }|rd}|                     || j        j        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )r©   r   N)Ú_getGlyphAndOffsetr”   r[   r­   rv   ©rP   r¬   ÚglyphÚoffsetrF   s        r    r­   z_TTGlyphGlyf.drawô   s¶   € ð ×/Ò/Ñ1Ô1‰ˆˆvàŒ]×$Ò$Ñ&Ô&ð 	=¨%Øð Ø�à�JŠJ�s˜DœMÔ3°VÑ<Ô<Ð<ð		=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ó   ±&A$Á$A(Á+A(c                 óâ   — |                       ¦   «         \  }}| j                             ¦   «         5 }|rd}|                     || j        j        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )r¯   r   N)r»   r”   r[   r²   rv   r¼   s        r    r²   z_TTGlyphGlyf.drawPoints   sË   € ð ×/Ò/Ñ1Ô1‰ˆˆvàŒ]×$Ò$Ñ&Ô&ð 	C¨%Øð Ø�à×Ò˜S $¤-Ô"9¸6ÑBÔBÐBð		Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cr¿   c                 óÔ   — | j         j        r!| j         j        �|                      ¦   «         }n| j         j        | j                 }t          |d¦  «        r| j        |j        z
  nd}||fS )NÚxMinr   )	r”   rC   rx   r¸   rv   rŸ   Úhasattrr¡   rÂ   )rP   r½   r¾   s      r    r»   z_TTGlyphGlyf._getGlyphAndOffset  si   € ØŒ=Ô!ð 	7 d¤mÔ&=Ð&IØ×*Ò*Ñ,Ô,ˆEˆEà”MÔ+¨D¬IÔ6ˆEå*1°%¸Ñ*@Ô*@ÐG�”˜EœJÑ&Ð&ÀaˆØ�fˆ}Ðr"   c           	      óâ  — ddl m} ddlm} ddlm} | j        }|j        }|j        j	        | j
                 }|j        }|j        }|                     | j
        ||¦  «        \  }	}
d\  }}|D ]¨} ||j        |j        ¦  «        }|sŒ|j        }d |v rq|€b|                     | j
        ||¦  «        \  }}|d         dk    r|d         n.t#          t%          t'          |d         ¦  «        ¦  «        ¦  «        } ||||¦  «        }|	 ||¦  «        |z  z  }	Œ©t)          || j
                 ¦  «        }t+          ||	|| j        ¬¦  «        \  }}}}|| _        || _        |j        €|| _        || _        |S )Nr   )Ú	iup_delta)ÚGlyphCoordinates)ÚsupportScalarrž   rZ   r5   )ÚfontTools.varLib.iuprÅ   ÚfontTools.ttLib.tables._g_l_y_frÆ   ÚfontTools.varLib.modelsrÇ   r”   rv   rx   r·   rŸ   rJ   rK   Ú_getCoordinatesAndControlsrC   r#   Úcoordinatesr„   r0   rf   r   Ú_setCoordinatesr6   r¡   r£   rL   r    r¢   )rP   rÅ   rÆ   rÇ   r”   rv   r·   rJ   rK   rÌ   Ú_Ú
origCoordsÚendPtsÚvarÚscalarÚdeltaÚcontrolr½   r    r¡   r¢   r£   s                         r    r¸   z_TTGlyphGlyf._getGlyphInstance  sÔ  € Ø2Ð2Ð2Ð2Ð2Ð2ØDÐDÐDÐDÐDÐDØ9Ð9Ð9Ð9Ð9Ð9à”=ˆØÔ&ˆ	ØÔ'Ô2°4´9Ô=ˆ
ØÔ$ˆØÔ$ˆØ"×=Ò=ØŒI�x ñ
ô 
‰ˆ�Qð (Ñˆ
�FØð 	<ð 	<ˆCØ"�] 8Ô#4°c´hÑ?Ô?ˆFØð ØØ”OˆEØ�uˆ}ˆ}ØÐ%Ø*3×*NÒ*NØœ	 8¨Xñ+ô +Ñ'�J ð '.¨a¤j°A¢o o˜ œ
˜
½4ÅÅcÈ'ÐRSÌ*ÁoÄoÑ@VÔ@VÑ;WÔ;Wð ð "˜	 %¨°VÑ<Ô<�ØÐ+Ð+¨EÑ2Ô2°VÑ;Ñ;ˆKˆKå�Y˜tœyÔ)Ñ*Ô*ˆÝ"1Ø�; 	¸Ô8Ið#
ñ #
ô #
Ñˆˆs�F˜Cð ˆŒØˆŒØÔÐ%àˆDŒJØ ˆDŒKØˆr"   )rk   rl   rm   rQ   Úpropertyr    Úsetterr­   r²   r»   r¸   r   r€   s   @r    r|   r|   Ù   s¼   ø€ € € € € Ø<@ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ðð ñ „Xðð „\ðð ñ „\ðð
=ð 
=ð 
=ð
Cð 
Cð 
Cðð ð ð(ð (ð (ð (ð (ð (ð (r"   r|   c                   ó   — e Zd Zd„ ZdS )r‰   c                 óp   — | j         j        | j                                      || j         j        ¦  «         dS )r©   N)r”   r…   rŸ   r­   r‹   r«   s     r    r­   z_TTGlyphCFF.drawA  s1   € ð 	ŒÔ! $¤)Ô,×1Ò1°#°t´}Ô7LÑMÔMÐMÐMÐMr"   N)rk   rl   rm   r­   rq   r"   r    r‰   r‰   @  s(   € € € € € ðNð Nð Nð Nð Nr"   r‰   c                 ó  — | j         dk    rH| j        }||         j        }|                     |d¦  «        }| j        }| j        }||cxk    o|k    nc S | j         dk    r'| j        }	|| j                 }
|
r|	|
d         z  }	|	dk    S | j         dk    r!| j        D ]}t          ||||¦  «        s dS ŒdS | j         dk    r!| j        D ]}t          ||||¦  «        r dS ŒdS | j         dk    rt          | j        |||¦  «         S dS )	NrZ   r   é   é   FTé   é   )
ÚFormatÚ	AxisIndexr   r$   ÚFilterRangeMinValueÚFilterRangeMaxValueÚDefaultValueÚVarIdxÚConditionTableÚ_evaluateCondition)Ú	conditionr#   rC   r�   Ú	axisIndexr   Ú	axisValueÚminValueÚmaxValuer�   ÚdeltasÚsubconditions               r    rå   rå   H  sr  € ØÔ˜1ÒÐàÔ'ˆ	Ø�y”/Ô)ˆØ—L’L ¨!Ñ,Ô,ˆ	ØÔ0ˆØÔ0ˆØ˜9Ð0Ð0Ò0Ð0¨Ò0Ð0Ð0Ð0Ð0Ø	Ô	˜QÒ	Ð	àÔ&ˆØ˜9Ô+Ô,ˆØð 	Ø�V˜A”YÑˆEØ�qŠyÐØ	Ô	˜QÒ	Ð	à%Ô4ð 	ð 	ˆLÝ% l°D¸(ÀIÑNÔNð Ø�u�uðàˆtØ	Ô	˜QÒ	Ð	à%Ô4ð 	ð 	ˆLÝ! ,°°hÀ	ÑJÔJð Ø�t�tðàˆuØ	Ô	˜QÒ	Ð	å%ØÔ$ d¨H°iñ
ô 
ð 
ð 	
ð ˆur"   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )r™   c                 ó8  ‡— ddl m}m} | j        }|j        }|j        j                             | j        ¦  «        }|j	        j
        |         }ddlm}	 ddlm}
 |j        Š |	|j        ‰| j        j        ¦  «        }|j        D �]”}|j        �4|j        j        |j                 }t-          |‰| j        j        |¦  «        sŒ>i }|j        �¶|j        j        |j                 }t5          |j        ¦  «        }|j        |k    r|t;          ||j                 d¦  «        z  }t=          |¦  «        t=          |¦  «        k    s&J t=          |¦  «        t=          |¦  «        f¦   «         ‚ˆfd„t?          ||¦  «        D ¦   «         }|j         |k    r1||j                  }tC          |¦  «        }| "                    |¦  «         |j#        }|j$        |j%        z  }| j        j         &                    ||¦  «        5  | j         &                    ||¦  «        5  | j        |j'        k    }|s:	 | (                    |j'        || j        j)        ¦  «         n# tT          $ r d}Y nw xY w|rŒ| +                    ¦   «         }|j'        | j        k    r| j        n|j        }||j'                 }|r&tY          ||¦  «        }| -                    |¦  «         n%t]          ||¦  «        }| /                    |¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   �Œ–dS )	r©   r   )ÚVarComponentFlagsÚNO_VARIATION_INDEX)ÚMultiVarStoreInstancerr>   Né   c                 ó2   •— i | ]\  }}‰|         j         |“ŒS rq   r   )r   r   Úvr#   s      €r    r:   z&_TTGlyphVARC._draw.<locals>.<dictcomp>–  s%   ø€ ÐXÐXÐX±4°1°a˜D œGœO¨QÐXÐXÐXr"   T)0ÚfontTools.ttLib.tables.otTablesrï   rð   r”   r•   r—   r˜   ÚindexrŸ   ÚVarCompositeGlyphsÚVarCompositeGlyphÚfontTools.varLib.multiVarStorerñ   rM   r?   r#   ÚMultiVarStorerC   Ú
componentsÚconditionIndexÚConditionListrä   rå   ÚaxisIndicesIndexÚAxisIndicesListÚItemr   Ú
axisValuesÚaxisValuesVarIndexÚfi2flrf   ÚzipÚtransformVarIndexr   ÚapplyTransformDeltasÚ	transformÚflagsÚRESET_UNSPECIFIED_AXESrX   r_   ÚaddVarComponentrD   ÚAttributeErrorÚtoTransformr   r²   r   r­   )rP   r¬   Ú
isPointPenrï   rð   r”   rš   Úidxr½   rñ   r?   r�   Úcompræ   rC   ÚaxisIndicesr  rë   r  rR   ÚshouldDecomposeÚtÚcompGlyphSetÚgÚtPenr#   s                            @r    Ú_drawz_TTGlyphVARC._drawn  s  ø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 ”=ˆØÔ!ˆØŒmÔ"×(Ò(¨¬Ñ3Ô3ˆØÔ'Ô9¸#Ô>ˆàIÐIÐIÐIÐIÐIØ?Ð?Ð?Ð?Ð?Ð?àŒ}ˆØ*Ð*ØÔ  d¤mÔ&<ñ
ô 
ˆ	ð Ô$ð 4	)ñ 4	)ˆDØÔ"Ð.Ø Ô.Ô=¸dÔ>QÔR�	Ý)Ø˜t T¤]Ô%;¸Yñô ð ð àˆHØÔ$Ð0Ø"Ô2Ô7¸Ô8MÔN�Ý# D¤OÑ4Ô4�
ØÔ*Ð.@Ò@Ð@Ø¥%¨	°$Ô2IÔ(JÈBÑ"OÔ"OÑO�JÝ˜;Ñ'Ô'­3¨z©?¬?Ò:Ð:Ð:Ý˜Ñ$Ô$Ý˜
‘O”Oð=Ñ:Ô:Ð:ð YÐXÐXÐX½3¸{ÈJÑ;WÔ;WÐXÑXÔX�àÔ%Ð);Ò;Ð;Ø" 4Ô#9Ô:�Ý ‘~”~�Ø×)Ò)¨&Ñ1Ô1Ð1ØœˆIà”JÐ!2Ô!IÑIˆEØ”Ô'×4Ò4°X¸uÑEÔEð )ð )Ø”]×/Ò/°¸%Ñ@Ô@ð )ð )Ø&*¤i°4´>Ò&A�Oà*ð 3ð3Ø×/Ò/Ø $¤°	¸4¼=Ô;Tñô ð ð øõ  .ð 3ð 3ð 3Ø.2˜O˜O˜Oð3øøøð 'ð )Ø%×1Ò1Ñ3Ô3˜ð  $œ~°´Ò:Ð:ð !œM˜Mà!)Ô!2ð %ð
 )¨¬Ô8˜Ø%ð )Ý#4°S¸!Ñ#<Ô#<˜DØŸLšL¨Ñ.Ô.Ð.Ð.å#/°°QÑ#7Ô#7˜DØŸFšF 4™LœL˜Lð1)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ùð74	)ð 4	)s[   Ç3LÈK6È#&I
É	K6É
I	ÉK6ÉI	ÉBK6Ë*LË6K:Ë:LË=K:Ë>LÌL	ÌL	c                 ó2   — |                       |d¦  «         d S )NF©r  r«   s     r    r­   z_TTGlyphVARC.drawº  s   € Ø�
Š
�3˜ÑÔÐÐÐr"   c                 ó2   — |                       |d¦  «         d S )NTr  r«   s     r    r²   z_TTGlyphVARC.drawPoints½  s   € Ø�
Š
�3˜ÑÔÐÐÐr"   N)rk   rl   rm   r  r­   r²   rq   r"   r    r™   r™   m  sE   € € € € € ðJ)ð J)ð J)ðXð ð ðð ð ð ð r"   r™   Tr5   c                óZ  — t          |¦  «        dk    sJ ‚|d         d         }|d         d         }|d         d         }|d         d         }t          d¦  «        D ]}|d= Œ|                      ¦   «         rxt          |¦  «        t          | j        ¦  «        k    sJ ‚d„ | j        D ¦   «         | _        t	          || j        ¦  «        D ]$\  }	}
t          |
d	¦  «        r|	\  |
_        |
_        Œ%nO| j        dk    rt          |¦  «        dk    sJ ‚n.t          |¦  «        t          | j	        ¦  «        k    sJ ‚|| _	        |r|  
                    |¦  «         t          ||z
  ¦  «        }t          ||z
  ¦  «        }t          | j        |z
  ¦  «        }t          || j        z
  ¦  «        }||||fS )
NrÜ   éüÿÿÿr   éýÿÿÿéþÿÿÿrZ   éÿÿÿÿc                 ó,   — g | ]}t          |¦  «        ‘ŒS rq   )r   )r   r  s     r    r!   z#_setCoordinates.<locals>.<listcomp>Î  s   € ÐDÐDÐD¨4�D ™JœJÐDÐDÐDr"   Úx)rf   r0   ÚisCompositerû   r  rÃ   r   ÚyÚnumberOfContoursrÌ   r6   r   rÂ   ÚyMax)r½   Úcoordrv   r6   Ú	leftSideXÚ
rightSideXÚtopSideYÚbottomSideYrÎ   Úpr  ÚhorizontalAdvanceWidthÚverticalAdvanceWidthÚleftSideBearingÚtopSideBearings                  r    rÍ   rÍ   Á  sÊ  € åˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?Ø�b”	˜!”€IØ�r”˜1”€JØ�RŒy˜Œ|€HØ˜”)˜A”,€Kå�1‰XŒXð ð ˆØ�"ˆIˆIà×ÒÑÔð 
"Ý�5‰zŒz�S Ô!1Ñ2Ô2Ò2Ð2Ð2Ð2ØDÐD°5Ô3CÐDÑDÔDˆÔÝ˜5 %Ô"2Ñ3Ô3ð 	#ð 	#‰GˆAˆtÝ�t˜SÑ!Ô!ð #Ø!"‘�”˜œøð	#ð 
Ô	 1Ò	$Ð	$Ý�5‰zŒz˜QŠˆˆˆˆå�5‰zŒz�S Ô!2Ñ3Ô3Ò3Ð3Ð3Ð3Ø!ˆÔàð &Ø×Ò˜9Ñ%Ô%Ð%å$ Z°)Ñ%;Ñ<Ô<ÐÝ" 8¨kÑ#9Ñ:Ô:ÐÝ˜eœj¨9Ñ4Ñ5Ô5€OÝ˜X¨¬
Ñ2Ñ3Ô3€NàØØØð	ð r"   c                   ó2   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ ZdS )
ÚLerpGlyphSeta+  A glyphset that interpolates between two other glyphsets.

    Factor is typically between 0 and 1. 0 means the first glyphset,
    1 means the second glyphset, and 0.5 means the average of the
    two glyphsets. Other values are possible, and can be useful to
    extrapolate. Defaults to 0.5.
    ç      à?c                 ó0   — || _         || _        || _        d S rT   )Ú	glyphset1Ú	glyphset2Úfactor)rP   r3  r4  r5  s       r    rQ   zLerpGlyphSet.__init__ð  s   € Ø"ˆŒØ"ˆŒØˆŒˆˆr"   c                 ód   — || j         v r|| j        v rt          || ¦  «        S t          |¦  «        ‚rT   )r3  r4  Ú	LerpGlyphÚKeyError©rP   Ú	glyphnames     r    r}   zLerpGlyphSet.__getitem__õ  s9   € Ø˜œÐ&Ð&¨9¸¼Ð+FÐ+FÝ˜Y¨Ñ-Ô-Ð-Ý�yÑ!Ô!Ð!r"   c                 ó&   — || j         v o|| j        v S rT   )r3  r4  r9  s     r    r`   zLerpGlyphSet.__contains__ú  s   € Ø˜DœNÐ*ÐJ¨y¸D¼NÐ/JÐJr"   c                 ó–   — t          | j        ¦  «        }t          | j        ¦  «        }t          |                     |¦  «        ¦  «        S rT   )Úsetr3  r4  r'   Úintersection©rP   Úset1Úset2s      r    rd   zLerpGlyphSet.__iter__ý  s<   € Ý�4”>Ñ"Ô"ˆÝ�4”>Ñ"Ô"ˆÝ�D×%Ò% dÑ+Ô+Ñ,Ô,Ð,r"   c                 ó–   — t          | j        ¦  «        }t          | j        ¦  «        }t          |                     |¦  «        ¦  «        S rT   )r=  r3  r4  rf   r>  r?  s      r    rg   zLerpGlyphSet.__len__  s<   € Ý�4”>Ñ"Ô"ˆÝ�4”>Ñ"Ô"ˆÝ�4×$Ò$ TÑ*Ô*Ñ+Ô+Ð+r"   N)r1  )	rk   rl   rm   rn   rQ   r}   r`   rd   rg   rq   r"   r    r0  r0  ç  sq   € € € € € ðð ðð ð ð ð
"ð "ð "ð
Kð Kð Kð-ð -ð -ð
,ð ,ð ,ð ,ð ,r"   r0  c                   ó   — e Zd Zd„ Zd„ ZdS )r7  c                 ó"   — || _         || _        d S rT   )Úglyphsetr:  )rP   r:  rE  s      r    rQ   zLerpGlyph.__init__	  s   € Ø ˆŒØ"ˆŒˆˆr"   c                 ó|  — t          | j        j        ¦  «        }| j        j        | j                                      |¦  «         t          | j        j        ¦  «        }| j        j        | j                                      |¦  «         | j        j        }t          t          |j	        |j	        |¦  «        |¦  «         d S rT   )
r   rE  r3  r:  r­   r4  r5  r   r   r�   )rP   r¬   Ú
recording1Ú
recording2r5  s        r    r­   zLerpGlyph.draw  s™   € Ý,¨T¬]Ô-DÑEÔEˆ
ØŒÔ ¤Ô/×4Ò4°ZÑ@Ô@Ð@Ý,¨T¬]Ô-DÑEÔEˆ
ØŒÔ ¤Ô/×4Ò4°ZÑ@Ô@Ð@à”Ô%ˆå� zÔ'7¸Ô9IÈ6ÑRÔRÐTWÑXÔXÐXÐXÐXr"   N)rk   rl   rm   rQ   r­   rq   r"   r    r7  r7    s7   € € € € € ð#ð #ð #ðYð Yð Yð Yð Yr"   r7  N)+rn   Úabcr   r   Úcollections.abcr   Ú
contextlibr   r   r   Útypesr
   ÚfontTools.misc.vectorr   ÚfontTools.misc.fixedToolsr   r   r  ÚfontTools.misc.loggingToolsr   ÚfontTools.misc.transformr   r   ÚfontTools.pens.transformPenr   r   ÚfontTools.pens.recordingPenr   r   r   r2   r4   rs   r‚   r‘   rœ   r|   r‰   rå   r™   rÍ   r0  r7  rq   r"   r    ú<module>rS     s5  ðØ %Ð %à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø (Ð (Ð (Ð (Ð (Ð (Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gðð ð ð ð ð ð ð ð ð ðBð Bð Bð(H/ð H/ð H/ð H/ð H/�'ñ H/ô H/ð H/ðVMð Mð Mð Mð M�kñ Mô Mð Mð ,ð  ,ð  ,ð  ,ð  ,�[ñ  ,ô  ,ð  ,ðF
-ð 
-ð 
-ð 
-ð 
-�kñ 
-ô 
-ð 
-ð)*ð )*ð )*ð )*ð )*ˆsñ )*ô )*ð )*ðXdð dð dð dð d�8ñ dô dð dðNNð Nð Nð Nð N�(ñ Nô Nð Nð"ð "ð "ðJQð Qð Qð Qð Q�8ñ Qô Qð Qðh >Bð #ð #ð #ð #ð #ðL,ð ,ð ,ð ,ð ,�7ñ ,ô ,ð ,ðBYð Yð Yð Yð Yñ Yô Yð Yð Yð Yr"   