a
    Z¨Xh˜  ã                   @   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   úd/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/fontTools/ttLib/tables/S__i_l_l.pyr	      s    ztable_S__i_l_l.__init__c                 C   sn  t  t|| ¡\}}tt| jddƒ| _t d|d d… ¡\}|dd … }d}g }t|ƒD ]n}t d||d |d d … ¡\}}	}
t	|
d ƒ|d  }
| 
d	d
¡}| | d¡|	|
f¡ t||
|	 ƒ}qX||d d … }g }t|ƒD ]8}t d||d |d d … ¡\}}}| ||f¡ qäi | _|D ]@\}}}g | j|< t||| ƒD ]}| j|  || ¡ qJq(d S )Né   )ZprecisionBitsz>Hé   é   r   ú>4sHHr   ó    ó    zutf-8ú>LHH)r   Zunpack2ÚSill_hdrÚfloatr   ÚversionÚstructÚunpackÚrangeÚintÚreplaceÚappendÚdecodeÚmaxr
   )r   ÚdataÚttFontÚ_ZnumLangsZ
maxsettingZlanginfoÚiZlangcodeZnumsettingsÚoffsetZfinfoÚfidÚvalÚcÚnÚor   r   r   Ú	decompile   s0    ÿ
&
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 }qR|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   Zbininfo)	r   r"   ZldatZfdatr%   r(   Úinfr&   r'   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 | ¡  qH| 	d¡ | ¡  q&d S )Nr   )r   Úlang)ÚnameÚfeature)r&   r'   )
Z	simpletagr   Únewliner/   r
   r0   Zbegintagr   Znum2tagZendtag)r   Úwriterr"   r(   r3   r&   r'   r   r   r   ÚtoXMLC   s    

ztable_S__i_l_l.toXMLc           
      C   sŒ   |dkrt t|d ƒƒ| _nl|dkrˆ|d }g | j|< |D ]L}t|tƒsJq:|\}}}	|dkr:| j|  t |d ¡t	t|d ƒƒf¡ q:d S )Nr   r5   r6   r7   r&   r'   )
r   r   r   r
   Ú
isinstanceÚtupler   r   Ztag2numr   )
r   r6   ÚattrsÚcontentr"   r(   Úelementr   ÚaZ
subcontentr   r   r   ÚfromXMLO   s    



ÿztable_S__i_l_l.fromXML)N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r+   r4   r:   rA   r   r   r   r   r      s   
r   )ZfontTools.miscr   ZfontTools.misc.fixedToolsr   ZfontTools.misc.textToolsr   Ú r   r   r   r   r   r   r   r   r   Ú<module>   s   