a
    Qh                     @   s\   d dl mZ d dlmZ ddlmZ d dlZdZdZe	eZ
e	eZG d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                   @   s6   e Zd ZdddZdd Zdd	 Zd
d Zdd ZdS )StrikeNr   H   c                 C   s   || _ || _|| _i | _d S )N)datappem
resolutionglyphs)selfrawdatar	   r
    r   Z/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/ttLib/tables/sbixStrike.py__init__   s    zStrike.__init__c                 C   s>  | j d u rddlm} |jt| j tk rNddlm} |jdftt| j f tt| j d t |  t	d| j ttt
  \}|t t
 d | _g | _t| jd D ]8}|t
 t }t	d| j ||t
  \}| j| qt| jD ]@}t| j | j| | j|d   |d}|| || j|j< q| `| `| ` 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   ZfirstGlyphDataOffsetistartcurrent_offsetcurrent_glyphr   r   r   r       s^    

zStrike.decompilec                 C   s   d| _ d| _| }ttt|d   }|D ]h}|| jv rF| j| }n
t|d}|| ||_	|  j|j
7  _|t|j
7 }|  j tt|7  _ q,t }||_	|  j tt|7  _ tt| | _|  j| j | j 7  _d S )N    r   )r!   )r   Z
bitmapDatagetGlyphOrderr   r   r   r   r   compileZglyphDataOffsetr   r   packsbixGlyphDataOffsetFormatr   r   )r   r"   
glyphOrderZcurrentGlyphDataOffsetr!   r&   dummyr   r   r   r)   W   s.    




zStrike.compilec                 C   s   | d |  |jd| jd |  |jd| jd |  | }tt|D ](}|| | jv rV| j||  	|| qV|
d |  d S )Nstriker	   )valuer
   )begintagnewline	simpletagr	   r
   r(   r   r   r   toXMLendtag)r   	xmlWriterr"   r,   r#   r   r   r   r3   {   s    

zStrike.toXMLc                 C   sF  |dv r t | |t|d  n"|dkr(d|v rHtd|d  d }nd }d|v rjtd|d  d }n4d|v rtd|d  d }ndd	lm} |d
d|v rt|d }nd}d|v rt|d }	nd}	t||||	d}
|D ]2}t|tr|\}}}|
|||| |
	| q|
| j
|
j< ndd	lm} |d| d S )N)r	   r
   r/   glyphgraphicTypez'''	glyphnamenamer   r   zGlyph must have a glyph name.originOffsetXoriginOffsetY)r!   r7   r:   r;   zcan't handle '%s' element)setattrr   r   r   r   r   
isinstancetuplefromXMLr)   r   r!   )r   r9   attrscontentr"   ZmyFormatZmyGlyphNamer   Z	myOffsetXZ	myOffsetYr&   elementr   r   r   r?      s@    



zStrike.fromXML)Nr   r   )__name__
__module____qualname__r   r    r)   r3   r?   r   r   r   r   r      s
   
8$r   )fontTools.miscr   fontTools.misc.textToolsr   Z	sbixGlyphr   r   r   r+   calcsizer   r   objectr   r   r   r   r   <module>   s   

