
    Mcg                        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j2                   eej4                  dd              yy)zCFF2 to CFF converter.    )TTFontnewTable)makeOutputFileName)TopDictIndex
buildOrderbuildDefaultstopDictOperatorsprivateDictOperators   )optimizeWidths)defaultdictNconvertCFF2ToCFFmainzfontTools.cffLibc           	      D   d| _         t        d      }| j                  D ]  }d|_        |j	                  |        || _        |d   }t        |d      rt        d      t        t              }||_	        |j                  j                         D ]-  }||vs|j                  |= t        ||      s"t        ||       / |j                  }|j                  }t        t               }	t        t               }
|D ]  }|j#                  d       |j$                  }|
|_	        |
D ](  }||j                  vs||	v s|	|   |j                  |<   * |j                  j                         D ]-  }||
vs|j                  |= t        ||      s"t        ||       /  |j'                         D ]-  }|j)                          |j*                  j	                  d       / | j,                  g|D cg c]  }t/        |j$                  dg        c}z   D ]$  }|D ]  }|j*                  j	                  d	        & t1        t2              }|d
   j4                  }|j                         D ]7  }|j7                  |      \  }}|dk(  rd}||   j	                  ||   d          9 |j9                         D ]0  \  }}t;        |      \  }}||   j$                  }||_        ||_        2 |j                         D ]m  }|j7                  |      \  }}|dk(  rd}||   j$                  }||   d   }||j<                  k7  sE|j*                  jA                  d||j>                  z
         o tC        |jD                        D ci c]  \  }}||rdtG        |      z   nd }}}tI        tK        |jD                              D cg c]  }|rdtG        |      z   nd c}|_"        |jL                  j9                         D ci c]  \  }}||   | c}}|_&        yc c}w c c}}w c c}w c c}}w )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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                               U/var/www/html/bid-api/venv/lib/python3.12/site-packages/fontTools/cffLib/CFF2ToCFF.py_convertCFF2ToCFFrQ      s    CIt$K  !%4  ! #C!nGw
#PQQ)*GGM##%g$w$%	 & ooG%%K12H+,E


5jj!C+---#/+3C=##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   'P4P4P2PT)updatePostTablec                    | d   j                   }t        ||        | d= t        d      x}| d<   ||_         |r"d| v r| d   }|j                  dk(  rd|_        y y y y )NCFF2zCFF postg       @g      @)r7   rQ   r   
formatType)fontrR   r7   tablerU   s        rP   r   r   w   sm    
v,

Cc4 V#F++EDLEI6T>F|??c!!DO " *    c                 @   | ddl }|j                  dd } ddl}|j                  dd      }|j	                  ddd	
       |j	                  ddddd       |j	                  dddd       |j                  d      }|j	                  dddd       |j	                  dddd       |j                  |       }ddlm}  ||j                  rd n|j                  rd!nd"#       ddl}|j                  }|j                  j                  |      s |j                  d$j!                  |             |j"                  st%        |d%d&'      n|j"                  }	t'        ||j(                  d(      }
t+        |
       t,        j/                  d)|	       |
j1                  |	       y)*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
& g*+Y@ /3 "@F zCHHT#((12,  rY   