
     i;                     ^    d Z ddlmZ ddlmZ ddlmZmZmZ  G d deej                  Z	dS )	a]   TSI{0,1,2,3,5} are private tables used by Microsoft Visual TrueType (VTT)
tool to store its hinting source data.

TSI1 contains the text of the glyph programs in the form of low-level assembly
code, as well as the 'extra' programs 'fpgm', 'ppgm' (i.e. 'prep'), and 'cvt'.

See also https://learn.microsoft.com/en-us/typography/tools/vtt/tsi-tables
   )DefaultTable    )LogMixin)strjointobytestostrc                   8    e Zd ZdddddZdZd Zd Zd	 Zd
 ZdS )table_T_S_I__1ppgmcvtreservedfpgm)i  i  i  i  TSI0c                 >   t          |          }|| j                 }t          |j        |j        fd          D ]b\  }}i }t          |          D ]7\  }\  }	}
}|r| j        |	         }n|                    |	          }||k    r| j        	                    d|z             S|
dk     rn|
dk    r}|t          |          dz
  k    }|r|r|}n%|j        d         d         }n||dz            d         }||k    s
J d            ||k    r| j        	                    d|z             |}||z
  }
n dd	l
m} |                    d
||
fz            ||||
z            }t          |          |
k    sJ t          |d          }|r|||<   9|r	|| _        [|| _        dd S )N)FTz$textOffset > totalLength; %r skipped   r   r      zentries not sorted by offsetz*nextTextOffset > totalLength; %r truncated)ttLibz&%r textLength (%d) must not be > 32768utf-8encoding)len
indextablezipindicesextra_indices	enumerateextrasgetGlyphNamelogwarning	fontToolsr   
TTLibErrorr   extraProgramsglyphPrograms)selfdatattFonttotalLengthr   r   isExtraprogramsiglyphID
textLength
textOffsetnameisLastnextTextOffsetr   texts                    i/srv/www/vhosts/g4struct/public_html/venv/lib/python3.11/site-packages/fontTools/ttLib/tables/T_S_I__1.py	decompileztable_T_S_I__1.decompile   sC   $iiDO,
 #!9:M!
 !
 <	. <	.GW H8A'8J8J 4* 4*44GZ 8;w/DD!..w77D++H$$%Kd%RSSS&& 6))3w<<!#34F ;" L
 .9NN .8-Ea-H-KNN
 *1Q):)Z7779W777%33((H4O   *5!/*!<JJ//////**@D*CUU   Jj)@@A4yyJ....TG444 *%)HTN .%-""%-""y<	. <	.    c                 >   t          | d          si | _        i | _        d}|| j                 }|                                }g }t          |          D ]\  }}t          |          dz  r|dz   }|| j        v rt          | j        |         d          }nd}t          |          }	|	dk    rd}	|                    ||	t          |          f           ||z   }g }
t          | j
                                                  D ]\  }}t          |          dz  r|dz   }|| j        v rt          | j        |         d          }nd}t          |          }	|	dk    rd}	|
                    ||	t          |          f           ||z   }|                    ||
           |S )Nr$   r5   r      r   r   r   )hasattrr$   r#   r   getGlyphOrderr   r   r   appendsortedr   itemsset)r%   r'   r&   r   
glyphNamesr   r+   r/   r2   r-   r   codes               r3   compileztable_T_S_I__1.compileU   s   t_-- 	$!#D!#DDO,
))++
 ,, 	 	GAt4yy1} 7N  t)))t1$7'JJJTJV###
NNAz3t995666$;DD !2!2!4!455 	 	JD$4yy1} 7N  t)))t1$7'JJJTJV###
  $
CII!>???$;DDw...r5   c                    t          | j                                                  }|                                 |D ]}| j        |         }|s|                    d|           |                                 |                    |                    dd                     |                                 |                    d           |                                 |                                 t          | j                                                  }|D ]}| j        |         }|s|                    d|           |                                 |                    |                    dd                     |                                 |                    d           |                                 |                                 d S )NglyphProgram)r/   
extraProgram)	r;   r$   keysnewlinebegintagwrite_noindentreplaceendtagr#   )r%   writerr'   namesr/   r2   extra_namess          r3   toXMLztable_T_S_I__1.toXML   s   t)..0011 
	 
	D%d+D OONO666NN!!$,,tT":":;;;NNMM.)))NNNNT/446677 
	 
	D%d+D OONO666NN!!$,,tT":":;;;NNMM.)))NNNN
	 
	r5   c                 H   t          | d          si | _        i | _        t          |                              dd                              d          }d                    |dd                   }|dk    r|| j        |d         <   d S |dk    r|| j        |d         <   d S d S )	Nr$   rC   rD   r   rB   r/   rE   )r8   r$   r#   r   rJ   splitjoin)r%   r/   attrscontentr'   linesr2   s          r3   fromXMLztable_T_S_I__1.fromXML   s    t_-- 	$!#D!#D  ((t44::4@@yyqt%%>!!04DuV}---^##04DuV}--- $#r5   N)	__name__
__module____qualname__r   r   r4   r@   rO   rW    r5   r3   r
   r
      sh        eZPPFJ?. ?. ?.B( ( (T  6	5 	5 	5 	5 	5r5   r
   N)
__doc__ r   fontTools.misc.loggingToolsr   fontTools.misc.textToolsr   r   r   r
   r[   r5   r3   <module>r`      s           0 0 0 0 0 0 < < < < < < < < < <T5 T5 T5 T5 T5X|8 T5 T5 T5 T5 T5r5   