
    Ph                     h    d dl mZmZ ddlmZ d dlZ G d dej                        Z G d de      Zy)	    )	bytesjoinsafeEval   )DefaultTableNc                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
table_V_O_R_G_a  Vertical Origin table

    The ``VORG`` table contains the vertical origin of each glyph
    in a `CFF` or `CFF2` font.

    This table is structured so that you can treat it like a dictionary keyed by glyph name.

    ``ttFont['VORG'][<glyphName>]`` will return the vertical origin for any glyph.

    ``ttFont['VORG'][<glyphName>] = <value>`` will set the vertical origin for any glyph.

    See also https://learn.microsoft.com/en-us/typography/opentype/spec/vorg
    c                 n   |j                   | _         t        j                  d|d d       \  | _        | _        | _        | _        | j                  dk  sJ d       |dd  }g }g }d}t        | j                        D ]H  }t        j                  d|||dz          \  }}|dz  }|j                  |       |j                  |       J i x| _	        }	|j                         }
	 |D cg c]  }|
|   	 }}t        ||      D ]
  \  }}||	|<    y c c}w # t        $ r | j                   }t        ||      }Y Bw xY w)N>HHhH   r   z?Major version of VORG table is higher than I know how to handler   >Hh   )getGlyphNamestructunpackmajorVersionminorVersiondefaultVertOriginYnumVertOriginYMetricsrangeappendVOriginRecordsgetGlyphOrder
IndexErrormapzip)selfdatattFontvidsgidsposigidvOriginvOrig
glyphOrdernamesr   namevids                  jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\fontTools/ttLib/tables/V_O_R_G_.py	decompileztable_V_O_R_G_.decompile   s\    	 MM'48,	
#& "	ML	M"ABxt112A!==S370CDLC1HCKKKK 	 3 ')(e))+
	,045Z_E5
 UD)ID#E$K * 6 	,,,Ld+E	,s$   D #D/D D !D43D4c           	         t        | j                  j                               }t        | j                  j                               }|j	                         }	 |D cg c]  }||   	 }}t        t        ||            }t        |      | _        |j                          |D cg c]  }t        j                  d|d   |d         ! }	}t        j                  d| j                  | j                  | j                  | j                        }
|	j                  d|
       t!        |	      }|S c c}w # t
        $ r- |j	                  d      }|D cg c]  }||   	 nc c}w }}Y w xY wc c}w )NT)rebuildr   r   r   r
   )listr   valueskeysgetReverseGlyphMapKeyErrorr   lenr   sortr   packr   r   r   insertr   )r   r   vorgsr'   nameMapr(   r    vOriginTablerecdataListheaderr   s               r*   compileztable_V_O_R_G_.compile7   sN   T((//12T((--/0++-	5.34edGDMeD4 Ce,-%(Z"BNO,3FKKs1vs1v6,O##&&
 	6""# 5 	5///=G.34edGDMe4D4	5 Ps6   D. D)(D. #$E')D. .E$EE$#E$c                    |j                  d| j                         |j                          |j                  d| j                         |j                          |j                  d| j                         |j                          |j                  d| j
                         |j                          g }| j                  j                         }|D ]5  }	 |j                  |      }|j                  ||| j                  |   g       7 |j                          |D ]&  }t        |d   |d         }|j                  ||       ( y #  J dt        |      z          xY w)	Nr   valuer   r   r   z@VORG table contains a glyph name not in ttFont.getGlyphNames(): r      )	simpletagr   newliner   r   r   r   r0   
getGlyphIDstrr   r4   VOriginRecordtoXML)	r   writerr   r9   
glyphNames	glyphNamer#   entry
vOriginRecs	            r*   rG   ztable_V_O_R_G_.toXMLO   sH   t/@/@At/@/@A-T5L5LM08R8RS((--/
#I''	2 i1D1DY1O PQ $ 	!E&uQxq:JVV, "V)n%qs   EEc                 R   t        | d      si | _        |j                  | _        |dk(  r`t               }|D ]-  }t	        |t
              r|\  }}}|j                  ||||       / |j                  | j                  |j                  <   y d|v rt        | |t        |d                y y )Nr   rF   r@   )hasattrr   r   rF   
isinstancerE   fromXMLr$   rJ   setattrr   )r   r(   attrscontentr   rL   elements          r*   rP   ztable_V_O_R_G_.fromXMLh   s    t-."$D 	 ?"&J"gs+'.$eW""4@	 #
 9C8J8JD
 4 45D$w 89     c                     t        |t              r| j                  |      }|| j                  vr| j                  S | j                  |   S N)rO   intr   r   r   r   glyphSelectors     r*   __getitem__ztable_V_O_R_G_.__getitem__y   sG    mS) --m<M 3 33***""=11rU   c                     t        |t              r| j                  |      }|| j                  k7  r|| j                  |<   y || j                  v r| j                  |= y y rW   )rO   rX   r   r   r   )r   rZ   r@   s      r*   __setitem__ztable_V_O_R_G_.__setitem__   s[    mS) --m<MD+++16D.d111##M2 2rU   c                     | j                   |= y rW   )r   rY   s     r*   __delitem__ztable_V_O_R_G_.__delitem__   s    .rU   N)__name__
__module____qualname____doc__r+   r=   rG   rP   r[   r]   r_    rU   r*   r   r      s+     D0-2:"23/rU   r   c                        e Zd ZddZd Zd Zy)rF   Nc                      || _         || _        y rW   )rJ   r$   )r   r(   r$   s      r*   __init__zVOriginRecord.__init__   s    rU   c                 <   |j                  d       |j                          |j                  d| j                         |j                          |j                  d| j                         |j                          |j                  d       |j                          y )NrF   rJ   r?   r$   )begintagrC   rB   rJ   r$   endtag)r   rH   r   s      r*   rG   zVOriginRecord.toXML   sp    (DNN;$,,7o&rU   c                 `    |d   }|dk(  rt        | ||       y t        | |t        |             y )Nr@   rJ   )rQ   r   )r   r(   rR   rS   r   r@   s         r*   rP   zVOriginRecord.fromXML   s/    g;D$&D$0rU   )NN)r`   ra   rb   rg   rG   rP   rd   rU   r*   rF   rF      s    1rU   rF   )	fontTools.misc.textToolsr   r    r   r   r   objectrF   rd   rU   r*   <module>ro      s/    8  H/\.. H/V1F 1rU   