
    Ph.                         d dl mZ d dlmZmZmZ ddlmZ d dlZd dl	m
Z
 dZ G d d	e
      Z G d
 dej                        Zy)    )sstruct)bytechrbyteordstrjoin   )DefaultTableN)Mappingz>
	>   # big endian!
	version:	H
	numRecords:	H
	recordSize:	l
c                   *    e Zd Zd Zd Zd Zd Zd Zy)_GlyphnamedListc                 2    || _         t        |      | _        y N)_arraydict_map)selfreverseGlyphOrderdatas      jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\fontTools/ttLib/tables/_h_d_m_x.py__init__z_GlyphnamedList.__init__   s    *+	    c                 :    | j                   | j                  |      S r   )r   r   )r   ks     r   __getitem__z_GlyphnamedList.__getitem__   s    {{499Q<((r   c                 ,    t        | j                        S r   )lenr   r   s    r   __len__z_GlyphnamedList.__len__   s    499~r   c                 ,    t        | j                        S r   )iterr   r   s    r   __iter__z_GlyphnamedList.__iter__   s    DIIr   c                 6    | j                   j                         S r   )r   keysr   s    r   r"   z_GlyphnamedList.keys   s    yy~~r   N)__name__
__module____qualname__r   r   r   r    r"    r   r   r   r      s    ,) r   r   c                   (    e Zd ZdZd Zd Zd Zd Zy)table__h_d_m_xzHorizontal Device Metrics table

    The ``hdmx`` table is an optional table that stores advance widths for
    glyph outlines at specified pixel sizes.

    See also https://learn.microsoft.com/en-us/typography/opentype/spec/hdmx
    c                    |d   j                   }|j                         }t        j                  t        ||       \  }}i | _        t        | j                        D ]p  }t        |d         }t        |d         }t        |j                         t        j                  d|dd|z                }	|	| j
                  |<   || j                  d  }r t        |      dk(  sJ d       y )Nmaxpr   r   B   ztoo much hdmx data)	numGlyphsgetGlyphOrderr   unpack2hdmxHeaderFormathdmxrange
numRecordsr   r   getReverseGlyphMaparray
recordSizer   )
r   r   ttFontr-   
glyphOrderdummyippemmaxSizewidthss
             r   	decompileztable__h_d_m_x.decompile*   s    6N,,	))+
oo&6dCt	t'A47#Dd1g&G$))+U[[d1q9}>U-VF %DIIdO)*D ( 4yA~333~r   c                 .   d| _         |d   j                  }|j                         }dd|z   dz   dz  z  | _        | j                  dz
  |z
  dz  }t	        | j
                        | _        t        j                  t        |       }t        | j
                  j                               }|D ]j  \  }}|t        |      z   t        t        |j                                     z   }t        t	        |            D ]  }	|||	      }
|t        |
      z   } ||z   }l |S )Nr   r*      r,          )versionr-   r.   r6   r   r1   r3   r   packr0   sorteditemsr   maxvaluesr2   )r   r7   r-   r8   padr   rF   r;   r=   glyphIDwidths              r   compileztable__h_d_m_x.compile9   s    6N,,	))+
I 1a78"Y.%7dii.||,d3tyy()!LD&'$-''#fmmo2F*GGD Z1z'23gen, 2 #:D " r   c                 d   |j                  d       |j                          t        | j                  j	                               }g }d}|D ]'  }| j                  |   }|j                  |       |dz   }) |j                         d d  }|j                          t        t        t        |            }	dt        |	      z   dz   |z   dz   }|j                  |dt        |      z   z         |j                          |j                          |D ]  }
g }|D ]%  }| j                  |   }|j                  ||
          ' d|
v r d	j                  |
j                  d            }
|j                  ||
ft        |      z   z         |j                           |j!                  d       |j                          y )
NhdmxData z%4d%zs:z ;)r;   ;z\x3b)begintagnewlinerE   r1   r"   appendr.   sortrG   mapr   reprwritetuplejoinsplitendtag)r   writerr7   ppemsrecordsformatr;   r=   
glyphNames
maxNameLen	glyphNamerows               r   toXMLztable__h_d_m_x.toXMLJ   su   
#tyy~~'(DYYt_FNN6"e^F  ))+A.
S*-.
tJ''$.7$>Vy5<789#IC4

6),-  i#LL)=>	LLI<%*#<=>NN $ 	j!r   c           	      @   |dk7  ry t        |      }|j                  d      }|d   j                         }|d   dk(  sJ d       t        t        t        |dd              }i x| _        }|D ]  }	i ||	<   	 d |dd  D        }|D ]  }
|
s|
d   d   d	k(  sJ d       |
d   d d }d
|v rddlm}  |d|z   dz         }t        t        t        |
dd              }
t        |
      t        |      k(  sJ d       t        t        |            D ]  }|
|   |||      |<     y )NrN   rQ   r   zppem:zillegal hdmx formatr   c              3   <   K   | ]  }|j                           y wr   )r[   ).0lines     r   	<genexpr>z)table__h_d_m_x.fromXML.<locals>.<genexpr>r   s     4)$)s   :\)safeEvalz""")
r   r[   listrV   intr1   fontTools.misc.textToolsrn   r   r2   )r   nameattrscontentr7   linestopRowr^   r1   r;   ri   rc   rn   r:   s                 r   fromXMLztable__h_d_m_x.fromXMLg   sI   :'"c"q!ayG#:%::#SfQRj)*	DDDJ 4%)4D72;#%<'<<%QIy =$UY%6%>?	Cab*+Dt9E
*A,AA*3u:&,0GU1Xy) ' r   N)r#   r$   r%   __doc__r>   rL   re   rw   r&   r   r   r(   r(   !   s    4":4r   r(   )fontTools.miscr   rq   r   r   r   rO   r   r5   collections.abcr	   r0   r   r(   r&   r   r   <module>r{      s?    " > >   #  g  $^4\.. ^4r   