
    dX                        d dl Z d dlZdZg dZdZdZdZdZddZ G d	 d
          Z	ddZ
ddZedk    r' ej                    Z e	dde          Z ee                                            ee                    d                      ee                    d                      ee                                            ee                    d                      ee                    d                      e e                        ee                    d          e                    d                      ee                    e                      e	d          Z ee                    d          e                    de                      ej        ede          Ze                                  ej        edej                  Ze                                  e	ed                                                   Ze                    e           e                    e            ej                     dS dS )     Nz0.9)NORMALROMANBOLDITALIC
nametofontFontfamiliesnamesnormalromanbolditalicc                 &    t          | d|          S )zFGiven the name of a tk named font, returns a Font representation.
    T)nameexistsroot)r   )r   r   s     lib/python3.11/tkinter/font.pyr   r      s     T$T2222    c                       e Zd ZdZ ej        d          Zd Zd Zd Z	ddZ
d	 Zd
 Zd Zd Zd Zd Zd ZddZd Zd ZeZddZd ZdS )r   a  Represents a named font.

    Constructor options are:

    font -- font specifier (name, system font, or (family, size, style)-tuple)
    name -- name to use for this font configuration (defaults to a unique name)
    exists -- does a named font by this name already exist?
       Creates a new named font if False, points to the existing font if True.
       Raises _tkinter.TclError if the assertion is false.

       the following are ignored if font is specified:

    family -- font 'family', e.g. Courier, Times, Helvetica
    size -- font size in points
    weight -- font thickness: NORMAL, BOLD
    slant -- font slant: ROMAN, ITALIC
    underline -- font underlining: false (0), true (1)
    overstrike -- font strikeout: false (0), true (1)

       c                     g }|                                 D ]?\  }}|                    d|z              |                    t          |                     @t          |          S N-)itemsappendstrtuple)selfkwoptionskvs        r   _setz	Font._set2   s_    HHJJ 	# 	#DAqNN3q5!!!NN3q66""""W~~r   c                 ^    g }|D ]}|                     d|z              t          |          S r   )r   r   )r   argsr    r!   s       r   _getz	Font._get9   s;     	" 	"ANN3q5!!!!W~~r   c                     i }t          dt          |          d          D ]}||dz            |||         dd          <   |S )Nr      r   )rangelen)r   r%   r    is       r   _mkdictzFont._mkdict?   sN    q#d))Q'' 	- 	-A#'!9GDGABBK  r   NFc                    |t          j        d          }t          |d|          }|r+|                    |                    dd|                    }n|                     |          }|s$dt          t          | j                            z   }|| _	        |rwd| _
        | j	        |                    |                    dd                    vr(t           j                            d| j	        d          |r |j        dd	| j	        g|R   n |j        dd
| j	        g|R   d| _
        || _        |j        | _        |j        | _        d S )Nzuse fonttkfontactualFr
   znamed font z does not already exist	configurecreateT)tkinter_get_default_rootgetattr	splitlistcallr#   r   nextcounterr   delete_font_tkinterTclError_tk_split_call)r   r   r/   r   r   r    r.   s          r   __init__zFont.__init__E   se   <,Z88DT4&& 	&<<$ ? ?@@DD99W%%D 	4CT\ 2 2333D	 	$$DyRWWVW-E-E F FFF&///>BiiiIK K K  ?TY>>>>> BGFHdi7$7777#Dlg


r   c                     | j         S N)r   r   s    r   __str__zFont.__str__d   s
    yr   c                 L    d| j         j         d| j         j         d| j        dS )N<.z object >)	__class__
__module____qualname__r   rC   s    r   __repr__zFont.__repr__g   sB    )4>, ) )t~/J ) ))) ) ) 	)r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S rB   )
isinstancer   NotImplementedr   r=   )r   others     r   __eq__zFont.__eq__k   s7    %&& 	"!!yEJ&@48uy+@@r   c                 ,    |                      |          S rB   )cget)r   keys     r   __getitem__zFont.__getitem__p   s    yy~~r   c                 $     | j         di ||i d S )N )r1   )r   rT   values      r   __setitem__zFont.__setitem__s   s$    &&#u&&&&&r   c                 t    	 | j         r|                     dd| j                   d S d S # t          $ r Y d S w xY w)Nr/   delete)r:   r?   r   	ExceptionrC   s    r   __del__zFont.__del__v   s\    	 8

68TY777778 8 	 	 	DD	s   #) 
77c                 J    t          | j        fi |                                 S )z*Return a distinct copy of the current font)r   r=   r0   rC   s    r   copyz	Font.copy}   s"    DH.....r   c           	          d}|rd|f}|r|d|z   fz   } | j         dd| j        g|R  S |                     |                      | j         dd| j        g|R                      S )zReturn actual font attributesrW   
-displayofr   r/   r0   )r?   r   r,   r>   )r   option	displayofr%   s       r   r0   zFont.actual   s     	- ),D 	M3<**D4:fh	ADAAAA<<JDJvxJTJJJKKM M Mr   c                 B    |                      dd| j        d|z             S )zGet font attributer/   configr   )r?   r   )r   rb   s     r   rS   z	Font.cget   s     zz&(DIs6zBBBr   c           	          |r* | j         dd| j        g|                     |          R   dS |                     |                     |                      dd| j                                      S )zModify font attributesr/   re   N)r?   r   r#   r,   r>   )r   r    s     r   re   zFont.config   s     	FDJvx '99W%%' ' ' ' ' ' <<DJJvxCCDDF F Fr   c                 p    |f}|rd||f}| j                              | j        dd| j        g|R            S )zReturn text widthra   r/   measure)r=   getintr?   r   )r   textrc   r%   s       r   rh   zFont.measure   sK    w 	3 )T2Dxztz&)TYNNNNOOOr   c                    d}|                     dd          }|rd|f}|rE||                     |          z   }| j                             | j        dd| j        g|R            S |                      | j        dd| j        g|R            }i }t          dt          |          d          D ]6}| j                            ||d	z                      |||         d	d         <   7|S )
z}Return font metrics.

        For best performance, create a dummy widget
        using this font before calling this method.rW   rc   Nra   r/   metricsr   r(   r   )	popr&   r=   ri   r?   r   r>   r)   r*   )r   r    r   r%   rc   resr+   s          r   rl   zFont.metrics   s   
 FF;--	 	- ),D 		$))G,,,D8??
69di?$???A A A ++jdjDIMMMMNNCG1c#hh** @ @&*hooc!A#h&?&?Aqrr
##Nr   )NNNFNNrB   )__name__rJ   rK   __doc__	itertoolscountr9   r#   r&   r,   r@   rD   rL   rQ   rU   rY   r]   r_   r0   rS   re   r1   rh   rl   rW   r   r   r   r      sH        * ioa  G         >  ) ) )A A A
  ' ' '  / / /
M 
M 
M 
MC C CF F F IP P P P    r   r   c                     | t          j        d          } d}|rd|f}| j                             | j        j        ddg|R            S )zGet font families (as a tuple)Nzuse font.families()rW   ra   r/   r	   r3   r4   r.   r6   r7   )r   rc   r%   s      r   r	   r	      s]    |()>??D )i(7\TW\&*DtDDDEEEr   c                     | t          j        d          } | j                            | j                            dd                    S )z'Get names of defined fonts (as a tuple)Nzuse font.names()r/   r
   ru   )r   s    r   r
   r
      s>    |();<<7TW\\&'::;;;r   __main__times   )familysizeweightrz   r|   hello	linespace)rc   )Courier   r   )r/   zHello, world)rj   r/   zQuit!)rj   commandr/   )r|   rB   ro   )rr   r3   __version____all__r   r   r   r   r   r   r	   r
   rp   Tkr   fprintr0   re   rS   rh   rl   LabelwpackButtondestroyr_   fbmainlooprW   r   r   <module>r      s       6 6 6 
		3 3 3 3[ [ [ [ [ [ [ [|F F F F< < < < z7:<<D 	G"V444A	E!((**	E!((8

	E!((8

	E!((**	E!&&

	E!&&

	E%%''NNN	E!))G

aii44555	E!))d)
#
#$$$)***A	E!))G

aiitiDDEEEda888AFFHHHt'4<@@@AFFHHH	1V9				"	"	$	$BIITIHH"HGG r   