
    Mcg'                         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mZmZ ddlmZ ddlZdd	gZ ej*                  d
      Z G d de      Zd Zd ZddZedk(  r*ddlZ ej<                   eej>                  dd              yy)zCFF to CFF2 converter.    )TTFontnewTable)makeOutputFileName)T2WidthExtractor)TopDictIndexFDArrayIndexFontDict
buildOrdertopDictOperatorsprivateDictOperatorstopDictOperators2privateDictOperators2)BytesIONconvertCFFToCFF2mainzfontTools.cffLibc                       e Zd Zd Zd Zy)_NominalWidthUsedErrorc                     | N selfothers     U/var/www/html/bid-api/venv/lib/python3.12/site-packages/fontTools/cffLib/CFFToCFF2.py__add__z_NominalWidthUsedError.__add__       
    c                     | r   r   r   s     r   __radd__z_NominalWidthUsedError.__radd__   r   r   N)__name__
__module____qualname__r   r   r   r   r   r   r      s    r   r   c                 4   | j                   d   }t        |d      r|j                  nd}|j                  }| j                  }|r%|D cg c]  }t        |j                  dg        c}n:t        |d      r-t        |j                  d      r|j                  j                  gng }|j                         D ]&  }|j                  |      \  }	}
|	j                          ( |g|z   D ]U  }|D ]N  }|j                  }t        |      x}}	 |j                  d      }	 |j                  d      }g |t        ||      d P W d}t!               }|j                         D ]  }|j                  |      \  }	}
|	j                  }|
||
   n$t        |d      rt        |j                  dg       ng }t#        |||d      }	 |j%                  |	       |sr|d   dk(  s{|j'                           |r| j1                          d	| _        | j4                  j6                  }t9        d|      }| j                   D ]  }|j;                  |        || _         |d   }t        |d      r|j                  }nd}t=        t>              }||_         ||_!        t        |d      stE               x}|_        d|_#        |j                  |_        ||j                  _$        |j                  }|jJ                  r||jL                  _$        n||_$        tO               }|jQ                  d       |j;                  |       ||_        t=        tR              }|FtT        D ]@  } | d
   }!|!|vs|!|jV                  v r|jV                  |!= t        ||!      s5tY        ||!       B n|j                  }t=        tR              }|D ]  }|jQ                  d       t[        |jV                  j                               D ]7  }!|!|j@                  vs|jV                  |!= t        ||!      s,tY        ||!       9 |j                  }tT        D ]W  } | d
   }!|!|vs|!t[        |jV                  j                               v r|jV                  |!= t        ||!      sLtY        ||!       Y  t\        D ]F  } | d
   }!|!dk(  r|!|vs|!|jV                  v r|jV                  |!= t        ||!      s;tY        ||!       H t_               }"| ja                  |"|d       |"jc                  d       | j                  |"|d       yc c}w # t        $ r Y w xY w# t        $ r Y w xY w# t         $ r t        |      d	k\  r|d
   dv rd}|j'                  d      }t)        |t*              sJ |       |j'                  d      }|dk(  r|j,                  n|j.                  }||z  }|dk(  r|n|}||   j                  }||dd t        |      d	k\  r|d
   dv rt        |      d
k\  sJ |       |j'                  d       Y Pw xY w)a  Converts 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	callgsubrTr+   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)#cffrE   topDictrK   charStringsglobalSubrsfd
localSubrs	glyphNamecsfdIndexsubrssubrr8   ijremoveUnusedSubrsnominalWidthXErrorthisLocalSubrs	extractor
subrNumberopbiassubrSetsubrProgramrI   topDictDataitemprivateDictopOrderfontDictprivateOpOrderentrykeyfiles#                                      r   _convertCFFToCFF2rs   !   s    q!G!()!<goo$G%%K//K  5<<GbWb	)G< w	*ww/P __""#  !%%'	!44Y?G
 (
 +DllGL AMM(+MM), $&GC1IK   , /1 %%'	!44Y?G** " w 7I. "5 	 %	
		b!( wr{i/KKMY (\ %%' CI

00t%67K  4  ! #C!nGw	"oo*+GGM 1G7I&$0N2'/%11&-#)),,3:K((0")K:x &#$9:"-Ahn,k111'//4{C0S1 . //#$9:HT"H,,1134hnn, ((-x-#.	 5 #**K-Ahn,d;#6#6#;#;#=>>'//4{C0S1 .  ( "Ah )ggoo%OOC(w$% "6 9DKKfTK*IIaLMM$tM,c 	=(    > & 	
 g,!#
6O(O$(!$[[^
!*c2>J>2[[^.0J.>y**IDXDXd"
,.*,<.+%j199) g,!#
6O(O w<1$-g-$KKN#	sC   TTT/5T?	T,+T,/	T<;T<?B-X-&XXc                 n    | d   j                   }| d= t        ||        t        d      x}| d<   ||_         y )NzCFF CFF2)rT   rs   r   )fontrT   tables      r   r   r      s<    
v,

CVc4 #F++EDLEIr   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.)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osrz   pathisfileerrorformatoutputr   r   r~   r   loginfosave)argsr   r   parserloggingGroupoptionsr   r   infileoutfilerv   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   rs   r   r   r    r   exitr   r   r   r   <module>r      s     , 6 9	 	 	  v
& g*+Y -D@F zCHHT#((12,  r   