
    rbi	                      0   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j        d          Zd Zdd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CFF2 to CFF converter.    )TTFontnewTable)makeOutputFileName)T2StackUseExtractor)TopDictIndex
buildOrderbuildDefaultstopDictOperatorsprivateDictOperatorsFDSelect   )desubroutinizeCharString)specializeProgram)optimizeWidths)defaultdictNconvertCFF2ToCFFmainzfontTools.cffLibc                 	   d| _         t          d          }| j        D ]}d|_        |                    |           || _        |d         }t          |d          rt          d          t          t                    }||_	        |j
                                        D ].}||vr(|j
        |= t          ||          rt          ||           /|j        }|j        }t          |d          s2t                      x}	|_        dgt!          |j                  z  |	_        t'          t(                    }
t          t(                    }|D ]}|                    d           |j        }||_	        |D ]}||j
        vr||
v r|
|         |j
        |<    |j
                                        D ].}||vr(|j
        |= t          ||          rt          ||           /|                                D ]0}|                                 |j                            d           1| j        gd	 |D             z   D ]!}|D ]}|j                            d
           "t7          t8                    }|d         j        }|                                D ]I}|                    |          \  }}|dk    rd}||                             ||         d                    J|                                D ]2\  }}tA          |          \  }}||         j        }||_!        ||_"        3|                                D ]k}|                    |          \  }}|dk    rd}||         j        }||         d         }||j!        k    r#|j        #                    d||j"        z
             l|                                D ]}|                    |          \  }}|d}||         j        }tI          tK          |dg           | j        |          }|&                    |          }|dk    r(tO          |           tQ          |j                  |_        | )                                 d tU          |j+                  D             d tY          t!          |j+                            D             |_+        fd|j                                        D             |_        d|_-        dS )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endcharc                 :    g | ]}t          |j        d g           S )Subrs)getattrPrivate).0fds     j/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/fontTools/cffLib/CFF2ToCFF.py
<listcomp>z%_convertCFF2ToCFF.<locals>.<listcomp>U   s3     ) ) )-/
GR(() ) )    returnhmtxr   )private0   c                 h    i | ]/\  }}||r%d t          |                              d          z   nd0S cid   z.notdefstrzfill)r   nnames      r   
<dictcomp>z%_convertCFF2ToCFF.<locals>.<dictcomp>   sM       At 	!:us1vv||A&&  r   c                 `    g | ]+}|r%d t          |                              d          z   nd,S r%   r(   )r   r+   s     r   r   z%_convertCFF2ToCFF.<locals>.<listcomp>   sD       8913AQ)  r   c                 (    i | ]\  }}|         |S  r0   )r   r,   vmappings      r   r-   z%_convertCFF2ToCFF.<locals>.<dictcomp>   s0       $T1q  r   )AdobeIdentityr   ).majorr   topDictIndexcff2GetGlyphOrderappendhasattr
ValueErrorr   r
   orderrawDictkeysdelattrCharStringsFDArrayr   lencharStringsgidArrayr	   r   setCFF2r   values	decompileprogramGlobalSubrsr   listmetricsgetItemAndSelectoritemsr   defaultWidthXnominalWidthXinsertr   r   executer   r   remove_unused_subroutines	enumeratecharsetrangeROS)cffotFonttopDictDataitemtopDictopOrderkeyrB   fdArrayfdSelectdefaultsr;   r   privateDictcssubrSetswidthsrJ   	glyphNamefdIndex	widthListbestDefaultbestNominalr"   width	extractorstackUser2   s                              @r   _convertCFF2ToCFFrl      s{    CIt$$K  ! !!%4    "C!nGw
## RPQQQ)**GGM##%% & &g$w$$ &%%%%KoG7J'' ?&.jj07#C#k&=">">>122H+,,E . .


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

)$$$$_% ) )3:) ) )  ( (  	( 	(BJh''''	( FVn$G %%'' 6 6	!44Y??Gd??Gwwy1!45555$llnn , ,#1)#<#< ['"* + + %%'' @ @	!44Y??Gd??G'"*	"1%G)))Ja)>!>??? !%%'' 7 7	!44Y??G?G'"*'GWb))3?G
 
 
	 $$R((b==$R(((*2:66BJ !!###  11  G =B3wCWCW=X=X  GO   (3(?(E(E(G(G  K +GKKKr   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|_        d S d S d S d S )NCFF2z)Input font does not contain a CFF2 table.zCFF postg       @g      @)r:   rV   rl   r   
formatType)fontrm   rV   tablerp   s        r   r   r      s    TDEEE
v,
Cc4   V#F+++EDLEI "6T>>F|?c!!!DOOO	" ">> "!r   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           |                    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+          |
           |j        r~dd-lm} dd.lm} t6                              d/            |            }|
                    |           |                    d           t'          |dd,          }
 ||
|j        0           t6                               d1|	           |
                    |	           dS )2z%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).)rw   defaultrx   z--no-recalc-timestamprecalc_timestampstore_falsez:Don't set the output font's timestamp to the current time.)destactionrx   z--remove-overlaps
store_truez@Merge overlapping contours and components. Requires skia-pathops)r}   rx   z--ignore-overlap-errorszCDon't crash if the remove-overlaps operation fails for some glyphs.F)requiredz-vz	--verbosezRun more verbosely.z-qz--quietzTurn verbosity off.)configLoggerDEBUGERRORINFO)levelzNo such file '{}'Tz-CFF)	overWritesuffix)recalcTimestamprecalcBBoxes)removeOverlaps)BytesIOzRemoving overlaps)ignoreErrorsz	Saving %s)!sysargvargparseArgumentParseradd_argumentadd_mutually_exclusive_group
parse_args	fontToolsr   verbosequietosrv   pathisfileerrorformatoutputr   r   rz   r   remove_overlapsfontTools.ttLib.removeOverlapsr   ior   logdebugsaveseekignore_overlap_errorsinfo)argsr   r   parserloggingGroupoptionsr   r   infileoutfilerr   r   r   streams                 r   r   r      sQ   |


x|OOO$$$> %  F +K     B     I	     O    
 !R    
 666FFLk,5J     i3H     %%G&&&&&&L!/Sww'-/SwwV    III]F7>>&!! 9(//77888 ~	6T&AAAA^  &'*BQVWWWDT 
AAAAAA		%&&&		&Afe%HHH 6	
 	
 	
 	

 HH   	IIgr   __main__)N)"__doc__fontTools.ttLibr   r   fontTools.misc.cliToolsr   fontTools.misc.psCharStringsr   fontTools.cffLibr   r   r	   r
   r   r   
transformsr   specializerr   ri   r   collectionsr   logging__all__	getLoggerr   rl   r   r   __name__r   exitr   r0   r   r   <module>r      s     , , , , , , , , 6 6 6 6 6 6 < < < < < <                1 0 0 0 0 0 * * * * * * ! ! ! ! ! ! # # # # # #  v
& g*++u+ u+ u+p /3 " " " " " Y Y Y Yx zJJJCHTT#(122,      r   