§
    ¢”j@   ã                   ón  — d dl mZ d dlZ d dlmZmZmZ d dlmZm	Z	 d dl
mZ d dlZ d dlmZ d dlmZ d dlZd dlZ ej        d¦  «        Z e ej        ed	z   ¦  «        ej        ¬
¦  «        Z G d„ de¦  «        Zg d¢Z ed¦  «        dd„¦   «         Zedk    r ej         e¦   «         ¦  «         dS dS )é    )ÚttLibN)ÚcomputeMegaGlyphOrderÚcomputeMegaCmapÚrenameCFFCharStrings)ÚlayoutPreMergeÚlayoutPostMerge)ÚOptions)ÚTimer)ÚreducezfontTools.mergez.timer)ÚloggerÚlevelc                   ó8   — e Zd ZdZd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )
ÚMergeraž  Font merger.

    This class merges multiple files into a single OpenType font, taking into
    account complexities such as OpenType layout (``GSUB``/``GPOS``) tables and
    cross-font metrics (for example ``hhea.ascent`` is set to the maximum value
    across all the fonts).

    If multiple glyphs map to the same Unicode value, and the glyphs are considered
    sufficiently different (that is, they differ in any of paths, widths, or
    height), then subsequent glyphs are renamed and a lookup in the ``locl``
    feature will be created to disambiguate them. For example, if the arguments
    are an Arabic font and a Latin font and both contain a set of parentheses,
    the Latin glyphs will be renamed to ``parenleft.1`` and ``parenright.1``,
    and a lookup will be inserted into the to ``locl`` feature (creating it if
    necessary) under the ``latn`` script to substitute ``parenleft`` with
    ``parenleft.1`` etc.

    Restrictions:

    - All fonts must have the same units per em.
    - If duplicate glyph disambiguation takes place as described above then the
      fonts must have a ``GSUB`` table.

    Attributes:
            options: Currently unused.
    Nc                 ó4   — |st          ¦   «         }|| _        d S ©N)r	   Úoptions)Úselfr   s     úg/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/merge/__init__.pyÚ__init__zMerger.__init__5   s   € Øð 	 Ý‘i”iˆGàˆŒˆˆó    c                 ó˜   — d„ |D ¦   «         }t          ||¦  «        D ],\  }}||_        |d                              d¦  «        |_        Œ-|S )Nc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS © )r   ÚTTFont)Ú.0Úfontfiles     r   ú
<listcomp>z%Merger._openFonts.<locals>.<listcomp><   s"   € ÐBÐBÐB¨H•”˜hÑ'Ô'ÐBÐBÐBr   Únameé   )ÚzipÚ_merger__fontfileÚgetDebugNameÚ_merger__name)r   Ú	fontfilesÚfontsÚfontr   s        r   Ú
_openFontszMerger._openFonts;   s\   € ØBÐB¸	ÐBÑBÔBˆÝ! %¨Ñ3Ô3ð 	>ð 	>‰NˆD�(Ø%-ˆDÔ"Ø!% f¤×!:Ò!:¸1Ñ!=Ô!=ˆDÔÐØˆr   c                 óÒ  ‡— |                       |¦  «        }d„ |D ¦   «         }t          | |¦  «         |d         j        }|                       |¦  «        }t          ||¦  «        D ]5\  }}|                     |¦  «         d|v rt          | ||d         ¦  «         Œ6d„ |D ¦   «         }d„ |D ¦   «         | _        t          | |¦  «         t          j	        |¬¦  «        }|                     | j
        ¦  «         |D ]}|                      |¦  «         Œ|| _        t          t          j        d„ |D ¦   «         t          ¦   «         ¦  «        }	|	                     d¦  «         t#          |	¦  «        D ]àŠ‰| j        j        v rŒt)          d	‰z  ¦  «        5  ˆfd
„|D ¦   «         }
t*                               d‰¦  «         t          j        ‰¦  «        } |‰¦  «                             | |
¦  «        }|t2          ur%|dur!||‰<   t*                               d‰¦  «         nt*                               d‰¦  «         ddd¦  «         n# 1 swxY w Y   Œá| `| `|                      |¦  «         |S )a  Merges fonts together.

        Args:
                fontfiles: A list of file names to be merged

        Returns:
                A :class:`fontTools.ttLib.TTFont` object. Call the ``save`` method on
                this to write it out to an OTF file.
        c                 óP   — g | ]#}t          |                     ¦   «         ¦  «        ‘Œ$S r   )ÚlistÚgetGlyphOrder©r   r&   s     r   r   z Merger.merge.<locals>.<listcomp>P   s,   € ÐDÐDÐD°d•t˜D×.Ò.Ñ0Ô0Ñ1Ô1ÐDÐDÐDr   r   zCFF c                 ó   — g | ]
}|d          ‘ŒS )Úcmapr   r,   s     r   r   z Merger.merge.<locals>.<listcomp>]   s   € Ð0Ð0Ð0 $��f”Ð0Ð0Ð0r   c                 ó   — g | ]}i ‘ŒS r   r   )r   Ú_s     r   r   z Merger.merge.<locals>.<listcomp>^   s   € Ð&9Ð&9Ð&9¨a rÐ&9Ð&9Ð&9r   )ÚsfntVersionc              3   óX   K  — | ]%}t          |                     ¦   «         ¦  «        V — Œ&d S r   )r*   Úkeysr,   s     r   ú	<genexpr>zMerger.merge.<locals>.<genexpr>i   s2   è è € Ð$IÐ$I¸4¥T¨$¯)ª)©+¬+Ñ%6Ô%6Ð$IÐ$IÐ$IÐ$IÐ$IÐ$Ir   Ú
GlyphOrderz
merge '%s'c                 óF   •— g | ]}|                      ‰t          ¦  «        ‘ŒS r   )ÚgetÚNotImplemented)r   r&   Útags     €r   r   z Merger.merge.<locals>.<listcomp>q   s'   ø€ ÐJÐJÐJ¸D˜$Ÿ(š( 3­Ñ7Ô7ÐJÐJÐJr   zMerging '%s'.FzMerged '%s'.zDropped '%s'.N)r'   r   r1   r    ÚsetGlyphOrderr   ÚduplicateGlyphsPerFontr   r   r   Ú
glyphOrderÚ	_preMerger%   r   ÚsetÚunionÚremoveÚsortedr   Údrop_tablesÚtimerÚlogÚinfoÚgetTableClassÚmerger8   Ú
_postMerge)r   r$   r%   ÚglyphOrdersr1   r&   r<   ÚcmapsÚmegaÚallTagsÚtablesÚclazzÚtabler9   s                @r   rG   zMerger.mergeB   sÌ  ø€ ð —’ 	Ñ*Ô*ˆØDÐD¸eÐDÑDÔDˆÝ˜d KÑ0Ô0Ð0ð ˜A”hÔ*ˆð —’ 	Ñ*Ô*ˆÝ # E¨;Ñ 7Ô 7ð 	Eð 	EÑˆD�*Ø×Ò˜zÑ*Ô*Ð*Ø˜ˆ~ˆ~Ý$ T¨:°t¸F´|ÑDÔDÐDøà0Ð0¨%Ð0Ñ0Ô0ˆØ&9Ð&9°5Ð&9Ñ&9Ô&9ˆÔ#Ý˜˜eÑ$Ô$Ð$åŒ|¨Ð4Ñ4Ô4ˆØ×Ò˜4œ?Ñ+Ô+Ð+àð 	!ð 	!ˆDØ�NŠN˜4Ñ Ô Ð Ð àˆŒ
å�œÐ$IÐ$IÀ5Ð$IÑ$IÔ$IÍ3É5Ì5ÑQÔQˆØ�Š�|Ñ$Ô$Ð$å˜'‘?”?ð 	3ð 	3ˆCØ�d”lÔ.Ð.Ð.Øå�| cÑ)Ñ*Ô*ð 3ð 3ØJÐJÐJÐJÀEÐJÑJÔJ�å—’˜¨#Ñ.Ô.Ð.ÝÔ+¨CÑ0Ô0�Ø˜˜c™
œ
×(Ò(¨¨vÑ6Ô6�ð ¥Ð.Ð.°5ÀÐ3EÐ3EØ %�D˜‘IÝ—H’H˜^¨SÑ1Ô1Ð1Ð1å—H’H˜_¨cÑ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3øð Ð'ØˆJà�Š˜ÑÔÐàˆs   ÆB&IÉI	É	I	c           	      ó°  ‡— t          j        t          ¦   «         gd„ |D ¦   «         ¢R Ž }|D ]©Št                               d‰¦  «         	 |‰         }nG# t          $ r: 	 |d         }n-# t          $ r  t          d‰›d|j        j        ›�¦  «        ‚w xY wY nw xY w|t          u rŒx |ˆfd„|D ¦   «         ¦  «        }|t          urt          |‰|¦  «         Œª|S )Nc              3   ój   K  — | ].}|t           u¯t          |¦  «                             ¦   «         V — Œ/d S r   )r8   Úvarsr3   )r   rO   s     r   r4   z&Merger.mergeObjects.<locals>.<genexpr>‹   s>   è è € ÐTÐT U¸Å^Ð8SÐ8S�d�5‰kŒk×ÒÑ Ô Ð8SÐ8SÐ8SÐ8SÐTÐTr   z %sÚ*zDon't know how to merge key z
 of class c              3   óD   •K  — | ]}t          |‰t          ¦  «        V — Œd S r   )Úgetattrr8   )r   rO   Úkeys     €r   r4   z&Merger.mergeObjects.<locals>.<genexpr>›   s/   øè è € ÐWÐWÀu�w u¨cµ>ÑBÔBÐWÐWÐWÐWÐWÐWr   )
r>   r?   rD   rE   ÚKeyErrorÚ	ExceptionÚ	__class__Ú__name__r8   Úsetattr)r   ÚreturnTableÚlogicrM   ÚallKeysÚ
mergeLogicÚvaluerV   s          @r   ÚmergeObjectszMerger.mergeObjects…   s?  ø€ õ ”)Ý‰EŒEð
àTÐT¨fÐTÑTÔTð
ð 
ð 
ˆð ð 	1ð 	1ˆCÝ�HŠH�U˜CÑ Ô Ð ð	Ø" 3œZ�
�
øÝð ð ð ðØ!& s¤�J�JøÝð ð ð Ý#˜)à˜3˜3 Ô 5Ô >Ð >ð@ñô ð ðøøøð �Jðøøøð �^Ð+Ð+ØØ�JÐWÐWÐWÐWÐPVÐWÑWÔWÑWÔWˆEØ�NÐ*Ð*Ý˜ S¨%Ñ0Ô0Ð0øàÐs*   Á
AÁ
BÁA'Á&BÁ'*BÂBÂBc                 ó$   — t          |¦  «         d S r   )r   ©r   r&   s     r   r=   zMerger._preMerge¡   s   € Ý�tÑÔÐÐÐr   c                 óf   — t          |¦  «         d|v r|d                              |¦  «         d S d S )NzOS/2)r   ÚrecalcAvgCharWidthrc   s     r   rH   zMerger._postMerge¤   s@   € Ý˜ÑÔÐà�Tˆ>ˆ>ð �ŒL×+Ò+¨DÑ1Ô1Ð1Ð1Ð1ð ˆ>r   r   )
rZ   Ú
__module__Ú__qualname__Ú__doc__r   r'   rG   ra   r=   rH   r   r   r   r   r      s�   € € € € € ðð ð6ð ð ð ðð ð ðAð Að AðFð ð ð8ð ð ð2ð 2ð 2ð 2ð 2r   r   )r	   r   Úmainz%make one with everything (TOTAL TIME)c                 óŒ  — ddl m} | €t          j        dd…         } t	          ¦   «         }|                     | ¦  «        } g }|j        rJt          |j        ¦  «        5 }d„ |                     ¦   «         D ¦   «         }ddd¦  «         n# 1 swxY w Y   | D ]}| 	                    |¦  «         Œt          |¦  «        dk     �rt          dt          j        ¬¦  «         t          dt          j        ¬¦  «         t          d	t          j        ¬¦  «         t          d
t          j        ¬¦  «         t          dt          j        ¬¦  «         t          dt          j        ¬¦  «         t          dt          j        ¬¦  «         t          dt          j        ¬¦  «         t          dt          j        ¬¦  «         t          dt          j        ¬¦  «         dS  ||j        rt          j        nt          j        ¬¦  «         |j        r*t$          j                             t          j        ¦  «         ndt$          j        _        t/          |¬¦  «        }|                     |¦  «        }|j        r|                     |j        ¦  «         t%          d¦  «        5  |                     |j        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zMerge multiple fonts into oner   )ÚconfigLoggerNé   c                 ó„   — g | ]=}|                      ¦   «                              d ¦  «        °)|                     ¦   «         ‘Œ>S )ú#)ÚlstripÚ
startswithÚstrip)r   Úlines     r   r   zmain.<locals>.<listcomp>½   sL   € ð ð ð àØ—{’{‘}”}×/Ò/°Ñ4Ô4ðØ—
’
‘”ðð ð r   zzusage: fonttools merge [font1 ... fontN] [--input-file=filelist.txt] [--output-file=merged.ttf] [--import-file=tables.ttx])ÚfilezN                                   [--drop-tables=tags] [--verbose] [--timing]Ú z- font1 ... fontN              Files to merge.zp --input-file=<filename>      Read files to merge from a text file, each path new line. # Comment lines allowed.zM --output-file=<filename>     Specify output file name (default: merged.ttf).za --import-file=<filename>     TTX file to import after merging. This can be used to set metadata.zY --drop-tables=<table tags>   Comma separated list of table tags to skip, case sensitive.z: --verbose                    Output progress information.z5 --timing                     Output progress timing.)r   T)r   zcompile and save font)Ú	fontToolsrk   ÚsysÚargvr	   Ú
parse_optsÚ
input_fileÚopenÚ	readlinesÚappendÚlenÚprintÚstderrÚverboseÚloggingÚINFOÚWARNINGÚtimingrC   r   ÚsetLevelÚDEBUGÚdisabledr   rG   Úimport_fileÚ	importXMLÚsaveÚoutput_file)Úargsrk   r   r$   Ú	inputfileÚgÚmergerr&   s           r   ri   ri   °   sf  € ð 'Ð&Ð&Ð&Ð&Ð&à€|ÝŒx˜˜˜Œ|ˆå‰iŒi€GØ×Ò˜dÑ#Ô#€DØ€IØÔð Ý�'Ô$Ñ%Ô%ð 	¨ðð à%×/Ò/Ñ1Ô1ðñ ô ˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ð ð ˆØ×Ò˜ÑÔÐÐå
ˆ9�~„~˜ÒÑÝð IÝ”ð	
ñ 	
ô 	
ð 	
õ 	Ø\Ý”ð	
ñ 	
ô 	
ð 	
õ 	ˆb•s”zÐ"Ñ"Ô"Ð"ÝÐ=ÅCÄJÐOÑOÔOÐOÝØ~Ý”ð	
ñ 	
ô 	
ð 	
õ 	Ø[Ý”ð	
ñ 	
ô 	
ð 	
õ 	ØoÝ”ð	
ñ 	
ô 	
ð 	
õ 	ØgÝ”ð	
ñ 	
ô 	
ð 	
õ 	ØHÝ”ð	
ñ 	
ô 	
ð 	
õ 	ÐEÍCÌJÐWÑWÔWÐWØˆqà€L w¤ÐK•w”|�|½G¼OÐLÑLÔLÐLØ„~ð %ÝŒ×Ò�gœmÑ,Ô,Ð,Ð,à $�ŒÔå˜GÐ$Ñ$Ô$€FØ�<Š<˜	Ñ"Ô"€DàÔð ,Ø�Š�wÔ*Ñ+Ô+Ð+å	Ð&Ñ	'Ô	'ð 'ð 'Ø�	Š	�'Ô%Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's$   ÁBÂBÂBÊJ9Ê9J=Ë J=Ú__main__r   )ru   r   ÚfontTools.merge.baseÚfontTools.merge.cmapr   r   r   ÚfontTools.merge.layoutr   r   ÚfontTools.merge.optionsr	   ÚfontTools.merge.tablesÚfontTools.misc.loggingToolsr
   Ú	functoolsr   rv   r�   Ú	getLoggerrD   rZ   r‚   rC   Úobjectr   Ú__all__ri   Úexitr   r   r   ú<module>rœ      s¨  ðð
 Ð Ð Ð Ð Ð Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð
 CÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø 
€
€
€
Ø €€€ð €gÔÐ)Ñ*Ô*€ØˆÐ&�WÔ& x°(Ñ':Ñ;Ô;À7Ä<ÐPÑPÔP€ðQ2ð Q2ð Q2ð Q2ð Q2ˆVñ Q2ô Q2ð Q2ðh (Ð
'Ð
'€ð €Ð.Ñ/Ô/ðC'ð C'ð C'ñ 0Ô/ðC'ðL ˆzÒÐØ€C„HˆTˆT‰VŒVÑÔÐÐÐð Ðr   