
    ]Mh                        d Z ddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
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)TopDictIndex
buildOrderbuildDefaultstopDictOperatorsprivateDictOperators   )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          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	           "t/          t0                    }|d
         j        }|                                D ]I}|                    |          \  }}|dk    rd}||                             ||         d                    J|                                D ]2\  }}t9          |          \  }}||         j        }||_        ||_        3|                                D ]k}|                    |          \  }}|dk    rd}||         j        }||         d         }||j        k    r#|j                            d||j        z
             ld tA          |j!                  D             d tE          tG          |j!                            D             |_!        fd|j$                                        D             |_$        dS )al  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 CFF 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.Fendcharc                 :    g | ]}t          |j        d g           S )Subrs)getattrPrivate).0fds     Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/cffLib/CFF2ToCFF.py
<listcomp>z%_convertCFF2ToCFF.<locals>.<listcomp>K   s3     ) ) )-/
GR(() ) )    returnhmtxc                 B    i | ]\  }}||rd t          |          z   ndS cidz.notdefstr)r   nnames      r   
<dictcomp>z%_convertCFF2ToCFF.<locals>.<dictcomp>g   sA       At 	1us1vv~~	  r   c                 :    g | ]}|rd t          |          z   ndS r   r!   )r   r#   s     r   r   z%_convertCFF2ToCFF.<locals>.<listcomp>k   s8       /0!*A  r   c                 (    i | ]\  }}|         |S  r(   )r   r$   vmappings      r   r%   z%_convertCFF2ToCFF.<locals>.<dictcomp>n   s0       $T1q  r   )%majorr   topDictIndexcff2GetGlyphOrderappendhasattr
ValueErrorr   r	   orderrawDictkeysdelattrFDArrayCharStringsr   r
   setCFF2r   values	decompileprogramGlobalSubrsr   listmetricsgetItemAndSelectoritemsr   defaultWidthXnominalWidthXinsert	enumeratecharsetrangelencharStrings)cffotFonttopDictDataitemtopDictopOrderkeyfdArrayrG   defaultsr1   r   privateDictcssubrSetswidthsr=   	glyphNamefdIndex	widthListbestDefaultbestNominalprivatewidthr*   s                           @r   _convertCFF2ToCFFr\      sq    CIt$$K  ! !!%4    "C!nGw
## RPQQQ)**GGM##%% & &g$w$$ &%%%oG%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)>!>???  11  G 49#go:N:N4O4O  GO   (3(?(E(E(G(G  Kr   T)updatePostTablec                    | 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CFF postg       @g      @)rH   r\   r   
formatType)fontr]   rH   tabler`   s        r   r   r   w   s    
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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).)rg   defaultrh   z--no-recalc-timestamprecalc_timestampstore_falsez:Don't set the output font's timestamp to the current time.)destactionrh   F)requiredz-vz	--verbose
store_truezRun more verbosely.)rm   rh   z-qz--quietzTurn verbosity off.)configLoggerDEBUGERRORINFO)levelzNo such file '{}'Tz-CFF)	overWritesuffix)recalcTimestamprecalcBBoxesz	Saving %s)sysargvargparseArgumentParseradd_argumentadd_mutually_exclusive_group
parse_args	fontToolsrp   verbosequietosrf   pathisfileerrorformatoutputr   r   rj   r   loginfosave)argsry   r{   parserloggingGroupoptionsrp   r   infileoutfilerb   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&AAAA^  &'*BQVWWWDTHH   	IIgr   __main__)N)__doc__fontTools.ttLibr   r   fontTools.misc.cliToolsr   fontTools.cffLibr   r   r   r	   r
   r[   r   collectionsr   logging__all__	getLoggerr   r\   r   r   __name__ry   exitrz   r(   r   r   <module>r      s_     , , , , , , , , 6 6 6 6 6 6              " ! ! ! ! ! # # # # # #  v
& g*++Y Y Y@ /3 " " " " "@ @ @ @F zJJJCHTT#(122,      r   