o
    _h                     @   s^   d dl mZ d dlmZ d dlmZ ddlmZ ddlmZ d dl	Z	dZ
G d	d
 d
ejZdS )    )sstruct)floatToFixedToStr)safeEval   )DefaultTable)grUtilsNz
    >
    version:    16.16F
c                   @   s:   e Zd ZdZdddZdd Zdd Zd	d
 Zdd ZdS )table_S__i_l_lzlGraphite Languages table

    See also https://graphite.sil.org/graphite_techAbout#graphite-font-tables
    Nc                 C   s   t j | | i | _d S N)r   __init__langs)selftag r   S/var/www/html/myenv/lib/python3.10/site-packages/fontTools/ttLib/tables/S__i_l_l.pyr
      s   
ztable_S__i_l_l.__init__c                 C   sj  t t|| \}}tt| jdd| _td|d d \}|dd  }d}g }t|D ]7}td||d |d d  \}}	}
t	|
d |d  }
|
d	d
}||d|	|
f t||
|	 }q,||d d  }g }t|D ]}td||d |d d  \}}}|||f qri | _|D ]\}}}g | j|< t||| D ]}| j| ||  qqd S )N   )precisionBitsz>H      r   >4sHHr           zutf-8>LHH)r   unpack2Sill_hdrfloatr   versionstructunpackrangeintreplaceappenddecodemaxr   )r   datattFont_numLangs
maxsettinglanginfoilangcodenumsettingsoffsetfinfofidvalcnor   r   r   	decompile   s4   
&
ztable_S__i_l_l.decompilec           	   	   C   s   d}d}t | j}t| j D ].\}}|td|dt |d| d 7 }|D ]\}}|td||d7 }q)|t |7 }q|tdddd| d 7 }tt| t	
t | j | | S )	Nr   r   utf8r      r   r   l     )lenr   sorteditemsr   packencoder   r   r   bininfo)	r   r%   ldatfdatr-   r1   infr/   r0   r   r   r   compile2   s"   
&
ztable_S__i_l_l.compilec                 C   s   |j d| jd |  t| j D ].\}}|jd|d |  |D ]\}}|j dt||d |  q$|	d |  qd S )Nr   )r   lang)namefeature)r/   r0   )
	simpletagr   newliner8   r   r9   begintagr   num2tagendtag)r   writerr%   r1   r?   r/   r0   r   r   r   toXMLC   s   


ztable_S__i_l_l.toXMLc           
      C   s   |dkrt t|d | _d S |dkrE|d }g | j|< |D ](}t|ts&q|\}}}	|dkrD| j| t|d t	t|d f qd S d S )Nr   rA   rB   rC   r/   r0   )
r   r   r   r   
isinstancetupler!   r   tag2numr   )
r   rB   attrscontentr%   r1   elementr   a
subcontentr   r   r   fromXMLO   s    



ztable_S__i_l_l.fromXMLr	   )	__name__
__module____qualname____doc__r
   r4   r@   rJ   rS   r   r   r   r   r      s    
r   )fontTools.miscr   fontTools.misc.fixedToolsr   fontTools.misc.textToolsr    r   r   r   r   r   r   r   r   r   <module>   s    