
    jke[                         d dl mZ d dlmZmZmZ ddlmZ ddlm	Z	 dZ
 ej                  e
      ZdZ ej                  e      Z G d d	ej                        Z G d
 de      Zy)    )sstruct)safeEval
num2binary
binary2num   )DefaultTable)Strikea  
	>
	version:       H	# Version number (set to 1)
	flags:         H	# The only two bits used in the flags field are bits 0
						# and 1. For historical reasons, bit 0 must always be 1.
						# Bit 1 is a sbixDrawOutlines flag and is interpreted as
						# follows:
						#     0: Draw only 'sbix' bitmaps
						#     1: Draw both 'sbix' bitmaps and outlines, in that
						#        order
	numStrikes:    L	# Number of bitmap strikes to follow
z`
	>
	strikeOffset:  L	# Offset from begining of table to data for the
						# individual strike
c                   ,    e Zd ZddZd Zd Zd Zd Zy)table__s_b_i_xNc                     t         j                   j                  | |       d| _        d| _        d| _        i | _        g | _        y )Nr   r   )r   __init__versionflags
numStrikesstrikesstrikeOffsets)selftags     A/usr/lib/python3/dist-packages/fontTools/ttLib/tables/_s_b_i_x.pyr   ztable__s_b_i_x.__init__   s<    !!**45
    c                    t        j                  t        |d t         |        t	        | j
                        D ]f  }t        |t        z  z   }t               }t        j                  t        |||t        z    |       | j                  j                  |j                         h t	        | j
                  dz
  dd      D ]  }t        || j                  |   d        }|d | j                  |    }|j                  |       |j                  | j                  v rddlm} |j%                  d      || j                  |j                  <    | `	| `y )Nr   )rawdatar   ttLibz+Pixel 'ppem' must be unique for each Strike)r   unpacksbixHeaderFormatsbixHeaderFormatSizeranger   sbixStrikeOffsetFormatSizesbixStrikeOffsetsbixStrikeOffsetFormatr   appendstrikeOffsetr	   	decompileppemr   	fontToolsr   
TTLibError)r   datattFonticurrent_offsetoffset_entrycurrent_striker   s           r   r%   ztable__s_b_i_x.decompile'   s<   '.C/C)DdKt' 	AA1A8R4RRN+-LNN&^n7Q&QR
 %%l&?&?@	A t*B3 
	?A#D1C1CA1F1H,IJN/$,,Q/0D$$V, ""dll2+&&'TUU0>DLL,,-
	? Or   c                    d}t        | j                        | _        t        j                  t
        |       }t        t        | j                  z  z   }t        | j                  j                               D ]m  }| j                  |   }|j                  |       ||_        |t        j                  t        |      z  }|t        |j                        z  }||j                  z  }o ||z   S )Nr   )lenr   r   r   packr   r   r    sortedkeyscompiler$   r"   r)   )r   r*   sbixData
sbixHeader	setOffsetsir.   s          r   r4   ztable__s_b_i_x.compileF   s    dll+\\"2D9
 )+E+WW	**,- 	,B!\\"-N""6**3N'',,'=~NNJ^0011I+++H	, H$$r   c                 Z   |j                  d| j                         |j                          |j                  dt        | j                  d             |j                          t        | j                  j                               D ]!  }| j                  |   j                  ||       # y )Nr   )valuer      )		simpletagr   newliner   r   r2   r   r3   toXML)r   	xmlWriterr*   r+   s       r   r>   ztable__s_b_i_x.toXMLY   s    IT\\:G:djj"+EF))+, 	5ALLO!!)V4	5r   c                 h   |dk(  rt        | |t        |d                y |dk(  rt        | |t        |d                y |dk(  rVt               }|D ]-  }t	        |t
              s|\  }}}|j                  ||||       / || j                  |j                  <   y ddl	m
} |j                  d|z        )Nr   r:   r   striker   r   zcan't handle '%s' element)setattrr   r   r	   
isinstancetuplefromXMLr   r&   r'   r   r(   )r   nameattrscontentr*   r.   elementr   s           r   rE   ztable__s_b_i_x.fromXMLa   s    9D$w 89W_D$
5> :;X#XN" Igu-+2(D%"**4HI 1?DLL,,-'""#>#EFFr   )N)__name__
__module____qualname__r   r%   r4   r>   rE    r   r   r   r      s     >%&5Gr   r   c                       e Zd Zy)r!   N)rJ   rK   rL   rM   r   r   r!   r!   v   s    r   r!   N)fontTools.miscr   fontTools.misc.textToolsr   r   r    r   
sbixStriker	   r   calcsizer   r"   r    r   objectr!   rM   r   r   <module>rU      ss    " E E    (w''(89  
 .W--.DE RG\.. RGp	v 	r   