§
    ¢”j	   ã                   ó0  — d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
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ZddgZ ej        d¦  «        Zd„ Zddœd„Zdd„Zedk    r,ddlZ ej          eej!        dd…         ¦  «        ¦  «         dS dS )zCFF2 to CFF converter.é    )ÚTTFontÚnewTable)ÚmakeOutputFileName)ÚT2StackUseExtractor)ÚTopDictIndexÚ
buildOrderÚbuildDefaultsÚtopDictOperatorsÚprivateDictOperatorsÚFDSelecté   )ÚdesubroutinizeCharString)ÚspecializeProgram)ÚoptimizeWidths)ÚdefaultdictNÚconvertCFF2ToCFFÚmainzfontTools.cffLibc                 ó²	  ‡— d| _         t          d¦  «        }| j        D ]}d|_        |                     |¦  «         Œ|| _        |d         }t          |d¦  «        rt          d¦  «        ‚t          t          ¦  «        }||_	        |j
                             ¦   «         D ].}||vr(|j
        |= t          ||¦  «        rt          ||¦  «         Œ/|j        }|j        }t          |d¦  «        s2t          ¦   «         x}	|_        dgt!          |j        ¦  «        z  |	_        t'          t(          ¦  «        }
t          t(          ¦  «        }|D ]�}|                     d¦  «         |j        }||_	        |D ]}||j
        vr||
v r|
|         |j
        |<   Œ |j
                             ¦   «         D ].}||vr(|j
        |= t          ||¦  «        rt          ||¦  «         Œ/Œ�|                     ¦   «         D ]0}|                     ¦   «          |j                             d¦  «         Œ1| j        gd	„ |D ¦   «         z   D ]!}|D ]}|j                             d
¦  «         ŒŒ"t7          t8          ¦  «        }|d         j        }|                     ¦   «         D ]I}|                     |¦  «        \  }}|dk    rd}||                              ||         d         ¦  «         ŒJ|                     ¦   «         D ]2\  }}tA          |¦  «        \  }}||         j        }||_!        ||_"        Œ3|                     ¦   «         D ]k}|                     |¦  «        \  }}|dk    rd}||         j        }||         d         }||j!        k    r#|j         #                    d||j"        z
  ¦  «         Œl|                     ¦   «         D ]”}|                     |¦  «        \  }}|€d}||         j        }tI          tK          |dg ¦  «        | j        |¬¦  «        }| &                    |¦  «        }|dk    r(tO          |¦  «         tQ          |j        ¦  «        |_        Œ•|  )                    ¦   «          d„ tU          |j+        ¦  «        D ¦   «         Šd„ tY          t!          |j+        ¦  «        ¦  «        D ¦   «         |_+        ˆfd„|j                             ¦   «         D ¦   «         |_        d|_-        dS )am  Converts this object from CFF2 format to CFF format. This conversion
    is done 'in-place'. The conversion cannot be reversed.

    The CFF2 font cannot be variable. (TODO Accept those and convert to the
    default instance?)

    This assumes a decompiled CFF2 table. (i.e. that the object has been
    filled via :meth:`decompile` and e.g. not loaded from XML.)r   Nr   ÚVarStorez5Variable CFF2 font cannot be converted to CFF format.r   FÚendcharc                 ó:   — g | ]}t          |j        d g ¦  «        ‘ŒS )ÚSubrs)ÚgetattrÚPrivate)Ú.0Úfds     úi/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/cffLib/CFF2ToCFF.pyú
<listcomp>z%_convertCFF2ToCFF.<locals>.<listcomp>U   s3   € ð )ð )ð )Ø-/��”
˜G RÑ(Ô(ð)ð )ð )ó    ÚreturnÚhmtxr   )Úprivateé0   c                 óh   — i | ]/\  }}||r%d t          |¦  «                             d¦  «        z   nd“Œ0S ©Úcidé   z.notdef©ÚstrÚzfill)r   ÚnÚnames      r   ú
<dictcomp>z%_convertCFF2ToCFF.<locals>.<dictcomp>…   sM   € ð ð ð áˆAˆtð 	¨!Ð:ˆu•s˜1‘v”v—|’| A‘”Ñ&Ð&°ðð ð r   c                 ó`   — g | ]+}|r%d t          |¦  «                             d¦  «        z   nd‘Œ,S r%   r(   )r   r+   s     r   r   z%_convertCFF2ToCFF.<locals>.<listcomp>‰   sD   € ð ð ð Ø89 1Ð3ˆ•�A‘”—’˜Q‘”ÑÐ¨)ðð ð r   c                 ó(   •— i | ]\  }}‰|         |“ŒS © r0   )r   r,   ÚvÚmappings      €r   r-   z%_convertCFF2ToCFF.<locals>.<dictcomp>Œ   s0   ø€ ð ð ð Ù$˜T 1ˆ�Œ�qðð ð r   )ÚAdobeÚIdentityr   ).Úmajorr   ÚtopDictIndexÚcff2GetGlyphOrderÚappendÚhasattrÚ
ValueErrorr   r
   ÚorderÚrawDictÚkeysÚdelattrÚCharStringsÚFDArrayr   ÚlenÚcharStringsÚgidArrayr	   r   ÚsetCFF2r   ÚvaluesÚ	decompileÚprogramÚGlobalSubrsr   ÚlistÚmetricsÚgetItemAndSelectorÚitemsr   ÚdefaultWidthXÚnominalWidthXÚinsertr   r   Úexecuter   r   Úremove_unused_subroutinesÚ	enumerateÚcharsetÚrangeÚROS)ÚcffÚotFontÚtopDictDataÚitemÚtopDictÚopOrderÚkeyrB   ÚfdArrayÚfdSelectÚdefaultsr;   r   ÚprivateDictÚcsÚsubrSetsÚwidthsrJ   Ú	glyphNameÚfdIndexÚ	widthListÚbestDefaultÚbestNominalr"   ÚwidthÚ	extractorÚstackUser2   s                              @r   Ú_convertCFF2ToCFFrl      s{  ø€ ð €C„Iå˜tÑ$Ô$€KØÔ ð !ð !ˆà!%ˆÔØ×Ò˜4Ñ Ô Ð Ð Ø"€CÔØ˜!Œn€Gåˆw˜
Ñ#Ô#ð RÝÐPÑQÔQÐQåÕ)Ñ*Ô*€GØ€G„MØŒ×#Ò#Ñ%Ô%ð &ð &ˆØ�gÐÐØ” Ð$Ý�w Ñ$Ô$ð &Ý˜ Ñ%Ô%Ð%øàÔ%€KàŒo€GÝ�7˜JÑ'Ô'ð ?å&.¡j¤jÐ0ˆ�7Ô#Ø˜C¥# kÔ&=Ñ">Ô">Ñ>ˆÔåÕ1Ñ2Ô2€HÝÕ+Ñ,Ô,€EØð .ð .ˆØ
�
Š
�5ÑÔÐØ”jˆØ!ˆÔØð 	9ð 	9ˆCØ˜+Ô-Ð-Ð-°#¸°/°/Ø+3°C¬=�Ô# CÑ(øØÔ&×+Ò+Ñ-Ô-ð 	.ð 	.ˆCØ˜%ÐÐØÔ'¨Ð,Ý˜;¨Ñ,Ô,ð .Ý˜K¨Ñ-Ô-Ð-øð		.ð × Ò Ñ"Ô"ð %ð %ˆØ
�Š‰ŒˆØ
Œ
×Ò˜)Ñ$Ô$Ð$Ð$Ø”_Ð%ð )ð )Ø3:ð)ñ )ô )ñ ð (ð (ˆð ð 	(ð 	(ˆBØŒJ×Ò˜hÑ'Ô'Ð'Ð'ð	(õ �ÑÔ€FØ�VŒnÔ$€GØ ×%Ò%Ñ'Ô'ð 6ð 6ˆ	Ø!×4Ò4°YÑ?Ô?‰ˆˆGØ�dŠ?ˆ?ØˆGØˆwŒ×Ò˜w yÔ1°!Ô4Ñ5Ô5Ð5Ð5Ø$Ÿlšl™nœnð ,ð ,Ñˆ�Ý#1°)Ñ#<Ô#<Ñ ˆ�[Ø˜'Ô"Ô*ˆØ +ˆÔØ +ˆÔÐØ ×%Ò%Ñ'Ô'ð @ð @ˆ	Ø!×4Ò4°YÑ?Ô?‰ˆˆGØ�dŠ?ˆ?ØˆGØ˜'Ô"Ô*ˆØ˜	Ô" 1Ô%ˆØ�GÔ)Ò)Ð)ØŒJ×Ò˜a ¨Ô)>Ñ!>Ñ?Ô?Ð?øð !×%Ò%Ñ'Ô'ð 7ð 7ˆ	Ø!×4Ò4°YÑ?Ô?‰ˆˆGØˆ?ØˆGØ˜'Ô"Ô*ˆÝ'Ý�G˜W bÑ)Ô)¨3¬?ÀGð
ñ 
ô 
ˆ	ð ×$Ò$ RÑ(Ô(ˆØ�bŠ=ˆ=Ý$ RÑ(Ô(Ð(Ý*¨2¬:Ñ6Ô6ˆBŒJøð ×!Ò!Ñ#Ô#Ð#ðð å  ¤Ñ1Ô1ðñ ô €Gðð Ý=BÅ3ÀwÄÑCWÔCWÑ=XÔ=Xðñ ô €G„Oðð ð ð Ø(3Ô(?×(EÒ(EÑ(GÔ(Gðñ ô €KÔð +€G„K€K€Kr   T)ÚupdatePostTablec                óî   — d| vrt          d¦  «        ‚| d         j        }t          || ¦  «         | d= t          d¦  «        x}| d<   ||_        |r d| v r| d         }|j        dk    rd|_        d S d S d S d S )NÚCFF2z)Input font does not contain a CFF2 table.zCFF Úpostg       @g      @)r:   rV   rl   r   Ú
formatType)Úfontrm   rV   Útablerp   s        r   r   r   “   s£   € Ø�TÐÐÝÐDÑEÔEÐEØ
ˆvŒ,Ô
€CÝ�c˜4Ñ Ô Ð ØˆVˆÝ# FÑ+Ô+Ð+€EˆD�‰LØ€E„Iàð "˜6 T˜>˜>à�FŒ|ˆØŒ?˜cÒ!Ð!Ø!ˆDŒOˆOˆOð	"ð "˜>˜>ð "Ð!r   c                 óî  — | €ddl }|j        dd…         } ddl}|                     dd¬¦  «        }|                     ddd	¬
¦  «         |                     ddddd¬¦  «         |                     dddd¬¦  «         |                     ddd¬¦  «         |                     ddd¬¦  «         |                     d¬¦  «        }|                     dddd¬¦  «         |                     d d!dd"¬¦  «         |                     | ¦  «        }dd#lm}  ||j	        rd$n
|j
        rd%nd&¬'¦  «         ddl}|j        }|j                             |¦  «        s(|                     d(                     |¦  «        ¦  «         |j        st%          |d)d*¬+¦  «        n|j        }	t'          ||j        d¬,¦  «        }
t+          |
¦  «         |j        r~dd-lm} dd.lm} t6                               d/¦  «          |¦   «         }|
                     |¦  «         |                     d¦  «         t'          |dd¬,¦  «        }
 ||
|j        ¬0¦  «         t6                                d1|	¦  «         |
                     |	¦  «         dS )2z%Convert CFF2 OTF font to CFF OTF fontNr   r   zfonttools cffLib.CFF2ToCFFz(Convert a non-variable CFF2 font to CFF.)ÚdescriptionÚinputz	INPUT.ttfzInput OTF file with CFF table.)ÚmetavarÚhelpz-oz--outputz
OUTPUT.ttfz3Output instance OTF file (default: INPUT-CFF2.ttf).)rw   Údefaultrx   z--no-recalc-timestampÚrecalc_timestampÚstore_falsez:Don't set the output font's timestamp to the current time.)ÚdestÚactionrx   z--remove-overlapsÚ
store_truez@Merge overlapping contours and components. Requires skia-pathops)r}   rx   z--ignore-overlap-errorszCDon't crash if the remove-overlaps operation fails for some glyphs.F)Úrequiredz-vz	--verbosezRun more verbosely.z-qz--quietzTurn verbosity off.)ÚconfigLoggerÚDEBUGÚERRORÚINFO)ÚlevelzNo such file '{}'Tz-CFF)Ú	overWriteÚsuffix)ÚrecalcTimestampÚrecalcBBoxes)ÚremoveOverlaps)ÚBytesIOzRemoving overlaps)ÚignoreErrorsz	Saving %s)!ÚsysÚargvÚargparseÚArgumentParserÚadd_argumentÚadd_mutually_exclusive_groupÚ
parse_argsÚ	fontToolsr€   ÚverboseÚquietÚosrv   ÚpathÚisfileÚerrorÚformatÚoutputr   r   rz   r   Úremove_overlapsÚfontTools.ttLib.removeOverlapsr‰   ÚiorŠ   ÚlogÚdebugÚsaveÚseekÚignore_overlap_errorsÚinfo)ÚargsrŒ   rŽ   ÚparserÚloggingGroupÚoptionsr€   r–   ÚinfileÚoutfilerr   r‰   rŠ   Ústreams                 r   r   r   £   sQ  € à€|Øˆ
ˆ
ˆ
àŒx˜˜˜Œ|ˆà€O€O€Oà×$Ò$Ø$Ø>ð %ñ ô €Fð ×ÒØ˜Ð+Kð ñ ô ð ð ×ÒØØØØØBð ñ ô ð ð ×ÒØØØØIð	 ñ ô ð ð ×ÒØØØOð ñ ô ð ð
 ×ÒØ!ØØRð ñ ô ð ð
 ×6Ò6ÀÐ6ÑFÔF€LØ×ÒØˆk ,Ð5Jð ñ ô ð ð ×ÒØˆi Ð3Hð ñ ô ð ð ×Ò Ñ%Ô%€Gà&Ð&Ð&Ð&Ð&Ð&à€LØ!œ/ÐSˆwˆw¸'¼-Ð/S¨w¨wÈVðñ ô ð ð €I€I€IàŒ]€FØŒ7�>Š>˜&Ñ!Ô!ð 9Ø�ŠÐ(×/Ò/°Ñ7Ô7Ñ8Ô8Ð8ð Œ~ð	Õ˜6¨T¸&ÐAÑAÔAÐAàŒ^ð õ �&¨'Ô*BÐQVÐWÑWÔW€Då�TÑÔÐàÔð 
ØAÐAÐAÐAÐAÐAØÐÐÐÐÐå�	Š	Ð%Ñ&Ô&Ð&à�‘”ˆØ�	Š	�&ÑÔÐØ�Š�A‰ŒˆÝ�f¨eÀ%ÐHÑHÔHˆØˆØØ Ô6ð	
ñ 	
ô 	
ð 	
õ
 ‡H‚HØØñô ð ð 	‡I‚IˆgÑÔÐÐÐr   Ú__main__)N)"Ú__doc__ÚfontTools.ttLibr   r   ÚfontTools.misc.cliToolsr   ÚfontTools.misc.psCharStringsr   ÚfontTools.cffLibr   r   r	   r
   r   r   Ú
transformsr   Úspecializerr   ri   r   Úcollectionsr   ÚloggingÚ__all__Ú	getLoggerrŸ   rl   r   r   Ú__name__rŒ   Úexitr�   r0   r   r   ú<module>rº      sŸ  ðØ Ð à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 1Ð 0Ð 0Ð 0Ð 0Ð 0Ø *Ð *Ð *Ð *Ð *Ð *Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø €€€ð ˜vÐ
&€ð €gÔÐ*Ñ+Ô+€ðu+ð u+ð u+ðp /3ð "ð "ð "ð "ð "ð Yð Yð Yð Yðx ˆzÒÐØ€J€J€Jà€C„HˆTˆT�#”(˜1˜2˜2”,ÑÔÑ Ô Ð Ð Ð ð Ðr   