
    S-hy                         d Z ddlZddlZddlZddlmZ ddlmZ  ej                  e	      Z
 G d dej                        Zy)zTSI{0,1,2,3,5} are private tables used by Microsoft Visual TrueType (VTT)
tool to store its hinting source data.

TSI5 contains the VTT character groups.

See also https://learn.microsoft.com/en-us/typography/tools/vtt/tsi-tables
    N)safeEval   )DefaultTablec                   $    e Zd Zd Zd Zd Zd Zy)table_T_S_I__5c           	         |d   j                   }t        j                  d      }|j                  |       t        j                  dk7  r|j                          i | _        t        |      dz  }||k7  r-||z
  }t        j                  dt        |       d| d| d       t        |      D ]#  }||   | j                  |j                  |      <   % y )	NmaxpHbig   zCNumber of entries differs from the number of glyphs in the font by z (z entries vs. z	 glyphs).)	numGlyphsarray	frombytessys	byteorderbyteswapglyphGroupinglenlogwarningabsrangegetGlyphName)selfdatattFontr   a
numEntriesdiffis           e/var/www/core.comfia.cic-ware.com/crm/lib/python3.12/site-packages/fontTools/ttLib/tables/T_S_I__5.py	decompileztable_T_S_I__5.decompile   s    6N,,	KK	D==E!JJLY!^
"	)DKK$i[:,mI;iQ z" 	>A9:1Dv22156	>    c                 @   |j                         }t        j                  d      }t        t        |            D ]0  }|j	                  | j
                  j                  ||   d             2 t        j                  dk7  r|j                          |j                         S )Nr
   r   r   )getGlyphOrderr   r   r   appendr   getr   r   r   tobytes)r   r   
glyphNamesr   r    s        r!   compileztable_T_S_I__5.compile&   sz    ))+
KKs:' 	?AHHT''++JqM1=>	?==E!JJLyy{r#   c                     t        | j                  j                               }|D ]3  }|j                  d|| j                  |          |j	                          5 y )N
glyphgroup)namevalue)sortedr   keys	simpletagnewline)r   writerr   names	glyphNames        r!   toXMLztable_T_S_I__5.toXML/   s[    t))..01 	I9D4F4Fy4Q   NN		r#   c                 r    t        | d      si | _        |dk7  ry t        |d         | j                  |d   <   y )Nr   r,   r.   r-   )hasattrr   r   )r   r-   attrscontentr   s        r!   fromXMLztable_T_S_I__5.fromXML7   s<    t_-!#D<,4U7^,D5=)r#   N)__name__
__module____qualname__r"   r*   r6   r;    r#   r!   r   r      s    >"Er#   r   )__doc__r   loggingr   fontTools.misc.textToolsr    r   	getLoggerr<   r   r   r?   r#   r!   <module>rE      sA      
 - g!(E\.. (Er#   