ó
    oñ:iuY  ã                   ó”  • S SK Jr  S SKJrJrJrJrJrJrJ	r	J
r
JrJr  S SKJr  S SKJrJr  S SKJr  S SKJr  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J r   S SK!J"r"  SSK#J$r$J%r%J&r&J'r'  \$r(\%r)S r*\" S5      S 5       r+S r,Sr-S r.S r/S r0S r1\" SS5      r2S r3S%S jr4S r5S r6 " S S\5      r7 " S  S!\75      r8 " S" S#\ 5      r9g$)&é    )Ú
namedtuple)
ÚmaxStackLimitÚTopDictIndexÚ
buildOrderÚtopDictOperatorsÚtopDictOperators2ÚprivateDictOperatorsÚprivateDictOperators2ÚFDArrayIndexÚFontDictÚVarStoreData)ÚBytesIO)ÚspecializeCommandsÚcommandsToProgram)ÚnewTable)ÚvarLib)ÚallEqual)ÚdeprecateFunction)Ú	roundFunc)ÚT2CharStringÚT2OutlineExtractor)ÚT2CharStringPen)Úpartialé   )ÚVarLibCFFDictMergeErrorÚVarLibCFFPointTypeMergeErrorÚVarLibCFFHintTypeMergeErrorÚVarLibMergeErrorc                 óî  • U S   nUR                    Vs/ s H  oUR                  PM     nn[        R                  R	                  X65      n[        R                  R                  Xr5      nU S   R                  R                  S   n	[        US9U	l	        U	R                  S   R                  cD  U	R                  n
U
 H1  n[        US5      (       d  M  U	R                  UR                  l        M3     g g s  snf )NÚfvarÚCFF2r   )Ú
otVarStoreÚPrivate)ÚaxesÚaxisTagr   ÚbuilderÚbuildVarRegionListÚbuildVarStoreÚcffÚtopDictIndexr   ÚVarStoreÚFDArrayÚvstoreÚhasattrr#   )ÚvarFontÚvarModelÚvarDataListÚmasterSupportsÚ	fvarTableÚaxisÚaxisKeysÚvarTupleListÚvarStoreCFFVÚtopDictÚfdArrayÚfontDicts               ÚW/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/varLib/cff.pyÚaddCFFVarStorer<   &   sÇ   € Ø˜‘€IØ)2¯ªÓ8ª —”©€HÐ8Ü—>‘>×4Ñ4°^ÓN€LÜ—>‘>×/Ñ/°ÓJ€Là�f‰o×!Ñ!×.Ñ.¨qÑ1€GÜ#¨|Ñ<€GÔØ‡��qÑ× Ñ Ñ(Ø—/‘/ˆÛˆHÜ�x ×+Ó+Ø*1×*:Ñ*:�× Ñ Ö'ò  ð )ùò 9s   ”C2z8Use fontTools.cffLib.CFFToCFF2.convertCFFToCFF2 instead.c                 ó   • SSK Jn  U" U 5      $ )Nr   )ÚconvertCFFToCFF2)ÚfontTools.cffLib.CFFToCFF2r>   )r/   r>   s     r;   ÚconvertCFFtoCFF2r@   5   s   € å;á˜GÓ$Ð$ó    c                 óp   • [        U [        5      (       a   U R                  5       (       a  [        U 5      $ U $ ©N)Ú
isinstanceÚfloatÚ
is_integerÚint)Únums    r;   Úconv_to_intrI   <   s)   € Ü�#”u×Ñ #§.¡.×"2Ñ"2Ü�3‹xˆØ€JrA   )Ú
BlueValuesÚ
OtherBluesÚFamilyBluesÚFamilyOtherBluesÚ	BlueScaleÚ	BlueShiftÚBlueFuzzÚStdHWÚStdVWÚ	StemSnapHÚ	StemSnapVc                 óL   • X   nX1   nX%;   a  XR   nXF   R                   nU$ S nU$ rC   )r#   )ÚregionFDArraysÚfd_indexÚriÚfd_mapÚregion_fdArrayÚregion_fd_mapÚregion_fdIndexÚprivates           r;   Úget_privater^   Q   sA   € Ø#Ñ'€NØÑ$€MØ	ÓØ&Ñ*ˆØ Ñ0×8Ñ8ˆð €Nð ˆØ€NrA   c           
      ó²  • U S   nU SS n[        US   S5      (       a  U Vs/ s H  ofR                  PM     nnOU Vs/ s H  of/PM     nn[        UR                  5       GH�  u  p‰U	R                  n
[	        U
SS5      nX   u  pÍ/ nUR
                  SS  H2  nUR
                  R                  U5      S-
  nUR                  U5        M4     U
/nU
nU H)  n[        XxUU5      nUc  UnOUnUR                  U5        M+     [        U5      nU
R                  R                  5        GHÃ  u  nn/ nU[        ;  a  M  [        U[        5      (       aÃ   U Vs/ s H  nUR                  U   PM     nn [%        U6 n S/U-  nSnU Hn  n[        U5       VVs/ s H  u  nnUUU   -
  PM     nnnU(       d  [+        U5      (       d  S	nUnUR-                  U5      nUS   US'   UR                  U5        Mp     U(       d  U V s/ s H  n U S   PM
     nn OFU Vs/ s H  nUR                  U   PM     nn[+        U5      (       d  UR-                  U5      nOUS   n[        U[        5      (       aa  [        U5       HQ  u  nn![        U![        5      (       a(  [        U!5       H  u  n"n#[/        U#5      UU   U"'   M     MC  [/        U!5      UU'   MS     O[/        U5      nUU
R                  U'   GMÆ     GM�     gs  snf s  snf s  snf ! [         a    [!        SR#                  US95         GM  f = f! [&         a    [)        UUU5      ef = fs  snnf s  sn f s  snf )
ak  
I step through the FontDicts in the FDArray of the varfont TopDict.
For each varfont FontDict:

* step through each key in FontDict.Private.
* For each key, step through each relevant source font Private dict, and
  build a list of values to blend.

The 'relevant' source fonts are selected by first getting the right
submodel using ``vsindex_dict[vsindex]``. The indices of the
``subModel.locations`` are mapped to source font list indices by
assuming the latter order is the same as the order of the
``var_model.locations``. I can then get the index of each subModel
location in the list of ``var_model.locations``.
r   r   Nr,   Úvsindexz\Warning: {key} in default font Private dict is missing from another font, and was discarded.)ÚkeyFT)r.   r,   Ú	enumerater#   ÚgetattrÚ	locationsÚindexÚappendr^   ÚlenÚrawDictÚitemsÚpd_blend_fieldsrD   ÚlistÚKeyErrorÚprintÚformatÚzipÚ
IndexErrorr   r   Ú	getDeltasrI   )$Ú	top_dictsÚvsindex_dictÚ	var_modelrY   r8   Úregion_top_dictsÚ	fdTopDictrV   rW   Ú	font_dictÚprivate_dictr`   Ú	sub_modelÚ_Úmaster_indicesÚlocÚiÚpdsÚlast_pdrX   ÚpdÚnum_mastersra   ÚvalueÚdataListÚvaluesÚprev_val_listÚany_points_differÚval_listÚvalÚrel_listÚdeltasÚdataÚitemÚjÚjtems$                                       r;   Úmerge_PrivateDictsr�   \   sr  € ð" ˜‰l€GØ   �}ÐÜÐ Ñ" I×.Ñ.Ù=MÓNÒ=M°	×+Ô+Ñ=MˆÐNˆá7GÓHÒ7G¨)›+Ñ7GˆÐHÜ(¨¯©×9ÑˆØ ×(Ñ(ˆÜ˜,¨	°1Ó5ˆð $Ñ,‰ˆ	ØˆØ×&Ñ& q rÓ*ˆCØ×#Ñ#×)Ñ)¨#Ó.°Ñ2ˆAØ×!Ñ! !Ö$ñ +ð ˆnˆØˆÛ ˆBÜ˜^°r¸6ÓBˆBð ‰zØ‘à�Ø�J‰J�rŽNñ !ô ˜#“hˆØ&×.Ñ.×4Ñ4×6‰JˆC�ØˆHØœ/Ó)ÙÜ˜%¤×&Ñ&ðÙ8;Ó<º°"˜bŸj™j¨œo¹�FÐ<ðFÜ  &˜\�Fðð "#  kÑ 1�Ø$)Ð!Û &�HäAJÈ8ÔATô ÚAT±X°a¸˜˜}¨QÑ/Ô/ÑATð ñ  ö .´xÀ×7IÑ7IØ,0Ð)Ø$,�MØ&×0Ñ0°Ó:�Fð !)¨¡�F˜1‘IØ—O‘O FÖ+ñ !'ö )Ù4<Ó=²H¨D  Q¤±H�HÐ=øá47Ó8²C¨b˜"Ÿ*™* Sœ/±C�Ð8Ü ×'Ñ'Ø(×2Ñ2°6Ó:‘Hà% a™y�Hô ˜(¤D×)Ñ)Ü(¨Ö2‘G�A�tÜ! $¬×-Ñ-Ü'0°¦™G˜A˜tÜ-8¸Ó->˜H Q™K¨›Nó (7ô '2°$Ó&7˜ ›ò  3ô ' xÓ0�à(0ˆL× Ñ  Ô%ôG 7ò/  :ùò OùâHùò< =øÜó Üð%ç%+¡V° V _ôó
 ðûô "ó FÜ1°#°u¸fÓEÐEðFüó$ ùò  >ùâ8sL   £K5¿K:ÅLÅK?Å/LÅ2L.ÆM	ÈMÈMË?LÌ"L+Ì*L+Ì.Mc                 ó"   • SU ;   a  U S   $ U S   $ )NzCFF r!   © )Úfonts    r;   Ú_cff_or_cff2r“   Ð   s   € Ø�ƒ~Ø�F‰|ÐØ�‰<ÐrA   c                 ó®  • 0 nUS   nUSS n[        U5      n[        U5      R                  R                  S   n[	        US5      (       d!  [        U5       Vs0 s H  owS_M     snUS'   U$ 0 nUR                  n	UR                  5       n
[        U	5       H  u  p¼XÈX«   '   XÂ;  d  M  0 X,'   M     [        U5       H’  u  p}UR                  5       n[        U5      R                  R                  S   n[	        US5      (       d  XŽS      nSUU   U'   MY  UR                  n[        U5       H  u  p¼XŽU      nUU   nUU;  d  M  UUU'   M      M”     U$ s  snf )a¿  Since a subset source font may have fewer FontDicts in their
FDArray than the default font, we have to match up the FontDicts in
the different fonts . We do this with the FDSelect array, and by
assuming that the same glyph will reference  matching FontDicts in
each source font. We return a mapping from fdIndex in the default
font to a dictionary which maps each master list index of each
region font to the equivalent fdIndex in the region font.r   r   NÚFDSelect)	rg   r“   r)   r*   r.   Úranger•   ÚgetGlyphOrderrb   )r/   Ú
fonts_listrY   Údefault_fontÚregion_fontsÚnum_regionsr8   rX   Úgname_mappingÚdefault_fdSelectÚ
glyphOrderÚgidÚfdIndexÚregion_fontÚregion_glyphOrderÚregion_topDictÚdefault_fdIndexÚregion_fdSelectÚ
region_maps                      r;   Ú	getfd_mapr§   Ö   su  € ð €FØ˜a‘=€LØ˜a˜b�>€LÜ�lÓ#€KÜ˜<Ó(×,Ñ,×9Ñ9¸!Ñ<€GÜ�7˜J×'Ñ'ô &+¨;Ô%7Ó8Ò%7˜r˜’UÑ%7Ñ8ˆˆq‰	Øˆà€MØ×'Ñ'ÐØ×+Ñ+Ó-€JÜ!Ð"2Ö3‰ˆØ)0�j‘oÑ&ØÕ Ø ˆF‹Oñ 4ô % \Ö2‰ˆØ'×5Ñ5Ó7ÐÜ% kÓ2×6Ñ6×CÑCÀAÑFˆÜ�~ z×2Ñ2à+¸aÑ,@ÑAˆOØ*+ˆF�?Ñ# BÓ'à,×5Ñ5ˆOÜ )¨/Ö :‘�Ø"/À#Ñ0FÑ"G�Ø# OÑ4�
Ø˜ZÕ'Ø%,�J˜r“Nó	 !;ñ 3ð €Mùò1 9s   ÁEÚCVarDataz'varDataList masterSupports vsindex_dictc                 ó€  • U S   R                   R                  S   nU/USS   Vs/ s H%  n[        U5      R                   R                  S   PM'     sn-   n[        UR                  5      n[        X7Xa5      n[        X5      n	[        XhR                  X5        [        XUR                  UR                  5        g s  snf )Nr!   r   r   )r)   r*   r“   rg   ÚmappingÚmerge_charstringsr§   r�   rs   r<   r1   r2   )
r/   ÚmodelÚordered_fonts_listrž   r8   ÚttFontrr   r�   ÚcvDatarY   s
             r;   Úmerge_region_fontsr°     s²   € Ø�f‰o×!Ñ!×.Ñ.¨qÑ1€GØ�	Ø?QÐRSÐRTÑ?UóÚ?U°VŒ�VÓ× Ñ ×-Ñ-¨aÔ0Ñ?Uññ €Iô �e—m‘mÓ$€KÜ˜z¸	ÓI€FÜ�wÓ3€FÜ�y×"5Ñ"5°uÔEÜ�7 6×#5Ñ#5°v×7LÑ7LÕMùòs   ¦,B;c                 óB  • X;  a  g X   nU(       a�  UR                  5         UR                  / :X  a  g [        UR                  5      S::  aS  UR                  S   S:X  a@  [        UR                  5      S:X  d&  [        UR                  S   5      [        [
        4;   a  g U$ )Né   éÿÿÿÿÚendcharr   r   )Ú	decompileÚprogramrg   ÚtyperG   rE   )ÚcharstringsÚ	glyphNameÚfilterEmptyÚcss       r;   Ú_get_csr¼     s~   € ØÓ#ØØ	Ñ	€BæØ
�‰ŒØ�:‰:˜ÓØä�—
‘
‹O˜qÓ Ø—
‘
˜2‘ )Ó+Ü�R—Z‘Z“ AÓ%¬¨b¯j©j¸©mÓ)<ÄÄeÀÓ)Làà€IrA   c                 ó0  • / nU R                   SS   H9  nXr;  a  UR                  U5        UR                  UR                  U5      5        M;     [        R                  R                  US S5      n[        U5      n	X”U'   X/4X9'   UR                  U5        U	$ )Nr   F)Úsupportsrf   re   r   r&   ÚbuildVarDatarg   )
r¬   ra   r2   rs   Úvsindex_by_keyr1   ÚvarTupleIndexesÚsupportÚvar_datar`   s
             r;   Ú_add_new_vsindexrÄ   #  s–   € ð €OØ—>‘> ! "Ó%ˆØÓ(Ø×!Ñ! 'Ô*Ø×Ñ˜~×3Ñ3°GÓ<Ö=ñ &ô �~‰~×*Ñ*¨?¸DÀ%ÓH€HÜ�,Ó€GØ!�3ÑØ" E˜N€LÑØ×Ñ�xÔ Ø€NrA   c                 ó~  • 0 n0 n/ n/ nUS   R                   n[        U 5       GHL  u  pš[        U5       VVs/ s H  u  p¼[        UR                   X«S:g  5      PM      nnnUR                  U5      u  pïUS   n[	        / X¡S5      n[
        Ul        UR                  U5        USS  n[        USS9 H3  u  nnUR                  U5        [
        Ul        UR                  U5        M5     UR                  UR                  UR                  USS9nUXŠ'   U(       d  Mö  UR                  (       a  SUR                  ;  a  GM  [        S U 5       5      n UU   nUS:w  d  GM;  US/UR                  S S& GMO     U(       d  S	U-  n[!        UUXtXV5        [#        UUUS
9nU$ s  snnf ! [         a    [!        UUXtXV5      n Nff = f)Nr   r   )ÚstartT)r]   ÚglobalSubrsrt   ÚoptimizeÚblendc              3   ó(   #   • U  H  oS Lv •  M
     g 7frC   r‘   )Ú.0Úvs     r;   Ú	<genexpr>Ú$merge_charstrings.<locals>.<genexpr>e  s   é € Ð2ª6 a˜T•Mª6ùs   ‚r`   )T)r1   r2   rs   )ÚCharStringsrb   r¼   ÚgetSubModelÚCFF2CharStringMergePenÚMergeOutlineExtractorÚoutlineExtractorÚdrawÚrestartÚgetCharStringr]   rÇ   Úseen_movetor¶   Útuplerl   rÄ   r¨   )rž   r�   rr   ÚmasterModelrs   rÀ   r1   r2   Údefault_charstringsrŸ   Úgnamer}   ÚtdÚall_csr¬   Úmodel_csÚdefault_charstringÚvar_penÚ	region_csÚ
region_idxÚregion_charstringÚnew_csra   r`   r¯   s                            r;   r«   r«   3  sÿ  € Ø€LØ€NØ€KØ€NØ# A™,×2Ñ2ÐÜ 
×+‰
ˆô AJÈ)Ô@Tô
Ú@T±u°qŒG�B—N‘N E°©6Ö2Ñ@Tð 	ñ 
ð &×1Ñ1°&Ó9‰ˆð & a™[ÐÜ(¨¨UÀÓCˆô /DÐÔ+Ø×Ñ Ô(ð ˜Q˜R�Lˆ	Ü-6°yÈÔ-JÑ)ˆJÐ)Ø�O‰O˜JÔ'Ü1FÐÔ.Ø×"Ñ" 7Ö+ñ .Kð ×&Ñ&Ø&×.Ñ.Ø*×6Ñ6ØØð	 'ð 
ˆð &,ÐÑ"æÙà×#×#¨¸¿¹Ó)Fò ô Ñ2©6Ó2Ó2ˆð	Ø$ SÑ)ˆGð �aŽ<Ø")¨9Ð!5ˆF�N‰N˜2˜AÓñm ,öv Ø˜Ñ#ˆÜØ˜˜n¸Nô	
ô ØØ%Ø!ñ€Fð €MùóK
øôZ ó 	Ü&Ø�s˜N¸.óŠGð	ús   ·%FÅF!Æ!F<Æ;F<c                   ó"   • \ rS rSrSrSS jrSrg)ÚCFFToCFF2OutlineExtractoriƒ  zŒThis class is used to remove the initial width from the CFF
charstring without trying to add the width to self.nominalWidthX,
which is None.c                 ó®   • U R                  5       nU R                  (       d3  U[        U5      S-  -  (       a  USS  nU R                  U l        SU l        U$ )Nr²   r   )ÚpopallÚgotWidthrg   ÚdefaultWidthXÚwidth)ÚselfÚevenOddÚargss      r;   ÚpopallWidthÚ%CFFToCFF2OutlineExtractor.popallWidthˆ  sH   € Ø�{‰{‹}ˆØ�}�}Øœ#˜d›) a™-×(Ø˜A˜B�x�Ø×+Ñ+ˆDŒJØˆDŒMØˆrA   )ré   rë   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rï   Ú__static_attributes__r‘   rA   r;   ræ   ræ   ƒ  s   † ñ÷rA   ræ   c                   ój   ^ • \ rS rSrSr  SU 4S jjrS rS rS rS r	S r
S	 rS
 rS rS rSrU =r$ )rÒ   i’  zªUsed to extract the charstring commands - including hints - from a
CFF charstring in order to merge it as another set of region data
into a CFF2 variable font charstring.c           	      ó*   >• [         TU ]  XX4XVU5        g rC   )ÚsuperÚ__init__)	rì   ÚpenÚ
localSubrsrÇ   ÚnominalWidthXrê   r]   ÚblenderÚ	__class__s	           €r;   rú   ÚMergeOutlineExtractor.__init__—  s   ø€ ô 	‰ÑØ˜[¸ÐQXõ	
rA   c                 óf   • U R                  5       nU R                  [        U5      S-  -   U l        U$ )Nr²   )rï   Ú	hintCountrg   )rì   rî   s     r;   Ú
countHintsÚ MergeOutlineExtractor.countHints¥  s-   € Ø×ÑÓ!ˆØŸ™¬#¨d«)°q©.Ñ8ˆŒØˆrA   c                 ó:   • U R                   R                  X5        g rC   )rû   Úadd_hint)rì   r·   rî   s      r;   Ú_hint_opÚMergeOutlineExtractor._hint_opª  s   € Ø�‰×Ñ˜$Õ%rA   c                 óH   • U R                  5       nU R                  SU5        g )NÚhstem©r  r  ©rì   re   rî   s      r;   Úop_hstemÚMergeOutlineExtractor.op_hstem­  ó   € Ø�‰Ó ˆØ�‰�g˜tÕ$rA   c                 óH   • U R                  5       nU R                  SU5        g )NÚvstemr  r  s      r;   Úop_vstemÚMergeOutlineExtractor.op_vstem±  r  rA   c                 óH   • U R                  5       nU R                  SU5        g )NÚhstemhmr  r  s      r;   Ú
op_hstemhmÚ MergeOutlineExtractor.op_hstemhmµ  ó   € Ø�‰Ó ˆØ�‰�i Õ&rA   c                 óH   • U R                  5       nU R                  SU5        g )NÚvstemhmr  r  s      r;   Ú
op_vstemhmÚ MergeOutlineExtractor.op_vstemhm¹  r  rA   c                 óþ   • U R                   (       d@  U R                  5       nU(       a  U R                  SU5        U R                  S-   S-  U l         U R                  S   R                  XR                   5      u  p1X4$ )Nr  é   é   r³   )ÚhintMaskBytesr  r  r  ÚcallingStackÚgetBytes)rì   re   rî   r   s       r;   Ú_get_hintmaskÚ#MergeOutlineExtractor._get_hintmask½  sk   € Ø×!×!Ø—?‘?Ó$ˆDÞØ—‘˜i¨Ô.Ø"&§.¡.°1Ñ"4¸Ñ!:ˆDÔØ#×0Ñ0°Ñ4×=Ñ=¸e×EWÑEWÓXÑˆØÐ#Ð#rA   c                 óh   • U R                  U5      u  pU R                  R                  SU/5        X!4$ )NÚhintmask©r#  rû   Úadd_hintmask©rì   re   r   s      r;   Úop_hintmaskÚ!MergeOutlineExtractor.op_hintmaskÆ  ó4   € Ø#×1Ñ1°%Ó8ÑˆØ�‰×Ñ˜j¨=¨/Ô:ØÐ#Ð#rA   c                 óh   • U R                  U5      u  pU R                  R                  SU/5        X!4$ )NÚcntrmaskr'  r)  s      r;   Úop_cntrmaskÚ!MergeOutlineExtractor.op_cntrmaskË  r,  rA   )r  r   )NN)rñ   rò   ró   rô   rõ   rú   r  r  r  r  r  r  r#  r*  r/  rö   Ú__classcell__©rÿ   s   @r;   rÒ   rÒ   ’  sG   ø† ñ-ð Ø÷
òò
&ò%ò%ò'ò'ò$ò$÷
$ð $rA   rÒ   c                   ó€   ^ • \ rS rSrSr SU 4S jjrS rS rS rS r	S r
S	 rS
 rS rS rS rS r SS jrSrU =r$ )rÑ   iÑ  z Pen to merge Type 2 CharStrings.c                 ó¦   >• [         TU ]  S S SUS9  SU l        Xl        X@l        X0l        SU l        SU l        X l        [        U[        S9U l
        g )NT)rë   ÚglyphSetr!   ÚroundTolerancer   F©Úround)rù   rú   Úpt_indexÚ	_commandsÚm_indexr�   Úprev_move_idxr×   r¹   r   r8  )rì   Údefault_commandsr¹   r�   Ú
master_idxr6  rÿ   s         €r;   rú   ÚCFF2CharStringMergePen.__init__Ô  s\   ø€ ô 	‰ÑØ ¨DÀð 	ñ 	
ð ˆŒØ)ŒØ!ŒØ&ÔØˆÔØ ˆÔØ"ŒÜ˜~´UÑ;ˆ�
rA   c                 óX  • U R                   S:X  a  U R                  R                  X//5        OgU R                  U R                     nUS   U:w  a1  [	        XR                  [        US   5      US   U R                  5      eUS   R                  U5        U =R                  S-  sl        g ©Nr   r   )r;  r:  rf   r9  r   rg   r¹   )rì   Ú
point_typeÚ	pt_coordsÚcmds       r;   Ú	add_pointÚ CFF2CharStringMergePen.add_pointä  s�   € Ø�<‰<˜1ÓØ�N‰N×!Ñ! :¨{Ð";Õ<à—.‘. §¡Ñ/ˆCØ�1‰v˜Ó#Ü2Ø§¡¬s°3°q±6«{¸CÀ¹FÀDÇNÁNóð ð �‰F�M‰M˜)Ô$Ø�Š˜ÑŽrA   c                 óX  • U R                   S:X  a  U R                  R                  X//5        OgU R                  U R                     nUS   U:w  a1  [	        XR                  [        US   5      US   U R                  5      eUS   R                  U5        U =R                  S-  sl        g rA  ©r;  r:  rf   r9  r   rg   r¹   )rì   Ú	hint_typerî   rD  s       r;   r  ÚCFF2CharStringMergePen.add_hintð  s�   € Ø�<‰<˜1ÓØ�N‰N×!Ñ! 9¨fÐ"5Õ6à—.‘. §¡Ñ/ˆCØ�1‰v˜Ó"Ü1ØŸ}™}¬c°#°a±&«k¸3¸q¹6À4Ç>Á>óð ð �‰F�M‰M˜$ÔØ�Š˜ÑŽrA   c                 óð  • U R                   S:X  a<  U R                  R                  U/ /5        U R                  R                  SU//5        O•U R                  U R                     nUS   U:w  a1  [	        XR                  [        US   5      US   U R                  5      eU =R                  S-  sl        U R                  U R                     nUS   R                  U5        U =R                  S-  sl        g )Nr   Ú r   rH  )rì   rI  Úabs_argsrD  s       r;   r(  Ú#CFF2CharStringMergePen.add_hintmaskü  sÇ   € ð
 �<‰<˜1ÓØ�N‰N×!Ñ! 9¨b /Ô2Ø�N‰N×!Ñ! 2¨ zÐ"2Õ3à—.‘. §¡Ñ/ˆCØ�1‰v˜Ó"Ü1ØŸ}™}¬c°#°a±&«k¸3¸q¹6À4Ç>Á>óð ð �MŠM˜QÑ�MØ—.‘. §¡Ñ/ˆCØ�‰F�M‰M˜(Ô#Ø�Š˜ÑŽrA   c                 ó¢   • U R                   (       d  SU l         U R                  U5      nU R                  SU5        U R                  S-
  U l        g )NTÚrmovetor   )r×   Ú_prE  r9  r<  ©rì   ÚptrC  s      r;   Ú_moveToÚCFF2CharStringMergePen._moveTo  sA   € Ø××Ø#ˆDÔØ—G‘G˜B“Kˆ	Ø�‰�y )Ô,ð "Ÿ]™]¨QÑ.ˆÕrA   c                 óJ   • U R                  U5      nU R                  SU5        g )NÚrlineto©rQ  rE  rR  s      r;   Ú_lineToÚCFF2CharStringMergePen._lineTo  s   € Ø—G‘G˜B“Kˆ	Ø�‰�y )Õ,rA   c                 ót   • U R                   nU" U5      U" U5      -   U" U5      -   nU R                  SU5        g )NÚ	rrcurvetorX  )rì   Úpt1Úpt2Úpt3rQ  rC  s         r;   Ú_curveToOneÚ"CFF2CharStringMergePen._curveToOne  s4   € Ø�W‰WˆÙ�s“G™b ›gÑ%©¨3«Ñ/ˆ	Ø�‰�{ IÕ.rA   c                 ó   • g rC   r‘   ©rì   s    r;   Ú
_closePathÚ!CFF2CharStringMergePen._closePath!  ó   € ØrA   c                 ó   • g rC   r‘   rc  s    r;   Ú_endPathÚCFF2CharStringMergePen._endPath$  rf  rA   c                 ó,   • SU l         Xl        SU l        g )Nr   )r   r   )r9  r;  Ú_p0)rì   râ   s     r;   rÕ   ÚCFF2CharStringMergePen.restart'  s   € ØˆŒØ!ŒØˆ�rA   c                 ó   • U R                   $ rC   )r:  rc  s    r;   ÚgetCommandsÚ"CFF2CharStringMergePen.getCommands,  s   € Ø�~‰~ÐrA   c                 óÊ  • U H  nUS   n[        U6 n[        U5      US'   M      SnU H¶  nUS   nUS;   a6  [        US   5      n[        U5      (       d  [        S5      eUS   S   /US'   OpUS   n	/ n
U	 H_  n[        U5      (       a  U
R	                  US   5        M)  U" U5      SS nUS   /U-   nUR	                  S5        U
R	                  U5        Ma     X£S'   UnM¸     U$ )a.  
We first re-order the master coordinate values.
For a moveto to lineto, the args are now arranged as::

        [ [master_0 x,y], [master_1 x,y], [master_2 x,y] ]

We re-arrange this to::

        [       [master_0 x, master_1 x, master_2 x],
                [master_0 y, master_1 y, master_2 y]
        ]

If the master values are all the same, we collapse the list to
as single value instead of a list.

We then convert this to::

        [ [master_0 x] + [x delta tuple] + [numBlends=1]
          [master_0 y] + [y delta tuple] + [numBlends=1]
        ]
r   Nr   )r&  r.  z3Hintmask values cannot differ between source fonts.)ro   rk   r   r   rf   )rì   ÚcommandsÚget_delta_funcrD  rî   Úm_argsÚlastOpÚopÚcoordÚcoordsÚ
new_coordsrŠ   s               r;   Úreorder_blend_argsÚ)CFF2CharStringMergePen.reorder_blend_args/  s  € ó, ˆCà�q‘6ˆDÜ˜$�ZˆFô ˜&“\ˆC�‹Fñ ð ˆÛˆCØ�Q‘ˆBð Ð1Ó1Ü˜S ™V›�Ü —‘Ü*ØMóð ð   ™( 1™+˜��A’à˜Q™�Ø�
Û#�EÜ —‘Ø"×)Ñ)¨%°©(Ö3ñ "0°Ó!6°q°rÐ!:˜Ø!& q¡ 
¨VÑ 3˜ØŸ™ QœØ"×)Ñ)¨%Ö0ñ $ð $�A‘ØŠFñ1 ð2 ˆrA   c                 óÐ   • U R                   nU R                  U[        UR                  U R                  S95      nU(       a  [        US[        S9n[        U5      n[        XaUS9nU$ )Nr7  F)ÚgeneralizeFirstÚmaxstack)r¶   r]   rÇ   )	r:  ry  r   rq   r8  r   r   r   r   )rì   r]   rÇ   rt   rÈ   rq  r¶   Ú
charStrings           r;   rÖ   Ú$CFF2CharStringMergePen.getCharStringh  sl   € ð —>‘>ˆØ×*Ñ*Ø”g˜i×1Ñ1¸¿¹ÑDó
ˆö Ü)Ø¨%¼-ñˆHô $ HÓ-ˆÜ!Ø¸+ñ
ˆ
ð ÐrA   )	r:  rk  r¹   r;  r�   r<  r9  r8  r×   )g{®Gáz„?)NNNT)rñ   rò   ró   rô   rõ   rú   rE  r  r(  rT  rY  r`  rd  rh  rÕ   rn  ry  rÖ   rö   r1  r2  s   @r;   rÑ   rÑ   Ñ  s[   ø† Ù*ð TX÷<ò 
ò
òò&/ò-ò/ò
òòò
ò7ðt HL÷ò rA   rÑ   N)F):Úcollectionsr   ÚfontTools.cffLibr   r   r   r   r   r	   r
   r   r   r   Úior   ÚfontTools.cffLib.specializerr   r   ÚfontTools.ttLibr   Ú	fontToolsr   ÚfontTools.varLib.modelsr   ÚfontTools.misc.loggingToolsr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.psCharStringsr   r   ÚfontTools.pens.t2CharStringPenr   Ú	functoolsr   Úerrorsr   r   r   r   ÚMergeDictErrorÚMergeTypeErrorr<   r@   rI   rj   r^   r�   r“   r§   r¨   r°   r¼   rÄ   r«   ræ   rÒ   rÑ   r‘   rA   r;   Ú<module>r�     sß   ðÝ "÷÷ ÷ õ ß NÝ $Ý Ý ,Ý 9Ý /ß IÝ :Ý ÷ó ð )€Ø-€ò;ñ ÐMÓNñ%ó Oð%òð€òòq1òhò(ñV �jÐ"KÓL€ò	Nôò&ò Mô`Ð 2ô ô<$Ð5ô <$ô~f˜_õ frA   