
    h'                     $   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JrJr  SSKJr  SSKrSS	/r\R*                  " S
5      r " S S\5      rS rS rSS jr\S:X  a*  SSKr\R<                  " \" \R>                  SS 5      5        gg)zCFF to CFF2 converter.    )TTFontnewTable)makeOutputFileName)T2WidthExtractor)TopDictIndexFDArrayIndexFontDict
buildOrdertopDictOperatorsprivateDictOperatorstopDictOperators2privateDictOperators2)BytesIONconvertCFFToCFF2mainzfontTools.cffLibc                        \ rS rSrS rS rSrg)_NominalWidthUsedError   c                     U eN selfothers     L/var/www/html/env/lib/python3.13/site-packages/fontTools/cffLib/CFFToCFF2.py__add___NominalWidthUsedError.__add__       
    c                     U er   r   r   s     r   __radd___NominalWidthUsedError.__radd__   r   r   r   N)__name__
__module____qualname____firstlineno__r   r!   __static_attributes__r   r   r   r   r      s    r   r   c                 0   U R                   S   n[        US5      (       a  UR                  OSnUR                  nU R                  nU(       a(  U Vs/ s H  n[        UR                  S/ 5      PM     snOD[        US5      (       a2  [        UR                  S5      (       a  UR                  R                  /O/ nUR                  5        H&  nUR                  U5      u  pU	R                  5         M(     U/U-    HV  nU HM  nUR                  n[        U5      =p UR                  S5      n UR                  S5      n/ U[        X5      S& MO     MX     Sn[!        5       nUR                  5        H  nUR                  U5      u  pU	R                  nU
b  Xz   O)[        US5      (       a  [        UR                  S/ 5      O/ n[#        UUUS5      n UR%                  U	5        U(       d  M|  US   S:X  d  M  UR'                  5         M     U(       a  U R1                  5         S	U l        U R4                  R6                  n[9        SU5      nU R                    H  nUR;                  U5        M     UU l         US   n[        US5      (       a  UR                  nOSn[=        [>        5      nUUl         UUl!        [        US5      (       Gd	  [E        5       =o2l        SUl#        UR                  Ul        X2R                  l$        UR                  nURJ                  (       a  X4RL                  l$        OX4l$        [O        5       nURQ                  S5        UR;                  U5        UUl        [=        [R        5      nUbV  [T         HL  n U S
   n!U!U;  d  M  U!URV                  ;   a  URV                  U!	 [        UU!5      (       d  M@  [Y        UU!5        MN     GOUR                  n[=        [R        5      nU H  nURQ                  S5        [[        URV                  R                  5       5       HA  n!U!UR@                  ;  d  M  URV                  U!	 [        UU!5      (       d  M5  [Y        UU!5        MC     UR                  n[T         Hc  n U S
   n!U!U;  d  M  U![[        URV                  R                  5       5      ;   a  URV                  U!	 [        UU!5      (       d  MW  [Y        UU!5        Me     M     [\         HT  n U S
   n!U!S:X  a  M  U!U;  d  M  U!URV                  ;   a  URV                  U!	 [        UU!5      (       d  MH  [Y        UU!5        MV     [_        5       n"U Ra                  U"USS9  U"Rc                  S5        U R                  U"USS9  gs  snf ! [         a     GNkf = f! [         a     GNjf = f! [          a    [        U5      S	:  a  US
   S;   a  SnUR'                  S5      n[)        U[*        5      (       d   U5       eUR'                  S5      nUS:X  a  UR,                  OUR.                  nUU-  nUS:X  a  UOUnUU   R                  nUUSS& [        U5      S	:  a  US
   S;   a  M  [        U5      S
:  d   U5       eUR'                  S5         GNf = f)zConverts this object from CFF format to CFF2 format. This conversion
is done 'in-place'. The conversion cannot be reversed.

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   FDArrayNSubrsPrivatereturnendcharF      )callsubr	callgsubrTr0   charset)isCFF2)2topDictIndexhasattrr)   CharStringsGlobalSubrsgetattrr+   r*   keysgetItemAndSelector	decompileprogramlenindex
ValueErrorminr   r   executepop
isinstanceint	localBias
globalBiasremove_unused_subroutinesmajorotFontgetGlyphOrderr   appendr
   r   ordercff2GetGlyphOrderr   stringsfdArraycharStringsAreIndexedcharStringsIndexr	   setCFF2r   r   rawDictdelattrlistr   r   compileseek)#cffrJ   topDictrP   charStringsglobalSubrsfd
localSubrs	glyphNamecsfdIndexsubrssubrr=   ijremoveUnusedSubrsnominalWidthXErrorthisLocalSubrs	extractor
subrNumberopbiassubrSetsubrProgramrN   topDictDataitemprivateDictopOrderfontDictprivateOpOrderentrykeyfiles#                                      r   _convertCFFToCFF2rx   !   s    q!G!()!<!<goo$G%%K//K  5<<GbWb	)G< w	**ww/P/P __""#  !%%'	!44Y?
 (
 +DllGL AMM(+MM), $&GCIK   , /1 %%'	!44Y?** "  7I.. "5 	 %	
		b!( 7wr{i/KKMY (\ %%' CI

00t%67K  4  ! #C!nGw	""oo*+GGM 1G7I&&$0N2/%11&-#)),,3:((0"):x &#$9:"-Ahn,k111'//4{C00S1 . //#$9:HT"H,,1134hnn, ((-x--#.	 5 #**K-Ahn,d;#6#6#;#;#=>>'//4{C00S1 .  ( "Ah )ggoo%OOC(w$$% "6 9DKKfTK*IIaLMM$tM,c 	=(    > & 	
 g,!#
6O(O$(!$[[^
!*c22>J>2[[^.0J.>y**IDXDXd"
,.*,<.+%j199) g,!#
6O(O w<1$-g-$KKN#	sC   !VV.VV-
VV
V*)V*-B;Z*'ZZc                 h    U S   R                   nU S	 [        X5        [        S5      =o S'   Xl         g )NzCFF CFF2)rY   rx   r   )fontrY   tables      r   r   r      s6    
v,

CVc #F++ELIr   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.)r   r   z-qz--quietzTurn verbosity off.)configLoggerDEBUGERRORINFO)levelzNo such file '{}'Tz-CFF2)	overWritesuffix)recalcTimestamprecalcBBoxesz	Saving %s)sysargvargparseArgumentParseradd_argumentadd_mutually_exclusive_group
parse_args	fontToolsr   verbosequietosr   pathisfileerrorformatoutputr   r   r   r   loginfosave)argsr   r   parserloggingGroupoptionsr   r   infileoutfiler{   s              r   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'B^^  &*B*BQVWDTHH 	IIgr   __main__r/   r   ) __doc__fontTools.ttLibr   r   fontTools.misc.cliToolsr   fontTools.misc.psCharStringsr   fontTools.cffLibr   r   r	   r
   r   r   r   r   ior   logging__all__	getLoggerr   	Exceptionr   rx   r   r   r#   r   exitr   r   r   r   <module>r      s     , 6 9	 	 	  v
& *+Y -D@F zHHT#((12,  r   