Ë
    ^ãjæˆ  ã                  óœ	  — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ dddddddddœZej/                  «       D � ��ci c]  \  } }| |fD ]  }|| “Œ Œ c}}} Zej3                  ddddddddœ«        e	d¬«       G d„ d «      «       Zej6                  d!fd"i fej8                  d#fd$i fej8                  d!fd"i fej:                  d#fd$ej<                  ej>                  ej@                  ejB                  ifej:                  d!fd"i fejD                  d#fd!ejF                  ejH                  ifejJ                  d#fd!ejL                  ejN                  ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  ifej\                  d#fd!ejL                  ejN                  ejP                  ejR                  ej^                  ej`                  ejb                  ejd                  ejf                  ejh                  ifejj                  d#fd!ejL                  ejN                  ejP                  ejR                  ejl                  ejn                  ejp                  ejr                  ifejt                  d#fd!i fi
Z;	 d^d&„Z<g d'„ d(D «       ¢d)„ d(D «       ¢d*„ d+D «       ¢d,„ d+D «       ¢­D �����ci c]  \  }}}}}||f|||f“Œ c}}}}}Z=d-„ Z>d.„ Z?d/„ Z@d0„ ZAd1„ ZBd2„ ZCd3„ ZDd4„ ZEd5„ ZFd6„ ZGd7„ ZHd8„ ZId9„ ZJd:„ ZKd;„ ZLd<„ ZMd=„ ZNedd>œd?„«       ZOd@„ ZPdA„ ZQdB„ ZRdC„ ZSdD„ ZTdE„ ZUi ej/                  «       D ��	ci c]  \  }}	| e|	«      “Œ c}	}¥ edeH«       edeT«       edeF«       edeL«       edeL«       edeJ«       edeQ«      dFœ¥ZVi ej/                  «       D � �ci c]  \  } }| e| «      “Œ c}} ¥ edGeP«       edeI«       edeU«       edeG«       edeM«       edeM«       edeK«       edeR«      dHœ¥ZWd_dI„ZXd`dJ„ZYdadK„ZZdbdL„Z[dcdM„Z\dddN„Z]dedO„Z^dfdP„Z_d`dQ„Z`d`dR„Zad`dS„Zbd`dT„Zcd`dU„Zd	 	 	 	 	 	 	 	 	 	 dgdV„ZeddWœ	 	 	 	 	 	 	 	 	 	 	 	 	 dhdX„Zfddd%ddYœ	 	 	 	 	 	 	 	 	 	 	 didZ„Zgddd%ddYœ	 	 	 	 	 	 	 	 	 	 	 did[„Zhdjd\„Ziejd]k(  r ei«        yyc c}}} w c c}}}}}w c c}	}w c c}} w )ka®  Convert between Open Font Format beyond-64k companion tables.

The Open Font Format beyond-64k specification adds uppercase companion tables and
extended Layout formats that can address glyph IDs above 65535. This module
provides helpers to convert a :class:`fontTools.ttLib.TTFont` in place between
the compact lowercase table family and the extended uppercase table family.

The high-level APIs are :func:`upper_tables` and :func:`lower_tables`. By
default they convert every known table present in the font and validate that
the result does not mix lowercase and uppercase companion tables. Both helpers
accept an optional ``tables`` iterable; each entry may use either the compact or
extended spelling, e.g. ``"glyf"`` and ``"GLYF"`` both identify the glyph table
family.

The module is also available as a command-line tool::

    fonttools ttLib.beyond64k upper input.ttf -o upper.ttf
    fonttools ttLib.beyond64k lower upper.ttf -o lower.ttf
    fonttools ttLib.beyond64k upper input.ttf GSUB GPOS glyf

Lowering validates lossy cases such as ``MAXP.numGlyphs`` values above 65535,
``GLYF`` glyphs with cubic outlines, and component glyph IDs that do not fit in
the compact ``glyf`` table.
é    )ÚannotationsN)ÚIterable)Úcontextmanager)Ú	dataclass)ÚCallable)ÚmakeOutputFileName)ÚTTFontÚ
TTLibErrorÚnewTable)ÚotTables)Údfs_base_tableÚGLYFÚLOCAÚMAXPÚHHEAÚHMTXÚVHEAÚVMTXÚGVAR)ÚglyfÚlocaÚmaxpÚhheaÚhmtxÚvheaÚvmtxÚgvarÚBASEÚCOLRÚGDEFÚGPOSÚGSUBÚJSTFÚVORG)r   r   r    r!   r"   r#   r$   T)Úfrozenc                  ó&   — e Zd ZU ded<   dZded<   y)Ú_TableConversionÚstrÚdestinationNzCallable | NoneÚ	transform)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r*   © ó    ú[/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/fontTools/ttLib/beyond64k.pyr'   r'   A   s   … àÓØ!%€IˆÔ%r0   r'   é   é   é   é   Fc                ó  — |rdnd|d d z   }|dk(  }||rdndz   }||rdndz   }|rd	nd|rd
ndz   }|dz   }	|dz   }
|dz   }t        t        |«      t        j                  i fi}|
d|di}|dv r�t        t        |	dz   «      |dz   |dz   ||if|t        t        |«      <   |
d|di}|r|j                  ddddœ«       n	d||rdnd<   t        t        ||rdndz   «      |f|t        t        |«      <   |dz   |	dz   ||	i}| ||dz   ||fS )NÚChainÚ r5   r2   Ú	ClassRuleÚRuleÚClassSetÚRuleSetÚChainedÚClassSeqRuleÚSeqRuleÚSetÚCountÚLookupRecordÚSeqLookupCountÚSeqLookupRecord©r4   r2   Ú2ÚBacktrackSequenceÚInputSequenceÚLookAheadSequence)Ú	BacktrackÚInputÚ	LookAheadÚClassrK   )Úgetattrr   Ú	SeqLookupÚupdate)Ú
table_typeÚcompact_formatÚlookup_prefixÚchainingÚcompact_prefixÚclass_basedÚcompact_ruleÚcompact_rule_setÚextended_ruleÚextended_rule_setÚlookup_countÚlookup_recordÚreplacementsÚouter_renamesÚrule_renamess                  r1   Ú_contextual_layout_conversionr`   w   s”  € ñ "*‘g¨r°]À2ÀAÐ5FÑF€NØ  AÑ%€KØ!±K¡[ÀVÑL€LØ%±{©È	ÑRÐÙ"*‘Y°Ù%‰¨9ñ€Mð &¨Ñ-ÐØ  7Ñ*€LØ! NÑ2€MÜœH mÓ4´x×7IÑ7IÈ2Ð6NÐO€LàÐ&ØÐ(ð€Mð
 ˜Ñä”HÐ/°#Ñ5Ó6à˜wÑ&¨¸Ñ(?Ø˜mðð=
ˆ”WœXÐ'7Ó8Ñ9ð Ð*ØÐ,ð
ˆñ Ø×Ñà!4Ø,Ø!4ñõð APˆL¡K™°WÑ=ä”H˜m±[©rÀcÑJÓKØð9
ˆ”WœX |Ó4Ñ5ð
 ˜wÑ&Ð(9¸GÑ(CØÐ/ð
ˆð
 �~ ~¸Ñ'9¸=È,ÐVÐVr0   c              #  óR   K  — | ]  }t        t        j                  |d «      –— Œ! y­w)ÚSubstN)r`   r   ÚContextSubst©Ú.0Úformats     r1   ú	<genexpr>rg   µ   s'   è ø€ ò 

àô *¬(×*?Ñ*?ÀÈ×Qñ

ùó   ‚%')r4   r2   r5   c              #  óR   K  — | ]  }t        t        j                  |d «      –— Œ! y­w)ÚPosN)r`   r   Ú
ContextPosrd   s     r1   rg   rg   ¹   s'   è ø€ ò 

àô *¬(×*=Ñ*=¸vÀu×Mñ

ùrh   c              #  óV   K  — | ]!  }t        t        j                  |d d¬«      –— Œ# y­w)rb   T©rT   N)r`   r   ÚChainContextSubstrd   s     r1   rg   rg   ½   s3   è ø€ ò 

ð ô *Ü×*Ñ*¨F°GÀd÷ð ñ

ùó   ‚')rE   c              #  óV   K  — | ]!  }t        t        j                  |d d¬«      –— Œ# y­w)rj   Trm   N)r`   r   ÚChainContextPosrd   s     r1   rg   rg   Ã   s3   è ø€ ò 

ð ô *Ü×(Ñ(¨&°%À$÷ð ñ

ùro   c           	     ó”   — |j                  «       D ]5  \  }}t        | |«      sŒt        | |t        | |«      «       t	        | |«       Œ7 y ©N)ÚitemsÚhasattrÚsetattrrN   Údelattr)ÚtableÚrenamesÚsourcer)   s       r1   Ú_rename_layout_attributesr{   Í   sC   € Ø&Ÿ}™}›ò #Ñˆ�Ü�5˜&Õ!Ü�E˜;¬°°vÓ(>Ô?Ü�E˜6Õ"ñ#r0   c                óú  — t        t        t        | «      «      «      D ]Û  }|d   j                  }|j	                  t        |«      t        |«      i f«      \  }}t        ||«       |t        |«      u rŒU |«       }|j                  j                  |j                  «       |d   j                  }|d   }|j                  €t        ||j                  |«       Œ¹|t        ||j                  «      |j                  <   ŒÝ y ©Néÿÿÿÿéþÿÿÿ)ÚreversedÚlistr   ÚvalueÚgetÚtyper{   Ú__dict__rP   Úindexrv   ÚnamerN   )	rx   r]   ÚpathÚsubtableÚreplacement_typery   ÚreplacementÚparentÚentrys	            r1   Ú_replace_layout_subtreerŽ   Ô   sÝ   € Üœœn¨UÓ3Ó4Ó5ò CˆØ˜‘8—>‘>ˆØ$0×$4Ñ$4Ü�‹NœT (›^¨RÐ0ó%
Ñ!Ð˜'ô 	" (¨GÔ4Øœt H›~Ñ-ØÙ&Ó(ˆØ×Ñ×#Ñ# H×$5Ñ$5Ô6Ø�b‘—‘ˆØ�R‘ˆØ�;‰;ÐÜ�F˜EŸJ™J¨Õ4à7BŒG�F˜EŸJ™JÓ'¨¯©Ò4ñCr0   c                ó®  — t        t        t        | «      «      «      D ]µ  }|d   j                  }|j	                  t        |«      «      }|€Œ/ |«       }|j                  j                  |j                  «       |d   j                  }|d   }|j                  €t        ||j                  |«       Œ“|t        ||j                  «      |j                  <   Œ· y r}   )r€   r�   r   r‚   rƒ   r„   r…   rP   r†   rv   r‡   rN   )rx   r]   rˆ   r‰   rŠ   r‹   rŒ   r�   s           r1   Ú_replace_layout_classesr�   ç   s¸   € Üœœn¨UÓ3Ó4Ó5ò CˆØ˜‘8—>‘>ˆØ'×+Ñ+¬D°«NÓ;ÐØÐ#ØÙ&Ó(ˆØ×Ñ×#Ñ# H×$5Ñ$5Ô6Ø�b‘—‘ˆØ�R‘ˆØ�;‰;ÐÜ�F˜EŸJ™J¨Õ4à7BŒG�F˜EŸJ™JÓ'¨¯©Ò4ñCr0   c                ó   — t         }|s°|j                  «       D �������	�
��ci c]…  \  \  }}\  }}}||f||j                  «       D ��	ci c]  \  }}	|	|“Œ
 c}	}|j                  «       D �
����	ci c]/  \  }
\  }}||
|j                  «       D ��	ci c]  \  }}	|	|“Œ
 c}	}f“Œ1 c}	}}}}
f“Œ‡ }}}
}	}}}}}}}d}t        | «      D ]b  }|d   j                  }|j	                  t        |«      t        |dd «      f«      }|€Œ<|\  }}}t        ||«       t        ||«       ||_	        d}Œd |S c c}	}w c c}	}w c c}	}}}}
w c c}}}
}	}}}}}}w ©NFr~   ÚFormatT)
Ú_CONTEXTUAL_LAYOUT_FORMATSrt   r   r‚   rƒ   r„   rN   rŽ   r{   r“   )rx   ÚextendedÚconversionsrQ   rR   Úextended_formatr^   r]   rz   r)   Úcompact_typeÚextended_typery   Úchangedrˆ   r‰   Ú
conversionrf   s                     r1   Ú"_convert_contextual_layout_formatsrœ   ÷   s‘  € Ü,€KÙð( ×"Ñ"Ó$÷'
÷ 
ñÑ,�˜^ñ /ØØØð# ˜Ð)ØØ@M×@SÑ@SÓ@U×VÑ)<¨°�˜fÑ$ÓVð CO×BTÑBTÓBV÷	ò 	ñ ?˜Ñ&> }°gð "Ø$ð 8?·}±}³÷á 3 ¨ð (¨Ñ/óð$ñ ö	ð,ñ ð
ˆ÷ 
ñ 
ð, €GÜ˜uÓ%ò ˆØ˜‘8—>‘>ˆØ —_‘_Ü�(‹^œW X¨x¸Ó>Ð?ó
ˆ
ð ÐØØ.8Ñ+ˆ�˜|Ü ¨,Ô7Ü! (¨MÔ:Ø ˆŒØ‰ðð €NùóA Wùóùö	ù÷	
ó 
s;   ¤&EÁ
D-"ÁEÁ0 D9*ÂD36ÂD9*Â$
EÄ-EÄ3D9*Ä9	Ec                óª  — t         }|sW|j                  «       D ������ci c]4  \  \  }}\  }}||f||j                  «       D ��ci c]  \  }}||“Œ
 c}}f“Œ6 }}}}}}}d}t        | «      D ]S  }	|	d   j                  }
|j	                  t        |
«      t        |
dd «      f«      }|€Œ<|\  |
_        }t        |
|«       d}ŒU |S c c}}w c c}}}}}}w r’   )	Ú_EXPLICIT_LAYOUT_FORMATSrt   r   r‚   rƒ   r„   rN   r“   r�   )rx   r•   r–   rQ   rR   r—   r]   Úcompactrš   rˆ   r‰   r›   s               r1   Ú _convert_explicit_layout_formatsr       s  € Ü*€KÙð ×"Ñ"Ó$÷	
ó 	
ñ
Ñ,�˜^ñ /ØØð ˜Ð)ØØ<H×<NÑ<NÓ<P×QÑ'8 w°�˜7Ñ"ÓQð,ñ ð	
ˆõ 	
ð €GÜ˜uÓ%ò 	ˆØ˜‘8—>‘>ˆØ —_‘_Ü�(‹^œW X¨x¸Ó>Ð?ó
ˆ
ð ÐØØ(2Ñ%ˆŒ˜Ü ¨,Ô7Ø‰ð	ð €Nùó' Rù÷	
s    %CÁCÁCÃCc                ó>   — t        | |«      }t        | |«      }|xs |S rs   )rœ   r    )rx   r•   Ú
contextualÚexplicits       r1   Ú_convert_layout_formatsr¤   <  s%   € Ü3°E¸8ÓD€JÜ/°°xÓ@€HØÒ!˜Ð!r0   c                ó~   — | j                  «         |«       }|j                  j                  | j                  «       |S rs   )ÚensureDecompiledr…   rP   )rx   rQ   Ú	converteds      r1   Ú_convert_table_objectr¨   B  s3   € Ø	×ÑÔÙ“€IØ×Ñ×Ñ˜eŸn™nÔ-ØÐr0   c                óØ   — |D ]e  }|}|dz   }|r||fn||f\  }}t        | |d «      }	t        | |d «      }
|	�|
�|st        d|›d|›d�«      ‚|	€ŒLt        | ||	«       t        | |d «       Œg y )NrF   úBoth ú and ú5 exist; set overwrite=True to replace the destination)rN   Ú
ValueErrorrv   )rx   Únamesr•   Ú	overwriter‡   Úcompact_nameÚextended_nameÚsource_nameÚdestination_namerz   r)   s              r1   Ú_move_fieldsr´   I  s°   € Øò .ˆØˆØ˜s™
ˆá-5ˆ\˜=Ñ)¸MÈ<Ð;Xñ 	&ˆÐ%ô ˜ ¨TÓ2ˆÜ˜eÐ%5°tÓ<ˆØÐ +Ð"9Á)ÜØ˜� eÐ,<Ð+?ð @@ð @óð ð ÑÜ�EÐ+¨VÔ4Ü�E˜;¨Õ-ñ.r0   c                óò   — |j                   }t        |dd|«       t        |dd «      �)t        |j                  t
        j                  «      |_        t        |j                  d«      |_        t        |d«       y )N©ÚGlyphClassDefÚ
AttachListÚLigCaretListÚMarkAttachClassDefÚMarkGlyphSetsDefTÚLigCaretList2é  )	rx   r´   rN   r¨   r¼   r   ÚmaxÚVersionr¤   ©Úfontrx   r¯   s      r1   Ú_upper_gdefrÂ   \  sp   € Ø�K‰K€EÜØð	
ð 	Øôô ˆu�o tÓ,Ð8Ü3Ø×Ñ¤×!7Ñ!7ó
ˆÔô ˜Ÿ™ zÓ2€E„MÜ˜E 4Õ(r0   c                ó  — |j                   }t        |dd|«       t        |dd «      �)t        |j                  t
        j                  «      |_        t        |dd «      �d|_        nt        |dd «      �d|_        nd|_        t        |d«       y )	Nr¶   Fr¹   ÚVarStorei  r»   é  é   )rx   r´   rN   r¨   r¹   r   r¿   r¤   rÀ   s      r1   Ú_lower_gdefrÇ   r  s’   € Ø�K‰K€EÜØð	
ð 	Øôô ˆu�n dÓ+Ð7Ü2Ø×Ñ¤× 5Ñ 5ó
ˆÔô ˆu�j $Ó'Ð3Ø"ˆ�Ü	�Ð*¨DÓ	1Ð	=Ø"ˆ�à"ˆŒÜ˜E 5Õ)r0   c                ó0   — t        |j                  d«       y )NT©r¤   rx   rÀ   s      r1   Ú_upper_layout_formatsrÊ   �  s   € Ü˜EŸK™K¨Õ.r0   c                ó0   — t        |j                  d«       y )NFrÉ   rÀ   s      r1   Ú_lower_layout_formatsrÌ   ‘  s   € Ü˜EŸK™K¨Õ/r0   c           
     óH  — |j                   }t        |t        j                  t        j                  i ft        j
                  t        j                  i ft        j                  t        j                  i fi«       t        |dddœ«       t        |j                  d«      |_        y )NÚJstfScriptCount2ÚJstfScriptRecord2)ÚJstfScriptCountÚJstfScriptRecordé  )rx   rŽ   r   rÑ   rÏ   Ú
JstfScriptÚJstfScript2ÚExtenderGlyphÚExtenderGlyph2r{   r¾   r¿   rÀ   s      r1   Ú_upper_jstfr×   •  s‰   € Ø�K‰K€EÜØä×%Ñ%¬×(BÑ(BÀBÐ'GÜ×Ñ¤(×"6Ñ"6¸Ð!;Ü×"Ñ"¤X×%<Ñ%<¸bÐ$Að	
ôô Øà1Ø 3ñ	
ôô ˜Ÿ™ zÓ2€E…Mr0   c           
     ó   — |j                   }t        |t        j                  t        j                  i ft        j
                  t        j                  i ft        j                  t        j                  i fi«       t        |dddœ«       d|_
        y )NrÐ   rÑ   )rÎ   rÏ   rÆ   )rx   rŽ   r   rÏ   rÑ   rÔ   rÓ   rÖ   rÕ   r{   r¿   rÀ   s      r1   Ú_lower_jstfrÙ   ©  s~   € Ø�K‰K€EÜØä×&Ñ&¬×)BÑ)BÀBÐ(GÜ× Ñ ¤8×#6Ñ#6¸Ð";Ü×#Ñ#¤h×&<Ñ&<¸bÐ%Að	
ôô Øà 1Ø!3ñ	
ôð €E…Mr0   c                óò   — |j                   }t        |dd|«       t        |dd «      �)t        |j                  t
        j                  «      |_        t        |j                  d«      |_        t        |d«       y )N©Ú
ScriptListÚFeatureListÚ
LookupListTÚLookupList2rÅ   )	rx   r´   rN   r¨   rß   r   r¾   r¿   r¤   rÀ   s      r1   Ú_upper_layout_headerrà   ½  se   € Ø�K‰K€EÜ�ÐCÀTÈ9ÔUÜˆu�m TÓ*Ð6Ü1Ø×Ñœx×3Ñ3ó
ˆÔô ˜Ÿ™ zÓ2€E„MÜ˜E 4Õ(r0   c                óè   — |j                   }t        |dd|«       t        |dd «      �)t        |j                  t
        j                  «      |_        t        |dd «      rdnd|_        t        |d«       y )NrÛ   FrÞ   ÚFeatureVariationsrÒ   rÆ   )rx   r´   rN   r¨   rÞ   r   r¿   r¤   rÀ   s      r1   Ú_lower_layout_headerrã   È  sh   € Ø�K‰K€EÜ�ÐCÀUÈIÔVÜˆu�l DÓ)Ð5Ü0°×1AÑ1AÄ8×CVÑCVÓWˆÔä˜eÐ%8¸$Ô?‰
ÀZð 
„Mô ˜E 5Õ)r0   c           
     óœ  — t        | dd «      }|€yt        t        fD ����ch c]$  }|j                  «       D ]  \  \  }}}||d   f’Œ Œ& }}}}}|j                  D ]f  }|j
                  D ]U  }t        |t        j                  t        j                  f«      r|j                  }t        |«      t        |dd «      f|v sŒT  y Œh yc c}}}}w )NrÞ   Fr   r“   T)rN   r”   rž   rt   ÚLookupÚSubTableÚ
isinstancer   ÚExtensionSubstÚExtensionPosÚExtSubTabler„   )	rx   Úlookup_listr–   rQ   Ú_r›   Úextended_formatsÚlookupr‰   s	            r1   Ú_has_extended_layout_formatsrï   Ó  sí   € ô ˜% ¨tÓ4€KØÐØô 7Ô8PÐQ÷ñ àØ+6×+<Ñ+<Ó+>òñ (‰OˆZ˜˜Zð 
�Z ‘]Ò#ðØ#ðÐó ð
 ×$Ñ$ò ˆØŸ™ò 	ˆHÜ˜(¤X×%<Ñ%<¼h×>SÑ>SÐ$TÔUØ#×/Ñ/�Ü�X“¤¨°(¸DÓ AÐBÐFVÒVÚñ		ðð ùõs   ¢)C
)Úrestorec             #  óz  K  — g }	 ddt         t        fddt        t        fddt        t        ffD ]‡  \  }}}}|| vrŒ| |   }|j                  j
                  |k\  r|j                  ||f«        || |d«       ŒIt        |j                  «      sŒ_t        |j                  d«       |j                  |d f«       Œ‰ d –— |r|ndD ]3  \  }}|| vrŒ|� || | |   d«       Œt        | |   j                  d«       Œ5 y # |r|ndD ]3  \  }}|| vrŒ|� || | |   d«       Œt        | |   j                  d«       Œ5 w xY w­w)	Nr    r½   r"   rÅ   r!   TFr/   )	rÇ   rÂ   rã   rà   rx   r¿   Úappendrï   r¤   )rÁ   rð   Úrestore_actionsÚtagÚversionÚlowerÚupperrx   s           r1   Ú_compact_layout_tablesrø   è  s\  è ø€ ð €Oð?à�Z¤¬kÐ:Ø�ZÔ!5Ô7KÐLØ�ZÔ!5Ô7KÐLð+
ò 	4Ñ&ˆC�˜% ð
 ˜$‰ØØ˜‘IˆEØ�{‰{×"Ñ" gÒ-Ø×&Ñ&¨¨U |Ô4Ù�d˜E 4Õ(Ü-¨e¯k©kÕ:Ü'¨¯©°UÔ;Ø×&Ñ&¨¨T {Õ3ð	4ó 	á-4™/¸"ò 	?‰JˆC�Ø˜$‰ØØÐ Ù�d˜D ™I tÕ,ä'¨¨S©	¯©¸Õ>ñ	?ø©W™/¸"ò 	?‰JˆC�Ø˜$‰ØØÐ Ù�d˜D ™I tÕ,ä'¨¨S©	¯©¸Õ>ñ	?üs#   ‚D;†BC: Â/C: Â==D;Ã:>D8Ä8D;c                ó¾   — ddl m} | j                  «       D ]D  }||   }t        |d«      sŒt	        |j
                  «      D ]  \  }}|| z  |j
                  |<   Œ ŒF y )Nr   )Ú	flagCubicÚflags)ÚfontTools.ttLib.tables._g_l_y_frú   ÚgetGlyphOrderru   Ú	enumeraterû   )rÁ   rx   r¯   rú   Ú
glyph_nameÚglyphÚiÚflags           r1   Ú_lower_glyfr    sc   € Ý9ð ×(Ñ(Ó*ò 3ˆ
Ø�jÑ!ˆÜ�5˜'Õ"Ü$ U§[¡[Ó1ò 3‘��4Ø!%¨¨
Ñ!2�—‘˜A’ñ3ñ3r0   c                ó    — d|_         d|_        y )Nr2   r   ©ÚmajorVersionÚminorVersionrÀ   s      r1   Ú_upper_vorgr    ó   € Ø€EÔØ€EÕr0   c                ó    — d|_         d|_        y )Nr4   r   r  rÀ   s      r1   Ú_lower_vorgr    r	  r0   c              #  ó¶   K  — t        | d«      sy t        | j                  «      D ]0  }|d   j                  }t	        |t
        j                  «      sŒ-|–— Œ2 y ­w)Nrx   r~   )ru   r   rx   r‚   rç   r   ÚPaint)rx   rˆ   r‚   s      r1   Ú_iter_colr_paintsr    sK   è ø€ Ü�5˜'Ô"ØÜ˜uŸ{™{Ó+ò ˆØ�R‘—‘ˆÜ�eœXŸ^™^Õ,Ø‹Kñùs   ‚AAÁAc                ó²   — t        |«      D ]I  }|j                  t        j                  j                  k(  sŒ+t        j                  j
                  |_        ŒK y rs   )r  r“   r   ÚPaintFormatÚ
PaintGlyphÚPaintGlyph2©rÁ   rx   r¯   Úpaints       r1   Ú_upper_colrr  &  sA   € Ü" 5Ó)ò <ˆØ�<‰<œ8×/Ñ/×:Ñ:Ó:Ü#×/Ñ/×;Ñ;ˆE�Lñ<r0   c                ó²   — t        |«      D ]I  }|j                  t        j                  j                  k(  sŒ+t        j                  j
                  |_        ŒK y rs   )r  r“   r   r  r  r  r  s       r1   Ú_lower_colrr  ,  sA   € Ü" 5Ó)ò ;ˆØ�<‰<œ8×/Ñ/×;Ñ;Ó;Ü#×/Ñ/×:Ñ:ˆE�Lñ;r0   )r   r   r    r"   r!   r#   r$   r   )r   r   r   r    r"   r!   r#   r$   c                óÐ   — | €t        t        j                  «       «      S t        «       }| D ]  }	 |j                  t        |   «       Œ |S # t        $ r t        d|›�«      d ‚w xY w)NzUnsupported beyond-64k table: )ÚsetÚ_TABLE_IDENTITIESÚvaluesÚaddÚKeyErrorr­   )ÚtablesÚ
normalizedrô   s      r1   Ú_normalize_tablesr   L  s|   € Ø€~ÜÔ$×+Ñ+Ó-Ó.Ð.ä“€JØò Qˆð	QØ�N‰NÔ,¨SÑ1Õ2ðQð
 Ðøô ò 	QÜÐ=¸c¸WÐEÓFÈDÐPð	Qús   °AÁA%c                óê   ‡ — t        ˆ fd„t        D «       «      }t        ˆ fd„t        j                  «       D «       «      }|r2|r/t        ddj	                  |«      › ddj	                  |«      › �«      ‚y y )Nc              3  ó,   •K  — | ]  }|‰v sŒ|–— Œ y ­wrs   r/   ©re   rô   rÁ   s     €r1   rg   z#_validate_family.<locals>.<genexpr>Z  s   øè ø€ Ò>˜3°#¸²+”3Ñ>ùó   ƒ	�c              3  ó,   •K  — | ]  }|‰v sŒ|–— Œ y ­wrs   r/   r#  s     €r1   rg   z#_validate_family.<locals>.<genexpr>[  s   øè ø€ ÒG˜3¸3À$º;”3ÑGùr$  z)Mixed beyond-64k table family: lowercase ú, ú; uppercase )ÚsortedÚ_TABLE_PAIRSr  r­   Újoin)rÁ   rö   r÷   s   `  r1   Ú_validate_familyr+  Y  so   ø€ ÜÓ>¤,Ô>Ó>€EÜÓG¤,×"5Ñ"5Ó"7ÔGÓG€EÙ‘ÜðØŸ™ 5Ó)Ð*¨,°t·y±yÀÓ7GÐ6HðJó
ð 	
ð €ur0   c                óœ  ‡— d|v rêd| v ræddl m}mŠ | d   }| j                  «       D ]Æ  }||   }|j	                  «       rI|j
                  D ]9  }| j                  |j                  «      dkD  sŒ"t        d|j                  ›d�«      ‚ Œat        |dd«      D �cg c]
  }||z  sŒ	|‘Œ }}t        |d	d «      }	|sŒ‘t        ˆfd
„|D «       «      s|	sŒ¨|	j                  «       sŒ¹t        d|›d�«      ‚ d|v r!d| v r| d   j                  dkD  rt        d«      ‚d|v r!d| v r| d   j                  dkD  rt        d«      ‚d|v r!d| v r| d   j                  dkD  rt        d«      ‚d|v r`d| v r\| d   }
t        |
j                   «      dkD  rt        d«      ‚|
j                   D ]%  }| j                  |«      dkD  sŒt        d|›d�«      ‚ d|v rvd| v rrt#        | d   «      D ]a  }|j$                  t&        j(                  j*                  k(  sŒ+| j                  |j,                  «      dkD  sŒJt        d|j,                  ›d�«      ‚ t/        | «       y c c}w )Nr   r   )rú   ÚflagOnCurveéÿÿ  zGLYF component z does not fit in glyfrû   r/   Úprogramc              3  ó*   •K  — | ]
  }|‰z   –— Œ y ­wrs   r/   )re   r  r-  s     €r1   rg   z%_validate_lowering.<locals>.<genexpr>w  s   øè ø€ ÒG°4˜D ;Ñ.Ô.ÑGùs   ƒzGLYF glyph z) has cubic outlines or hinted CUBIC flagsr   z#MAXP.numGlyphs does not fit in maxpr   z*HHEA.numberOfHMetrics does not fit in hhear   z*VHEA.numberOfVMetrics does not fit in vhear$   z+VORG record count does not fit in version 1zVORG glyph z does not fit in version 1r   zCOLR PaintGlyph2 glyph z does not fit in PaintGlyph)rü   rú   r-  rý   ÚisCompositeÚ
componentsÚ
getGlyphIDÚ	glyphNamer­   rN   ÚanyÚgetBytecodeÚ	numGlyphsÚnumberOfHMetricsÚnumberOfVMetricsÚlenÚVOriginRecordsr  r“   r   r  r  ÚGlyphÚ_validate_cmap_uvs_lowering)rÁ   r–   rú   r   rÿ   r   Ú	componentr  Úcubic_flagsr/  Úvorgr  r-  s               @r1   Ú_validate_loweringrA  c  sˆ  ø€ Ø�Ñ ¨4¡ßJà�F‰|ˆØ×,Ñ,Ó.ò 	ˆJØ˜Ñ$ˆEØ× Ñ Ô"Ø!&×!1Ñ!1ò �IØ—‘ y×':Ñ':Ó;¸fÓDÜ(Ø-¨i×.AÑ.AÐ-DÐDYÐZóð ñô &-¨U°G¸RÓ%@öØ!ÀDÈ9ÓDT’Dð�ð ô " %¨°DÓ9�âÜÓG¸;ÔGÔGÚ G×$7Ñ$7Õ$9ä$Ø% j ^Ð3\Ð]óð ð%	ð* �Ñ ¨4¡°D¸±L×4JÑ4JÈVÒ4SÜÐ>Ó?Ð?Ø�Ñ ¨4¡Ø�‰<×(Ñ(¨6Ò1ÜÐIÓJÐJØ�Ñ ¨4¡Ø�‰<×(Ñ(¨6Ò1ÜÐIÓJÐJØ�Ñ ¨4¡Ø�F‰|ˆÜˆt×"Ñ"Ó# fÒ,ÜÐJÓKÐKØ×-Ñ-ò 	YˆJØ�‰˜zÓ*¨VÓ3Ü  ;¨z¨nÐ<VÐ!WÓXÐXð	Yð �Ñ ¨4¡Ü& t¨F¡|Ó4ò 	ˆEà—‘¤× 4Ñ 4× @Ñ @Ó@Ø—O‘O E§K¡KÓ0°6Ó9ä Ø-¨e¯k©k¨_Ð<WÐXóð ð	ô   Õ%ùòIs   Â
I	Â"I	c                óH   — | j                   | j                  | j                  fS rs   )Ú
platformIDÚ	platEncIDÚlanguage)r‰   s    r1   Ú_cmap_subtable_keyrF  ˜  s!   € Ø×Ñ × 2Ñ 2°H×4EÑ4EÐEÐEr0   c                óÄ   — |j                  «       D ]M  \  }}t        | j                  |d«      «      }|j                  |«       t	        |j                  «       «      | |<   ŒO y )Nr/   )rt   Údictrƒ   rP   r(  )r)   rz   ÚselectorÚentriesÚmergeds        r1   Ú_merge_uvs_dictrL  œ  sR   € Ø#Ÿ\™\›^ò 7Ñˆ�'Ü�k—o‘o h°Ó3Ó4ˆØ�‰�gÔÜ & v§|¡|£~Ó 6ˆ�HÒñ7r0   c                ó,  — ddl m} |j                  | «      }|j                  |_        |j                  |_        |j
                  |_        i |_        |j                  j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}|_        |S c c}}w )Nr   ©ÚCmapSubtable)
ÚfontTools.ttLib.tables._c_m_a_prO  ÚnewSubtablerC  rD  rE  ÚcmapÚuvsDictrt   r�   )rf   rz   rO  r‰   rI  rJ  s         r1   Ú_copy_uvs_subtablerT  £  s‚   € Ý<à×'Ñ'¨Ó/€HØ ×+Ñ+€HÔØ×)Ñ)€HÔØŸ™€HÔØ€H„Mà9?¿¹×9MÑ9MÓ9O÷Ù$5 H¨gˆ”$�w“-Ñó€HÔð €Oùós   Á/Bc                óª   — |j                  «        |j                  j                  «       D ]&  }|D ]  \  }}|€Œ	| j                  |«      dkD  sŒ  y Œ( y)Nr.  TF)r¦   rS  r  r3  )rÁ   r‰   rJ  rì   rÿ   s        r1   Ú_uvs_has_high_glyph_idrV  ±  s]   € Ø×ÑÔØ×#Ñ#×*Ñ*Ó,ò ˆØ$ò 	‰MˆAˆzØÑ%¨$¯/©/¸*Ó*EÈÓ*NÚñ	ðð r0   c              #  ó6   K  — dD ]  }|| v sŒ|| |   f–— Œ y ­w)N©rR  ÚDMAPr/   )rÁ   rô   s     r1   Ú_character_map_tablesrZ  º  s*   è ø€ Øò !ˆØ�$Š;Ø�t˜C‘y�.Ó ñ!ùs   ‚
�c                ó    — t        | «      D ]@  \  }}|j                  D ],  }|j                  dk(  sŒt        | |«      sŒ t	        |› d�«      ‚ ŒB y )Né   ú, format 15 glyph IDs do not fit in format 14)rZ  r  rf   rV  r­   )rÁ   rô   Úcharacter_mapr‰   s       r1   r=  r=  À  s]   € Ü3°DÓ9ò WÑˆˆ]Ø%×,Ñ,ò 	WˆHØ�‰ "Ó$Ô)?ÀÀhÕ)OÜ  C 5Ð(TÐ!UÓVÐVñ	WñWr0   c                ó  — t        | «      D ]ï  \  }}|j                  D �ci c]  }|j                  dk(  rt        |«      |“Œ }}g }|j                  D ]   }|j                  dk(  r~t	        | |«      rrt        |«      }|j                  |«      }|€#t        d|«      }|||<   |j                  |«       n0|j                  «        t        |j                  |j                  «       Œ�|j                  |«       Œ¢ ||_        Œñ y c c}w )Nr\  é   )rZ  r  rf   rF  rV  rƒ   rT  rò   r¦   rL  rS  )rÁ   rì   r^  r‰   Úformat15_by_keyr  ÚkeyÚformat15s           r1   Ú_upper_beyond64k_cmap_uvsrd  Ç  s
  € Ü1°$Ó7ò &Ñˆˆ=ð *×0Ñ0ö
àØ�‰ "Ò$ô ˜xÓ(¨(Ñ2ð
ˆð 
ð
 ˆØ%×,Ñ,ò 	$ˆHØ�‰ "Ò$Ô)?ÀÀhÔ)OÜ(¨Ó2�Ø*×.Ñ.¨sÓ3�ØÐ#Ü1°"°hÓ?�HØ+3�O CÑ(Ø—M‘M (Õ+à×-Ñ-Ô/Ü# H×$4Ñ$4°h×6FÑ6FÔGØØ�M‰M˜(Õ#ð	$ð  &ˆÕñ)&ùò
s    "C?c                ó$  — t        | «      D ]ý  \  }}|j                  D �ci c]  }|j                  dk(  rt        |«      |“Œ }}g }|j                  D ]®  }|j                  dk(  rŒt	        | |«      rt        |› d�«      ‚t        |«      }|j                  |«      }|€#t        d|«      }|||<   |j                  |«       n0|j                  «        t        |j                  |j                  «       Œž|j                  |«       Œ° ||_        Œÿ y c c}w )Nr`  r\  r]  )rZ  r  rf   rF  rV  r­   rƒ   rT  rò   r¦   rL  rS  )rÁ   rô   r^  r‰   Úformat14_by_keyr  rb  Úformat14s           r1   Ú_lower_beyond64k_cmap_uvsrh  ß  s$  € Ü3°DÓ9ò &Ñˆˆ]ð *×0Ñ0ö
àØ�‰ "Ò$ô ˜xÓ(¨(Ñ2ð
ˆð 
ð
 ˆØ%×,Ñ,ò 	$ˆHØ�‰ "Ò$Ü)¨$°Ô9Ü$Ø˜%ÐKÐLóð ô )¨Ó2�Ø*×.Ñ.¨sÓ3�ØÐ#Ü1°"°hÓ?�HØ+3�O CÑ(Ø—M‘M (Õ+à×-Ñ-Ô/Ü# H×$4Ñ$4°h×6FÑ6FÔGØØ�M‰M˜(Õ#ð!	$ð"  &ˆÕñ1&ùò
s    "Dc                ó¢  ‡ — t        ˆ fd„dD «       «      rt        ‰ j                  «       «      dk  ry t        ‰ «      D �]  \  }}|j                  D �cg c]3  }|j
                  dk(  r"|j                  «       r|j                  «       s|‘Œ5 }}|sŒRt        d„ |j                  D «       «      sti }|D ]  }|j                  |j                  «       Œ |rNddl
m} |j                  d«      }d	|_        d
|_        d|_        ||_	        |j                  j!                  |«       |j                  D �cg c]  }||vr|‘Œ
 c}|_        �Œ y c c}w c c}w )Nc              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­wrs   r/   r#  s     €r1   rg   z/_drop_beyond64k_cmap_format4.<locals>.<genexpr>ý  s   øè ø€ Ò8 ��t”Ñ8ùs   ƒrX  rÆ   r3   c              3  ó:   K  — | ]  }|j                   d k(  –— Œ y­w)é   N)rf   )re   r‰   s     r1   rg   z/_drop_beyond64k_cmap_format4.<locals>.<genexpr>
  s   è ø€ ÒN¨X�8—?‘? bÕ(ÑNùs   ‚r   rN  rl  r5   é
   )r5  r:  rý   rZ  r  rf   Ú	isUnicodeÚisSymbolrP   rR  rP  rO  rQ  rC  rD  rE  rò   )rÁ   rì   r^  r‰   Úunicode_bmp_tablesÚcmap12rO  s   `      r1   Ú_drop_beyond64k_cmap_format4rr  û  sK  ø€ äÓ8Ð'7Ô8Ô8Üˆt×!Ñ!Ó#Ó$¨Ò/àä1°$Ó7ó 
Ñˆˆ=ð *×0Ñ0ö
àØ�‰ !Ò#¨×(:Ñ(:Ô(<ÀX×EVÑEVÔEXò ð
Ðð 
ñ
 "ØÜÑN¸×9MÑ9MÔNÔNØˆFØ.ò -�Ø—‘˜hŸm™mÕ,ð-áÝHà'×3Ñ3°BÓ7�Ø&'�Ô#Ø%'�Ô"Ø$%�Ô!Ø &�”Ø×$Ñ$×+Ñ+¨HÔ5ð *×0Ñ0ö 
àØÐ1Ñ1ò ò 
ˆÖñ-
ùò
ùò* 
s   Á8EÄ.Ec                óš   — d| vst        | j                  «       «      dk  ry | d   }|j                  dk(  rd|_        g |_        i |_        y y )NÚpostr.  g       @g      @)r:  rý   Ú
formatTypeÚ
extraNamesÚmapping)rÁ   rt  s     r1   Ú _drop_beyond64k_post_glyph_namesrx    sQ   € à�TÑœS ×!3Ñ!3Ó!5Ó6¸&Ò@Øà�‰<€DØ‡�˜#ÒØˆŒØˆŒØˆ�ð r0   c                óü   — |j                   }|j                  �|j                  | ||«       ||k(  ry t        |«      }|j                  }|j                  j                  |j                  «       ||_        || |<   | |= y rs   )r)   r*   r   ÚtableTagr…   rP   )rÁ   rz   Ú
source_tagr›   r¯   Údestination_tagr)   Ú	table_tags           r1   Ú_convert_tabler~  +  s   € ð !×,Ñ,€OØ×ÑÐ'Ø×Ñ˜T 6¨9Ô5Ø�_Ò$ØÜ˜?Ó+€KØ×$Ñ$€IØ×Ñ×Ñ §¡Ô0Ø$€KÔØ'€DˆÑØˆZÑr0   )Úvalidate_conversionc               ó’  ‡— t        |«      }|j                  «       D ��ci c]  \  }}t        |   |v r||“Œ }	}}|�	 || |	«       g }
|	j                  «       D ][  \  }}|j                  }|| v }|| v }||k7  r|r|r|st	        d|›d|›d�«      ‚|s|s|rŒ>t        |«      ‚|
j                  ||f«       Œ] |rÂt        | j                  «       «      Š|
D ]3  \  }}|j                  }‰j                  |«       ‰j                  |«       Œ5 t        ˆfd„t        D «       «      }t        ˆfd„t        j                  «       D «       «      }|r1|r/t	        ddj                  |«      › ddj                  |«      › �«      ‚|
D ��ci c]  \  }}|| |   “Œ }}}|
D ]  \  }}t        | ||   |||«       Œ |rt!        | «       y y c c}}w c c}}w )	Nrª   r«   r¬   c              3  ó,   •K  — | ]  }|‰v sŒ|–— Œ y ­wrs   r/   ©re   rô   Úresult_tagss     €r1   rg   z"_convert_tables.<locals>.<genexpr>n  s   øè ø€ ÒI˜s°c¸[Ò6H”sÑIùr$  c              3  ó,   •K  — | ]  }|‰v sŒ|–— Œ y ­wrs   r/   r‚  s     €r1   rg   z"_convert_tables.<locals>.<genexpr>o  s   øè ø€ ÒR˜s¸sÀkÒ?Q”sÑRùr$  zCConversion would create a mixed beyond-64k table family: lowercase r&  r'  )r   rt   r  r)   r­   r  rò   r  ÚkeysÚdiscardr  r(  r)  r  r*  r~  r+  )rÁ   r  Útable_conversionsÚvalidater¯   Úignore_missingr  rz   r›   r–   Úpendingr{  r|  Úsource_existsÚdestination_existsrö   r÷   rì   Úsourcesrƒ  s                      @r1   Ú_convert_tablesrŽ  ?  s(  ø€ ô ˜vÓ&€Fð #4×"9Ñ"9Ó";÷áˆF�JÜ˜VÑ$¨Ñ.ð 	�
Ñð€Kñ ð
 Ð&Ù˜D +Ô.à€GØ"-×"3Ñ"3Ó"5ò 1Ñˆ
�JØ$×0Ñ0ˆØ" dÐ*ˆØ,°Ð4Ðð ˜/Ò)ÙÙ"ÙäØ˜
�~ U¨?Ð*=ð >@ð @óð ñ Ù!¡^ØÜ˜:Ó&Ð&Ø�‰˜
 JÐ/Õ0ð'1ñ* Ü˜$Ÿ)™)›+Ó&ˆØ&-ò 	-Ñ"ˆJ˜
Ø(×4Ñ4ˆOØ×Ñ 
Ô+Ø�O‰O˜OÕ,ð	-ô ÓI¤lÔIÓIˆÜÓR¤l×&9Ñ&9Ó&;ÔRÓRˆÙ‘UÜðØ!ŸY™Y uÓ-Ð.¨l¸4¿9¹9ÀUÓ;KÐ:LðNóð ð
 BI×I±°
¸Aˆz˜4 
Ñ+Ñ+ÐI€GÑIØ")ò UÑˆ
�JÜ�t˜W ZÑ0°*¸jÈ)ÕTðUñ Ü˜Õð ùóaùóX Js    F=Å?G©r  rˆ  r¯   r‰  c               óp   — t        | |t        |||¬«       t        | «       t        | «       t	        | «       y)aU  Convert selected tables to their beyond-64k companion forms.

    Args:
        font: Font to modify in place.
        tables: Optional iterable of table tags to convert. If omitted, all
            supported tables present in ``font`` are converted. Tags may use
            either spelling of a companion table family, such as ``"glyf"`` or
            ``"GLYF"``.
        validate: If true, reject conversions that leave the font with a mixed
            lowercase/uppercase companion table family.
        overwrite: If true, replace an existing destination table. Otherwise an
            existing destination raises ``ValueError``.
        ignore_missing: If true, requested source tables that are not present
            are ignored unless their destination is already present. Otherwise
            missing source tables raise ``KeyError``.
    )r  r‡  rˆ  r¯   r‰  N)rŽ  Ú_UPPER_TABLESrd  rr  rx  ©rÁ   r  rˆ  r¯   r‰  s        r1   Úupper_tablesr“  ~  s8   € ô0 ØØÜ'ØØØ%õô ˜dÔ#Ü  Ô&Ü$ TÕ*r0   c          	     óN   — t        | |t        |||t        ¬«       t        | «       y)a]  Convert selected tables from their beyond-64k companion forms.

    Args are the same as :func:`upper_tables`. In addition to mixed-family
    validation, lowering rejects data that cannot be represented in compact
    tables, including glyph counts above 65535, cubic ``GLYF`` outlines, and
    component glyph IDs that do not fit in ``glyf``.
    )r  r‡  rˆ  r¯   r‰  r  N)rŽ  Ú_LOWER_TABLESrA  rh  r’  s        r1   Úlower_tablesr–  £  s+   € ô ØØÜ'ØØØ%Ü.õô ˜dÕ#r0   c                óx  — t        j                  dt        t         j                  ¬«      }|j	                  ddd¬«       |j	                  ddd	¬
«       |j	                  dddd¬«       |j	                  dddd¬
«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  dddd¬«       |j                  | «      }|j                  xs% t        |j                  dd |j                  › �¬!«      }t        |j                  «      5 }|j                  d"k(  rt        nt        }	  |||j                  xs d |j                   |j                  |j                   ¬#«       |j+                  |«       d d d «       y # t"        t$        f$ r}t'        t)        |«      «      |‚d }~ww xY w# 1 sw Y   y xY w)$Nzfonttools ttLib.beyond64k)ÚdescriptionÚformatter_classÚ	direction)r÷   rö   z@'upper' converts to beyond-64k companions; 'lower' converts back)ÚchoicesÚhelpÚinputÚINPUTzinput font path)Úmetavarrœ  r  ÚTABLEÚ*z3optional table tags to convert, e.g. GSUB GPOS glyf)rŸ  Únargsrœ  z-oz--outputÚOUTPUTzoutput font pathz--no-validateÚ
store_truez/skip mixed-family and lossy-lowering validation)Úactionrœ  z--overwritez0replace destination tables if they already existz--no-ignore-missingr‰  Ústore_falsez7raise an error when a requested source table is missing)Údestr¥  rœ  Tú-)Ú	overWriteÚsuffixr÷   r�  )ÚargparseÚArgumentParserÚ__doc__ÚRawDescriptionHelpFormatterÚadd_argumentÚ
parse_argsÚoutputr   r�  rš  r	   r“  r–  r  Úno_validater¯   r‰  r  r­   r
   r(   Úsave)ÚargsÚparserÚoptionsr±  rÁ   ÚconvertÚerrors          r1   Úmainr¹  ¾  sÚ  € Ü×$Ñ$Ø#ÜÜ ×<Ñ<ô€Fð
 ×ÑØØ"ØOð ô ð
 ×Ñ˜¨Ð7HÐÔIØ
×ÑØØØØBð	 ô ð ×Ñ˜˜j°(ÐASÐÔTØ
×ÑØØØ>ð ô ð
 ×ÑØØØ?ð ô ð
 ×ÑØØØØFð	 ô ð ×Ñ Ó%€Gà�^‰^ò Ô1Ø�‰ °°'×2CÑ2CÐ1DÐ.Eô €Fô 
�—‘Ó	ð  $Ø")×"3Ñ"3°wÒ">•,ÄLˆð		4ÙØØ—~‘~Ò-¨Ø$×0Ñ0Ð0Ø!×+Ñ+Ø&×5Ñ5õð 	�	‰	�&Ô÷ð øô œ*Ð%ò 	4ÜœS ›ZÓ(¨eÐ3ûð	4ú÷ð ús0   ÄF0Ä0:FÅ*F0ÆF-ÆF(Æ(F-Æ-F0Æ0F9Ú__main__)F)r  úIterable[str] | NoneÚreturnzset[str])rÁ   r	   r¼  ÚNone)rÁ   r	   r–   údict[str, _TableConversion]r¼  r½  )r¼  ztuple[int, int, int])r¼  r½  )rf   Úint)rÁ   r	   r¼  Úbool)rÁ   r	   )
rÁ   r	   r{  r(   r›   r'   r¯   rÀ  r¼  r½  )rÁ   r	   r  r»  r‡  r¾  rˆ  rÀ  r¯   rÀ  r‰  rÀ  r¼  r½  )rÁ   r	   r  r»  rˆ  rÀ  r¯   rÀ  r‰  rÀ  r¼  r½  rs   )kr­  Ú
__future__r   r«  Úcollections.abcr   Ú
contextlibr   Údataclassesr   Útypingr   ÚfontTools.misc.cliToolsr   ÚfontTools.ttLibr	   r
   r   ÚfontTools.ttLib.tablesr   Ú!fontTools.ttLib.tables.otTraverser   r)  rt   r  rP   r'   Ú	BaseCoordÚ	SinglePosÚPairPosÚPairSetÚPairSet2ÚPairValueRecordÚ
PairValue2Ú
CursivePosÚEntryExitRecordÚ
EntryExit2ÚMarkBasePosÚ	MarkArrayÚ
MarkArray2Ú
MarkRecordÚMarkRecord2Ú	BaseArrayÚ
BaseArray2Ú
BaseRecordÚBaseRecord2Ú
MarkLigPosÚLigatureArrayÚLigatureArray2ÚLigatureAttachÚLigatureAttach2ÚComponentRecordÚComponentRecord2ÚMarkMarkPosÚ
Mark2ArrayÚMark2Array2ÚMark2RecordÚMark2Record2ÚReverseChainSingleSubstrž   r`   r”   r{   rŽ   r�   rœ   r    r¤   r¨   r´   rÂ   rÇ   rÊ   rÌ   r×   rÙ   rà   rã   rï   rø   r  r  r  r  r  r  r‘  r•  r   r+  rA  rF  rL  rT  rV  rZ  r=  rd  rh  rr  rx  r~  rŽ  r“  r–  r¹  r+   )
rö   r÷   rô   rQ   rR   r—   r^   r]   rz   r)   s
   0000000000r1   ú<module>rê     s½  ðñõ2 #ã Ý $Ý %Ý !Ý å 6ß 8Ñ 8Ý +Ý <ð ØØØØØØØñ	€ð $0×#5Ñ#5Ó#7÷ð Ù�5˜%ÀEÈ5À>òØ<?€Cˆ�JðØôÐ ð × Ñ àØØØØØØñô
ñ �$Ô÷&ð &ó ð&ð ×Ñ˜Ð˜a ˜WØ×Ñ˜Ð˜a ˜WØ×Ñ˜Ð˜a ˜WØ×Ñ�qÐØ	à×Ñ˜h×/Ñ/Ø×$Ñ$ h×&9Ñ&9ð	
ðð ×Ñ�qÐ˜A˜r˜7Ø×Ñ˜!ÐØ	Ø	×	!Ñ	! 8×#6Ñ#6Ð7ðð ×Ñ˜1ÐØ	à×Ñ × 3Ñ 3Ø×Ñ ×!5Ñ!5Ø×Ñ × 3Ñ 3Ø×Ñ ×!5Ñ!5ð		
ð ð ×Ñ˜!ÐØ	à×Ñ × 3Ñ 3Ø×Ñ ×!5Ñ!5Ø×"Ñ" H×$;Ñ$;Ø×#Ñ# X×%=Ñ%=Ø×$Ñ$ h×&?Ñ&?ð	
ð	ð ×Ñ˜1ÐØ	à×Ñ × 3Ñ 3Ø×Ñ ×!5Ñ!5Ø×Ñ ×!5Ñ!5Ø× Ñ  (×"7Ñ"7ð		
ð ð ×%Ñ% qÐ)¨A¨r¨7ðY-Ð ðb 9>ó2Wðz
ñ

à#ô

ð
ñ


à#ô

ð
ñ

ð !ô	

ð
ñ

ð !ô	

ñ
÷ò ñ	ØØØØØð �Ð  ?°MÀ<Ð"PÑPöÐ òB#òCò&Cò &òRò8"òò.ò&)ò,*ò6/ò0ò3ò(ò()ò*òð* Ø,0ó ?ó ð?ò<	3òò
ò
ò<ò;ðð $0×#5Ñ#5Ó#7÷áˆF�Kð 	Ñ  Ó-Ñ-óðñ
 ˜VÐ%:Ó;Ù˜V [Ó1Ù˜V [Ó1Ù˜VÐ%9Ó:Ù˜VÐ%9Ó:Ù˜V [Ó1Ù˜V [Ó1ò€ð
Ø:F×:LÑ:LÓ:N×O©,¨%°€uÑ˜uÓ%Ñ%ÓOð
á˜V [Ó1Ù˜VÐ%:Ó;Ù˜V [Ó1Ù˜V [Ó1Ù˜VÐ%9Ó:Ù˜VÐ%9Ó:Ù˜V [Ó1Ù˜V [Ó1ò
€ó
ó
ó2&ójFó7óóó!óWó&ó0&ó8!
óH	ðØ
ðð ðð !ð	ð
 ðð 
óð8 ñ<Ø
ð<ð !ð<ð 3ð	<ð
 ð<ð ð<ð ð<ð 
ó<ðD $(ØØØñ"+Ø
ð"+ð !ð"+ð ð	"+ð
 ð"+ð ð"+ð 
ó"+ðP $(ØØØñ$Ø
ð$ð !ð$ð ð	$ð
 ð$ð ð$ð 
ó$ó64ðn ˆzÒÙ…Fð ùôIùövùóNùó Ps   Á R2ËR9ÍSÏS