
    Ph2                     n    d dl mZ d dlmZ d dlmZmZ ddl	m
Z
 d dlZdZ G d d	e
j                        Zy)
    )sstruct)safeEval)ensureVersionIsLongversionToFixed   )DefaultTableNa  
		>  # big endian
		tableVersion:           L
		ascent:                 h
		descent:                h
		lineGap:                h
		advanceWidthMax:        H
		minLeftSideBearing:     h
		minRightSideBearing:    h
		xMaxExtent:             h
		caretSlopeRise:         h
		caretSlopeRun:          h
		caretOffset:            h
		reserved0:              h
		reserved1:              h
		reserved2:              h
		reserved3:              h
		metricDataFormat:       h
		numberOfHMetrics:       H
c                       e Zd ZdZg dZed        Zej                  d        Zed        Zej                  d        Zd Z	d Z
d	 Zd
 Zd Zy)table__h_h_e_aaA  Horizontal Header table

    The ``hhea`` table contains information needed during horizontal
    text layout.

    .. note::
       This converter class is kept in sync with the :class:`._v_h_e_a.table__v_h_e_a`
       table constructor.

    See also https://learn.microsoft.com/en-us/typography/opentype/spec/hhea
    )hmtxglyfCFF CFF2c                     | j                   S Nascentselfs    jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\fontTools/ttLib/tables/_h_h_e_a.pyascenderztable__h_h_e_a.ascender3   s    {{    c                     || _         y r   r   r   values     r   r   ztable__h_h_e_a.ascender7   s	    r   c                     | j                   S r   descentr   s    r   	descenderztable__h_h_e_a.descender;   s    ||r   c                     || _         y r   r   r   s     r   r   ztable__h_h_e_a.descender?   s	    r   c                 :    t        j                  t        ||        y r   )r   unpack
hheaFormat)r   datattFonts      r   	decompileztable__h_h_e_a.decompileC   s    z4.r   c                 
   |j                   rD|j                  d      s"|j                  d      s|j                  d      r| j                  |       t        | j                        | _        t        j                  t        |       S )Nr   r   r   )recalcBBoxesisLoadedrecalcfi2vetableVersionr   packr"   )r   r$   s     r   compileztable__h_h_e_a.compileF   s_    OOF#v&v&KK!$"3"34||J--r   c                 *   d|vry |d   }t        d |j                  j                         D              | _        i }d|v rx|d   }|j	                         D ]_  }||   }|j
                  dk(  r|j
                  dk  rt        |d      s|j                  |       |j                  |j                  z
  ||<   a nd|v sd|v rd|v r|d   j                  j                  d   }n|d   j                  j                  d   }|j                  }|j	                         D ]X  }||   }	|	j                  |      }
|
t        t        j                   |
d         t        j"                  |
d         z
        ||<   Z |rt%        d	      }t%        d	      }t%        d	       }|j'                         D ]>  \  }}||   \  }}||z
  |z
  }||z   }t)        ||      }t)        ||      }t        ||      }@ || _        || _        || _        y d| _        d| _        d| _        y )
Nr   c              3   &   K   | ]	  \  }}|  y wr    ).0adv_s      r   	<genexpr>z(table__h_h_e_a.recalc.<locals>.<genexpr>U   s     "P5O6335Os   r   r   xMaxr   r      inf)maxmetricsvaluesadvanceWidthMaxgetGlyphOrdernumberOfContourshasattrrecalcBoundsr5   xMincfftopDictIndexCharStrings
calcBoundsintmathceilfloorfloatitemsminminLeftSideBearingminRightSideBearing
xMaxExtent)r   r$   	hmtxTableboundsWidthDict	glyfTablenamegtopDictcharStringscsboundsrL   rM   rN   boundsWidthadvanceWidthlsbrsbextents                      r   r)   ztable__h_h_e_a.recalcP   s-   6N	""PY5F5F5M5M5O"PPVvI,,.dO%%*%%)'!V2D NN9-()% / v6!1 .,,99!< .,,99!<!--K,,. &{3%,/		&),tzz&)/DD-OD)	 / !&u"',,J%4%:%:%<!k$-dO!c"S(;6{*%();S%A"&)*=s&C# V4
 &= '9D#':D$(DO '(D#'(D$DOr   c                     t        j                  t              \  }}}|D ]F  }t        | |      }|dk(  rt	        |      }d|z  }|j                  ||       |j                          H y )Nr+   z0x%08x)r   )r   	getformatr"   getattrr*   	simpletagnewline)r   writerr$   formatstringnamesfixesrR   r   s           r   toXMLztable__h_h_e_a.toXML   sg    %,%6%6z%B"eUDD$'E~%e 5(T/NN r   c                 t    |dk(  rt        | |t        |d                y t        | |t        |d                y )Nr+   r   )setattrve2fir   )r   rR   attrscontentr$   s        r   fromXMLztable__h_h_e_a.fromXML   s7    >!D$eGn 56dHU7^45r   N)__name__
__module____qualname____doc__dependenciespropertyr   setterr   r%   r-   r)   rf   rl   r0   r   r   r
   r
   !   s    
 4L   __     /.3 j6r   r
   )fontTools.miscr   fontTools.misc.textToolsr   fontTools.misc.fixedToolsr   r*   r   ri    r   rF   r"   r
   r0   r   r   <module>rx      s3    " -  
,r6\.. r6r   