
    Ph                         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                   0    e Zd ZdZddZd Zd Zd Zd Zy)	table__s_b_i_xa  Standard Bitmap Graphics table

    The ``sbix`` table stores bitmap image data in standard graphics formats
    like JPEG, PNG, or TIFF. The glyphs for which the ``sbix`` table provides
    data are indexed by Glyph ID. For each such glyph, the ``sbix`` table can
    hold different data for different sizes, called "strikes."

    See also https://learn.microsoft.com/en-us/typography/opentype/spec/sbix
    Nc                     t         j                   j                  | |       d| _        d| _        d| _        i | _        g | _        y )Nr   r   )r   __init__versionflags
numStrikesstrikesstrikeOffsets)selftags     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-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.decompile1   s0   '.C/C)DdKt'A1A8R4RRN+-LNN&^n7Q&QR
 %%l&?&?@ ( t*B3A#D1C1CA1F1H,IJN/$,,Q/0D$$V, ""dll2+&&'TUU0>DLL,,- 4 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.compileP   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.toXMLc   s    IT\\:G:djj"+EF))+,ALLO!!)V4 -r   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.fromXMLk   s    9D$w 89W_D$
5> :;X#XN"gu-+2(D%"**4H # 1?DLL,,-'""#>#EFFr   )N)	__name__
__module____qualname____doc__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   rN   r   r   r!   r!      s    r   r!   N)fontTools.miscr   fontTools.misc.textToolsr   r   r    r   
sbixStriker	   r   calcsizer   r"   r    r   objectr!   rN   r   r   <module>rV      ss    " E E    (w''(89  
 .W--.DE \G\.. \GD	v 	r   