§
    ¢”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‡ 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)TÚ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_Ú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_g_c_lÚ_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�dBd0„Z�dCd2„Z�dDd9„Z�dEd:„Z		 �dF�dGd=„Z
	 �dH�dIdA„Z G dB„ dCe¦  «        Z	 �dJ�dKdJ„Z	 	 	 	 	 	 	 	 �dL�dMdT„Z	 	 �dN�dOdW„Z	 �dH�dPdX„Z�dQdY„Z�dQdZ„ZeZ�dRd[„Z�dH�dSd]„Z�dTd^„Ze�dUda„¦   «         Ze�dVdd„¦   «         Ze�dWdg„¦   «         Ze�dXdj„¦   «         Ze�dYdm„¦   «         Ze�dZdp„¦   «         Ze�d[ds„¦   «         Ze�d\dv„¦   «         Ze�d]dy„¦   «         Ze�d^d|„¦   «         Ze�d_d„¦   «         Ze�d`d‚„¦   «         Ze�dad…„¦   «         Ze�dbdˆ„¦   «         Ze�dcd‹„¦   «         Ze�dddŽ„¦   «         Ze�ded‘„¦   «         Ze�dfd”„¦   «         Ze�dgd—„¦   «         Ze�dhdš„¦   «         Ze�did�„¦   «         Ze�djd „¦   «         Ze�dkd£„¦   «         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š�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�dª�d`„Z�d«�dc„Z�d¬�de„Z�d­�df„Ze�d®�dh„¦   «         Ze�d¯�dj„¦   «         Ze�d°�dl„¦   «         Ze�d±�dn„¦   «         Ze�d²�dp„¦   «         Ze�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	 �dH�d�d„Z�d�d„Z�dR�d„Z�dE�d„Z e!�d�d„¦   «         Z"�dR�d„Z#�dR�d„Z$�d�d„Z%�d�d"„Z&�d	�d$„Z'�d
�d'„Z(�d�d�d)„Z)�d�d*„Z*	 �dH�d�d.„Z+�d�d0„Z,	 	 	 	 �d�d�d7„Z-�d�d:„Z.	 �d�d�d?„Z/�d�dA„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                         úe/var/www/finuniver-perm.ru/html/portfolio/venv/lib/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__D  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__G  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.closeO  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.saveU  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©   ry   Tr  Úglyfr  )r   ÚlogÚinfor  r´   Útables.DefaultTablerz   Ú	__class__r  r  ÚtoXMLr"  )
r½   rì   rî   r™   rö   ÚtableÚreportÚxmlTagÚattrsrz   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.miscr6  Ú	XMLReaderr¨   )r½   rý   r™   r6  r‚   s        rÁ   Ú	importXMLzTTFont.importXML,  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.isLoadedA  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)r>  r‚   r=  s     rÁ   Úhas_keyzTTFont.has_keyF  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.r@  )rØ   r�   rÙ   r‚   ÚappendÚremoveÚsortedTagList)r½   rÙ   Úkeys      rÁ   rÙ   zTTFont.keysV  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)rG  )rÙ   rŠ   r´   rI  )r½   rG  rî   r/  s       rÁ   rI  zTTFont.ensureDecompiledc  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__m  s    € Ý•4˜Ÿ	š	™œÑ$Ô$Ñ%Ô%Ð%rÈ   úLiteral['BASE']úB_A_S_E_.table_B_A_S_E_c                ó   — d S rÄ   rÅ   r=  s     rÁ   Ú__getitem__zTTFont.__getitem__p  ó   € ØLOÈCrÈ   úLiteral['CBDT']úC_B_D_T_.table_C_B_D_T_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__r  rP  rÈ   úLiteral['CBLC']úC_B_L_C_.table_C_B_L_C_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__t  rP  rÈ   úLiteral['CFF ']úC_F_F_.table_C_F_F_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__v  ó   € ØHKÈrÈ   úLiteral['CFF2']úC_F_F__2.table_C_F_F__2c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__x  rP  rÈ   úLiteral['COLR']úC_O_L_R_.table_C_O_L_R_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__z  rP  rÈ   úLiteral['CPAL']úC_P_A_L_.table_C_P_A_L_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__|  rP  rÈ   úLiteral['DSIG']úD_S_I_G_.table_D_S_I_G_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__~  rP  rÈ   úLiteral['EBDT']úE_B_D_T_.table_E_B_D_T_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__€  rP  rÈ   úLiteral['EBLC']úE_B_L_C_.table_E_B_L_C_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__‚  rP  rÈ   úLiteral['FFTM']úF_F_T_M_.table_F_F_T_M_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__„  rP  rÈ   úLiteral['GDEF']úG_D_E_F_.table_G_D_E_F_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__†  rP  rÈ   úLiteral['GPOS']úG_P_O_S_.table_G_P_O_S_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ˆ  rP  rÈ   úLiteral['GSUB']úG_S_U_B_.table_G_S_U_B_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Š  rP  rÈ   úLiteral['GVAR']úG_V_A_R_.table_G_V_A_R_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Œ  rP  rÈ   úLiteral['HVAR']úH_V_A_R_.table_H_V_A_R_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ž  rP  rÈ   úLiteral['IFT ']úI_F_T_.table_I_F_T_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__�  rZ  rÈ   úLiteral['IFTX']úI_F_T_X_.table_I_F_T_X_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__’  rP  rÈ   úLiteral['JSTF']úJ_S_T_F_.table_J_S_T_F_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__”  rP  rÈ   úLiteral['LTSH']úL_T_S_H_.table_L_T_S_H_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__–  rP  rÈ   úLiteral['MATH']úM_A_T_H_.table_M_A_T_H_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__˜  rP  rÈ   úLiteral['MVAR']úM_V_A_R_.table_M_V_A_R_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__š  rP  rÈ   úLiteral['STAT']úS_T_A_T_.table_S_T_A_T_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__œ  rP  rÈ   úLiteral['SVG ']úS_V_G_.table_S_V_G_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ž  rZ  rÈ   úLiteral['TSI0']úT_S_I__0.table_T_S_I__0c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__   rP  rÈ   úLiteral['TSI1']úT_S_I__1.table_T_S_I__1c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¢  rP  rÈ   úLiteral['TSI2']úT_S_I__2.table_T_S_I__2c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¤  rP  rÈ   úLiteral['TSI3']úT_S_I__3.table_T_S_I__3c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¦  rP  rÈ   úLiteral['TSI5']úT_S_I__5.table_T_S_I__5c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¨  rP  rÈ   úLiteral['TSIB']úT_S_I_B_.table_T_S_I_B_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ª  rP  rÈ   úLiteral['TSIC']úT_S_I_C_.table_T_S_I_C_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¬  rP  rÈ   úLiteral['TSID']úT_S_I_D_.table_T_S_I_D_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__®  rP  rÈ   úLiteral['TSIJ']úT_S_I_J_.table_T_S_I_J_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__°  rP  rÈ   úLiteral['TSIP']úT_S_I_P_.table_T_S_I_P_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__²  rP  rÈ   úLiteral['TSIS']úT_S_I_S_.table_T_S_I_S_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__´  rP  rÈ   úLiteral['TSIV']úT_S_I_V_.table_T_S_I_V_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¶  rP  rÈ   úLiteral['TTFA']úT_T_F_A_.table_T_T_F_A_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¸  rP  rÈ   úLiteral['VARC']úV_A_R_C_.table_V_A_R_C_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__º  rP  rÈ   úLiteral['VDMX']úV_D_M_X_.table_V_D_M_X_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¼  rP  rÈ   úLiteral['VORG']úV_O_R_G_.table_V_O_R_G_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__¾  rP  rÈ   úLiteral['VVAR']úV_V_A_R_.table_V_V_A_R_c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__À  rP  rÈ   úLiteral['Debg']úD__e_b_g.table_D__e_b_gc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Â  rP  rÈ   úLiteral['Feat']úF__e_a_t.table_F__e_a_tc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ä  rP  rÈ   úLiteral['Glat']úG__l_a_t.table_G__l_a_tc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Æ  rP  rÈ   úLiteral['Gloc']úG__l_o_c.table_G__l_o_cc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__È  rP  rÈ   úLiteral['OS/2']úO_S_2f_2.table_O_S_2f_2c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ê  rP  rÈ   úLiteral['Silf']úS__i_l_f.table_S__i_l_fc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ì  rP  rÈ   úLiteral['Sill']úS__i_l_l.table_S__i_l_lc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Î  rP  rÈ   úLiteral['ankr']ú_a_n_k_r.table__a_n_k_rc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ð  rP  rÈ   úLiteral['avar']ú_a_v_a_r.table__a_v_a_rc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ò  rP  rÈ   úLiteral['bsln']ú_b_s_l_n.table__b_s_l_nc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ô  rP  rÈ   úLiteral['bgcl']ú_b_g_c_l.table__b_g_c_lc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ö  rP  rÈ   úLiteral['cidg']ú_c_i_d_g.table__c_i_d_gc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ø  rP  rÈ   úLiteral['cmap']ú_c_m_a_p.table__c_m_a_pc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ú  rP  rÈ   úLiteral['cvar']ú_c_v_a_r.table__c_v_a_rc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Ü  rP  rÈ   úLiteral['cvt ']ú_c_v_t.table__c_v_tc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__Þ  rZ  rÈ   úLiteral['feat']ú_f_e_a_t.table__f_e_a_tc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__à  rP  rÈ   úLiteral['fpgm']ú_f_p_g_m.table__f_p_g_mc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__â  rP  rÈ   úLiteral['fvar']ú_f_v_a_r.table__f_v_a_rc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ä  rP  rÈ   úLiteral['gasp']ú_g_a_s_p.table__g_a_s_pc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__æ  rP  rÈ   úLiteral['gcid']ú_g_c_i_d.table__g_c_i_dc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__è  rP  rÈ   úLiteral['glyf']ú_g_l_y_f.table__g_l_y_fc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ê  rP  rÈ   úLiteral['gvar']ú_g_v_a_r.table__g_v_a_rc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ì  rP  rÈ   úLiteral['hdmx']ú_h_d_m_x.table__h_d_m_xc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__î  rP  rÈ   úLiteral['head']ú_h_e_a_d.table__h_e_a_dc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ð  rP  rÈ   úLiteral['hhea']ú_h_h_e_a.table__h_h_e_ac                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ò  rP  rÈ   úLiteral['hmtx']ú_h_m_t_x.table__h_m_t_xc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ô  rP  rÈ   úLiteral['kern']ú_k_e_r_n.table__k_e_r_nc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ö  rP  rÈ   úLiteral['lcar']ú_l_c_a_r.table__l_c_a_rc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ø  rP  rÈ   úLiteral['loca']ú_l_o_c_a.table__l_o_c_ac                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ú  rP  rÈ   úLiteral['ltag']ú_l_t_a_g.table__l_t_a_gc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__ü  rP  rÈ   úLiteral['maxp']ú_m_a_x_p.table__m_a_x_pc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__þ  rP  rÈ   úLiteral['meta']ú_m_e_t_a.table__m_e_t_ac                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__   rP  rÈ   úLiteral['mort']ú_m_o_r_t.table__m_o_r_tc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['morx']ú_m_o_r_x.table__m_o_r_xc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['name']ú_n_a_m_e.table__n_a_m_ec                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['opbd']ú_o_p_b_d.table__o_p_b_dc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['post']ú_p_o_s_t.table__p_o_s_tc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__
  rP  rÈ   úLiteral['prep']ú_p_r_e_p.table__p_r_e_pc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['prop']ú_p_r_o_p.table__p_r_o_pc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['sbix']ú_s_b_i_x.table__s_b_i_xc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['trak']ú_t_r_a_k.table__t_r_a_kc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['vhea']ú_v_h_e_a.table__v_h_e_ac                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['vmtx']ú_v_m_t_x.table__v_m_t_xc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  rP  rÈ   úLiteral['GlyphOrder']r@  c                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  s   € ØEHÀSrÈ   úDefaultTable | GlyphOrderc                ó   — d S rÄ   rÅ   r=  s     rÁ   rO  zTTFont.__getitem__  s   € ØJMÈ#rÈ   c                óú   — t          |¦  «        }| j                             |¦  «        }|€O|dk    rt          |¦  «        }|| j        |<   n/| j        �|                      |¦  «        }nt          d|z  ¦  «        ‚|S )Nr@  ú'%s' table not found)r   r�   r°   r@  r‚   Ú
_readTableÚKeyError©r½   rî   r/  s      rÁ   rO  zTTFont.__getitem__  s~   € Ý�#‰hŒhˆØ”—’ Ñ$Ô$ˆØˆ=Ø�lÒ"Ð"Ý" 3™œ�Ø#(�”˜CÑ Ð Ø”Ð(ØŸš¨Ñ,Ô,��åÐ5¸Ñ;Ñ<Ô<Ð<ØˆrÈ   r   rz   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©   ry   )r›   )r*  Údebugr‚   r•   r°   ÚgetTableClassr�   Ú	decompileÚ	ExceptionrŽ   Ú	exceptionr,  rz   r   rÍ   Ú	print_excrÜ   r(  )r½   rî   Údatar/  Ú
tableClassrz   r›   s          rÁ   rQ  zTTFont._readTable*  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r/  c                ó4   — || j         t          |¦  «        <   d S rÄ   )r�   r   rS  s      rÁ   Ú__setitem__zTTFont.__setitem__K  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 )NrP  )rR  r�   r‚   r=  s     rÁ   Ú__delitem__zTTFont.__delitem__N  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Å   r=  s     rÁ   r°   z
TTFont.getV  ó   € ØKNÈ3rÈ   úC_B_D_T_.table_C_B_D_T_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getX  rd  rÈ   úC_B_L_C_.table_C_B_L_C_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getZ  rd  rÈ   úC_F_F_.table_C_F_F_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get\  ó   € ØGJÀsrÈ   úC_F_F__2.table_C_F_F__2 | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get^  rd  rÈ   úC_O_L_R_.table_C_O_L_R_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get`  rd  rÈ   úC_P_A_L_.table_C_P_A_L_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getb  rd  rÈ   úD_S_I_G_.table_D_S_I_G_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getd  rd  rÈ   úE_B_D_T_.table_E_B_D_T_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getf  rd  rÈ   úE_B_L_C_.table_E_B_L_C_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.geth  rd  rÈ   úF_F_T_M_.table_F_F_T_M_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getj  rd  rÈ   úG_D_E_F_.table_G_D_E_F_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getl  rd  rÈ   úG_P_O_S_.table_G_P_O_S_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getn  rd  rÈ   úG_S_U_B_.table_G_S_U_B_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getp  rd  rÈ   úG_V_A_R_.table_G_V_A_R_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getr  rd  rÈ   úH_V_A_R_.table_H_V_A_R_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.gett  rd  rÈ   úI_F_T_.table_I_F_T_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getv  rk  rÈ   úI_F_T_X_.table_I_F_T_X_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getx  rd  rÈ   úJ_S_T_F_.table_J_S_T_F_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getz  rd  rÈ   úL_T_S_H_.table_L_T_S_H_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get|  rd  rÈ   úM_A_T_H_.table_M_A_T_H_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get~  rd  rÈ   úM_V_A_R_.table_M_V_A_R_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get€  rd  rÈ   úS_T_A_T_.table_S_T_A_T_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get‚  rd  rÈ   úS_V_G_.table_S_V_G_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get„  rk  rÈ   úT_S_I__0.table_T_S_I__0 | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get†  rd  rÈ   úT_S_I__1.table_T_S_I__1 | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getˆ  rd  rÈ   úT_S_I__2.table_T_S_I__2 | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getŠ  rd  rÈ   úT_S_I__3.table_T_S_I__3 | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getŒ  rd  rÈ   úT_S_I__5.table_T_S_I__5 | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getŽ  rd  rÈ   úT_S_I_B_.table_T_S_I_B_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get�  rd  rÈ   úT_S_I_C_.table_T_S_I_C_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get’  rd  rÈ   úT_S_I_D_.table_T_S_I_D_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get”  rd  rÈ   úT_S_I_J_.table_T_S_I_J_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get–  rd  rÈ   úT_S_I_P_.table_T_S_I_P_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get˜  rd  rÈ   úT_S_I_S_.table_T_S_I_S_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getš  rd  rÈ   úT_S_I_V_.table_T_S_I_V_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getœ  rd  rÈ   úT_T_F_A_.table_T_T_F_A_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getž  rd  rÈ   úV_A_R_C_.table_V_A_R_C_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get   rd  rÈ   úV_D_M_X_.table_V_D_M_X_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¢  rd  rÈ   úV_O_R_G_.table_V_O_R_G_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¤  rd  rÈ   úV_V_A_R_.table_V_V_A_R_ | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¦  rd  rÈ   úD__e_b_g.table_D__e_b_g | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¨  rd  rÈ   úF__e_a_t.table_F__e_a_t | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getª  rd  rÈ   úG__l_a_t.table_G__l_a_t | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¬  rd  rÈ   úG__l_o_c.table_G__l_o_c | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get®  rd  rÈ   úO_S_2f_2.table_O_S_2f_2 | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get°  rd  rÈ   úS__i_l_f.table_S__i_l_f | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get²  rd  rÈ   úS__i_l_l.table_S__i_l_l | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get´  rd  rÈ   ú_a_n_k_r.table__a_n_k_r | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¶  rd  rÈ   ú_a_v_a_r.table__a_v_a_r | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¸  rd  rÈ   ú_b_s_l_n.table__b_s_l_n | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getº  rd  rÈ   ú_b_g_c_l.table__b_g_c_l | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¼  rd  rÈ   ú_c_i_d_g.table__c_i_d_g | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.get¾  rd  rÈ   ú_c_m_a_p.table__c_m_a_p | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÀ  rd  rÈ   ú_c_v_a_r.table__c_v_a_r | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÂ  rd  rÈ   ú_c_v_t.table__c_v_t | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÄ  rk  rÈ   ú_f_e_a_t.table__f_e_a_t | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÆ  rd  rÈ   ú_f_p_g_m.table__f_p_g_m | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÈ  rd  rÈ   ú_f_v_a_r.table__f_v_a_r | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÊ  rd  rÈ   ú_g_a_s_p.table__g_a_s_p | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÌ  rd  rÈ   ú_g_c_i_d.table__g_c_i_d | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÎ  rd  rÈ   ú_g_l_y_f.table__g_l_y_f | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÐ  rd  rÈ   ú_g_v_a_r.table__g_v_a_r | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÒ  rd  rÈ   ú_h_d_m_x.table__h_d_m_x | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÔ  rd  rÈ   ú_h_e_a_d.table__h_e_a_d | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÖ  rd  rÈ   ú_h_h_e_a.table__h_h_e_a | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getØ  rd  rÈ   ú_h_m_t_x.table__h_m_t_x | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÚ  rd  rÈ   ú_k_e_r_n.table__k_e_r_n | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÜ  rd  rÈ   ú_l_c_a_r.table__l_c_a_r | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getÞ  rd  rÈ   ú_l_o_c_a.table__l_o_c_a | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getà  rd  rÈ   ú_l_t_a_g.table__l_t_a_g | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getâ  rd  rÈ   ú_m_a_x_p.table__m_a_x_p | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getä  rd  rÈ   ú_m_e_t_a.table__m_e_t_a | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getæ  rd  rÈ   ú_m_o_r_t.table__m_o_r_t | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getè  rd  rÈ   ú_m_o_r_x.table__m_o_r_x | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getê  rd  rÈ   ú_n_a_m_e.table__n_a_m_e | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getì  rd  rÈ   ú_o_p_b_d.table__o_p_b_d | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getî  rd  rÈ   ú_p_o_s_t.table__p_o_s_t | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getð  rd  rÈ   ú_p_r_e_p.table__p_r_e_p | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getò  rd  rÈ   ú_p_r_o_p.table__p_r_o_p | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getô  rd  rÈ   ú_s_b_i_x.table__s_b_i_x | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getö  rd  rÈ   ú_t_r_a_k.table__t_r_a_k | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getø  rd  rÈ   ú_v_h_e_a.table__v_h_e_a | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getú  rd  rÈ   ú_v_m_t_x.table__v_m_t_x | Nonec                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getü  rd  rÈ   c                ó   — d S rÄ   rÅ   r=  s     rÁ   r°   z
TTFont.getþ  s   € Ø=@¸SrÈ   ú&DefaultTable | GlyphOrder | Any | Nonec                ó   — d S rÄ   rÅ   r=  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.)rR  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“   r>  Ú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 r5  Nr4  zMNot enough names found in the 'post' table, generating them from cmap instead)r‘   ÚAttributeErrorr7  Ú_getGlyphNamesFromCmaprç   Ú	numGlyphsr*  Úwarning)r½   Úcffr‘   s      rÁ   r7  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Úcmapr4  c                ó   — g | ]}d |z  ‘ŒS ©ú	glyph%.5drÅ   )r  Úis     rÁ   r  z1TTFont._getGlyphNamesFromCmap.<locals>.<listcomp>\  s   € Ð@Ð@Ð@¨!�k A‘oÐ@Ð@Ð@rÈ   z.notdefr   r©   z%s.alt%d)
r>  r�   r    r  Úranger‘   ÚbuildReversedMinÚ	enumerateÚ_makeGlyphNamer°   )
r½   ÚcmapLoadingr  r‘   ÚreversecmapÚuseCountr"  ÚtempNameÚ	glyphNameÚnumUsess
             rÁ   r  zTTFont._getGlyphNamesFromCmap?  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  r/  ÚUV2AGL)r-  r/  s     rÁ   r&  zTTFont._makeGlyphName€  sO   € à!Ð!Ð!Ð!Ð!Ð!à˜œ
Ð"Ð"Ø”:˜iÔ(Ð(Ø˜&Ò Ð Ø˜yÑ(Ð(à˜9Ñ$Ð$rÈ   c                óH   — t          |                      ¦   «         ¦  «        }|S )z1Get a list of glyph names, sorted alphabetically.)Úsortedr7  )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)r8  r6  ÚcaselessSortr7  )r½   r6  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.
        r!  )r7  Ú
IndexError)r½   r9  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 r   rÅ   )r  ÚgidÚcntr‘   s     €€rÁ   r  z+TTFont.getGlyphNameMany.<locals>.<listcomp>§  s.   ø€ ÐSÐSÐSÈ 3¨¢9 9�
˜3”�°+ÀÑ2CÐSÐSÐSrÈ   )r7  rç   )r½   r=  rB  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)ÚgetReverseGlyphMaprR  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+  rJ  s     €rÁ   r  z)TTFont.getGlyphIDMany.<locals>.<listcomp>¼  s#   ø€ Ð?Ð?Ð?¨i�J�J˜yÑ)Ô)Ð?Ð?Ð?rÈ   )rG  rR  rJ  )r½   r=  rO  rJ  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½   rR  s     rÁ   rG  zTTFont.getReverseGlyphMap¾  s7   € àð 	/�' $Ð(@ÑAÔAð 	/Ø×,Ò,Ñ.Ô.Ð.ØÔ*Ð*rÈ   c                óp   — i x| _         }t          |                      ¦   «         ¦  «        D ]
\  }}|||<   Œ|S rÄ   )r“   r%  r7  )r½   rO  r9  r+  s       rÁ   rT  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)
rW  Údependenciesrè   rC  ÚgetTableDatar°   r   r*  rV  ÚsetEntry)	r½   rî   rì   rí   râ   r]  Ú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' tablerU  )r   r>  r*  rV  r�   Úcompiler‚   rR  r=  s     rÁ   rY  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)  )re  zFont contains no outlinesÚVARC)ÚnormalizeLocationr   r   r   r   )r½   ra  rb  rd  re  Ú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   )rj  rg  zNot a variable fontÚavar)ÚfontTools.varLib.modelsrj  r   ÚgetAxesÚrenormalizeLocation)r½   rb  rj  Úaxess       rÁ   rj  zTTFont.normalizeLocation(  s~   € ð 	>Ð=Ð=Ð=Ð=Ð=à˜ÐÐÝÐ2Ñ3Ô3Ð3à�FŒ|×#Ò#Ñ%Ô%ˆØ$Ð$ X¨tÑ4Ô4ˆØ�Tˆ>ˆ>Ø˜F”|×7Ò7¸À$ÑGÔGˆHØˆrÈ   ©)é   é
   )r   é   )r   é   )rv  r©   )r   rv  )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.
        r  )rz  )ÚgetBestCmap)r½   rz  s     rÁ   r~  zTTFont.getBestCmap=  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.reorderGlyphsb  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�   )rG  r‰   r¤   r¥   )r¤   r    )rî   rL  r¤   rM  )rî   rQ  r¤   rR  )rî   rT  r¤   rU  )rî   rW  r¤   rX  )rî   r[  r¤   r\  )rî   r^  r¤   r_  )rî   ra  r¤   rb  )rî   rd  r¤   re  )rî   rg  r¤   rh  )rî   rj  r¤   rk  )rî   rm  r¤   rn  )rî   rp  r¤   rq  )rî   rs  r¤   rt  )rî   rv  r¤   rw  )rî   ry  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î   r0  r¤   r1  )rî   r3  r¤   r4  )rî   r6  r¤   r7  )rî   r9  r¤   r:  )rî   r<  r¤   r=  )rî   r?  r¤   r@  )rî   rB  r¤   rC  )rî   rE  r¤   rF  )rî   rH  r¤   rI  )rî   rK  r¤   r@  )rî   r&  r¤   rM  )rî   r   r¤   rz   )rî   r&  r/  rz   r¤   r¥   ©rî   r&  r¤   r¥   )rî   rL  r¤   rb  )rî   rQ  r¤   re  )rî   rT  r¤   rg  )rî   rW  r¤   ri  )rî   r[  r¤   rl  )rî   r^  r¤   rn  )rî   ra  r¤   rp  )rî   rd  r¤   rr  )rî   rg  r¤   rt  )rî   rj  r¤   rv  )rî   rm  r¤   rx  )rî   rp  r¤   rz  )rî   rs  r¤   r|  )rî   rv  r¤   r~  )rî   ry  r¤   r€  )rî   r|  r¤   r‚  )rî   r  r¤   r„  )rî   r‚  r¤   r†  )rî   r…  r¤   rˆ  )rî   rˆ  r¤   rŠ  )rî   r‹  r¤   rŒ  )rî   rŽ  r¤   rŽ  )rî   r‘  r¤   r�  )rî   r”  r¤   r’  )rî   r—  r¤   r”  )rî   rš  r¤   r–  )rî   r�  r¤   r˜  )rî   r   r¤   rš  )rî   r£  r¤   rœ  )rî   r¦  r¤   rž  )rî   r©  r¤   r   )rî   r¬  r¤   r¢  )rî   r¯  r¤   r¤  )rî   r²  r¤   r¦  )rî   rµ  r¤   r¨  )rî   r¸  r¤   rª  )rî   r»  r¤   r¬  )rî   r¾  r¤   r®  )rî   rÁ  r¤   r°  )rî   rÄ  r¤   r²  )rî   rÇ  r¤   r´  )rî   rÊ  r¤   r¶  )rî   rÍ  r¤   r¸  )rî   rÐ  r¤   rº  )rî   rÓ  r¤   r¼  )rî   rÖ  r¤   r¾  )rî   rÙ  r¤   rÀ  )rî   rÜ  r¤   rÂ  )rî   rß  r¤   rÄ  )rî   râ  r¤   rÆ  )rî   rå  r¤   rÈ  )rî   rè  r¤   rÊ  )rî   rë  r¤   rÌ  )rî   rî  r¤   rÎ  )rî   rñ  r¤   rÐ  )rî   rô  r¤   rÒ  )rî   r÷  r¤   rÔ  )rî   rú  r¤   rÖ  )rî   rý  r¤   rØ  )rî   r   r¤   rÚ  )rî   r  r¤   rÜ  )rî   r  r¤   rÞ  )rî   r	  r¤   rà  )rî   r  r¤   râ  )rî   r  r¤   rä  )rî   r  r¤   ræ  )rî   r  r¤   rè  )rî   r  r¤   rê  )rî   r  r¤   rì  )rî   r  r¤   rî  )rî   r!  r¤   rð  )rî   r$  r¤   rò  )rî   r'  r¤   rô  )rî   r*  r¤   rö  )rî   r-  r¤   rø  )rî   r0  r¤   rú  )rî   r3  r¤   rü  )rî   r6  r¤   rþ  )rî   r9  r¤   r   )rî   r<  r¤   r  )rî   r?  r¤   r  )rî   rB  r¤   r  )rî   rE  r¤   r  )rî   rH  r¤   r
  )rî   r&  r¤   r  )rî   r&  r  r{   r¤   r  )rî   r&  r  r‡   r¤   r  )r‘   r�   r¤   r¥   )r-  r    r¤   rƒ   )r9  r    r¤   rƒ   )r=  r>  r¤   r�   )r+  rƒ   r¤   r    )r=  rK  r¤   rL  )F)rR  r‹   r¤   r’   )r¤   r’   )
rî   r&  rì   r   rí   rV  râ   r”   r¤   r¥   )rî   r&  r¤   r^  )TNFT)
ra  r‹   rb  rc  rd  r‹   re  r‹   r¤   r   )rb  rm  r¤   rn  )ru  )rz  r{  r¤   r|  )r  r�   r¤   r¥   )1r÷   rø   rù   Ú__doc__rú   ÚNotImplementedrÂ   rÇ   rÐ   r¼   rá   r×   r   rû   r  r  r!  r:  r>  rA  Ú__contains__rÙ   rI  rK  r
   rO  rQ  r_  ra  r°   r  r7  r  Ústaticmethodr&  r4  r8  r<  rC  rJ  rQ  rG  rT  rè   rY  rl  rj  r~  r‚  rÅ   rÈ   rÁ   r€   r€      sü  € € € € € € ð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ØÙ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ØÙ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ØÙ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 )r@  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Å   r=  s     rÁ   rÂ   zGlyphOrder.__init__m  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®   )r7  Úcommentr  r%  r  )r½   rì   r  r‘   r"  r+  s         rÁ   r.  zGlyphOrder.toXMLp  s‘   € Ø×)Ò)Ñ+Ô+ˆ
Ø�ŠØOñ	
ô 	
ð 	
ð 	�ŠÑÔÐÝ% jÑ1Ô1ð 	ð 	‰LˆAˆyØ×Ò˜Y¨1°9ÐÑ=Ô=Ð=Ø�NŠNÑÔÐÐð	ð 	rÈ   r®   rƒ   r2  údict[str, str]Úcontentú	list[Any]c                ó´   — t          | d¦  «        sg | _        |dk    r | j                             |d         ¦  «         |                     | j        ¦  «         d S )Nr‘   rŒ  r®   )r´   r‘   rC  r  )r½   r®   r2  r�  r  s        rÁ   ÚfromXMLzGlyphOrder.fromXMLz  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ƒ   r2  r�  r�  r‘  r  r€   r¤   r¥   )r÷   rø   rù   r…  rÂ   r.  r“  rÅ   rÈ   rÁ   r@  r@  h  s_   € € € € € ðð ðð ð ð ð ðð ð ð ð.ð .ð .ð .ð .ð .rÈ   r@  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©   ry   r¡  )r«  rœ  r,  rz   r  r—  )rî   r]  rª  rz   rš  s        rÁ   rW  rW  Ã  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.Nrx  r¡  )r÷   ÚidentifierToTag)r®  r®   s     rÁ   ÚgetClassTagr±  Ò  s=   € àŒ>€DØ���Œ8�xÒÐÐÐØ���Œ8€DÝ˜4Ñ Ô Ð rÈ   rz   c                ó6   — t          | ¦  «        } || ¦  «        S )z!Return a new instance of a table.)rW  )rî   r]  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   Nr@  ry  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()r@  r  r   r¶  r©   Nr¸   é   ry  r¼  )rç   r#  Úchrr    r   )r½  rî   r"  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_2r@  z[A-Za-z_][A-Za-z_0-9]* *$)r·  r   r¸  Ústripr  )rî   r·  s     rÁ   r  r  $  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¼  ry  )r   rç   r°  r¤  s    rÁ   ÚxmlToTagrÇ  6  sV   € à
ˆf‚}€}Ý�6‰{Œ{ÐÝ
ˆ3�x„x�1‚}€}Ý˜sÑ#Ô#Ð#å�3˜ ¥C¨¡H¤H¡Ñ-Ñ-Ñ.Ô.Ð.rÈ   )rå   Úhhear4  rÂ  ÚhmtxÚLTSHÚVDMXÚhdmxr  ÚfpgmÚprepzcvt Úlocar)  Úkernr®   r5  ÚgaspÚPCLT)rå   rÈ  r4  rÂ  r®   r  r5  r  ÚtagListrK  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  )r2  rD  rC  ÚOTFTableOrderÚTTFTableOrderÚextend)rÓ  rß   ÚorderedTablesrî   s       rÁ   rE  rE  Z  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Ù   rE  r¼   )rÚ  rÛ  rß   rŸ   r‚   rì   r�   rî   s           rÁ   rÛ   rÛ   t  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¤   rz   )r´  rƒ   r¤   rƒ   )rî   r&  r¤   rƒ   )r½  rƒ   r¤   rƒ   )rî   rƒ   r¤   rƒ   )rÓ  rK  rß   ró   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   r8  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   Ú#fontTools.ttLib.tables.DefaultTablerz   r{   Ú	getLoggerr÷   r*  Úfloatr}   Úobjectr€   r@  rœ  r�  rú   r¢  r¥  r«  rW  r±  r³  rº  r  r°  r  rÇ  r×  rÖ  rE  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ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð _/Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?à.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ðUð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uðl AÐ@Ð@Ð@Ð@Ð@àˆW�X¨Ð.Ñ.Ô.€Fà€gÔ˜Ñ!Ô!€ð ˆ7�: UÐ+Ñ+Ô+€ðf-ð f-ð f-ð f-ð f-ˆVñ f-ô f-ð f-ðR'.ð .ð .ð .ð .�ñ .ô .ð .ð8&ð &ð &ð &ð2 <>Ð Ð =Ð =Ð =Ñ =ð @Dð8ð 8ð 8ð 8ð 8ð""ð "ð "ð "ð

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