
    h                      2   S r SSKJrJr  SSKJr  SSKJr  SSKJ	r	J
r
JrJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKrSS/r\R2                  " S5      rS rSS.S jrSS jr\S:X  a*  SSKr\R@                  " \" \RB                  SS 5      5        gg)zCFF2 to CFF converter.    )TTFontnewTable)makeOutputFileName)T2StackUseExtractor)TopDictIndex
buildOrderbuildDefaultstopDictOperatorsprivateDictOperatorsFDSelect   )desubroutinizeCharString)specializeProgram)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[        US5      (       d.  [        5       =ol        S/[!        UR"                  5      -  U	l        ['        [(        5      n
[        [(        5      nU H  nUR+                  S5        UR,                  nXl	        U H,  nXmR                  ;  d  M  Xj;   d  M  X   UR                  U'   M.     UR                  R                  5        H4  nXk;  d  M
  UR                  U	 [        X5      (       d  M)  [        X5        M6     M     UR/                  5        H.  nUR1                  5         UR2                  R	                  S5        M0     U R4                  /U Vs/ s H  n[7        UR,                  S	/ 5      PM     sn-    H'  nU H  nUR2                  R	                  S
5        M      M)     [9        [:        5      nUS   R<                  nUR                  5        H9  nUR?                  U5      u  nnUS:X  a  SnUU   R	                  UU   S   5        M;     URA                  5        H1  u  nn[C        U5      u  nnUU   R,                  nUUl"        UUl#        M3     UR                  5        Hq  nUR?                  U5      u  nnUS:X  a  SnUU   R,                  nUU   S   nUURD                  :w  d  MH  UR2                  RI                  SUURF                  -
  5        Ms     UR                  5        H  nUR?                  U5      u  nnUc  SnUU   R,                  n[K        [7        US	/ 5      U R4                  US9nURM                  U5      nUS:  d  Md  [O        U5        [Q        UR2                  5      Ul        M     U RS                  5         [U        URV                  5       VVs0 s H-  u  nnUU(       a  S[Y        U5      R[                  S5      -   OS_M/     nnn[]        [!        URV                  5      5       Vs/ s H)  nU(       a  S[Y        U5      R[                  S5      -   OSPM+     snUl+        UR"                  RA                  5        VVs0 s H  u  nnUU   U_M     snnUl        SUl/        gs  snf s  snnf s  snf s  snnf )aY  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endcharSubrsreturnhmtx)private0   cid   z.notdef)AdobeIdentityr   )0majorr   topDictIndexcff2GetGlyphOrderappendhasattr
ValueErrorr   r
   orderrawDictkeysdelattrCharStringsFDArrayr   lencharStringsgidArrayr	   r   setCFF2Privatevalues	decompileprogramGlobalSubrsgetattrr   listmetricsgetItemAndSelectoritemsr   defaultWidthXnominalWidthXinsertr   executer   r   remove_unused_subroutines	enumeratecharsetstrzfillrangeROS)cffotFonttopDictDataitemtopDictopOrderkeyr-   fdArrayfdSelectdefaultsr&   fdprivateDictcssubrSetswidthsr7   	glyphNamefdIndex	widthListbestDefaultbestNominalr   width	extractorstackUsennamemappingvs                                  T/var/www/fran/franai/venv/lib/python3.13/site-packages/fontTools/cffLib/CFF2ToCFF.py_convertCFF2ToCFFra      s    CIt$K  !%4  ! #!nGw
##PQQ)*GM##%$w$$%	 & %%KooG7J''&.j0#C#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)>)>!>? ( !%%'	!44Y?G?G'"**'GWb)3??G
	 $$R(b=$R(*2::6BJ (" !!# !11GAt 	!us1v||A&:1  
 >C3wCW=X=X1AQ)3=XGO )4(?(?(E(E(G(GWT1q(GK +GKw)`s   !U4U#%0U):U.T)updatePostTablec                    SU ;  a  [        S5      e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)Input font does not contain a CFF2 table.zCFF postg       @g      @)r%   rE   ra   r   
formatType)fontrb   rE   tablere   s        r`   r   r      s{    TDEE
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 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).)rm   defaultrn   z--no-recalc-timestamprecalc_timestampstore_falsez:Don't set the output font's timestamp to the current time.)destactionrn   F)requiredz-vz	--verbose
store_truezRun more verbosely.)rs   rn   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	fontToolsrv   verbosequietosrl   pathisfileerrorformatoutputr   r   rp   r   loginfosave)argsr   r   parserloggingGroupoptionsrv   r   infileoutfilerg   s              r`   r   r      s   |xx|$$$> % 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ri   __main__)N)"__doc__fontTools.ttLibr   r   fontTools.misc.cliToolsr   fontTools.misc.psCharStringsr   fontTools.cffLibr   r   r	   r
   r   r   
transformsr   specializerr   rY   r   collectionsr   logging__all__	getLoggerr   ra   r   r   __name__r   exitr    ri   r`   <module>r      s     , 6 <  1 * ! #  v
& *+u+p /3 " @F zHHT#((12,  ri   