
    Ph50                         d dl mZ d dlmZmZ ddlmZ d dlZd dlZdZ	dZ
dZd	d
ddddddddddZd Z G d dej                        Z G d de      Zd Zd Z G d de      Zy)    )sstruct)byteordsafeEval   )DefaultTableNz
		>	# big endian
		tableVersionMajor:			H
		tableVersionMinor:			H
		metaEntriesVersionMajor:	H
		metaEntriesVersionMinor:	H
		unicodeVersion:				L
		metaFlags:					H
		nMetaRecs:					H
z3
		>	# big endian
		glyphID:			H
		nMetaEntry:			H
z2
		>	# big endian
		labelID:			H
		stringLen:			H
MojikumiX4051UNIUnifiedBaseCharsBaseFontNameLanguageCreationDateFoundryNameFoundryCopyrightOwnerURIWritingScriptStrokeCountIndexingRadical)r   r                        
      c                 b    	 t         |    }t        |      S # t        $ r d}Y t        |      S w xY w)NzUnknown label)METALabelDictKeyErrorstr)labelIDlabels     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\fontTools/ttLib/tables/M_E_T_A_.pygetLabelStringr#   >   s=     g& u:   u: s   	 ..c                   ,    e Zd ZdZg Zd Zd Zd Zd Zy)table_M_E_T_A_zGlyphlets META table

    The ``META`` table is used by Adobe's SING Glyphlets.

    See also https://web.archive.org/web/20080627183635/http://www.adobe.com/devnet/opentype/gdk/topic.html
    c                    t        j                  t        ||       \  }}g | _        t	        | j
                        D ]  }t        j                  t        |t                     \  }}| j                  dk(  r&t        j                  d|d d       \  |_        |dd  }nR| j                  dk(  r&t        j                  d|d d       \  |_        |dd  }nJ dt        | j                        z          g |_        ||j                  d  }t	        |j                        D ]  }t        j                  t        |t!                     \  }}| j                  dk(  r&t        j                  d|d d       \  |_        |dd  }n%t        j                  d|d d       \  |_        |dd  }||j                  |j                  |j"                  z    |_        |j                  j'                  |        | j                  j'                  |        y )Nr   >Hr   r   r   zLThe metaFlags field in the META table header has a value other than 0 or 1 :)r   unpack2METAHeaderFormatglyphRecordsrange	nMetaRecsMETAGlyphRecordFormatGlyphRecord	metaFlagsstructunpackoffsetr   
stringRecs
nMetaEntryMETAStringRecordFormatStringRecord	stringLenstringappend)	selfdatattFontdummynewDataiglyphRecordj	stringRecs	            r"   	decompileztable_M_E_T_A_.decompileP   s    )94Fwt~~&A#*??%w$ K ~~"'-}}T72A;'G$#!!"+1$'-}}T72A;'G$#!!"+b$..)*q &(K";--/0G;112%,__*G\^&"	7 >>Q&)/tWRa[)I&Y%%abkG)/tWRa[)I&Y%%abkG#'$$y'7'7):M:M'M$	  &&--i8 3 $$[1? '    c                    d}t        | j                        | _        d}|dk7  rR|dz   }|dkD  rt        j                          t        j                  t        |       }t        |      | j                  dd| j                  dz  z  z   z  z   }dd| j                  dz  z  z   }| j                  D ]h  }||_	        |j                  dkD  r*| j                  dz  dk(  r| j                  dz   | _        d} n(||j                  |       z   }||j                  |z  z   }j |dk(  rd}|}| j                  D ]  }|j                  t        |      k(  sJ dt        |      z          |j                  D ]e  }	||	_	        |	j                  dkD  r*| j                  dz  dk(  r| j                  dz   | _        d} }||	j                  |       z   }||	j                  z   }g  |dk(  rd}| j                  dz  dk(  r|d	k  r| j                  dz
  | _        d}| j                  D ]W  }|j                  D ]F  }	|	j                  t        |      k(  sJ d
t        |	j                        z          ||	j                  z   }H Y |dk7  rRS )Nr   r   r   r   r   i  z7Glyph record offset did not compile correctly! for rec:i   z4String offset did not compile correctly! for string:)lenr*   r,   pdb	set_tracer   packr)   r/   r2   compiler4   r   r3   r7   r8   )
r:   r<   offsetOKcountmetaDatastringRecsOffsetstringRecSizeglyphRecstringOffsetrB   s
             r"   rK   ztable_M_E_T_A_.compilet   s   T../!mAIEqy||$4d;H"8}t~~A!+,,0   T^^a%7 88M --"2OOe+4>>A3E!2K%)^^a%7DN!H#h&6&6t&<<#3''-7$  . 2~ ,L --#+  LsP  
 "*!4!4I'3I$!((508Jq7P)-!);#%')*;*;D*AAH#/)2E2E#EL "5 . 2~!#)u0D!%!!3 !--!)!4!4I$++s 0  MPS!((Q  
  ()*:*::H "5 .k !m| rD   c                 2   |j                  d       |j                          t        j                  t              \  }}}|D ]1  }t        | |      }|j                  ||       |j                          3 | j                  D ]  }|j                  ||        y )NzPLengths and number of entries in this table will be recalculated by the compilervalue)	commentnewliner   	getformatr)   getattr	simpletagr*   toXML)	r:   writerr<   formatstringnamesfixesnamerU   rQ   s	            r"   r[   ztable_M_E_T_A_.toXML   s    ^	
 	%,%6%67G%H"eUDD$'ET/NN  ))HNN66* *rD   c                 X   |dk(  rt        | d      sg | _        t               }| j                  j                  |       |D ]-  }t	        |t
              r|\  }}}|j                  ||||       / d|_        t        |j                        |_
        y t        | |t        |d                y )Nr.   r*   rF   rU   )hasattrr*   r.   r9   
isinstancer   fromXMLr2   rG   r3   r4   setattrr   )r:   r`   attrscontentr<   rQ   elements          r"   rd   ztable_M_E_T_A_.fromXML   s    = 40$&!"}H$$X."gs+'.$eW  ugv>	 #
 !HO"%h&9&9":HD$w 89rD   N)	__name__
__module____qualname____doc__dependenciesrC   rK   r[   rd    rD   r"   r%   r%   F   s%     L"2HBH+:rD   r%   c                   *    e Zd Zd Zd Zd Zd Zd Zy)r.   c                 <    d| _         d| _        d| _        g | _        y )NrF   )glyphIDr4   r2   r3   r:   s    r"   __init__zGlyphRecord.__init__   s    rD   c                    |j                  d       |j                          |j                  d| j                         |j                          |j                  d| j                         |j                          | j
                  D ]  }|j                  ||        |j                  d       |j                          y )Nr.   rq   rT   r4   )begintagrW   rZ   rq   r4   r3   r[   endtag)r:   r\   r<   rB   s       r"   r[   zGlyphRecord.toXML   s    &$,,7T__=IOOFF+ )m$rD   c                    |dk(  rlt               }| j                  j                  |       |D ]'  }t        |t              r|j                  ||||       ) t        |j                        |_        y t        | |t        |d                y )Nr6   rU   )r6   r3   r9   rc   r   rd   rG   r8   r7   re   r   )r:   r`   rf   rg   r<   rB   rh   s          r"   rd   zGlyphRecord.fromXML   sx    >!$IOO""9-"gs+!!$w? # #&i&6&6"7ID$w 89rD   c                    t        j                  t        |       }|j                  dk(  r!t	        j                  d| j
                        }n/|j                  dk(  r t	        j                  d| j
                        }|z   }|S Nr   r'   r   z>L)r   rJ   r-   r/   r0   r2   r:   parentTabler;   datums       r"   rK   zGlyphRecord.compile   se    ||148  A%KKdkk2E""a'KKdkk2Ee|rD   c                     dt        | j                        z   dz   t        | j                        z   dz   t        | j                        z   dz   S )NzGlyphRecord[ glyphID: z, nMetaEntry: 
, offset:  ])r   rq   r4   r2   rr   s    r"   __repr__zGlyphRecord.__repr__   s]    $$,,  $//"# 	
 $++ 	
rD   N)ri   rj   rk   rs   r[   rd   rK   r   rn   rD   r"   r.   r.      s    

:	
rD   r.   c                 ^   t               }t        |       }d}||k  rd}| ||dz    dk(  rd}n| ||dz    dk(  rd}|r=||z   }|}| |   dk7  r|dz   }| |   dk7  r| || }|t        t        d|z               z   }n|t        t	        | |               z   }|dz   }||k  r|j                  d	      S )
Nr   r   &#xr   z&amp;#x;r   0xutf_8)r   rG   chrevalr   encode)r8   uStringstrLenr?   	prefixLenrA   valStrs          r"   mapXMLToUTF8r     s    eG[F	A
f*	!a!e%IAA)+IIAA)s"E )s"Aa[FD$7 88GGF1I$6 77GE! f*$ >>'""rD   c                     | j                  d      }d} |D ]4  }t        |      }|dk  r|dkD  r| |z   } | dz   t        |      dd  z   dz   } 6 | S )Nr          r   r   r   )decodeordhex)r8   r   uCharr?   s       r"   mapUTF8toXMLr   &  sb    mmG$GFJH1t8e^Fe^c!fQRj036F  MrD   c                   $    e Zd Zd Zd Zd Zd Zy)r6   c                    |j                  d       |j                          |j                  d| j                         |j	                  t        | j                               |j                          |j                          |j                  dt        | j                               |j                          |j                  d       |j                          y )Nr6   r    rT   r8   )	ru   rW   rZ   r    rV   r#   r   r8   rv   )r:   r\   r<   s      r"   r[   zStringRecord.toXML3  s    '$,,7~dll34dkk)BCn%rD   c                     |D ]J  }t        |t              r|\  }}}|d   }|dk(  rt        |      | _        5t	        | |t        |             L y )NrU   r8   )rc   r   r   r8   re   r   )r:   r`   rf   rg   r<   rh   rU   s          r"   rd   zStringRecord.fromXML?  sR    G'3'#* D%'NEx*51dHUO4 rD   c                    t        j                  t        |       }|j                  dk(  r!t	        j                  d| j
                        }n/|j                  dk(  r t	        j                  d| j
                        }|z   }|S ry   )r   rJ   r5   r/   r0   r2   rz   s       r"   rK   zStringRecord.compileJ  se    ||2D9  A%KKdkk2E""a'KKdkk2Ee|rD   c                     dt        | j                        z   dz   t        | j                        z   dz   t        | j                        z   dz   t        | j                        z   dz   | j
                  z   dz   S )NzStringRecord [ labelID: z aka r~   z
, length: z
, string: r   )r   r    r#   r2   r7   r8   rr   s    r"   r   zStringRecord.__repr__S  s    &$,,  T\\*+ 	
 $++  $..!"  kk	 
	
rD   N)ri   rj   rk   r[   rd   rK   r   rn   rD   r"   r6   r6   2  s    
	5
rD   r6   )fontTools.miscr   fontTools.misc.textToolsr   r   r   r   rH   r0   r)   r-   r5   r   r#   r%   objectr.   r   r   r6   rn   rD   r"   <module>r      s    " 6  
 	    M:\.. M:`1
& 1
n#2	.
6 .
rD   