§
    ÛóÉj:ú  ã                  óÒ  — U d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
mZmZ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mZ d dlm Z m!Z!m"Z"m#Z#m$Z$ e
ríd dl%m&Z&m'Z' d dl(m)Z)m*Z* d dl	m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z…m†Z†m‡Z‡mˆZˆm‰Z‰mŠZŠm‹Z‹ d dlŒm�Z�  edd¬¦  «        ZŽ ej�        e�¦  «        Z‘ ede’¬¦  «        Z“ G d„ de”¦  «        Z• G d„ de”¦  «        Z–dPd „Z—i Z˜d!e™d"<   	 dQdRd(„ZšdSd)„Z›dTd+„ZœdUd-„Z�dVd/„ZždWd1„ZŸdXd3„Z dYd4„Z¡dZd6„Z¢dYd7„Z£d[d8„Z¤g d9¢Z¥g d:¢Z¦	 dQd\d@„Z§	 	 d]d^dG„Z¨d_dJ„Z©d`dadO„ZªdS )bé    )ÚannotationsN)ÚBytesIOÚStringIOÚUnsupportedOperation)ÚTYPE_CHECKINGÚ	TypedDictÚTypeVarÚoverload)ÚConfig)Ú	xmlWriter)ÚAbstractConfig)ÚdeprecateArgument)ÚTagÚbyteordÚtostr)Ú
TTLibError)Ú
SFNTReaderÚ
SFNTWriter)Ú_TTGlyphÚ_TTGlyphSetÚ_TTGlyphSetCFFÚ_TTGlyphSetGlyfÚ_TTGlyphSetVARC)ÚMappingÚMutableMapping)Ú
ModuleTypeÚTracebackType)ÚAnyÚBinaryIOÚLiteralÚSequenceÚTextIO)ÚSelfÚUnpack)XÚB_A_S_E_ÚC_B_D_T_ÚC_B_L_C_ÚC_F_F_ÚC_F_F__2ÚC_O_L_R_ÚC_P_A_L_ÚD_S_I_G_ÚE_B_D_T_ÚE_B_L_C_ÚE_B_S_C_ÚF_F_T_M_ÚG_D_E_F_ÚG_P_O_S_ÚG_S_U_B_ÚG_V_A_R_ÚH_V_A_R_ÚI_F_T_ÚI_F_T_X_ÚJ_S_T_F_ÚL_T_S_H_ÚM_A_T_H_ÚM_V_A_R_ÚS_T_A_T_ÚS_V_G_ÚT_S_I__0ÚT_S_I__1ÚT_S_I__2ÚT_S_I__3ÚT_S_I__5ÚT_S_I_B_ÚT_S_I_C_ÚT_S_I_D_ÚT_S_I_J_ÚT_S_I_P_ÚT_S_I_S_ÚT_S_I_V_ÚT_T_F_A_ÚV_A_R_C_ÚV_D_M_X_ÚV_O_R_G_ÚV_V_A_R_ÚD__e_b_gÚF__e_a_tÚG__l_a_tÚG__l_o_cÚO_S_2f_2ÚS__i_l_fÚS__i_l_lÚ_a_n_k_rÚ_a_v_a_rÚ_b_d_a_tÚ_b_g_c_lÚ_b_h_e_dÚ_b_l_o_cÚ_b_s_l_nÚ_c_i_d_gÚ_c_m_a_pÚ_c_v_a_rÚ_c_v_tÚ_f_e_a_tÚ_f_p_g_mÚ_f_v_a_rÚ_g_a_s_pÚ_g_c_i_dÚ_g_l_y_fÚ_g_v_a_rÚ_h_d_m_xÚ_h_e_a_dÚ_h_h_e_aÚ_h_m_t_xÚ_k_e_r_nÚ_l_c_a_rÚ_l_o_c_aÚ_l_t_a_gÚ_m_a_x_pÚ_m_e_t_aÚ_m_o_r_tÚ_m_o_r_xÚ_n_a_m_eÚ_o_p_b_dÚ_p_o_s_tÚ_p_r_e_pÚ_p_r_o_pÚ_s_b_i_xÚ_t_r_a_kÚ_v_h_e_aÚ_v_m_t_x©ÚDefaultTableÚ_VT_coT)Ú	covariantÚ_NumberT)Úboundc                  ó   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ddddd dd!ed"d!d#dddi f�dPd0„Z�dQd2„Z�dRd9„Z�dSd:„Z		 �dT�dUd=„Z
	 �dV�dWdA„Z G dB„ dCe¦  «        Z	 �dX�dYdJ„Z	 	 	 	 	 	 	 	 �dZ�d[dT„Z	 	 �d\�d]dW„Z	 �dV�d^dX„Z�d_dY„Z�d_dZ„ZeZ�d`d[„Z�dV�dad]„Z�dbd^„Ze�dcda„¦   «         Ze�dddd„¦   «         Ze�dedg„¦   «         Ze�dfdj„¦   «         Ze�dgdm„¦   «         Ze�dhdp„¦   «         Ze�dids„¦   «         Ze�djdv„¦   «         Ze�dkdy„¦   «         Ze�dld|„¦   «         Ze�dmd„¦   «         Ze�dnd‚„¦   «         Ze�dod…„¦   «         Ze�dpdˆ„¦   «         Ze�dqd‹„¦   «         Ze�drdŽ„¦   «         Ze�dsd‘„¦   «         Ze�dtd”„¦   «         Ze�dud—„¦   «         Ze�dvdš„¦   «         Ze�dwd�„¦   «         Ze�dxd „¦   «         Ze�dyd£„¦   «         Ze�dzd¦„¦   «         Ze�d{d©„¦   «         Ze�d|d¬„¦   «         Ze�d}d¯„¦   «         Ze�d~d²„¦   «         Ze�ddµ„¦   «         Ze�d€d¸„¦   «         Ze�d�d»„¦   «         Ze�d‚d¾„¦   «         Ze�dƒdÁ„¦   «         Ze�d„dÄ„¦   «         Ze�d…dÇ„¦   «         Ze�d†dÊ„¦   «         Ze�d‡dÍ„¦   «         Ze�dˆdÐ„¦   «         Ze�d‰dÓ„¦   «         Ze�dŠdÖ„¦   «         Ze�d‹dÙ„¦   «         Ze�dŒdÜ„¦   «         Ze�d�dß„¦   «         Ze�dŽdâ„¦   «         Ze�d�då„¦   «         Ze�d�dè„¦   «         Ze�d‘dë„¦   «         Ze�d’dî„¦   «         Ze�d“dñ„¦   «         Ze�d”dô„¦   «         Ze�d•d÷„¦   «         Ze�d–dú„¦   «         Ze�d—dý„¦   «         Ze�d˜�d „¦   «         Ze�d™�d„¦   «         Ze�dš�d„¦   «         Ze�d›�d	„¦   «         Ze�dœ�d„¦   «         Ze�d��d„¦   «         Ze�dž�d„¦   «         Ze�dŸ�d„¦   «         Ze�d �d„¦   «         Ze�d¡�d„¦   «         Ze�d¢�d„¦   «         Ze�d£�d!„¦   «         Ze�d¤�d$„¦   «         Ze�d¥�d'„¦   «         Ze�d¦�d*„¦   «         Ze�d§�d-„¦   «         Ze�d¨�d0„¦   «         Ze�d©�d3„¦   «         Ze�dª�d6„¦   «         Ze�d«�d9„¦   «         Ze�d¬�d<„¦   «         Ze�d­�d?„¦   «         Ze�d®�dB„¦   «         Ze�d¯�dE„¦   «         Ze�d°�dH„¦   «         Ze�d±�dK„¦   «         Ze�d²�dN„¦   «         Ze�d³�dQ„¦   «         Ze�d´�dT„¦   «         Ze�dµ�dW„¦   «         Ze�d¶�dZ„¦   «         Ze�d·�d]„¦   «         Ze�d¸�d`„¦   «         Ze�d¹�dc„¦   «         Ze�dº�df„¦   «         Ze�d»�di„¦   «         Ze�d¼�dk„¦   «         Z�d¼�dl„Z�d½�do„Z�d¾�dq„Z�d¿�dr„Ze�dÀ�dt„¦   «         Ze�dÁ�dv„¦   «         Ze�dÂ�dx„¦   «         Ze�dÃ�dz„¦   «         Ze�dÄ�d|„¦   «         Ze�dÅ�d~„¦   «         Ze�dÆ�d€„¦   «         Ze�dÇ�d‚„¦   «         Ze�dÈ�d„„¦   «         Ze�dÉ�d†„¦   «         Ze�dÊ�dˆ„¦   «         Ze�dË�dŠ„¦   «         Ze�dÌ�dŒ„¦   «         Ze�dÍ�dŽ„¦   «         Ze�dÎ�d�„¦   «         Ze�dÏ�d’„¦   «         Ze�dÐ�d”„¦   «         Ze�dÑ�d–„¦   «         Ze�dÒ�d˜„¦   «         Ze�dÓ�dš„¦   «         Ze�dÔ�dœ„¦   «         Ze�dÕ�dž„¦   «         Ze�dÖ�d „¦   «         Ze�d×�d¢„¦   «         Ze�dØ�d¤„¦   «         Ze�dÙ�d¦„¦   «         Ze�dÚ�d¨„¦   «         Ze�dÛ�dª„¦   «         Ze�dÜ�d¬„¦   «         Ze�dÝ�d®„¦   «         Ze�dÞ�d°„¦   «         Ze�dß�d²„¦   «         Ze�dà�d´„¦   «         Ze�dá�d¶„¦   «         Ze�dâ�d¸„¦   «         Ze�dã�dº„¦   «         Ze�dä�d¼„¦   «         Ze�då�d¾„¦   «         Ze�dæ�dÀ„¦   «         Ze�dç�dÂ„¦   «         Ze�dè�dÄ„¦   «         Ze�dé�dÆ„¦   «         Ze�dê�dÈ„¦   «         Ze�dë�dÊ„¦   «         Ze�dì�dÌ„¦   «         Ze�dí�dÎ„¦   «         Ze�dî�dÐ„¦   «         Ze�dï�dÒ„¦   «         Ze�dð�dÔ„¦   «         Ze�dñ�dÖ„¦   «         Ze�dò�dØ„¦   «         Ze�dó�dÚ„¦   «         Ze�dô�dÜ„¦   «         Ze�dõ�dÞ„¦   «         Ze�dö�dà„¦   «         Ze�d÷�dâ„¦   «         Ze�dø�dä„¦   «         Ze�dù�dæ„¦   «         Ze�dú�dè„¦   «         Ze�dû�dê„¦   «         Ze�dü�dì„¦   «         Ze�dý�dî„¦   «         Ze�dþ�dð„¦   «         Ze�dÿ�dò„¦   «         Ze�d �dô„¦   «         Ze�d�dö„¦   «         Ze�d�dø„¦   «         Ze�d�dú„¦   «         Ze�d�dü„¦   «         Ze�d�dþ„¦   «         Ze�d�d „¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d	�d„¦   «         Ze�d
�d„¦   «         Ze�d�d
„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d�d„¦   «         Ze�d»�d„¦   «         Ze�d�d„¦   «         Ze�d�d#„¦   «         Z	 �dV�d�d$„Z�d�d%„Z�d`�d&„Z�dS�d'„Z e!�d�d)„¦   «         Z"�d`�d*„Z#�d`�d+„Z$�d�d-„Z%�d�d0„Z&�d�d2„Z'�d�d5„Z(�d�d�d7„Z)�d �d8„Z*	 �dV�d!�d<„Z+�d"�d>„Z,	 	 	 	 �d#�d$�dE„Z-�d%�dH„Z.	 �d&�d'�dM„Z/�d(�dO„Z0dS ()  ÚTTFonta_  Represents a TrueType font.

    The object manages file input and output, and offers a convenient way of
    accessing tables. Tables will be only decompiled when necessary, ie. when
    they're actually accessed. This means that simple operations can be extremely fast.

    Example usage:

    .. code-block:: pycon

        >>>
        >> from fontTools import ttLib
        >> tt = ttLib.TTFont("afont.ttf") # Load an existing font file
        >> tt['maxp'].numGlyphs
        242
        >> tt['OS/2'].achVendID
        'B&H '
        >> tt['head'].unitsPerEm
        2048

    For details of the objects returned when accessing each table, see the
    :doc:`tables </ttLib/tables>` documentation.
    To add a table to the font, use the :py:func:`newTable` function:

    .. code-block:: pycon

        >>>
        >> os2 = newTable("OS/2")
        >> os2.version = 4
        >> # set other attributes
        >> font["OS/2"] = os2

    TrueType fonts can also be serialized to and from XML format (see also the
    :doc:`ttx </ttx>` binary):

    .. code-block:: pycon

        >>
        >> tt.saveXML("afont.ttx")
        Dumping 'LTSH' table...
        Dumping 'OS/2' table...
        [...]

        >> tt2 = ttLib.TTFont() # Create a new font object
        >> tt2.importXML("afont.ttx")
        >> tt2['maxp'].numGlyphs
        242

    The TTFont object may be used as a context manager; this will cause the file
    reader to be closed after the context ``with`` block is exited::

            with TTFont(filename) as f:
                    # Do stuff

    Args:
            file: When reading a font from disk, either a pathname pointing to a file,
                    or a readable file object.
            res_name_or_index: If running on a Macintosh, either a sfnt resource name or
                    an sfnt resource index number. If the index number is zero, TTLib will
                    autodetect whether the file is a flat file or a suitcase. (If it is a suitcase,
                    only the first 'sfnt' resource will be read.)
            sfntVersion (str): When constructing a font object from scratch, sets the four-byte
                    sfnt magic number to be used. Defaults to ``   `` (TrueType). To create
                    an OpenType file, use ``OTTO``.
            flavor (str): Set this to ``woff`` when creating a WOFF file or ``woff2`` for a WOFF2
                    file.
            checkChecksums (int): How checksum data should be treated. Default is 0
                    (no checking). Set to 1 to check and warn on wrong checksums; set to 2 to
                    raise an exception if any wrong checksums are found.
            recalcBBoxes (bool): If true (the default), recalculates ``glyf``, ``CFF ``,
                    ``head`` bounding box values and ``hhea``/``vhea`` min/max values on save.
                    Also compiles the glyphs on importing, which saves memory consumption and
                    time.
            ignoreDecompileErrors (bool): If true, exceptions raised during table decompilation
                    will be ignored, and the binary data will be returned for those tables instead.
            recalcTimestamp (bool): If true (the default), sets the ``modified`` timestamp in
                    the ``head`` table on save.
            fontNumber (int): The index of the font in a TrueType Collection file.
            lazy (bool): If lazy is set to True, many data structures are loaded lazily, upon
                    access only. If it is set to False, many data structures are loaded immediately.
                    The default is ``lazy=None`` which is somewhere in between.
    z$dict[Tag, DefaultTable | GlyphOrder]ÚtableszSFNTReader | NoneÚreaderÚstrÚsfntVersionú
str | NoneÚflavorú
Any | NoneÚ
flavorDataúbool | NoneÚlazyÚboolÚrecalcBBoxesÚrecalcTimestampÚignoreDecompileErrorsr   Úcfgú	list[str]Ú
glyphOrderúdict[str, int]Ú_reverseGlyphOrderDictú6MutableMapping[tuple[Tag, bytes], DefaultTable] | NoneÚ_tableCacheÚdisassembleInstructionsÚbitmapGlyphDataFormatÚverboseÚquietNz   r   TFéÿÿÿÿÚfileú(str | os.PathLike[str] | BinaryIO | NoneÚres_name_or_indexústr | int | NoneÚcheckChecksumsÚintÚallowVIDr   Ú
fontNumberú"Mapping[str, Any] | AbstractConfigÚreturnÚNonec                ó¸  — dD ]F}t          ¦   «                              |¦  «        }|�t          |d¦  «         t          | ||¦  «         ŒG|| _        || _        |
| _        i | _        d | _        t          |t          ¦  «        r|                     ¦   «         nt          |¦  «        | _        |	| _        |s|| _        || _        d | _        d S d}t%          |d¦  «        s¥t          |t&          t(          j        f¦  «        st-          d¦  «        ‚d}|�`ddlm} |dk    r=|                     |¦  «        r|                     |d¦  «        }n¼t7          |d	¦  «        }n«|                     ||¦  «        }n”t7          |d	¦  «        }nƒt          |t&          t(          j        f¦  «        rJ ‚d
}t%          |d¦  «        r|                     ¦   «         }n9t%          |d¦  «        r)	 |                     d¦  «         n# t<          $ r d
}Y nw xY w| j        sm|r|                     d¦  «         t?          |                      ¦   «         ¦  «        }t%          |d¦  «        r|j!        |_!        |r| "                    ¦   «          |}n|stG          d¦  «        ‚|| _$        tK          |||¬¦  «        | _        | j        j        | _        | j        j        | _        | j        j        | _        d S )N)rœ   r�   úconfigure logging insteadTÚreadz\fileOrPath must be a file path (str or PathLike) if it isn't an object with a `read` method.é   )ÚmacUtilsr   ÚrbFÚseekableÚseekÚnamez*Input file must be seekable when lazy=True)r¦   )&ÚlocalsÚgetr   ÚsetattrrŽ   r�   r‘   r…   r†   Ú
isinstancer   Úcopyr   r“   r’   rˆ   rŠ   rŒ   Úhasattrr‡   ÚosÚPathLikeÚ	TypeErrorÚ r®   ÚgetSFNTResIndicesÚSFNTResourceReaderÚopenr°   r±   r   r   r¬   r²   Úcloser   r™   r   )ÚselfrŸ   r¡   rˆ   rŠ   r£   rœ   r�   r¥   r’   r‘   r¦   rŽ   r�   r™   r“   r²   Úvalr°   ÚcloseStreamr®   Útmps                         ú{/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/fontTools/ttLib/ttFont.pyÚ__init__zTTFont.__init__ê   s  € ð& )ð 	%ð 	%ˆDÝ‘(”(—,’,˜tÑ$Ô$ˆCØˆÝ! $Ð(CÑDÔDÐDÝ�D˜$ Ñ$Ô$Ð$Ð$àˆŒ	Ø(ˆÔØ.ˆÔØˆŒØˆŒÝ!+¨CµÑ!@Ô!@ÐQ�3—8’8‘:”:�:ÅfÈSÁkÄkˆŒØ%:ˆÔ"àð 	Ø*ˆDÔØ ˆDŒKØ"ˆDŒOØˆFØˆÝ�t˜VÑ$Ô$ð "	%Ý˜d¥S­"¬+Ð$6Ñ7Ô7ð ÝØrñô ð ð ˆKà Ð,à&Ð&Ð&Ð&Ð&Ð&à$¨Ò)Ð)Ø×1Ò1°$Ñ7Ô7ð 0à'×:Ò:¸4ÀÑCÔC˜˜å# D¨$Ñ/Ô/˜˜à#×6Ò6°tÐ=NÑOÔO�D�Då˜D $Ñ'Ô'��õ " $­­b¬kÐ(:Ñ;Ô;Ð;Ð;Ð;ØˆKõ �t˜ZÑ(Ô(ð %ØŸ=š=™?œ?��Ý˜˜vÑ&Ô&ð %ð%Ø—I’I˜a‘L”L�L�LøÝ+ð %ð %ð %Ø$�H�H�Hð%øøøð Œyð 	Kàð Ø—	’	˜!‘”�Ý˜$Ÿ)š)™+œ+Ñ&Ô&ˆCÝ�t˜VÑ$Ô$ð %àœ9�”Øð Ø—
’
‘”�ØˆDˆDØð 	KÝÐIÑJÔJÐJØ&ˆÔÝ   ~À*ÐMÑMÔMˆŒØœ;Ô2ˆÔØ”kÔ(ˆŒØœ+Ô0ˆŒˆˆs   ÇG2 Ç2HÈ Hr#   c                ó   — | S ©N© ©rÁ   s    rÅ   Ú	__enter__zTTFont.__enter__H  s   € Øˆó    Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackúTracebackType | Nonec                ó.   — |                       ¦   «          d S rÈ   )rÀ   )rÁ   rÍ   rÏ   rÑ   s       rÅ   Ú__exit__zTTFont.__exit__K  s   € ð 	�
Š
‰ŒˆˆˆrÌ   c                óX   — | j         �"| j                              ¦   «          d| _         dS dS )z+If we still have a reader object, close it.N)r†   rÀ   rÊ   s    rÅ   rÀ   zTTFont.closeS  s1   € àŒ;Ð"ØŒK×ÒÑÔÐØˆDŒKˆKˆKð #Ð"rÌ   ú!str | os.PathLike[str] | BinaryIOÚreorderTablesc                ó¨  — t          |d¦  «        s.| j        r$| j        j        j        |k    rt          d¦  «        ‚d}nd}t          ¦   «         }|                      |¦  «        }|�™|s—|du r| j        �Œ|du r=| j        €t          d¦  «        ‚t          | j         	                    ¦   «         ¦  «        }nd}| 
                    ¦   «          t          ¦   «         }t          |||¦  «         |                     ¦   «          |}|rst          |t          t          j        f¦  «        sJ ‚t#          |d¦  «        5 }|                     |                     ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   nJt          |t          t          j        f¦  «        rJ ‚|                     |                     ¦   «         ¦  «         |                     ¦   «          dS )añ  Save the font to disk.

        Args:
                file: Similarly to the constructor, can be either a pathname or a writable
                        binary file object.
                reorderTables (Option[bool]): If true (the default), reorder the tables,
                        sorting them by tag (recommended by the OpenType specification). If
                        false, retain the original font order. If None, reorder by table
                        dependency (fastest).
        Úwritez4Can't overwrite TTFont when 'lazy' attribute is TrueTFNzSThe original table order is unavailable because there isn't a font to read it from.Úwb)r¸   rŽ   r†   rŸ   r²   r   r   Ú_saveÚlistÚkeysÚflushÚreorderFontTablesrÀ   r¶   r‡   r¹   rº   r¿   rÙ   Úgetvalue)rÁ   rŸ   r×   ÚcreateStreamrÄ   Úwriter_reordersTablesÚ
tableOrderÚtmp2s           rÅ   ÚsavezTTFont.saveY  sÿ  € õ �t˜WÑ%Ô%ð 	!ØŒyð Y˜Tœ[Ô-Ô2°dÒ:Ð:Ý Ð!WÑXÔXÐXØˆLˆLð !ˆLå‰iŒiˆà $§
¢
¨3¡¤Ðð Ð!Ø$ð "à Ð&Ð&¨4¬;Ð+>à Ð%Ð%à”;Ð&Ý$Ømñô ð õ " $¤+×"2Ò"2Ñ"4Ô"4Ñ5Ô5�
�
ð "�
Ø�IŠI‰KŒKˆKÝ‘9”9ˆDÝ˜c 4¨Ñ4Ô4Ð4Ø�IŠI‰KŒKˆKØˆCàð 	'å˜d¥S­"¬+Ð$6Ñ7Ô7Ð7Ð7Ð7Ý�d˜DÑ!Ô!ð + TØ—
’
˜3Ÿ<š<™>œ>Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +øõ " $­­b¬kÐ(:Ñ;Ô;Ð;Ð;Ð;Ø�JŠJ�s—|’|‘~”~Ñ&Ô&Ð&à�	Š	‰Œˆˆˆs   Ä4(E(Å(E,Å/E,r   Ú
tableCacheú-MutableMapping[tuple[Tag, bytes], Any] | Nonec                ój  — | j         rd| v r| d          |                      ¦   «         }|                     d¦  «         t          |¦  «        }t	          ||| j        | j        | j        ¦  «        }g }|D ]}|                      ||||¦  «         Œ| 	                    ¦   «          | 
                    ¦   «         S )zAInternal function, to be shared by save() and TTCollection.save()Úheadr   )r‘   rÝ   ÚpopÚlenr   rˆ   rŠ   rŒ   Ú_writeTablerÀ   ÚreordersTables)rÁ   rŸ   ræ   ÚtagsÚ	numTablesÚwriterÚdoneÚtags           rÅ   rÛ   zTTFont._save’  sº   € ð Ôð 	 F¨d N Nà�ŒLˆLà�yŠy‰{Œ{ˆØ�Š�‰ŒˆÝ˜‘I”Iˆ	åØ�)˜TÔ-¨t¬{¸D¼Oñ
ô 
ˆð ˆØð 	<ð 	<ˆCØ×Ò˜S &¨$°
Ñ;Ô;Ð;Ð;à�Š‰Œˆà×$Ò$Ñ&Ô&Ð&rÌ   c                  ó`   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   dS )úTTFont.XMLSavingOptionsr�   ÚwriteVersionr�   r�   úSequence[str | bytes] | Noner…   úSequence[str] | NoneÚ
skipTablesÚsplitTablesÚsplitGlyphsrš   r‡   r›   N)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rÉ   rÌ   rÅ   ÚXMLSavingOptionsrô   ­  sr   € € € € € € ØÐÐÑØÐÐÑØ,Ð,Ð,Ñ,Ø(Ð(Ð(Ñ(ØÐÐÑØÐÐÑØ%Ð%Ð%Ñ%Ø"Ð"Ð"Ñ"Ð"Ð"rÌ   rÿ   ú
Ú
fileOrPathú*str | os.PathLike[str] | BinaryIO | TextIOÚ
newlinestrÚkwargsúUnpack[XMLSavingOptions]c                óv   — t          j        ||¬¦  «        } | j        |fi |¤Ž |                     ¦   «          dS )aÃ  Export the font as TTX (an XML-based text file), or as a series of text
        files when splitTables is true. In the latter case, the 'fileOrPath'
        argument should be a path to a directory.
        The 'tables' argument must either be falsy (None or empty list, meaning
        dump all tables) or a non-empty list of tables to dump. The 'skipTables'
        argument may be a list of tables to skip, but only when 'tables' is falsy.
        ©r  N)r   Ú	XMLWriterÚ_saveXMLrÀ   )rÁ   r  r  r  rð   s        rÅ   ÚsaveXMLzTTFont.saveXML·  sD   € õ Ô$ Z¸JÐGÑGÔGˆØˆŒ�fÐ'Ð' Ð'Ð'Ð'Ø�Š‰ŒˆˆˆrÌ   Úrawrð   úxmlWriter.XMLWriterrõ   rö   rø   r÷   rù   rú   c
                ó~  ‡— |�t          dd¦  «         || _        |	| _        |s$|                      ¦   «         }‰rˆfd„|D ¦   «         }|rvddlm}
 d                     |
                     d¦  «        d d…         ¦  «        }
|                     dt          t          | j        ¦  «        ¦  «        d	d
…         |
¬¦  «         n>|                     dt          t          | j        ¦  «        ¦  «        d	d
…         ¬¦  «         |                     ¦   «          |p|}|s|                     ¦   «          n=|j        €t          d¦  «        ‚t          j                             |j        ¦  «        \  }}|D �]&}|rÈ|dz   t%          |¦  «        z   |z   }t'          j        ||j        ¬¦  «        }|                     d|
¬¦  «         |                     ¦   «          |                     ¦   «          |                     t/          |¦  «        t          j                             |¦  «        ¬¦  «         |                     ¦   «          n|}|                      |||¬¦  «         |r=|                     d¦  «         |                     ¦   «          |                     ¦   «          �Œ(|                     d¦  «         |                     ¦   «          d S )Nr�   r«   c                ó   •— g | ]}|‰v¯|‘Œ	S rÉ   rÉ   )Ú.0rò   rø   s     €rÅ   ú
<listcomp>z#TTFont._saveXML.<locals>.<listcomp>Ý  s#   ø€ ÐIÐIÐI #°3¸jÐ3HÐ3H˜#Ð3HÐ3HÐ3HrÌ   r   )Úversionú.é   ÚttFontr­   rž   )rˆ   ÚttLibVersion)rˆ   zJsplitTables requires the file name to be a file system path, not a stream.r  )r  )Úsrc©rú   )r   rš   r›   rÝ   Ú	fontToolsr  ÚjoinÚsplitÚbegintagÚreprr   rˆ   ÚnewlineÚfilenamer   r¹   ÚpathÚsplitextÚtagToIdentifierr   r  r  Ú	simpletagÚtagToXMLÚbasenameÚ_tableToXMLÚendtagrÀ   )rÁ   rð   rõ   r�   r…   rø   rù   rú   rš   r›   r  r  Úextrò   Ú	tablePathÚtableWriters        `          rÅ   r	  zTTFont._saveXMLÉ  sí  ø€ ð ÐÝ˜gÐ'BÑCÔCÐCà'>ˆÔ$Ø%:ˆÔ"Øð 	JØ—Y’Y‘[”[ˆFØð JØIÐIÐIÐI¨ÐIÑIÔI�àð 
	WØ)Ð)Ð)Ð)Ð)Ð)à—h’h˜wŸ}š}¨SÑ1Ô1°"°1°"Ô5Ñ6Ô6ˆGØ�OŠOØÝ ¥ tÔ'7Ñ!8Ô!8Ñ9Ô9¸!¸B¸$Ô?Ø$ð ñ ô ð ð ð �OŠO˜Hµ$µu¸TÔ=MÑ7NÔ7NÑ2OÔ2OÐPQÐRTÐPTÔ2UˆOÑVÔVÐVØ�ŠÑÔÐð "Ð0 [ˆàð 	:Ø�NŠNÑÔÐÐàŒÐ&Ý Ø`ñô ð õ œ×(Ò(¨¬Ñ9Ô9‰IˆD�#àð 	$ñ 	$ˆCØð %Ø  3™J­¸Ñ)=Ô)=Ñ=ÀÑC�	Ý'Ô1Ø¨&Ô*;ðñ ô �ð ×$Ò$ X¸GÐ$ÑDÔDÐDØ×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø× Ò ¥¨#¡¤µB´G×4DÒ4DÀYÑ4OÔ4OÐ ÑPÔPÐPØ—’Ñ Ô Ð Ð à$�Ø×Ò˜[¨#¸;ÐÑGÔGÐGØð $Ø×"Ò" 8Ñ,Ô,Ð,Ø×#Ò#Ñ%Ô%Ð%Ø×!Ò!Ñ#Ô#Ð#ùØ�Š�hÑÔÐØ�ŠÑÔÐÐÐrÌ   rò   ústr | bytesc                ó8  — |�t          dd¦  «         || v r| |         }d|z  }nd|z  }t                               |¦  «         || vrd S t          |¦  «        }i }t	          |d¦  «        rd|d<   ddlm}	 |j        |	k    rd	|d
<    |j        |fi |¤Ž | 	                    ¦   «          |dk    r| 
                    || |¬¦  «         n| 
                    || ¦  «         |                     |¦  «         | 	                    ¦   «          | 	                    ¦   «          d S )Nr�   r«   zDumping '%s' table...zNo '%s' table found.ÚERRORzdecompilation errorr­   r}   Tr  Úglyfr  )r   ÚlogÚinfor#  r¸   Útables.DefaultTabler~   Ú	__class__r  r  ÚtoXMLr&  )
rÁ   rð   rò   r�   rú   ÚtableÚreportÚxmlTagÚattrsr~   s
             rÅ   r%  zTTFont._tableToXML  sP  € ð ÐÝ˜gÐ'BÑCÔCÐCØ�$ˆ;ˆ;Ø˜”IˆEØ,¨sÑ2ˆFˆFà+¨cÑ1ˆFÝ�Š�ÑÔÐØ�dˆ?ˆ?ØˆFÝ˜#‘”ˆØ "ˆÝ�5˜'Ñ"Ô"ð 	3Ø2ˆE�'‰NØ5Ð5Ð5Ð5Ð5Ð5àŒ?˜lÒ*Ð*ØˆE�%‰LØˆŒ˜Ð(Ð( %Ð(Ð(Ð(Ø�ŠÑÔÐØ�&Š=ˆ=Ø�KŠK˜ °+ˆKÑ>Ô>Ð>Ð>à�KŠK˜ Ñ%Ô%Ð%Ø�Š�fÑÔÐØ�ŠÑÔÐØ�ŠÑÔÐÐÐrÌ   c                óÂ   — |�t          dd¦  «         d| v rd| v r|                      ¦   «          ddlm} |                     || ¦  «        }|                     ¦   «          dS )z_Import a TTX file (an XML-based text format), so as to recreate
        a font object.
        Nr�   r«   ÚmaxpÚpostr   )Ú	xmlReader)r   ÚgetGlyphOrderÚfontTools.miscr:  Ú	XMLReaderr¬   )rÁ   r  r�   r:  r†   s        rÅ   Ú	importXMLzTTFont.importXML0  sx   € ð ÐÝ˜gÐ'BÑCÔCÐCà�Tˆ>ˆ>˜f¨˜n˜nð
 ×ÒÑ Ô Ð à,Ð,Ð,Ð,Ð,Ð,à×$Ò$ Z°Ñ6Ô6ˆØ�Š‰ŒˆˆˆrÌ   c                ó   — || j         v S )zbReturn true if the table identified by ``tag`` has been
        decompiled and loaded into memory.©r…   ©rÁ   rò   s     rÅ   ÚisLoadedzTTFont.isLoadedE  s   € ð �d”kÐ!Ð!rÌ   c                óh   — |                       |¦  «        rdS | j        r|| j        v rdS |dk    rdS dS )z±Test if the table identified by ``tag`` is present in the font.

        As well as this method, ``tag in font`` can also be used to determine the
        presence of the table.TÚ
GlyphOrderF)rB  r†   rA  s     rÅ   Úhas_keyzTTFont.has_keyJ  sM   € ð
 �=Š=˜ÑÔð 	Ø�4ØŒ[ð 	˜S D¤KÐ/Ð/Ø�4Ø�LÒ Ð Ø�4à�5rÌ   c                ó<  — t          | j                             ¦   «         ¦  «        }| j        rBt          | j                             ¦   «         ¦  «        D ]}||vr|                     |¦  «         Œd|v r|                     d¦  «         t          |¦  «        }dg|z   S )zSReturns the list of tables in the font, along with the ``GlyphOrder`` pseudo-table.rD  )rÜ   r…   rÝ   r†   ÚappendÚremoveÚsortedTagList)rÁ   rÝ   Úkeys      rÅ   rÝ   zTTFont.keysZ  sŸ   € å�D”K×$Ò$Ñ&Ô&Ñ'Ô'ˆØŒ;ð 	%Ý˜DœK×,Ò,Ñ.Ô.Ñ/Ô/ð %ð %�Ø˜d�?�?Ø—K’K Ñ$Ô$Ð$øà˜4ÐÐØ�KŠK˜Ñ%Ô%Ð%Ý˜TÑ"Ô"ˆØˆ~ Ñ$Ð$rÌ   Úrecursec                ó¸   — |                       ¦   «         D ]=}| |         }|€	| j        du}|r&t          |d¦  «        r|                     |¬¦  «         Œ>d| _        dS )zEDecompile all the tables, even if a TTFont was opened in 'lazy' mode.NFÚensureDecompiled)rK  )rÝ   rŽ   r¸   rM  )rÁ   rK  rò   r3  s       rÅ   rM  zTTFont.ensureDecompiledg  sp   € à—9’9‘;”;ð 	8ð 	8ˆCØ˜”IˆEØˆØœ)¨5Ð0�Øð 8�7 5Ð*<Ñ=Ô=ð 8Ø×&Ò&¨wÐ&Ñ7Ô7Ð7øØˆŒ	ˆ	ˆ	rÌ   c                ó^   — t          t          |                      ¦   «         ¦  «        ¦  «        S rÈ   )rë   rÜ   rÝ   rÊ   s    rÅ   Ú__len__zTTFont.__len__q  s    € Ý•4˜Ÿ	š	™œÑ$Ô$Ñ%Ô%Ð%rÌ   úLiteral['BASE']úB_A_S_E_.table_B_A_S_E_c                ó   — d S rÈ   rÉ   rA  s     rÅ   Ú__getitem__zTTFont.__getitem__t  ó   € ØLOÈCrÌ   úLiteral['CBDT']úC_B_D_T_.table_C_B_D_T_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__v  rT  rÌ   úLiteral['CBLC']úC_B_L_C_.table_C_B_L_C_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__x  rT  rÌ   úLiteral['CFF ']úC_F_F_.table_C_F_F_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__z  ó   € ØHKÈrÌ   úLiteral['CFF2']úC_F_F__2.table_C_F_F__2c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__|  rT  rÌ   úLiteral['COLR']úC_O_L_R_.table_C_O_L_R_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__~  rT  rÌ   úLiteral['CPAL']úC_P_A_L_.table_C_P_A_L_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__€  rT  rÌ   úLiteral['DSIG']úD_S_I_G_.table_D_S_I_G_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__‚  rT  rÌ   úLiteral['EBDT']úE_B_D_T_.table_E_B_D_T_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__„  rT  rÌ   úLiteral['EBLC']úE_B_L_C_.table_E_B_L_C_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__†  rT  rÌ   úLiteral['EBSC']úE_B_S_C_.table_E_B_S_C_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ˆ  rT  rÌ   úLiteral['FFTM']úF_F_T_M_.table_F_F_T_M_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Š  rT  rÌ   úLiteral['GDEF']úG_D_E_F_.table_G_D_E_F_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Œ  rT  rÌ   úLiteral['GPOS']úG_P_O_S_.table_G_P_O_S_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ž  rT  rÌ   úLiteral['GSUB']úG_S_U_B_.table_G_S_U_B_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__�  rT  rÌ   úLiteral['GVAR']úG_V_A_R_.table_G_V_A_R_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__’  rT  rÌ   úLiteral['HVAR']úH_V_A_R_.table_H_V_A_R_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__”  rT  rÌ   úLiteral['IFT ']úI_F_T_.table_I_F_T_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__–  r^  rÌ   úLiteral['IFTX']úI_F_T_X_.table_I_F_T_X_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__˜  rT  rÌ   úLiteral['JSTF']úJ_S_T_F_.table_J_S_T_F_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__š  rT  rÌ   úLiteral['LTSH']úL_T_S_H_.table_L_T_S_H_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__œ  rT  rÌ   úLiteral['MATH']úM_A_T_H_.table_M_A_T_H_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ž  rT  rÌ   úLiteral['MVAR']úM_V_A_R_.table_M_V_A_R_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__   rT  rÌ   úLiteral['STAT']úS_T_A_T_.table_S_T_A_T_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¢  rT  rÌ   úLiteral['SVG ']úS_V_G_.table_S_V_G_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¤  r^  rÌ   úLiteral['TSI0']úT_S_I__0.table_T_S_I__0c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¦  rT  rÌ   úLiteral['TSI1']úT_S_I__1.table_T_S_I__1c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¨  rT  rÌ   úLiteral['TSI2']úT_S_I__2.table_T_S_I__2c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ª  rT  rÌ   úLiteral['TSI3']úT_S_I__3.table_T_S_I__3c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¬  rT  rÌ   úLiteral['TSI5']úT_S_I__5.table_T_S_I__5c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__®  rT  rÌ   úLiteral['TSIB']úT_S_I_B_.table_T_S_I_B_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__°  rT  rÌ   úLiteral['TSIC']úT_S_I_C_.table_T_S_I_C_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__²  rT  rÌ   úLiteral['TSID']úT_S_I_D_.table_T_S_I_D_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__´  rT  rÌ   úLiteral['TSIJ']úT_S_I_J_.table_T_S_I_J_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¶  rT  rÌ   úLiteral['TSIP']úT_S_I_P_.table_T_S_I_P_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¸  rT  rÌ   úLiteral['TSIS']úT_S_I_S_.table_T_S_I_S_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__º  rT  rÌ   úLiteral['TSIV']úT_S_I_V_.table_T_S_I_V_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¼  rT  rÌ   úLiteral['TTFA']úT_T_F_A_.table_T_T_F_A_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__¾  rT  rÌ   úLiteral['VARC']úV_A_R_C_.table_V_A_R_C_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__À  rT  rÌ   úLiteral['VDMX']úV_D_M_X_.table_V_D_M_X_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Â  rT  rÌ   úLiteral['VORG']úV_O_R_G_.table_V_O_R_G_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ä  rT  rÌ   úLiteral['VVAR']úV_V_A_R_.table_V_V_A_R_c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Æ  rT  rÌ   úLiteral['Debg']úD__e_b_g.table_D__e_b_gc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__È  rT  rÌ   úLiteral['Feat']úF__e_a_t.table_F__e_a_tc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ê  rT  rÌ   úLiteral['Glat']úG__l_a_t.table_G__l_a_tc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ì  rT  rÌ   úLiteral['Gloc']úG__l_o_c.table_G__l_o_cc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Î  rT  rÌ   úLiteral['OS/2']úO_S_2f_2.table_O_S_2f_2c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ð  rT  rÌ   úLiteral['Silf']úS__i_l_f.table_S__i_l_fc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ò  rT  rÌ   úLiteral['Sill']úS__i_l_l.table_S__i_l_lc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ô  rT  rÌ   úLiteral['ankr']ú_a_n_k_r.table__a_n_k_rc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ö  rT  rÌ   úLiteral['avar']ú_a_v_a_r.table__a_v_a_rc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ø  rT  rÌ   úLiteral['bsln']ú_b_s_l_n.table__b_s_l_nc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ú  rT  rÌ   úLiteral['bdat']ú_b_d_a_t.table__b_d_a_tc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Ü  rT  rÌ   úLiteral['bhed']ú_b_h_e_d.table__b_h_e_dc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__Þ  rT  rÌ   úLiteral['bgcl']ú_b_g_c_l.table__b_g_c_lc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__à  rT  rÌ   úLiteral['bloc']ú_b_l_o_c.table__b_l_o_cc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__â  rT  rÌ   úLiteral['cidg']ú_c_i_d_g.table__c_i_d_gc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ä  rT  rÌ   úLiteral['cmap']ú_c_m_a_p.table__c_m_a_pc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__æ  rT  rÌ   úLiteral['cvar']ú_c_v_a_r.table__c_v_a_rc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__è  rT  rÌ   úLiteral['cvt ']ú_c_v_t.table__c_v_tc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ê  r^  rÌ   úLiteral['feat']ú_f_e_a_t.table__f_e_a_tc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ì  rT  rÌ   úLiteral['fpgm']ú_f_p_g_m.table__f_p_g_mc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__î  rT  rÌ   úLiteral['fvar']ú_f_v_a_r.table__f_v_a_rc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ð  rT  rÌ   úLiteral['gasp']ú_g_a_s_p.table__g_a_s_pc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ò  rT  rÌ   úLiteral['gcid']ú_g_c_i_d.table__g_c_i_dc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ô  rT  rÌ   úLiteral['glyf']ú_g_l_y_f.table__g_l_y_fc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ö  rT  rÌ   úLiteral['gvar']ú_g_v_a_r.table__g_v_a_rc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ø  rT  rÌ   úLiteral['hdmx']ú_h_d_m_x.table__h_d_m_xc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ú  rT  rÌ   úLiteral['head']ú_h_e_a_d.table__h_e_a_dc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__ü  rT  rÌ   úLiteral['hhea']ú_h_h_e_a.table__h_h_e_ac                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__þ  rT  rÌ   úLiteral['hmtx']ú_h_m_t_x.table__h_m_t_xc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__   rT  rÌ   úLiteral['kern']ú_k_e_r_n.table__k_e_r_nc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['lcar']ú_l_c_a_r.table__l_c_a_rc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['loca']ú_l_o_c_a.table__l_o_c_ac                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['ltag']ú_l_t_a_g.table__l_t_a_gc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['maxp']ú_m_a_x_p.table__m_a_x_pc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__
  rT  rÌ   úLiteral['meta']ú_m_e_t_a.table__m_e_t_ac                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['mort']ú_m_o_r_t.table__m_o_r_tc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['morx']ú_m_o_r_x.table__m_o_r_xc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['name']ú_n_a_m_e.table__n_a_m_ec                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['opbd']ú_o_p_b_d.table__o_p_b_dc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['post']ú_p_o_s_t.table__p_o_s_tc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['prep']ú_p_r_e_p.table__p_r_e_pc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['prop']ú_p_r_o_p.table__p_r_o_pc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['sbix']ú_s_b_i_x.table__s_b_i_xc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['trak']ú_t_r_a_k.table__t_r_a_kc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__  rT  rÌ   úLiteral['vhea']ú_v_h_e_a.table__v_h_e_ac                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__   rT  rÌ   úLiteral['vmtx']ú_v_m_t_x.table__v_m_t_xc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__"  rT  rÌ   úLiteral['GlyphOrder']rD  c                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__$  s   € ØEHÀSrÌ   úDefaultTable | GlyphOrderc                ó   — d S rÈ   rÉ   rA  s     rÅ   rS  zTTFont.__getitem__&  s   € ØJMÈ#rÌ   c                óú   — t          |¦  «        }| j                             |¦  «        }|€O|dk    rt          |¦  «        }|| j        |<   n/| j        �|                      |¦  «        }nt          d|z  ¦  «        ‚|S )NrD  ú'%s' table not found)r   r…   r´   rD  r†   Ú
_readTableÚKeyError©rÁ   rò   r3  s      rÅ   rS  zTTFont.__getitem__)  s~   € Ý�#‰hŒhˆØ”—’ Ñ$Ô$ˆØˆ=Ø�lÒ"Ð"Ý" 3™œ�Ø#(�”˜CÑ Ð Ø”Ð(ØŸš¨Ñ,Ô,��åÐ5¸Ñ;Ñ<Ô<Ð<ØˆrÌ   r   r~   c                óÊ  — t                                d|¦  «         | j        €J ‚| j        |         }| j        � | j                             ||f¦  «        }|�|S t          |¦  «        } ||¦  «        }|| j        |<   t                                d|¦  «         	 |                     || ¦  «         n # t          $ r“ | j	        s‚ t            
                    d|¦  «         ddlm} t          ¦   «         }t          j        |¬¦  «          ||¦  «        }|                     ¦   «         |_        || j        |<   |                     || ¦  «         Y nw xY w| j        �|| j        ||f<   |S )NúReading '%s' table from diskzDecompiling '%s' tablez@An exception occurred during the decompilation of the '%s' tabler­   r}   )rŸ   )r.  Údebugr†   r™   r´   ÚgetTableClassr…   Ú	decompileÚ	Exceptionr’   Ú	exceptionr0  r~   r   rÑ   Ú	print_excrà   r,  )rÁ   rò   Údatar3  Ú
tableClassr~   rŸ   s          rÅ   ra  zTTFont._readTable6  s‘  € Ý�	Š	Ð0°#Ñ6Ô6Ð6ØŒ{Ð&Ð&Ð&ØŒ{˜3ÔˆØÔÐ'ØÔ$×(Ò(¨#¨t¨Ñ5Ô5ˆEØÐ Ø�Ý" 3Ñ'Ô'ˆ
Ø�
˜3‘”ˆØ ˆŒ�CÑÝ�	Š	Ð*¨CÑ0Ô0Ð0ð	(Ø�OŠO˜D $Ñ'Ô'Ð'Ð'øÝð 	(ð 	(ð 	(ØÔ-ð Øå�MŠMØRÐTWñô ð ð :Ð9Ð9Ð9Ð9Ð9å‘:”:ˆDÝÔ TÐ*Ñ*Ô*Ð*Ø �L Ñ%Ô%ˆEØŸ-š-™/œ/ˆEŒKØ$ˆDŒK˜ÑØ�OŠO˜D $Ñ'Ô'Ð'Ð'Ð'ð	(øøøð ÔÐ'Ø,1ˆDÔ˜c 4˜[Ñ)Øˆs   ÂB0 Â0BEÅEr3  c                ó4   — || j         t          |¦  «        <   d S rÈ   )r…   r   rc  s      rÅ   Ú__setitem__zTTFont.__setitem__W  s   € Ø %ˆŒ•C˜‘H”HÑÐÐrÌ   c                óŒ   — || vrt          d|z  ¦  «        ‚|| j        v r| j        |= | j        r|| j        v r| j        |= d S d S d S )Nr`  )rb  r…   r†   rA  s     rÅ   Ú__delitem__zTTFont.__delitem__Z  sl   € Ø�dˆ?ˆ?ÝÐ1°CÑ7Ñ8Ô8Ð8Ø�$”+ÐÐØ”˜CÐ ØŒ;ð 	!˜3 $¤+Ð-Ð-Ø”˜CÐ Ð Ð ð	!ð 	!Ð-Ð-rÌ   úB_A_S_E_.table_B_A_S_E_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getb  ó   € ØKNÈ3rÌ   úC_B_D_T_.table_C_B_D_T_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getd  rt  rÌ   úC_B_L_C_.table_C_B_L_C_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getf  rt  rÌ   úC_F_F_.table_C_F_F_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.geth  ó   € ØGJÀsrÌ   úC_F_F__2.table_C_F_F__2 | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getj  rt  rÌ   úC_O_L_R_.table_C_O_L_R_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getl  rt  rÌ   úC_P_A_L_.table_C_P_A_L_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getn  rt  rÌ   úD_S_I_G_.table_D_S_I_G_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getp  rt  rÌ   úE_B_D_T_.table_E_B_D_T_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getr  rt  rÌ   úE_B_L_C_.table_E_B_L_C_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.gett  rt  rÌ   úE_B_S_C_.table_E_B_S_C_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getv  rt  rÌ   úF_F_T_M_.table_F_F_T_M_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getx  rt  rÌ   úG_D_E_F_.table_G_D_E_F_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getz  rt  rÌ   úG_P_O_S_.table_G_P_O_S_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get|  rt  rÌ   úG_S_U_B_.table_G_S_U_B_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get~  rt  rÌ   úG_V_A_R_.table_G_V_A_R_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get€  rt  rÌ   úH_V_A_R_.table_H_V_A_R_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get‚  rt  rÌ   úI_F_T_.table_I_F_T_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get„  r{  rÌ   úI_F_T_X_.table_I_F_T_X_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get†  rt  rÌ   úJ_S_T_F_.table_J_S_T_F_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getˆ  rt  rÌ   úL_T_S_H_.table_L_T_S_H_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getŠ  rt  rÌ   úM_A_T_H_.table_M_A_T_H_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getŒ  rt  rÌ   úM_V_A_R_.table_M_V_A_R_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getŽ  rt  rÌ   úS_T_A_T_.table_S_T_A_T_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get�  rt  rÌ   úS_V_G_.table_S_V_G_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get’  r{  rÌ   úT_S_I__0.table_T_S_I__0 | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get”  rt  rÌ   úT_S_I__1.table_T_S_I__1 | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get–  rt  rÌ   úT_S_I__2.table_T_S_I__2 | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get˜  rt  rÌ   úT_S_I__3.table_T_S_I__3 | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getš  rt  rÌ   úT_S_I__5.table_T_S_I__5 | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getœ  rt  rÌ   úT_S_I_B_.table_T_S_I_B_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getž  rt  rÌ   úT_S_I_C_.table_T_S_I_C_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get   rt  rÌ   úT_S_I_D_.table_T_S_I_D_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¢  rt  rÌ   úT_S_I_J_.table_T_S_I_J_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¤  rt  rÌ   úT_S_I_P_.table_T_S_I_P_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¦  rt  rÌ   úT_S_I_S_.table_T_S_I_S_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¨  rt  rÌ   úT_S_I_V_.table_T_S_I_V_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getª  rt  rÌ   úT_T_F_A_.table_T_T_F_A_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¬  rt  rÌ   úV_A_R_C_.table_V_A_R_C_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get®  rt  rÌ   úV_D_M_X_.table_V_D_M_X_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get°  rt  rÌ   úV_O_R_G_.table_V_O_R_G_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get²  rt  rÌ   úV_V_A_R_.table_V_V_A_R_ | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get´  rt  rÌ   úD__e_b_g.table_D__e_b_g | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¶  rt  rÌ   úF__e_a_t.table_F__e_a_t | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¸  rt  rÌ   úG__l_a_t.table_G__l_a_t | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getº  rt  rÌ   úG__l_o_c.table_G__l_o_c | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¼  rt  rÌ   úO_S_2f_2.table_O_S_2f_2 | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get¾  rt  rÌ   úS__i_l_f.table_S__i_l_f | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÀ  rt  rÌ   úS__i_l_l.table_S__i_l_l | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÂ  rt  rÌ   ú_a_n_k_r.table__a_n_k_r | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÄ  rt  rÌ   ú_a_v_a_r.table__a_v_a_r | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÆ  rt  rÌ   ú_b_s_l_n.table__b_s_l_n | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÈ  rt  rÌ   ú_b_g_c_l.table__b_g_c_l | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÊ  rt  rÌ   ú_c_i_d_g.table__c_i_d_g | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÌ  rt  rÌ   ú_c_m_a_p.table__c_m_a_p | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÎ  rt  rÌ   ú_c_v_a_r.table__c_v_a_r | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÐ  rt  rÌ   ú_c_v_t.table__c_v_t | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÒ  r{  rÌ   ú_f_e_a_t.table__f_e_a_t | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÔ  rt  rÌ   ú_f_p_g_m.table__f_p_g_m | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÖ  rt  rÌ   ú_f_v_a_r.table__f_v_a_r | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getØ  rt  rÌ   ú_g_a_s_p.table__g_a_s_p | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÚ  rt  rÌ   ú_g_c_i_d.table__g_c_i_d | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÜ  rt  rÌ   ú_g_l_y_f.table__g_l_y_f | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getÞ  rt  rÌ   ú_g_v_a_r.table__g_v_a_r | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getà  rt  rÌ   ú_h_d_m_x.table__h_d_m_x | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getâ  rt  rÌ   ú_h_e_a_d.table__h_e_a_d | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getä  rt  rÌ   ú_h_h_e_a.table__h_h_e_a | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getæ  rt  rÌ   ú_h_m_t_x.table__h_m_t_x | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getè  rt  rÌ   ú_k_e_r_n.table__k_e_r_n | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getê  rt  rÌ   ú_l_c_a_r.table__l_c_a_r | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getì  rt  rÌ   ú_l_o_c_a.table__l_o_c_a | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getî  rt  rÌ   ú_l_t_a_g.table__l_t_a_g | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getð  rt  rÌ   ú_m_a_x_p.table__m_a_x_p | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getò  rt  rÌ   ú_m_e_t_a.table__m_e_t_a | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getô  rt  rÌ   ú_m_o_r_t.table__m_o_r_t | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getö  rt  rÌ   ú_m_o_r_x.table__m_o_r_x | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getø  rt  rÌ   ú_n_a_m_e.table__n_a_m_e | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getú  rt  rÌ   ú_o_p_b_d.table__o_p_b_d | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getü  rt  rÌ   ú_p_o_s_t.table__p_o_s_t | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.getþ  rt  rÌ   ú_p_r_e_p.table__p_r_e_p | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get   rt  rÌ   ú_p_r_o_p.table__p_r_o_p | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get  rt  rÌ   ú_s_b_i_x.table__s_b_i_x | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get  rt  rÌ   ú_t_r_a_k.table__t_r_a_k | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get  rt  rÌ   ú_v_h_e_a.table__v_h_e_a | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get  rt  rÌ   ú_v_m_t_x.table__v_m_t_x | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get
  rt  rÌ   c                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get  s   € Ø=@¸SrÌ   ú&DefaultTable | GlyphOrder | Any | Nonec                ó   — d S rÈ   rÉ   rA  s     rÅ   r´   z
TTFont.get  s   € ØORÈsrÌ   Údefaultr   ú(DefaultTable | GlyphOrder | Any | _VT_coc                ó   — d S rÈ   rÉ   ©rÁ   rò   r!  s      rÅ   r´   z
TTFont.get  s	   € ð 47°3rÌ   c                ó8   — 	 | |         S # t           $ r |cY S w xY w)zGReturns the table if it exists or (optionally) a default if it doesn't.)rb  r$  s      rÅ   r´   z
TTFont.get  s5   € ð	Ø˜”9ÐøÝð 	ð 	ð 	ØˆNˆNˆNð	øøøs   ‚
 Š˜c                óœ   — || _         t          | d¦  «        r| `|                      d¦  «        r| d                              |¦  «         dS dS )zmSet the glyph order

        Args:
                glyphOrder ([str]): List of glyph names in order.
        r—   r-  N)r•   r¸   r—   rB  ÚsetGlyphOrder)rÁ   r•   s     rÅ   r'  zTTFont.setGlyphOrder  s`   € ð %ˆŒÝ�4Ð1Ñ2Ô2ð 	,ØÐ+Ø�=Š=˜Ñ Ô ð 	3Ø�ŒL×&Ò& zÑ2Ô2Ð2Ð2Ð2ð	3ð 	3rÌ   c                óÈ  — 	 | j         S # t          $ r Y nw xY wd| v r"| d         }|                     ¦   «         | _         nžd| v r†| d                              ¦   «         }|€|                      ¦   «          nit	          |¦  «        | d         j        k     r/t                               d¦  «         |                      ¦   «          n|| _         n|                      ¦   «          | j         S )zDReturns a list of glyph names ordered by their position in the font.úCFF r9  Nr8  zMNot enough names found in the 'post' table, generating them from cmap instead)r•   ÚAttributeErrorr;  Ú_getGlyphNamesFromCmaprë   Ú	numGlyphsr.  Úwarning)rÁ   Úcffr•   s      rÅ   r;  zTTFont.getGlyphOrder*  sþ   € ð	Ø”?Ð"øÝð 	ð 	ð 	ØˆDð	øøøà�Tˆ>ˆ>Ø�v”,ˆCØ!×/Ò/Ñ1Ô1ˆDŒOˆOØ�tˆ^ˆ^à˜fœ×3Ò3Ñ5Ô5ˆJØÐ!ð ×+Ò+Ñ-Ô-Ð-Ð-Ý�Z‘” 4¨¤<Ô#9Ò9Ð9õ —’Øcñô ð ð ×+Ò+Ñ-Ô-Ð-Ð-à",�”�à×'Ò'Ñ)Ô)Ð)ØŒÐs   ‚	 ‰
•c                ó8  — |                       d¦  «        r| j        d         }| j        d= nd }t          | d         j        ¦  «        }d„ t	          |¦  «        D ¦   «         }d|d<   || _        d| v r| d                              ¦   «         }ni }i }t          |¦  «        D ]W\  }}||v rN|                      ||         ¦  «        }| 	                    |d¦  «        dz   x}	||<   |	dk    r
d||	dz
  fz  }|||<   ŒXd| v r| j        d= || _        |r|| j        d<   d S d S d S )NÚcmapr8  c                ó   — g | ]}d |z  ‘ŒS ©ú	glyph%.5drÉ   )r  Úis     rÅ   r  z1TTFont._getGlyphNamesFromCmap.<locals>.<listcomp>j  s   € Ð@Ð@Ð@¨!�k A‘oÐ@Ð@Ð@rÌ   z.notdefr   r­   z%s.alt%d)
rB  r…   r¤   r,  Úranger•   ÚbuildReversedMinÚ	enumerateÚ_makeGlyphNamer´   )
rÁ   ÚcmapLoadingr,  r•   ÚreversecmapÚuseCountr4  ÚtempNameÚ	glyphNameÚnumUsess
             rÅ   r+  zTTFont._getGlyphNamesFromCmapM  sx  € ð �=Š=˜Ñ Ô ð 	ð œ+ fÔ-ˆKØ”˜FÐ#Ð#àˆKõ ˜˜VœÔ.Ñ/Ô/ˆ	Ø@Ð@­u°YÑ/?Ô/?Ð@Ñ@Ô@ˆ
Ø!ˆ
�1‰ð %ˆŒð �Tˆ>ˆ>Ø˜vœ,×7Ò7Ñ9Ô9ˆKˆKàˆKØˆÝ$ ZÑ0Ô0ð 		*ð 		*‰KˆAˆxØ˜;Ð&Ð&ð !×/Ò/°¸HÔ0EÑFÔF�	Ø08·²¸YÈÑ0JÔ0JÈQÑ0NÐN�˜( 9Ñ-Ø˜Q’;�;Ø *¨i¸À1¹Ð-EÑ E�IØ )�
˜1‘øà�Tˆ>ˆ>ð ”˜FÐ#Ø(ˆDŒOØð 2ð '2�”˜FÑ#Ð#Ð#ð ˆ>ð
2ð 2rÌ   Ú	codepointc                óZ   — ddl m} | |j        v r|j        |          S | dk    rd| z  S d| z  S )Nr   )Úagliÿÿ  zuni%04Xzu%X)r  rA  ÚUV2AGL)r?  rA  s     rÅ   r8  zTTFont._makeGlyphNameŽ  sO   € à!Ð!Ð!Ð!Ð!Ð!à˜œ
Ð"Ð"Ø”:˜iÔ(Ð(Ø˜&Ò Ð Ø˜yÑ(Ð(à˜9Ñ$Ð$rÌ   c                óH   — t          |                      ¦   «         ¦  «        }|S )z1Get a list of glyph names, sorted alphabetically.)Úsortedr;  )rÁ   Ú
glyphNamess     rÅ   ÚgetGlyphNameszTTFont.getGlyphNames™  s!   € å˜D×.Ò.Ñ0Ô0Ñ1Ô1ˆ
ØÐrÌ   c                ó\   — ddl m} |                     |                      ¦   «         ¦  «        S )zZGet a list of glyph names, sorted alphabetically,
        but not case sensitive.
        r   )Ú	textTools)r<  rH  ÚcaselessSortr;  )rÁ   rH  s     rÅ   ÚgetGlyphNames2zTTFont.getGlyphNames2ž  s6   € ð 	-Ð,Ð,Ð,Ð,Ð,à×%Ò% d×&8Ò&8Ñ&:Ô&:Ñ;Ô;Ð;rÌ   ÚglyphIDc                ób   — 	 |                       ¦   «         |         S # t          $ r d|z  cY S w xY w)zÀReturns the name for the glyph with the given ID.

        If no name is available, synthesises one with the form ``glyphXXXXX``` where
        ```XXXXX`` is the zero-padded glyph ID.
        r3  )r;  Ú
IndexError)rÁ   rK  s     rÅ   ÚgetGlyphNamezTTFont.getGlyphName¦  sJ   € ð	)Ø×%Ò%Ñ'Ô'¨Ô0Ð0øÝð 	)ð 	)ð 	)Ø Ñ(Ð(Ð(Ð(ð	)øøøs   ‚ œ.­.ÚlstúSequence[int]c                ój   ‡‡— |                       ¦   «         Št          ‰¦  «        Šˆˆfd„|D ¦   «         S )z8Converts a list of glyph IDs into a list of glyph names.c                ó6   •— g | ]}|‰k     r‰|         nd |z  ‘ŒS r2  rÉ   )r  ÚgidÚcntr•   s     €€rÅ   r  z+TTFont.getGlyphNameMany.<locals>.<listcomp>µ  s.   ø€ ÐSÐSÐSÈ 3¨¢9 9�
˜3”�°+ÀÑ2CÐSÐSÐSrÌ   )r;  rë   )rÁ   rO  rT  r•   s     @@rÅ   ÚgetGlyphNameManyzTTFont.getGlyphNameMany±  s=   øø€ à×'Ò'Ñ)Ô)ˆ
Ý�*‰oŒoˆØSÐSÐSÐSÐSÈsÐSÑSÔSÐSrÌ   r=  c                óî   — 	 |                       ¦   «         |         S # t          $ rN |dd…         dk    r>	 t          |dd…         ¦  «        cY S # t          t          f$ r t          |¦  «        ‚w xY w‚ w xY w)z0Returns the ID of the glyph with the given name.Né   Úglyph)ÚgetReverseGlyphMaprb  r¤   Ú	NameErrorÚ
ValueError)rÁ   r=  s     rÅ   Ú
getGlyphIDzTTFont.getGlyphID·  sž   € ð	Ø×*Ò*Ñ,Ô,¨YÔ7Ð7øÝð 	ð 	ð 	Ø˜˜!˜Œ} Ò'Ð'ð.Ý˜y¨¨¨œ}Ñ-Ô-Ð-Ð-Ð-øÝ!¥:Ð.ð .ð .ð .Ý" 9Ñ-Ô-Ð-ð.øøøàð	øøøs    ‚ œA4µAÁA4Á!A/Á/A4úSequence[str]ú	list[int]c                ó–   ‡‡— |                       ¦   «         Š	 ˆfd„|D ¦   «         S # t          $ r | j        Šˆfd„|D ¦   «         cY S w xY w)z8Converts a list of glyph names into a list of glyph IDs.c                ó    •— g | ]
}‰|         ‘ŒS rÉ   rÉ   )r  r=  Úds     €rÅ   r  z)TTFont.getGlyphIDMany.<locals>.<listcomp>Ç  s   ø€ Ð6Ð6Ð6 Y�A�i”LÐ6Ð6Ð6rÌ   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rÉ   rÉ   )r  r=  r\  s     €rÅ   r  z)TTFont.getGlyphIDMany.<locals>.<listcomp>Ê  s#   ø€ Ð?Ð?Ð?¨i�J�J˜yÑ)Ô)Ð?Ð?Ð?rÌ   )rY  rb  r\  )rÁ   rO  ra  r\  s     @@rÅ   ÚgetGlyphIDManyzTTFont.getGlyphIDManyÃ  s{   øø€ à×#Ò#Ñ%Ô%ˆð	@Ø6Ð6Ð6Ð6°#Ð6Ñ6Ô6Ð6øÝð 	@ð 	@ð 	@ØœˆJØ?Ð?Ð?Ð?¸3Ð?Ñ?Ô?Ð?Ð?Ð?ð	@øøøs   ˜& ¦AÁAÚrebuildc                ó\   — |st          | d¦  «        s|                      ¦   «          | j        S )z.Returns a mapping of glyph names to glyph IDs.r—   )r¸   Ú_buildReverseGlyphOrderDictr—   )rÁ   rd  s     rÅ   rY  zTTFont.getReverseGlyphMapÌ  s7   € àð 	/�' $Ð(@ÑAÔAð 	/Ø×,Ò,Ñ.Ô.Ð.ØÔ*Ð*rÌ   c                óp   — i x| _         }t          |                      ¦   «         ¦  «        D ]
\  }}|||<   Œ|S rÈ   )r—   r7  r;  )rÁ   ra  rK  r=  s       rÅ   rf  z"TTFont._buildReverseGlyphOrderDictÒ  sG   € Ø*,Ð,ˆÔ# aÝ"+¨D×,>Ò,>Ñ,@Ô,@Ñ"AÔ"Að 	#ð 	#ÑˆG�YØ"ˆAˆi‰LˆLØˆrÌ   r   rñ   úlist[str | bytes]c                ó6  — ||v rdS t          |¦  «        }|j        D ]8}||vr2|| v r|                      ||||¦  «         Œ#|                     |¦  «         Œ9|                     |¦  «         |                      |¦  «        }|�Y|                     t          |¦  «        |f¦  «        }|�3t                               d|¦  «         | 	                    ||¦  «         dS t                               d|¦  «         |||<   |�||         |t          |¦  «        |f<   dS dS )zcInternal helper function for self.save(). Keeps track of
        inter-table dependencies.
        Nzreusing '%s' tablezWriting '%s' table to disk)
rg  Údependenciesrì   rG  ÚgetTableDatar´   r   r.  rf  ÚsetEntry)	rÁ   rò   rð   rñ   ræ   rm  ÚmasterTableÚ	tabledataÚentrys	            rÅ   rì   zTTFont._writeTableØ  s=  € ð �$ˆ;ˆ;ØˆFÝ" 3Ñ'Ô'ˆ
Ø%Ô2ð 	-ð 	-ˆKØ $Ð&Ð&Ø $Ð&Ð&Ø×$Ò$ [°&¸$À
ÑKÔKÐKÐKà—K’K Ñ,Ô,Ð,øØ�Š�CÑÔÐØ×%Ò% cÑ*Ô*ˆ	ØÐ!Ø—N’N¥C¨¡H¤H¨iÐ#8Ñ9Ô9ˆEØÐ Ý—	’	Ð.°Ñ4Ô4Ð4Ø—’  UÑ+Ô+Ð+Ø�Ý�	Š	Ð.°Ñ4Ô4Ð4Øˆˆs‰ØÐ!Ø06°s´ˆJ�˜C™œ )Ð,Ñ-Ð-Ð-ð "Ð!rÌ   Úbytesc                óN  — t          |¦  «        }|                      |¦  «        r;t                               d|¦  «         | j        |                              | ¦  «        S | j        r1|| j        v r(t                               d|¦  «         | j        |         S t          |¦  «        ‚)a  Returns the binary representation of a table.

        If the table is currently loaded and in memory, the data is compiled to
        binary and returned; if it is not currently loaded, the binary data is
        read from the font file and returned.
        zCompiling '%s' tablere  )r   rB  r.  rf  r…   Úcompiler†   rb  rA  s     rÅ   rk  zTTFont.getTableDataø  s—   € õ �#‰hŒhˆØ�=Š=˜ÑÔð 	 Ý�IŠIÐ,¨cÑ2Ô2Ð2Ø”;˜sÔ#×+Ò+¨DÑ1Ô1Ð1ØŒ[ð 	 ˜S D¤KÐ/Ð/Ý�IŠIÐ4°cÑ:Ô:Ð:Ø”;˜sÔ#Ð#å˜3‘-”-ÐrÌ   Ú	preferCFFÚlocationúMapping[str, _NumberT] | NoneÚ
normalizedÚrecalcBoundsr   c                ó   — |rd| vrd}|r|s|                       |¦  «        }d}d| v sd| v r|sd| vrt          | |¦  «        }n&d| v rt          | ||¬¦  «        }nt          d¦  «        ‚d| v rt	          | ||¦  «        }|S )	ab  Return a generic GlyphSet, which is a dict-like object
        mapping glyph names to glyph objects. The returned glyph objects
        have a ``.draw()`` method that supports the Pen protocol, and will
        have an attribute named 'width'.

        If the font is CFF-based, the outlines will be taken from the ``CFF ``
        or ``CFF2`` tables. Otherwise the outlines will be taken from the
        ``glyf`` table.

        If the font contains both a ``CFF ``/``CFF2`` and a ``glyf`` table, you
        can use the ``preferCFF`` argument to specify which one should be taken.
        If the font contains both a ``CFF `` and a ``CFF2`` table, the latter is
        taken.

        If the ``location`` parameter is set, it should be a dictionary mapping
        four-letter variation tags to their float values, and the returned
        glyph-set will represent an instance of a variable font at that
        location.

        If the ``normalized`` variable is set to True, that location is
        interpreted as in the normalized (-1..+1) space, otherwise it is in the
        font's defined axes space.
        ÚfvarNr)  ÚCFF2r-  )rw  zFont contains no outlinesÚVARC)ÚnormalizeLocationr   r   r   r   )rÁ   rs  rt  rv  rw  ÚglyphSets         rÅ   ÚgetGlyphSetzTTFont.getGlyphSet	  s¿   € ð< ð 	˜ dÐ*Ð*ØˆHØð 	8˜Jð 	8Ø×-Ò-¨hÑ7Ô7ˆHØˆØ�dˆNˆN˜f¨˜n˜n°9˜nÀÈdÐ@RÐ@RÝ% d¨HÑ5Ô5ˆHˆHØ�tˆ^ˆ^Ý& t¨XÀLÐQÑQÔQˆHˆHåÐ8Ñ9Ô9Ð9Ø�Tˆ>ˆ>Ý& t¨X°xÑ@Ô@ˆHØˆrÌ   úMapping[str, float]údict[str, float]c                óÄ   — ddl m} d| vrt          d¦  «        ‚| d                              ¦   «         } |||¦  «        }d| v r| d                              || ¦  «        }|S )a—  Normalize a ``location`` from the font's defined axes space (also
        known as user space) into the normalized (-1..+1) space. It applies
        ``avar`` mapping if the font contains an ``avar`` table.

        The ``location`` parameter should be a dictionary mapping four-letter
        variation tags to their float values.

        Raises ``TTLibError`` if the font is not a variable font.
        r   )r|  ry  zNot a variable fontÚavar)ÚfontTools.varLib.modelsr|  r   ÚgetAxesÚrenormalizeLocation)rÁ   rt  r|  Úaxess       rÅ   r|  zTTFont.normalizeLocation6  s~   € ð 	>Ð=Ð=Ð=Ð=Ð=à˜ÐÐÝÐ2Ñ3Ô3Ð3à�FŒ|×#Ò#Ñ%Ô%ˆØ$Ð$ X¨tÑ4Ô4ˆØ�Tˆ>ˆ>Ø˜F”|×7Ò7¸À$ÑGÔGˆHØˆrÌ   ©)é   é
   )r   é   )r   é   )rˆ  r­   )r   rˆ  )r   r  )r   r­   )r   r   ÚcmapPreferencesúSequence[tuple[int, int]]údict[int, str] | Nonec                ó:   — | d                               |¬¦  «        S )a(  Returns the 'best' Unicode cmap dictionary available in the font
        or ``None``, if no Unicode cmap subtable is available.

        By default it will search for the following (platformID, platEncID)
        pairs in order::

                        (3, 10), # Windows Unicode full repertoire
                        (0, 6),  # Unicode full repertoire (format 13 subtable)
                        (0, 4),  # Unicode 2.0 full repertoire
                        (3, 1),  # Windows Unicode BMP
                        (0, 3),  # Unicode 2.0 BMP
                        (0, 2),  # Unicode ISO/IEC 10646
                        (0, 1),  # Unicode 1.1
                        (0, 0)   # Unicode 1.0

        This particular order matches what HarfBuzz uses to choose what
        subtable to use by default. This order prefers the largest-repertoire
        subtable, and among those, prefers the Windows-platform over the
        Unicode-platform as the former has wider support.

        This order can be customized via the ``cmapPreferences`` argument.
        r0  )rŒ  )ÚgetBestCmap)rÁ   rŒ  s     rÅ   r�  zTTFont.getBestCmapK  s    € ðF �FŒ|×'Ò'¸Ð'ÑHÔHÐHrÌ   Únew_glyph_orderc                ó*   — ddl m }  || |¦  «         d S )Nr­   ©ÚreorderGlyphsr“  )rÁ   r‘  r”  s      rÅ   r”  zTTFont.reorderGlyphsp  s,   € Ø0Ð0Ð0Ð0Ð0Ð0àˆ�d˜OÑ,Ô,Ð,Ð,Ð,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Ï   rÐ   rÑ   rÒ   r¨   r©   )r¨   r©   )T)rŸ   rÖ   r×   r�   r¨   r©   rÈ   )rŸ   r   ræ   rç   r¨   r�   )r   )r  r  r  r‡   r  r  r¨   r©   )TNNNFFTr  )rð   r  rõ   r�   r�   r�   r…   rö   rø   r÷   rù   r�   rú   r�   rš   r�   r›   r‡   r¨   r©   ©NF)
rð   r  rò   r*  r�   r�   rú   r�   r¨   r©   )r  rÖ   r�   r�   r¨   r©   )rò   r*  r¨   r�   )r¨   r”   )rK  r�   r¨   r©   )r¨   r¤   )rò   rP  r¨   rQ  )rò   rU  r¨   rV  )rò   rX  r¨   rY  )rò   r[  r¨   r\  )rò   r_  r¨   r`  )rò   rb  r¨   rc  )rò   re  r¨   rf  )rò   rh  r¨   ri  )rò   rk  r¨   rl  )rò   rn  r¨   ro  )rò   rq  r¨   rr  )rò   rt  r¨   ru  )rò   rw  r¨   rx  )rò   rz  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–  )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³  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Ï  )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ì  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  )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%  r¨   r&  )rò   r(  r¨   r)  )rò   r+  r¨   r,  )rò   r.  r¨   r/  )rò   r1  r¨   r2  )rò   r4  r¨   r5  )rò   r7  r¨   r8  )rò   r:  r¨   r;  )rò   r=  r¨   r>  )rò   r@  r¨   rA  )rò   rC  r¨   rD  )rò   rF  r¨   rG  )rò   rI  r¨   rJ  )rò   rL  r¨   rM  )rò   rO  r¨   rP  )rò   rR  r¨   rS  )rò   rU  r¨   rV  )rò   rX  r¨   rY  )rò   r[  r¨   rD  )rò   r*  r¨   r]  )rò   r   r¨   r~   )rò   r*  r3  r~   r¨   r©   ©rò   r*  r¨   r©   )rò   rP  r¨   rr  )rò   rU  r¨   ru  )rò   rX  r¨   rw  )rò   r[  r¨   ry  )rò   r_  r¨   r|  )rò   rb  r¨   r~  )rò   re  r¨   r€  )rò   rh  r¨   r‚  )rò   rk  r¨   r„  )rò   rn  r¨   r†  )rò   rq  r¨   rˆ  )rò   rt  r¨   rŠ  )rò   rw  r¨   rŒ  )rò   rz  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   )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³  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Æ  )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ì  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ì  )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.  r¨   r   )rò   r1  r¨   r  )rò   r4  r¨   r  )rò   r7  r¨   r  )rò   r:  r¨   r  )rò   r=  r¨   r
  )rò   r@  r¨   r  )rò   rC  r¨   r  )rò   rF  r¨   r  )rò   rI  r¨   r  )rò   rL  r¨   r  )rò   rO  r¨   r  )rò   rR  r¨   r  )rò   rU  r¨   r  )rò   rX  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‡   )rK  r¤   r¨   r‡   )rO  rP  r¨   r”   )r=  r‡   r¨   r¤   )rO  r]  r¨   r^  )F)rd  r�   r¨   r–   )r¨   r–   )
rò   r*  rð   r   rñ   rh  ræ   r˜   r¨   r©   )rò   r*  r¨   rp  )TNFT)
rs  r�   rt  ru  rv  r�   rw  r�   r¨   r   )rt  r  r¨   r€  )r‡  )rŒ  r�  r¨   rŽ  )r‘  r”   r¨   r©   )1rû   rü   rý   Ú__doc__rþ   ÚNotImplementedrÆ   rË   rÔ   rÀ   rå   rÛ   r   rÿ   r
  r	  r%  r>  rB  rE  Ú__contains__rÝ   rM  rO  r
   rS  ra  ro  rq  r´   r'  r;  r+  Ústaticmethodr8  rF  rJ  rN  rU  r\  rc  rY  rf  rì   rk  r~  r|  r�  r”  rÉ   rÌ   rÅ   r„   r„   ƒ   sj  € € € € € € ðQð Qðf 1Ð0Ð0Ñ0ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ*Ð*Ð*Ñ*ØGÐGÐGÑGØ!Ð!Ð!Ñ!ØÐÐÑàÐÐÑØÐÐÑð :>Ø.2Ø-Ø!ØØ#Ø!Ø&Ø&+Ø $ØØ Ø!ØNRØ24ð!\1ñ \1ð \1ð \1ð \1ñ|ð ð ð ñð ð ð ñð ð ð ð UYñ7ñ 7ð 7ð 7ð 7ðx EIñ'ñ 'ð 'ð 'ð 'ð6#ð #ð #ð #ð #˜9ñ #ô #ð #ð ññ ð ð ð ð* "Ø!Ø/3Ø+/Ø!Ø!Ø(,Ø%*ñBñ Bð Bð Bð BðP "Ø!ñ!ñ !ð !ð !ð !ðH SWññ ð ð ð ñ*"ð "ð "ð "ñ
ð ð ð ð €Lñ%ð %ð %ð %ññ ð ð ð ñ&ð &ð &ð &ð ÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙKÐKÐKñ „XØKØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙKÐKÐKñ „XØKØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙKÐKÐKñ „XØKØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÐOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙKÑKÐKñ „XØKØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙOÑOÐOñ „XØOØÙHÑHÐHñ „XØHØÙMÑMÐMñ „XØMññ ð ð ññ ð ð ñB&ñ &ð &ð &ñ!ñ !ð !ð !ð ÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙJÑJÐJñ „XØJØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙJÑJÐJñ „XØJØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙJÑJÐJñ „XØJØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙJÑJÐJñ „XØJØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙNÑNÐNñ „XØNØÙ@Ñ@Ð@ñ „XØ@ØÙRÑRÐRñ „XØRØñ7ñ 7ð 7ñ „Xð7ð
 7;ññ ñ ð ð ñ
3ñ 
3ð 
3ð 
3ñ!ñ !ð !ð !ñF?2ñ ?2ð ?2ð ?2ðB ñ%ñ %ð %ñ „\ð%ññ ð ð ñ
<ñ <ð <ð <ñ	)ñ 	)ð 	)ð 	)ñTñ Tð Tð Tñ
ñ 
ð 
ð 
ñ@ñ @ð @ð @ñ+ñ +ñ +ð +ð +ññ ð ð ð NRñ<ñ <ñ <ð <ð <ñ@ ñ  ð  ð  ð& Ø26Ø Ø!ñ+ñ +ñ +ð +ð +ñZñ ð ð ð.	6
ñ#Iñ #Iñ #Ið #Ið #IñJ-ñ -ð -ð -ð -ð -rÌ   r„   c                  ó,   — e Zd ZdZddd„Zdd„Zdd„ZdS )rD  z†A pseudo table. The glyph order isn't in the font as a separate
    table, but it's nice to present it as such in the TTX format.
    Nrò   r‰   r¨   r©   c                ó   — d S rÈ   rÉ   rA  s     rÅ   rÆ   zGlyphOrder.__init__{  s   € ØˆrÌ   rð   r  r  r„   c                ó  — |                      ¦   «         }|                     d¦  «         |                     ¦   «          t          |¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2d S )NzAThe 'id' attribute is only for humans; it is ignored when parsed.ÚGlyphID)Úidr²   )r;  Úcommentr  r7  r"  )rÁ   rð   r  r•   r4  r=  s         rÅ   r2  zGlyphOrder.toXML~  s‘   € Ø×)Ò)Ñ+Ô+ˆ
Ø�ŠØOñ	
ô 	
ð 	
ð 	�ŠÑÔÐÝ% jÑ1Ô1ð 	ð 	‰LˆAˆyØ×Ò˜Y¨1°9ÐÑ=Ô=Ð=Ø�NŠNÑÔÐÐð	ð 	rÌ   r²   r‡   r6  údict[str, str]Úcontentú	list[Any]c                ó´   — t          | d¦  «        sg | _        |dk    r | j                             |d         ¦  «         |                     | j        ¦  «         d S )Nr•   rž  r²   )r¸   r•   rG  r'  )rÁ   r²   r6  r¢  r  s        rÅ   ÚfromXMLzGlyphOrder.fromXMLˆ  s^   € õ �t˜\Ñ*Ô*ð 	!Ø ˆDŒOØ�9ÒÐØŒO×"Ò" 5¨¤=Ñ1Ô1Ð1Ø×Ò˜Tœ_Ñ-Ô-Ð-Ð-Ð-rÌ   rÈ   )rò   r‰   r¨   r©   )rð   r  r  r„   r¨   r©   )
r²   r‡   r6  r¡  r¢  r£  r  r„   r¨   r©   )rû   rü   rý   r—  rÆ   r2  r¥  rÉ   rÌ   rÅ   rD  rD  v  s_   € € € € € ðð ðð ð ð ð ðð ð ð ð.ð .ð .ð .ð .ð .rÌ   rD  rò   r*  r¨   úModuleType | Nonec                óò   — ddl m} t          | ¦  «        }	 t          d|z   ¦  «         t	          ||¦  «        S # t
          $ r3}t          |¦  «                             |¦  «        dk    rY d}~dS |‚d}~ww xY w)z[Fetch the packer/unpacker module for a table.
    Return None when no module is found.
    r­   r@  zfontTools.ttLib.tables.r   N)r¼   r…   r!  Ú
__import__ÚgetattrÚImportErrorr‡   Úfind)rò   r…   ÚpyTagÚerrs       rÅ   ÚgetTableModuler®  ’  s    € ð ÐÐÐÐÐå˜CÑ Ô €Eð&ÝÐ,¨uÑ4Ñ5Ô5Ð5õ �v˜uÑ%Ô%Ð%øõ ð ð ð õ
 ˆs‰8Œ8�=Š=˜ÑÔ 1Ò$Ð$Ø�4�4�4�4�4àˆIøøøøðøøøs   —9 ¹
A6Á&A1Á/A1Á1A6z"dict[str | bytes, tuple[str, str]]Ú_customTableRegistryÚ
moduleNamer‡   Ú	classNamer‰   r©   c                óF   — |€dt          | ¦  «        z   }||ft          | <   dS )ab  Register a custom packer/unpacker class for a table.

    The 'moduleName' must be an importable module. If no 'className'
    is given, it is derived from the tag, for example it will be
    ``table_C_U_S_T_`` for a 'CUST' tag.

    The registered table class should be a subclass of
    :py:class:`fontTools.ttLib.tables.DefaultTable.DefaultTable`
    NÚtable_)r!  r¯  )rò   r°  r±  s      rÅ   ÚregisterCustomTableClassr´  ®  s2   € ð ÐØ�¨sÑ3Ô3Ñ3ˆ	Ø!+¨YÐ 7Õ˜ÑÐÐrÌ   c                ó   — t           | = dS )z8Unregister the custom packer/unpacker class for a table.N)r¯  ©rò   s    rÅ   ÚunregisterCustomTableClassr·  ¿  s   € å˜SÐ!Ð!Ð!rÌ   útype[DefaultTable] | Nonec                óŠ   — | t           vrdS ddl}t           |          \  }}|                     |¦  «        }t          ||¦  «        S )zReturn the custom table class for tag, if one has been registered
    with 'registerCustomTableClass()'. Else return None.
    Nr   )r¯  Ú	importlibÚimport_moduler©  )rò   rº  r°  r±  Úmodules        rÅ   ÚgetCustomTableClassr½  Ä  sS   € ð Õ&Ð&Ð&ØˆtØÐÐÐå0°Ô5Ñ€J�	Ø×$Ò$ ZÑ0Ô0€FÝ�6˜9Ñ%Ô%Ð%rÌ   útype[DefaultTable]c                ó¢   — t          | ¦  «        }|�|S t          | ¦  «        }|€ddlm} |S t	          | ¦  «        }t          |d|z   ¦  «        }|S )z,Fetch the packer/unpacker class for a table.Nr­   r}   r³  )r½  r®  r0  r~   r!  r©  )rò   rm  r¼  r~   r¬  s        rÅ   rg  rg  Ñ  sl   € å$ SÑ)Ô)€JØÐØÐÝ˜CÑ Ô €FØ€~Ø5Ð5Ð5Ð5Ð5Ð5àÐÝ˜CÑ Ô €EÝ˜ ¨EÑ!1Ñ2Ô2€JØÐrÌ   Úklassc                ób   — | j         }|dd…         dk    sJ ‚|dd…         }t          |¦  «        S )z'Fetch the table tag for a class object.NrŠ  r³  )rû   ÚidentifierToTag)rÀ  r²   s     rÅ   ÚgetClassTagrÃ  à  s=   € àŒ>€DØ���Œ8�xÒÐÐÐØ���Œ8€DÝ˜4Ñ Ô Ð rÌ   r~   c                ó6   — t          | ¦  «        } || ¦  «        S )z!Return a new instance of a table.)rg  )rò   rm  s     rÅ   ÚnewTablerÅ  è  s   € å˜sÑ#Ô#€JØˆ:�c‰?Œ?ÐrÌ   Úcc                ó¾   — ddl }|                     d| ¦  «        rd| z   S |                     d| ¦  «        r| dz   S t          t          | ¦  «        ¦  «        dd…         S )z%Helper function for tagToIdentifier()r   Nz[a-z0-9]Ú_z[A-Z]r  )ÚreÚmatchÚhexr   )rÆ  rÉ  s     rÅ   Ú_escapecharrÌ  î  sd   € à€I€I€Ià	‡x‚x�
˜AÑÔð #Ø�Q‰wˆØ	�Š�'˜1Ñ	Ô	ð #Ø�3‰wˆå•7˜1‘:”:‰Œ˜q˜r˜rÔ"Ð"rÌ   c                ón  — ddl }t          | ¦  «        } | dk    r| S t          | ¦  «        dk    s
J d¦   «         ‚t          | ¦  «        dk    r5| d         dk    r)| dd…         } t          | ¦  «        dk    r| d         dk    °)d	}| D ]}|t          |¦  «        z   }Œ|                     d
|¦  «        rd|z   }|S )aÐ  Convert a table tag to a valid (but UGLY) python identifier,
    as well as a filename that's guaranteed to be unique even on a
    caseless file system. Each character is mapped to two characters.
    Lowercase letters get an underscore before the letter, uppercase
    letters get an underscore after the letter. Trailing spaces are
    trimmed. Illegal characters are escaped as two hex bytes. If the
    result starts with a number (as the result of a hex escape), an
    extra underscore is prepended. Examples:
    .. code-block:: pycon

        >>>
        >> tagToIdentifier('glyf')
        '_g_l_y_f'
        >> tagToIdentifier('cvt ')
        '_c_v_t'
        >> tagToIdentifier('OS/2')
        'O_S_2f_2'
    r   NrD  r‹  ztag should be 4 characters longr­   rž   ú r¼   z[0-9]rÈ  )rÉ  r   rë   rÌ  rÊ  )rò   rÉ  ÚidentrÆ  s       rÅ   r!  r!  ú  sÑ   € ð& €I€I€Iå
ˆc‰(Œ(€CØ
ˆlÒÐØˆ
Ýˆs‰8Œ8�qŠ=ˆ=ˆ=Ð;‰=Œ=ˆ=Ý
ˆc‰(Œ(�QŠ,ˆ,˜3˜rœ7 cš>˜>Ø�#�2�#Œhˆõ ˆc‰(Œ(�QŠ,ˆ,˜3˜rœ7 cš>˜>à€EØð 'ð 'ˆØ� A™œÑ&ˆˆØ	‡x‚x�˜ÑÔð Ø�e‘ˆØ€LrÌ   rÏ  c           
     óà  — | dk    r| S t          | ¦  «        dz  r| d         dk    r
| dd…         } t          | ¦  «        dz  rJ ‚d}t          dt          | ¦  «        d¦  «        D ]c}| |         dk    r|| |dz            z   }Œ| |dz            dk    r|| |         z   }Œ8|t          t          | ||dz   …         d¦  «        ¦  «        z   }Œd|d	t          |¦  «        z
  d
z  z   }t	          |¦  «        S )z!the opposite of tagToIdentifier()rD  r  r   rÈ  r­   Nr¼   é   r‹  rÎ  )rë   r5  Úchrr¤   r   )rÏ  rò   r4  s      rÅ   rÂ  rÂ    s  € à�ÒÐØˆÝ
ˆ5�z„z�A�~ð ˜% œ( cš/˜/Ø�a�b�b”	ˆÝ�E‘
”
˜Q‘ÐÐÐØ
€CÝ�1•c˜%‘j”j !Ñ$Ô$ð 7ð 7ˆØ�Œ8�sŠ?ˆ?Ø˜˜a !™eœÑ$ˆCˆCØ�1�q‘5Œ\˜SÒ Ð Ø˜˜aœ‘.ˆCˆCð ��C  a¨!¨a©% iÔ 0°"Ñ5Ô5Ñ6Ô6Ñ6ˆCˆCà
�•S˜‘X”X‘ Ñ$Ñ
$€CÝˆs‰8Œ8€OrÌ   c                óº   — ddl }t          | ¦  «        } | dk    rdS | dk    r| S |                     d| ¦  «        r|                      ¦   «         S t	          | ¦  «        S )zºSimilarly to tagToIdentifier(), this converts a TT tag
    to a valid XML element name. Since XML element names are
    case sensitive, this is a fairly simple/readable translation.
    r   NúOS/2ÚOS_2rD  z[A-Za-z_][A-Za-z_0-9]* *$)rÉ  r   rÊ  Ústripr!  )rò   rÉ  s     rÅ   r#  r#  2  si   € ð
 €I€I€Iå
ˆc‰(Œ(€CØ
ˆf‚}€}ØˆvØ	�Ò	Ð	Øˆ
Ø	‡x‚xÐ+¨SÑ1Ô1ð $Ø�yŠy‰{Œ{Ðå˜sÑ#Ô#Ð#rÌ   c                óº   — | dk    rt          d¦  «        S t          | ¦  «        dk    rt          | ¦  «        S t          | ddt          | ¦  «        z
  z  z   ¦  «        S )zThe opposite of tagToXML()rÕ  rÔ  é   rÎ  r‹  )r   rë   rÂ  r¶  s    rÅ   ÚxmlToTagrÙ  D  sV   € à
ˆf‚}€}Ý�6‰{Œ{ÐÝ
ˆ3�x„x�1‚}€}Ý˜sÑ#Ô#Ð#å�3˜ ¥C¨¡H¤H¡Ñ-Ñ-Ñ.Ô.Ð.rÌ   )ré   Úhhear8  rÔ  ÚhmtxÚLTSHÚVDMXÚhdmxr0  ÚfpgmÚprepzcvt Úlocar-  Úkernr²   r9  ÚgaspÚPCLT)ré   rÚ  r8  rÔ  r²   r0  r9  r)  ÚtagListr]  rã   r÷   r”   c                ó>  — t          | ¦  «        } |€Ad| v r*|                      d¦  «         |                      d¦  «         d| v rt          }nt          }g }|D ]0}|| v r*|                     |¦  «         |                      |¦  «         Œ1|                     | ¦  «         |S )zÅReturn a sorted copy of tagList, sorted according to the OpenType
    specification, or according to a custom tableOrder. If given and not
    None, tableOrder needs to be a list of tag names.
    NÚDSIGr)  )rD  rH  rG  ÚOTFTableOrderÚTTFTableOrderÚextend)rå  rã   ÚorderedTablesrò   s       rÅ   rI  rI  h  s¹   € õ �W‰oŒo€GØÐØ�WÐÐà�NŠN˜6Ñ"Ô"Ð"Ø�NŠN˜6Ñ"Ô"Ð"Ø�WÐÐÝ&ˆJˆJå&ˆJØ€MØð  ð  ˆØ�'ˆ>ˆ>Ø× Ò  Ñ%Ô%Ð%Ø�NŠN˜3ÑÔÐøØ×Ò˜Ñ!Ô!Ð!ØÐrÌ   FÚinFiler   ÚoutFiler£   r�   c                óŠ  — |                       d¦  «         |                      d¦  «         t          | |¬¦  «        }t          |t          |j        ¦  «        |j        |j        |j        ¦  «        }t          | 	                    ¦   «         ¦  «        }t          ||¦  «        D ]}||         ||<   Œ|                     ¦   «          dS )zcRewrite a font file, ordering the tables as recommended by the
    OpenType specification 1.4.
    r   )r£   N)r±   r   r   rë   r…   rˆ   rŠ   rŒ   rÜ   rÝ   rI  rÀ   )rì  rí  rã   r£   r†   rð   r…   rò   s           rÅ   rß   rß   ‚  s´   € ð ‡K‚K��N„N€NØ‡L‚L��O„O€OÝ˜¨~Ð>Ñ>Ô>€FÝØÝˆFŒMÑÔØÔØŒØÔñô €Fõ �&—+’+‘-”-Ñ Ô €FÝ˜V ZÑ0Ô0ð "ð "ˆØ˜S”kˆˆs‰ˆØ
‡L‚L�N„N€N€N€NrÌ   Úxr¤   c                óH   — d}| r| dz	  } |dz   }| °t          |dz
  d¦  «        S )z_Return the highest exponent of two, so that
    (2 ** exponent) <= x.  Return 0 if x is 0.
    r   r­   )Úmax)rï  Úexponents     rÅ   ÚmaxPowerOfTworó  ›  sC   € ð €HØ
ð  Ø�‰FˆØ˜a‘<ˆð ð  õ ˆx˜!‰|˜QÑÔÐrÌ   rÑ  ÚnÚitemSizeútuple[int, int, int]c                ój   — t          | ¦  «        }d|z  |z  }|}t          d| |z  |z
  ¦  «        }|||fS )z1Calculate searchRange, entrySelector, rangeShift.r  r   )ró  rñ  )rô  rõ  rò  ÚsearchRangeÚentrySelectorÚ
rangeShifts         rÅ   ÚgetSearchRangerû  ¦  sI   € õ ˜QÑÔ€HØ�h‘; (Ñ*€KØ€MÝ�Q˜˜H™ {Ñ2Ñ3Ô3€JØ˜ zÐ1Ð1rÌ   )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‡   )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ö  )«Ú
__future__r   Úloggingr¹   rÑ   Úior   r   r   Útypingr   r   r	   r
   ÚfontTools.configr   r<  r   ÚfontTools.misc.configToolsr   ÚfontTools.misc.loggingToolsr   ÚfontTools.misc.textToolsr   r   r   ÚfontTools.ttLibr   ÚfontTools.ttLib.sfntr   r   ÚfontTools.ttLib.ttGlyphSetr   r   r   r   r   Úcollections.abcr   r   Útypesr   r   r   r   r    r!   r"   Útyping_extensionsr#   r$   ÚfontTools.ttLib.tablesr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   Ú#fontTools.ttLib.tables.DefaultTabler~   r   Ú	getLoggerrû   r.  Úfloatr�   Úobjectr„   rD  r®  r¯  rþ   r´  r·  r½  rg  rÃ  rÅ  rÌ  r!  rÂ  r#  rÙ  ré  rè  rI  rß   ró  rû  rÉ   rÌ   rÅ   ú<module>r     s\  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð c/Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?à.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ðYð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yð Yðt AÐ@Ð@Ð@Ð@Ð@àˆW�X¨Ð.Ñ.Ô.€Fà€gÔ˜Ñ!Ô!€ð ˆ7�: UÐ+Ñ+Ô+€ðp-ð p-ð p-ð p-ð p-ˆVñ p-ô p-ð p-ðf'.ð .ð .ð .ð .�ñ .ô .ð .ð8&ð &ð &ð &ð2 <>Ð Ð =Ð =Ð =Ñ =ð @Dð8ð 8ð 8ð 8ð 8ð""ð "ð "ð "ð

&ð 
&ð 
&ð 
&ðð ð ð ð!ð !ð !ð !ðð ð ð ð	#ð 	#ð 	#ð 	#ð ð  ð  ð  ðFð ð ð ð*$ð $ð $ð $ð$/ð /ð /ð /ðð ð €ð, QÐPÐP€ð @Dðð ð ð ð ð: (,Ø ð	ð ð ð ð ð2 ð  ð  ð  ð2ð 2ð 2ð 2ð 2ð 2ð 2rÌ   