§
    ‚ÛgÈ  ã                   ó  — d Z ddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
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)ÚTopDictIndexÚ
buildOrderÚbuildDefaultsÚtopDictOperatorsÚprivateDictOperatorsé   )Ú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          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	¦  «         ŒŒ"t/          t0          ¦  «        }|d
         j        }|                     ¦   «         D ]I}|                     |¦  «        \  }}|dk    rd}||                              ||         d         ¦  «         ŒJ|                     ¦   «         D ]2\  }}t9          |¦  «        \  }}||         j        }||_        ||_        Œ3|                     ¦   «         D ]k}|                     |¦  «        \  }}|dk    rd}||         j        }||         d         }||j        k    r#|j                             d||j        z
  ¦  «         Œld„ tA          |j!        ¦  «        D ¦   «         Šd„ tE          tG          |j!        ¦  «        ¦  «        D ¦   «         |_!        ˆfd„|j$                             ¦   «         D ¦   «         |_$        dS )al  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 CFF 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.FÚendcharc                 ó:   — g | ]}t          |j        d g ¦  «        ‘ŒS )ÚSubrs)ÚgetattrÚPrivate)Ú.0Úfds     úP/granary/edev/quantum/lib/python3.11/site-packages/fontTools/cffLib/CFF2ToCFF.pyú
<listcomp>z%_convertCFF2ToCFF.<locals>.<listcomp>K   s3   € ð )ð )ð )Ø-/��”
˜G RÑ(Ô(ð)ð )ð )ó    ÚreturnÚhmtxc                 óB   — i | ]\  }}||rd t          |¦  «        z   nd“ŒS ©Úcidz.notdef©Ústr)r   ÚnÚnames      r   ú
<dictcomp>z%_convertCFF2ToCFF.<locals>.<dictcomp>g   sA   € ð ð ð áˆAˆtð 	 Ð1ˆu•s˜1‘v”v‰~ˆ~¨	ðð ð r   c                 ó:   — g | ]}|rd t          |¦  «        z   nd‘ŒS r   r!   )r   r#   s     r   r   z%_convertCFF2ToCFF.<locals>.<listcomp>k   s8   € ð ð ð Ø/0˜!Ð*ˆ•�A‘”‰ˆ ðð ð r   c                 ó(   •— i | ]\  }}‰|         |“ŒS © r(   )r   r$   ÚvÚmappings      €r   r%   z%_convertCFF2ToCFF.<locals>.<dictcomp>n   s0   ø€ ð ð ð Ù$˜T 1ˆ�Œ�qðð ð r   )%Úmajorr   ÚtopDictIndexÚcff2GetGlyphOrderÚappendÚhasattrÚ
ValueErrorr   r	   ÚorderÚrawDictÚkeysÚdelattrÚFDArrayÚCharStringsr   r
   ÚsetCFF2r   ÚvaluesÚ	decompileÚprogramÚGlobalSubrsr   ÚlistÚmetricsÚgetItemAndSelectorÚitemsr   ÚdefaultWidthXÚnominalWidthXÚinsertÚ	enumerateÚcharsetÚrangeÚlenÚcharStrings)ÚcffÚotFontÚtopDictDataÚitemÚtopDictÚopOrderÚkeyÚfdArrayrG   Údefaultsr1   r   ÚprivateDictÚcsÚsubrSetsÚwidthsr=   Ú	glyphNameÚfdIndexÚ	widthListÚbestDefaultÚbestNominalÚprivateÚwidthr*   s                           @r   Ú_convertCFF2ToCFFr\      sq  ø€ ð €C„Iå˜tÑ$Ô$€KØÔ ð !ð !ˆà!%ˆÔØ×Ò˜4Ñ Ô Ð Ð Ø"€CÔØ˜!Œn€Gåˆw˜
Ñ#Ô#ð RÝÐPÑQÔQÐQåÕ)Ñ*Ô*€GØ€G„MØŒ×#Ò#Ñ%Ô%ð &ð &ˆØ�gÐÐØ” Ð$Ý�w Ñ$Ô$ð &Ý˜ Ñ%Ô%Ð%øàŒo€GØÔ%€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 ¨Ô)>Ñ!>Ñ?Ô?Ð?øðð å  ¤Ñ1Ô1ðñ ô €Gðð Ý49½#¸g¼oÑ:NÔ:NÑ4OÔ4Oðñ ô €G„Oðð ð ð Ø(3Ô(?×(EÒ(EÑ(GÔ(Gðñ ô €KÔÐÐr   T)ÚupdatePostTablec                óÈ   — | 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CFF Úpostg       @g      @)rH   r\   r   Ú
formatType)Úfontr]   rH   Útabler`   s        r   r   r   w   s‰   € Ø
ˆ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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+          |
¦  «         t,                               d)|	¦  «         |
                     |	¦  «         dS )*z%Convert CFF OTF font to CFF2 OTF fontNr   r   zfonttools cffLib.CFFToCFF2zUpgrade a CFF font to CFF2.)ÚdescriptionÚinputz	INPUT.ttfzInput OTF file with CFF table.)ÚmetavarÚhelpz-oz--outputz
OUTPUT.ttfz3Output instance OTF file (default: INPUT-CFF2.ttf).)rg   Údefaultrh   z--no-recalc-timestampÚrecalc_timestampÚstore_falsez:Don't set the output font's timestamp to the current time.)ÚdestÚactionrh   F)Úrequiredz-vz	--verboseÚ
store_truezRun more verbosely.)rm   rh   z-qz--quietzTurn verbosity off.)ÚconfigLoggerÚDEBUGÚERRORÚINFO)ÚlevelzNo such file '{}'Tz-CFF)Ú	overWriteÚsuffix)ÚrecalcTimestampÚrecalcBBoxesz	Saving %s)ÚsysÚargvÚargparseÚArgumentParserÚadd_argumentÚadd_mutually_exclusive_groupÚ
parse_argsÚ	fontToolsrp   ÚverboseÚquietÚosrf   ÚpathÚisfileÚerrorÚformatÚoutputr   r   rj   r   ÚlogÚinfoÚsave)Úargsry   r{   ÚparserÚloggingGroupÚoptionsrp   rƒ   ÚinfileÚoutfilerb   s              r   r   r   …   s[  € à€|Øˆ
ˆ
ˆ
àŒx˜˜˜Œ|ˆà€O€O€Oà×$Ò$Ø$Ø1ð %ñ ô €Fð ×ÒØ˜Ð+Kð ñ ô ð ð ×ÒØØØØØBð ñ ô ð ð ×ÒØØØØIð	 ñ ô ð ð ×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ÑÔÐå‡H‚HØØñô ð ð 	‡I‚IˆgÑÔÐÐÐr   Ú__main__)N)Ú__doc__ÚfontTools.ttLibr   r   ÚfontTools.misc.cliToolsr   ÚfontTools.cffLibr   r   r   r	   r
   r[   r   Úcollectionsr   ÚloggingÚ__all__Ú	getLoggerr‰   r\   r   r   Ú__name__ry   Úexitrz   r(   r   r   ú<module>r�      s_  ðØ Ð à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø €€€ð ˜vÐ
&€ð €gÔÐ*Ñ+Ô+€ðYð Yð Yð@ /3ð "ð "ð "ð "ð "ð@ð @ð @ð @ðF ˆzÒÐØ€J€J€Jà€C„HˆTˆT�#”(˜1˜2˜2”,ÑÔÑ Ô Ð Ð Ð ð Ðr   