
    <`                         d dl mZ d dlmZ ddlmZ d dlZdZdZ ej	        e          Z
 ej	        e          Z G d d	e          ZdS )
    )sstruct)safeEval   )GlyphNz
	>
	ppem:          H	# The PPEM for which this strike was designed (e.g., 9,
						# 12, 24)
	resolution:    H	# The screen resolution (in dpi) for which this strike
						# was designed (e.g., 72)
zz
	>
	glyphDataOffset:   L	# Offset from the beginning of the strike data record
							# to data for the individual glyph
c                   .    e Zd Zd	dZd Zd Zd Zd ZdS )
StrikeNr   H   c                 >    || _         || _        || _        i | _        d S )N)datappem
resolutionglyphs)selfrawdatar   r   s       Alib/python3.11/site-packages/fontTools/ttLib/tables/sbixStrike.py__init__zStrike.__init__   s"    $)$)$/$+++    c                    | j         ddlm} |j        t	          | j                   t
          k     r+ddlm} |j        dft
          t	          | j                   fz  t          j        t          | j         d t
                   |            t          j        d| j         t
          t
          t          z                      \  }|t
          z
  t          z  dz
  | _        g | _        t          | j        dz             D ]Z}|t          z  t
          z   }t          j        d| j         ||t          z                      \  }| j                            |           [t          | j                  D ]]}t          | j         | j        |         | j        |dz                     |          }|                    |           || j        |j        <   ^| `| `| ` d S )Nr   ttLibz-Strike header too short: Expected %x, got %x.z>Lr   )r   gid)r   	fontToolsr   
TTLibErrorlensbixStrikeHeaderFormatSizer   unpacksbixStrikeHeaderFormatstructsbixGlyphDataOffsetFormatSize	numGlyphsglyphDataOffsetsrangeappendr   	decompiler   	glyphName)r   ttFontr   firstGlyphDataOffsetistartcurrent_offsetcurrent_glyphs           r   r$   zStrike.decompile   s   	Y		^^000		JK!3ty>>2	3 3 
.'3N4N3N)OQUVVV !-9'(BEb(bbce e(+EEJggjkk$. $!#$$ 0 0a,,/II5]45A^9^3^)_``?>////    8 8a4+@+CDDYZ[\]Z]D^+^!_efggg=6"""*74;}&''

n
iiir   c                    d| _         d| _        |                                }t          t          t          |          dz   z  z   }|D ]}|| j        v r| j        |         }nt          |          }|                    |           ||_	        | xj        |j
        z  c_        |t          |j
                  z  }| xj         t          j        t          |          z  c_         t                      }||_	        | xj         t          j        t          |          z  c_         t          j        t          |           | _        | xj        | j         | j        z   z  c_        d S )Nr   r   )r%   )r!   
bitmapDatagetGlyphOrderr   r   r   r   r   compileglyphDataOffsetr   r   packsbixGlyphDataOffsetFormatr   r   )r   r&   
glyphOrdercurrentGlyphDataOffsetr%   r+   dummys          r   r/   zStrike.compileA   sT   $$/##%%* 68UY\]gYhYhklYl8mm S Si4;K	*MM I...M   #9= ??m++??S!6777GL)BMRRR ''%0%7<(A5III l1488$)))t$t66))))r   c                 <   |                     d           |                                 |                    d| j                   |                                 |                    d| j                   |                                 |                                }t          t          |                    D ]8}||         | j        v r'| j        ||                  	                    ||           9|
                    d           |                                 d S )Nstriker   )valuer   )begintagnewline	simpletagr   r   r.   r"   r   r   toXMLendtag)r   	xmlWriterr&   r3   r(   s        r   r<   zStrike.toXML`   s   XfDI...l$/:::##%%*Z!! 8 8amt{""K
1$$Y7778r   c                    |dv r&t          | |t          |d                              d S |dk    r&d|v rt          d|d         z   dz             }nd }d|v rt          d|d         z   dz             }n;d|v rt          d|d         z   dz             }ndd	lm} |                    d
          d|v rt          |d                   }nd}d|v rt          |d                   }	nd}	t          ||||	          }
|D ]J}t          |t                    r3|\  }}}|
                    ||||           |
	                    |           K|
| j
        |
j        <   d S dd	lm} |                    d|z            )N)r   r   r8   glyphgraphicTypez'''	glyphnamenamer   r   zGlyph must have a glyph name.originOffsetXoriginOffsetY)r%   rA   rD   rE   zcan't handle '%s' element)setattrr   r   r   r   r   
isinstancetuplefromXMLr/   r   r%   )r   rC   attrscontentr&   myFormatmyGlyphNamer   	myOffsetX	myOffsetYr+   elements               r   rI   zStrike.fromXMLo   s   	###
4xg//00000wum 44u<==HHHU55#55=>>KK%55=05899KK


:
;
;;/00III/00III	  =  # #w'5!! ##T5'48886"""*74;}&'''			5<	=	==r   )Nr   r	   )__name__
__module____qualname__r   r$   r/   r<   rI    r   r   r   r      se                D7 7 7>  %> %> %> %> %>r   r   )fontTools.miscr   fontTools.misc.textToolsr   	sbixGlyphr   r   r   r2   calcsizer   r   objectr   rT   r   r   <module>rZ      s    " " " " " " - - - - - -          .W-.DEE  0 01J K K |> |> |> |> |>V |> |> |> |> |>r   