L iddlmZddlmZddlmZddlZdZdZejeZ ejeZ Gdd e Z y) )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,eZdZddZdZdZdZdZy)StrikeNc<||_||_||_i|_y)N)datappem resolutionglyphs)selfrawdatar r s g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/ttLib/tables/sbixStrike.py__init__zStrike.__init__s  $ c|jddlm}|jt |jt kr0ddlm}|jdft t |jfzt jt|jdt |tjd|jt t tz\}|t z tzdz |_ g|_ t|jdzD]Y}|tzt z}tjd|j||tz\}|jj|[t|jD]c}t|j|j||j|dz|}|j!|||j"|j$<e|` |` |`y)NrttLibz-Strike header too short: Expected %x, got %x.z>Lr)rgid)r fontToolsr TTLibErrorlensbixStrikeHeaderFormatSizerunpacksbixStrikeHeaderFormatstructsbixGlyphDataOffsetFormatSize numGlyphsglyphDataOffsetsrangeappendr decompiler glyphName)rttFontrfirstGlyphDataOffsetistartcurrent_offset current_glyphs rr#zStrike.decompiles 99  '"" " tyy>6 6 '  ?,S^<= =  "DII.I/I$JD #)--  II*-G/.0 #   !#= = *+-./ !# NNQ   9A558RRE & dii0M(MN! ^  ! ! ( ( 8 9t~~& AA! ))!,t/D/DQU/K M  # #F +3@DKK // 0 A  ! N Ircd|_d|_|j}ttt |dzzz}|D]}||j vr|j |}n t|}|j|||_ |xj|jz c_|t |jz }|xjtjt|z c_t}||_ |xjtjt|z c_tjt||_|xj|j|jzz c_y)Nrr)r$)r bitmapData getGlyphOrderrrrr rcompileglyphDataOffsetrrpacksbixGlyphDataOffsetFormatrr )rr% glyphOrdercurrentGlyphDataOffsetr$r*dummys rr.zStrike.compileWs8 #))+  '+s:/BC D $ IDKK' $ I 6 !& :  ! !& ),BM ) OO}44 4O "c-*?*?&@ @ "  ! !W\\)=&  !   6 .G!OOLL!7>  T**T__<< rc|jd|j|jd|j|j|jd|j|j|j }|D]0}||j vs|j |j||2|jd|jy)Nstriker )valuer ) begintagnewline simpletagr r r-r toXMLendtag)r xmlWriterr%r2r$s rr;z Strike.toXML{s8$F$))4L@))+ # @IDKK' I&,,Y? @ "rcp|dvrt||t|dy|dk(rd|vrtd|dzdz}nd}d|vrtd|dzdz}n0d|vrtd|dzdz}ndd lm}|j d d |vrt|d }nd}d |vrt|d } nd} t |||| } |D]>} t | ts| \}}}| j||||| j|@| |j| j<ydd lm}|j d|z)N)r r r7glyph graphicTypez''' glyphnamenamerrzGlyph must have a glyph name. originOffsetX originOffsetY)r$r@rCrDzcan't handle '%s' element) setattrrrrrr isinstancetuplefromXMLr.r r$) rrBattrscontentr%myFormat myGlyphNamer myOffsetX myOffsetYr*elements rrHzStrike.fromXMLsj ) ) D$w 8 9 W_%#EE-,@$@5$HIe#&uu[/A'AE'IJ 5&uuV}'#EF Fr)NrH)__name__ __module__ __qualname__rr#r.r;rHrrrrs 6p"=H 'Grr)fontTools.miscrfontTools.misc.textToolsr sbixGlyphrrrr1calcsizerrobjectrrTrrrZs["-  .W--.DE 0 0 01J KYGVYGr