
    ͏kh                     v    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
ej                        Zy)    )sstruct)floatToFixedToStr)safeEval   )DefaultTable)grUtilsNz
    >
    version:    16.16F
c                   0    e Zd ZdZddZd Zd Zd Zd Zy)	table_S__i_l_lzlGraphite Languages table

    See also https://graphite.sil.org/graphite_techAbout#graphite-font-tables
    Nc                 R    t         j                   j                  | |       i | _        y N)r   __init__langs)selftags     [/var/www/teggl/fontify/venv/lib/python3.12/site-packages/fontTools/ttLib/tables/S__i_l_l.pyr   ztable_S__i_l_l.__init__   s    !!**45
    c                 @   t        j                  t        ||       \  }}t        t	        | j
                  d            | _        t        j                  d|d d       \  }|dd  }d}g }t        |      D ]  }t        j                  d||dz  |dz   dz         \  }}	}
t        |
dz        |dz   z
  }
|j                  d	d
      }|j                  |j                  d      |	|
f       t        ||
|	z         } ||dz  d  }g }t        |      D ];  }t        j                  d||dz  |dz   dz         \  }}}|j                  ||f       = i | _        |D ]J  \  }}}g | j                  |<   t        |||z         D ]#  }| j                  |   j                  ||          % L y )N   )precisionBitsz>H      r   >4sHHr       r   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os                    r   	decompileztable_S__i_l_l.decompile   s   OOHdD9	D.t||2NOmmD$r(3ABx
x 	?A.4mma!eq1uk2/+X{F !_15F''5HOOX__W5{FKLZ+)=>J	? HqLN#z" 	%A"MM&$q1uA{2KLMS#qLL#s$	% 
 	/GAq!DJJqM1a!e_ /

1$$U1X./	/r   c           	      6   d}d}t        | j                        }t        | j                  j                               D ]q  \  }}|t	        j
                  d|j                  d      t        |      d|z  dz         z  }|D ]   \  }}|t	        j
                  d||d      z  }" |t        |      z  }s |t	        j
                  dddd|z  dz         z  }t        j
                  t        |       t        j                  t        | j                              z   |z   |z   S )	Nr   r   utf8r      r   r   l     )lenr   sorteditemsr   packencoder   r   r   bininfo)	r   r(   ldatfdatr0   r4   infr2   r3   s	            r   compileztable_S__i_l_l.compile2   s   TZZTZZ--/0 	FAsFKK&)93s8QZRT_UUD 9SFCa889c#hF		
 	FJ1v:?CCLL4(ooc$**o./ 	
r   c                    |j                  d| j                         |j                          t        | j                  j                               D ]  \  }}|j                  d|       |j                          |D ]<  \  }}|j                  dt        j                  |      |       |j                          > |j                  d       |j                           y )Nr   )r   lang)namefeature)r2   r3   )
	simpletagr   newliner<   r   r=   begintagr   num2tagendtag)r   writerr(   r4   rC   r2   r3   s          r   toXMLztable_S__i_l_l.toXMLC   s    DLL9TZZ--/0 	FAsOOFO+NN !S  0D# N ! MM&!NN	r   c           
      Z   |dk(  rt        t        |d               | _        y |dk(  r|d   }g | j                  |<   |D ]j  }t	        |t
              s|\  }}}	|dk(  s | j                  |   j                  t        j                  |d         t        t        |d               f       l y y )Nr   rF   rG   rH   r2   r3   )
r   r   r   r   
isinstancetupler$   r   tag2numr"   )
r   rG   attrscontentr(   r4   elementr   a
subcontents
             r   fromXMLztable_S__i_l_l.fromXMLO   s    9 %	*:!;<DLV^fADJJqM" !'51%,"Q
)#JJqM(( 52C58J4KL r   r   )	__name__
__module____qualname____doc__r   r7   rD   rO   rY    r   r   r
   r
      s     
/4
"
r   r
   )fontTools.miscr   fontTools.misc.fixedToolsr   fontTools.misc.textToolsr    r   r   r   r   r
   r^   r   r   <module>rc      s2    " 7 -   N\.. Nr   