
    ]Mh                         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       a/var/www/html/test/jupyter/venv/lib/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   9''''''""ty>>666''''''  ? ,S^^<= = 	"DI.I/I.I$JD	
 	
 	

 #)-I*-G/.0 0#
 #
	 !#==*+-./ !#NQ
 
 	9 	9A 558RRE &di0M(M MN! !^ !((8888 t~&& 	A 	AA!	)!,t/DQU/KK 	  M ##F+++3@DK/00!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.compileW   sZ    #))++
 '+s:/BCD 	 $ 	 	IDK'' $I 6 !&	 : : :!!&))),BM)OO}44OO"c-*?&@&@@"!!W\)=& & !!!
  6.G!O!OO L!7>>			T*T_<<				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   8$$$F$)444L@@@))++
s:'' 	D 	DA!}++JqM*00FCCC"""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.fromXML   s   )))D$w 8 899999W__%%#EE-,@$@5$HIIe##&uu[/A'AE'IJJ5&uuV}'<u'DEE++++++&&'FGGG%''$U?%;<<			%''$U?%;<<			!%$''	  M # 2 2gu-- 2+2(D%!))$wGGG!))&1113@DK/000''''''""#>#EFFFr   )Nr   r	   )__name__
__module____qualname__r   r$   r/   r<   rI    r   r   r   r      sk           6 6 6p"= "= "=H  'G 'G 'G 'G 'G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 YG YG YG YG YGV YG YG YG YG YGr   