
    Wh                      ,   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j2                  d      Zd ZdddZddZedk(  r*ddlZ ej@                   eejB                  dd              yy)zCFF2 to CFF converter.    )TTFontnewTable)makeOutputFileName)T2StackUseExtractor)TopDictIndex
buildOrderbuildDefaultstopDictOperatorsprivateDictOperatorsFDSelect   )desubroutinizeCharString)specializeProgram)optimizeWidths)defaultdictNconvertCFF2ToCFFmainzfontTools.cffLibc           	      Z
   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        |d      s/t               x}	|_        dgt!        |j"                        z  |	_        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 ]-  }|j1                          |j2                  j	                  d       / | j4                  g|D cg c]  }t7        |j,                  d	g        c}z   D ]$  }|D ]  }|j2                  j	                  d
        & t9        t:              }|d   j<                  }|j                         D ]7  }|j?                  |      \  }}|dk(  rd}||   j	                  ||   d          9 |jA                         D ]0  \  }}tC        |      \  }}||   j,                  }||_"        ||_#        2 |j                         D ]m  }|j?                  |      \  }}|dk(  rd}||   j,                  }||   d   }||jD                  k7  sE|j2                  jI                  d||jF                  z
         o |j                         D ]  }|j?                  |      \  }}|d}||   j,                  }tK        t7        |d	g       | j4                  |      }|jM                  |      }|dkD  sdtO        |       tQ        |j2                        |_         | jS                          tU        |jV                        D ci c]'  \  }}||rdtY        |      j[                  d      z   nd) }}}t]        t!        |jV                              D cg c]#  }|rdtY        |      j[                  d      z   nd% c}|_+        |j"                  jA                         D ci c]  \  }}||   | c}}|_        d|_/        yc c}w c c}}w c c}w c c}}w )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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/html/jupyter_env/lib/python3.12/site-packages/fontTools/cffLib/CFF2ToCFF.py_convertCFF2ToCFFra      s"    CIt$K   !!%4 ! #C!nGw
#PQQ)*GGM##% &g$w$%	& %%KooG7J'&.j07#C#k&=&=">>12H+,E .


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


)$% __%3:)-/

GR()  (  	(BJJh'	(( FVn$$G %%' 6	!44Y?Gd?Gwwy1!45	6
 %lln ,#1)#< ['"** + +	,
 !%%' @	!44Y?Gd?G'"**	"1%G)))JJa)>)>!>?@ !%%' 7	!44Y?G?G'"**'GWb)3??G
	 $$R(b=$R(*2::6BJ7" !!# !1At 	!us1v||A&:G 
 >C3wCW=X891AQ)3GO )4(?(?(E(E(G$T1qK +GKw)`s   "T,T)(T"6T'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|_        y y y y )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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 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
& g*+u+p /3 " @F zCHHT#((12,  ri   