+
    f7i'  c                   s2   R t ^ RIHtHt ^ RIHt ^ RIHt ^ RIH	t	H
t
HtHtHtHtHtHt ^ RIHt ^ RItRR.t]P*                  ! R	4      t ! R
 R]4      tR tR tRR lt]R8X  d0   ^ RIt]P<                  ! ]! ]P>                  R,          4      4       R# R# )zCFF to CFF2 converter.)TTFontnewTable)makeOutputFileName)T2WidthExtractor)TopDictIndexFDArrayIndexFontDict
buildOrdertopDictOperatorsprivateDictOperatorstopDictOperators2privateDictOperators2)BytesIONconvertCFFToCFF2mainzfontTools.cffLibc                   s,   a  ] tR t^t o R tR tRtV tR# )_NominalWidthUsedErrorc                    V hN ZselfZother   &&A/usr/lib64/python3.14/site-packages/fontTools/cffLib/CFFToCFF2.py__add__Z_NominalWidthUsedError.__add__       
    c                r   r   r   r   r   r   __radd__Z_NominalWidthUsedError.__radd__   r   r   r   N)__name__Z
__module__Z__qualname__Z__firstlineno__r   r   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r   r      s      r   r   c                sB   V P                   ^ ,          p\        VR4      '       d   VP                  MRpVP                  pV P                  pV'       d(   V Uu. uF  p\        VP                  R. 4      NK  	  upMF\        VR4      '       d4   \        VP                  R4      '       d   VP                  P                  .M. pVP                  4        F&  pVP                  V4      w  rV	P                  4        K(  	  V.V,            FV  pV FM  pVP                  p\        V4      ;r VP                  R4      p VP                  R4      p. V\        W4      R% KO  	  KX  	  Rp\!        4       pVP                  4        F  pVP                  V4      w  rV	P                  pV
e	   Wz,          M*\        VR4      '       d   \        VP                  R. 4      M. p\#        VVV^ 4      p VP%                  V	4       V'       g   K  VR,          R8X  g   K  VP'                  4        K  	  V'       d   V P-                  4        ^V n        V P0                  P2                  p\5        RV4      pV P                    F  pVP7                  V4       K  	  VV n         V^ ,          p\        VR4      '       d   VP                  pMRp\9        \:        4      pVVn        VVn        \        VR4      '       Eg   \A        4       ;q2n        RVn!        VP                  Vn        W2P                  n"        VP                  pVPF                  '       d   W4PH                  n"        MW4n"        \K        4       pVPM                  R	4       VP7                  V4       VVn        \9        \N        4      pVe^   \P         FS  p V ^,          p!V!V9  g   K  V!VPR                  9   d   VPR                  V! \        VV!4      '       g   KG  \U        VV!4       KU  	  EM VP                  p\9        \N        4      pV F  pVPM                  R	4       \W        VPR                  P                  4       4       FC  p!V!VP<                  9  g   K  VPR                  V! \        VV!4      '       g   K7  \U        VV!4       KE  	  VP                  p\P         Fj  p V ^,          p!V!V9  g   K  V!\W        VPR                  P                  4       4      9   d   VPR                  V! \        VV!4      '       g   K^  \U        VV!4       Kl  	  EK  	  \X         F\  p V ^,          p!V!R8X  d   K  V!V9  g   K  V!VPR                  9   d   VPR                  V! \        VV!4      '       g   KP  \U        VV!4       K^  	  \[        4       p"V P]                  V"VR	R7       V"P_                  ^ 4       V P                  V"VR	R7       R# u upi   \         d     ELi ; i  \         d     ELi ; i  \          d    \        T4      ^8  d   T^,          R9   dr   R	pTP'                  ^ 4      pTP'                  ^ 4      pTR8X  d   TP(                  MTP*                  pTT,          pTR8X  d   TMTpTT,          P                  pTTR
&   K  TP'                  ^ 4        ELi ; i)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.)FDArrayNSubrsPrivateZreturnZendcharFcallsubrT:Ni    NZcharset)ZisCFF2)r   Z	callgsubri)0ZtopDictIndexZhasattrr   ZCharStringsZGlobalSubrsZgetattrr   r   ZkeysZgetItemAndSelectorZ	decompileprogramZlenZindexZ
ValueErrorZminr   r   ZexecuteZpopZ	localBiasZ
globalBiasZremove_unused_subroutinesZmajorotFontZgetGlyphOrderr   Zappendr   r
   Zordercff2GetGlyphOrderr   ZstringsfdArrayZcharStringsAreIndexedZcharStringsIndexr   ZsetCFF2r   r	   ZrawDictZdelattrZlistr   r   ZcompileZseek)#cffr    ZtopDictr"   ZcharStringsZglobalSubrsZfdZ
localSubrsZ	glyphNameZcsZfdIndexZsubrsZsubrr   ZiZjZremoveUnusedSubrsZnominalWidthXErrorZthisLocalSubrsZ	extractorZ
subrNumberZopZbiasZsubrSetZsubrProgramr!   ZtopDictDataZitemZprivateDictZopOrderZfontDictZprivateOpOrderZentryZkeyZfiles#   &&                                 r   _convertCFFToCFF2r$   !   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$(!$[[^
[[^.0J.>y**IDXDXd"
,.*,<.+%j199) KKN#	s=    W'W9W$W/WWW,+W,/B+ZZc                 sr    V R ,          P                   pV R  \        W4       \        R4      ;q R&   Wn         R# )zCFF ZCFF2N)r#   r$   r   )fontr#   Ztables   &  r   r   r      s6    
v,

CVc #F++ELIr   c                s|   V f   ^ RI pVP                  R,          p ^ RIpVP                  RRR7      pVP	                  RRRR	7       VP	                  R
RRRRR7       VP	                  RRRRR7       VP                  RR7      pVP	                  RRRRR7       VP	                  RRRRR7       VP                  V 4      p^ RIHp T! VP                  '       d   RMVP                  '       d   R MR!R"7       ^ RIpVP                  pVP                  P                  V4      '       g!   VP                  R#P!                  V4      4       VP"                  '       g   \%        VR$R%R&7      MVP"                  p	\'        WP(                  RR'7      p
\+        V
4       \,        P/                  R(V	4       V
P1                  V	4       R# ))z%Convert CFF OTF font to CFF2 OTF fontNi   NNzfonttools cffLib.CFFToCFF2zUpgrade a CFF font to CFF2.)Zdescriptioninputz	INPUT.ttfzInput OTF file with CFF table.)metavarhelpz-oz--outputz
OUTPUT.ttfz3Output instance OTF file (default: INPUT-CFF2.ttf).)r(   Zdefaultr)   z--no-recalc-timestamprecalc_timestampZstore_falsez:Don't set the output font's timestamp to the current time.)Zdestactionr)   F)Zrequiredz-vz	--verboseZ
store_truezRun more verbosely.)r+   r)   z-qz--quietzTurn verbosity off.)configLoggerZDEBUGZERRORZINFO)ZlevelzNo such file '{}'Tz-CFF2)Z	overWriteZsuffix)ZrecalcTimestampZrecalcBBoxesz	Saving %s)sysargvargparseZArgumentParserZadd_argumentZadd_mutually_exclusive_groupZ
parse_argsZ	fontToolsr,   ZverboseZquietosr'   ZpathZisfileZerrorZformatZoutputr   r    r*   r   logZinfoZsave)Zargsr-   r/   ZparserZloggingGroupZoptionsr,   r0   ZinfileZ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   Z__main__r&   r   ) Z__doc__ZfontTools.ttLibr    r   ZfontTools.misc.cliToolsr   ZfontTools.misc.psCharStringsr   ZfontTools.cffLibr   r   r   r   r   r	   r
   r   Zior   ZloggingZ__all__Z	getLoggerr1   Z	Exceptionr   r$   r   r   r   r-   Zexitr.   r   r   r   <module>r2      s     , 6 9	 	 	  v
& *+Y -D@F zHHT#((2,  r   