
    ]Mh'                     *   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                              dS dS )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dS )_NominalWidthUsedErrorc                     | N selfothers     Z/var/www/html/test/jupyter/venv/lib/python3.11/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      s2              r   r   c                    | j         d         }t          |d          r|j        nd}|j        }| j        }|rd |D             n3t          |d          r"t          |j        d          r|j        j        gng }|                                D ].}|                    |          \  }}	|	                                 /|g|z   D ]}
|
D ]}}|j
        }t          |          x}}	 |                    d          }n# t          $ r Y nw xY w	 |                    d          }n# t          $ r Y nw xY wg |t          ||          d<   ~d	}t                      }|                                D ]}|                    |          \  }}	|j
        }|	||	         n't          |d          rt!          |j        dg           ng }t#          |||d          }	 |                    |           n# t          $ r t          |          d
k    r|d         dv rd}|                    d          }t)          |t*                    s
J |            |                    d          }|dk    r|j        n|j        }||z  }|dk    r|n|}||         j
        }||dd<   t          |          d
k    r
|d         dv t          |          dk    s
J |            |                    d           Y nw xY w|r |d         dk    r|                                 |r|                                  d
| _        | j        j        }t9          d|          }| j         D ]}|                    |           || _         |d         }t          |d          r|j        }nd}t=          t>                    }||_         ||_!        t          |d          stE                      x}|_        d|_#        |j        |_        ||j        _$        |j        }|j%        r||j&        _$        n||_$        tO                      }|(                    d           |                    |           ||_        t=          tR                    }|GtT          D ]?}|d         } | |vr1| |j+        v r|j+        | = t          ||           rtY          ||            @n|j        }t=          tR                    }|D ]}|(                    d           t[          |j+                                                  D ]3} | |j         vr(|j+        | = t          ||           rtY          ||            4|j        }tT          D ]^}|d         } | |vrP| t[          |j+                                                  v r|j+        | = t          ||           rtY          ||            _t\          D ]F}|d         } | dk    r| |vr1| |j+        v r|j+        | = t          ||           rtY          ||            Gt_                      }!| 0                    |!|d           |!1                    d           | 	                    |!|d           dS )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   FDArrayNc                 :    g | ]}t          |j        d g           S )Subrs)getattrPrivate).0fds     r   
<listcomp>z%_convertCFFToCFF2.<locals>.<listcomp>/   s&    <<<bWb	)	)<<<r   r(   r&   returnendcharF      )callsubr	callgsubrTr0   charset)isCFF2)2topDictIndexhasattrr$   CharStringsGlobalSubrsr(   r&   keysgetItemAndSelector	decompileprogramlenindex
ValueErrorminr   r'   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)"cffrI   topDictrO   charStringsglobalSubrs
localSubrs	glyphNamecsfdIndexsubrssubrr<   ijremoveUnusedSubrsnominalWidthXErrorthisLocalSubrs	extractor
subrNumberopbiassubrSetsubrProgramrM   topDictDataitemprivateDictopOrderfontDictprivateOpOrderentrykeyfiles"                                     r   _convertCFFToCFF2rv   !   s\    q!G!()!<!<Fgoo$G%K/K 	
<<G<<<< w	**/6w/P/PW_"##  !%%''  	!44Y??G
 + & & 	& 	&DlGLL AMM(++   MM),,   #%GC1IIKK  	& /11 %%'' , ,	!44Y??G* " w 7I.."555 	 %	
 
		b!!!!% 	 	 	
 g,,!##
6O(O(O$(!$[[^^
!*c22>>J>>>[[^^.0J.>.>y**IDXd"
,.*,<,<..+%j19) g,,!##
6O(O(O w<<1$$$g$$$KKNNNNN#	&  	wr{i//KKMMM (%%''' CI
0t%677K  ! !4    "C!nGw	"" o*++GGM 1G7I&& -2$0NN2'/%1&-#), 	*3:K(00")K::x   &#$9::"- 2 2Ahn,,k111'/4{C00 2S111 /#$9:: 	2 	2HT"""H,113344 / /hn,, (-x-- /#..."*K- 2 2Ahn,,d;#6#;#;#=#=>>>>'/4{C00 2S1112 " & &Ah )ggo%%OC(w$$ &%%% 99DKKfTK***IIaLLLMM$tM,,,,,s7   C55
DDD
D)(D)G$$C8KKc                 |    | d         j         }| d= t          ||            t          d          x}| d<   ||_         d S )NzCFF CFF2)rX   rv   r   )fontrX   tables      r   r   r      sF    
v,
CVc4   #F+++EDLEIIIr   c                    | ddl }|j        dd         } ddl}|                    dd          }|                    ddd	
           |                    ddddd           |                    dddd           |                    d          }|                    dddd           |                    dddd           |                    |           }ddlm}  ||j	        rd n
|j
        rd!nd"#           ddl}|j        }|j                            |          s(|                    d$                    |                     |j        st%          |d%d&'          n|j        }	t'          ||j        d(          }
t+          |
           t,                              d)|	           |
                    |	           dS )*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outfilery   s              r   r   r      s[   |


x|OOO$$$1 %  F +K     B     I	     666FFLk,5J     i3H     %%G&&&&&&L!/Sww'-/SwwV    III]F7>>&!! 9(//77888 ~	6T'BBBB^  &'*BQVWW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   rv   r   r   r    r   exitr   r   r   r   <module>r      s     , , , , , , , , 6 6 6 6 6 6 9 9 9 9 9 9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       v
& g*++    Y   - - -D  @ @ @ @F zJJJCHTT#(122,      r   