
    h                     
   S r SSKJrJr  SSKJr  SSKJrJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKrS	S
/r\R$                  " S5      rS rSS.S jrSS jr\S:X  a*  SSKr\R2                  " \" \R4                  SS 5      5        gg)zCFF2 to CFF converter.    )TTFontnewTable)makeOutputFileName)TopDictIndex
buildOrderbuildDefaultstopDictOperatorsprivateDictOperators   )optimizeWidths)defaultdictNconvertCFF2ToCFFmainzfontTools.cffLibc           	         SU l         [        S5      nU R                   H  nSUl        UR	                  U5        M     X l        US   n[        US5      (       a  [        S5      e[        [        5      nXTl	        UR                  R                  5        H4  nXe;  d  M
  UR                  U	 [        XF5      (       d  M)  [        XF5        M6     UR                  nUR                  n[        [         5      n	[        [         5      n
U H  nUR#                  S5        UR$                  nXl	        U
 H,  nXlR                  ;  d  M  Xi;   d  M  X   UR                  U'   M.     UR                  R                  5        H4  nXj;  d  M
  UR                  U	 [        X5      (       d  M)  [        X5        M6     M     UR'                  5        H.  nUR)                  5         UR*                  R	                  S5        M0     U R,                  /U Vs/ s H  n[/        UR$                  S/ 5      PM     sn-    H'  nU H  nUR*                  R	                  S	5        M      M)     [1        [2        5      nUS
   R4                  nUR                  5        H9  nUR7                  U5      u  nnUS:X  a  SnUU   R	                  UU   S   5        M;     UR9                  5        H1  u  nn[;        U5      u  nnUU   R$                  nUUl        UUl        M3     UR                  5        Hq  nUR7                  U5      u  nnUS:X  a  SnUU   R$                  nUU   S   nUUR<                  :w  d  MH  UR*                  RA                  SUUR>                  -
  5        Ms     [C        URD                  5       VVs0 s H  u  nnUU(       a  S[G        U5      -   OS_M      nnn[I        [K        URD                  5      5       Vs/ s H  nU(       a  S[G        U5      -   OSPM     snUl"        URL                  R9                  5        VVs0 s H  u  nnUU   U_M     snnUl&        gs  snf s  snnf s  snf s  snnf )aX  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endcharSubrsreturnhmtxcidz.notdef)'majorr   topDictIndexcff2GetGlyphOrderappendhasattr
ValueErrorr   r	   orderrawDictkeysdelattrFDArrayCharStringsr   r
   setCFF2Privatevalues	decompileprogramGlobalSubrsgetattrr   listmetricsgetItemAndSelectoritemsr   defaultWidthXnominalWidthXinsert	enumeratecharsetstrrangelencharStrings)cffotFonttopDictDataitemtopDictopOrderkeyfdArrayr6   defaultsr   fdprivateDictcssubrSetswidthsr+   	glyphNamefdIndex	widthListbestDefaultbestNominalprivatewidthnnamemappingvs                               L/var/www/html/env/lib/python3.13/site-packages/fontTools/cffLib/CFF2ToCFF.py_convertCFF2ToCFFrQ      s    CIt$K  !%4  ! #!nGw
##PQQ)*GM##%$w$$%	 & ooG%%K12H+,E


5jj!C---#/+3=##C(  &&++-C'',;,,K-	 .    "



)$ # __%3:)3:R

GR(7)  BJJh'  FVn$$G %%'	!44Y?Gd?Gwwy1!45	 (
 %lln#1)#< ['"** + +	 -
 !%%'	!44Y?Gd?G'"**	"1%G)))JJa)>)>!>? ( !11GAt 	us1v~	11  
 5:#goo:N4O4Oq!A*4OGO )4(?(?(E(E(G(GWT1q(GKG)8s   !Q"%Q*!Q0QT)updatePostTablec                    U S   R                   n[        X 5        U S	 [        S5      =o0S'   X#l         U(       a%  SU ;   a  U S   nUR                  S:X  a  SUl        g g g g )NCFF2zCFF postg       @g      @)r7   rQ   r   
formatType)fontrR   r7   tablerU   s        rP   r   r   w   sg    
v,

Cc V#F++ELI6T>F|??c!!DO " *    c                 ,   U c  SSK nUR                  SS n SSKnUR                  SSS9nUR	                  SSS	S
9  UR	                  SSSSSS9  UR	                  SSSSS9  UR                  SS9nUR	                  SSSSS9  UR	                  SSSSS9  UR                  U 5      nSSKJn  U" UR                  (       a  S OUR                  (       a  S!OS"S#9  SSKnUR                  nUR                  R                  U5      (       d   UR                  S$R!                  U5      5        UR"                  (       d  [%        US%S&S'9OUR"                  n	['        XR(                  SS(9n
[+        U
5        [,        R/                  S)U	5        U
R1                  U	5        g)*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).)r]   defaultr^   z--no-recalc-timestamprecalc_timestampstore_falsez:Don't set the output font's timestamp to the current time.)destactionr^   F)requiredz-vz	--verbose
store_truezRun more verbosely.)rc   r^   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	fontToolsrf   verbosequietosr\   pathisfileerrorformatoutputr   r   r`   r   loginfosave)argsro   rq   parserloggingGroupoptionsrf   ry   infileoutfilerW   s              rP   r   r      s   |xx|$$$1 % F +K   B   I	   666FLk,5J   i3H   %G&!//w'--wV ]]F77>>&!!(//78 ~~ 	6T&A^^  &*B*BQVWDTHH 	IIgrY   __main__)N)__doc__fontTools.ttLibr   r   fontTools.misc.cliToolsr   fontTools.cffLibr   r   r   r	   r
   rK   r   collectionsr   logging__all__	getLoggerr   rQ   r   r   __name__ro   exitrp    rY   rP   <module>r      s     , 6  " #  v
& *+Y@ /3 "@F zHHT#((12,  rY   