+
    f7i  c                   s   ^ RI Ht ^ RIHtHtHtHtHtHtH	t	H
t
 ^RIHtHtHtHt ^RIHt ^ RIt^ RIt^ RIt^ RIt]P,                  ! ]4      tRtRt ! R R	]P"                  4      t ! R
 R]4      tR tR tR t ] R 4       t!R t"R t#R t$R t%R t&R t'R t(R t)Rt* ! R R]4      t+R t,],! ]4      t-],! ]4      t. ! R R]4      t/ ! R R]4      t0 ! R  R!]0].]+4      t1 ! R" R#]/].]+4      t2 ! R$ R%]/]+4      t3 ! R& R']0]-]+4      t4 ! R( R)]/]-]+4      t5 ! R* R+]+4      t6 ! R, R-].]64      t7 ! R. R/]-]64      t8^]1^]2^]3^]4^]5^]7^	]8/t9R# )0    )sstruct)bytechrbyteord	bytesjoinstrjoinsafeEvalreadHexhexStrdeHexStr)BigGlyphMetricsbigGlyphMetricsFormatSmallGlyphMetricssmallGlyphMetricsFormat)DefaultTableNz"
	> # big endian
	version: 16.16F
z;
	> # big endian
	glyphCode: H
	xOffset:   b
	yOffset:   b
c                   sF   a  ] tR t^(t o RtRtR tR tR tR t	R t
RtV tR	# )
table_E_B_D_T_zEmbedded Bitmap Data table

The ``EBDT`` table contains monochrome or grayscale bitmap data for
glyphs. It must be used in concert with the ``EBLC`` table.

See also https://learn.microsoft.com/en-us/typography/opentype/spec/ebdt
ZEBLCc                s    \         V,          # N)ebdt_bitmap_classes)selfimageFormat   &&F/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/E_B_D_T_.pygetImageFormatClassZ"table_E_B_D_T_.getImageFormatClass7   s    ";//    c                s   \         P                  ! \        W4       / pW P                  P                  ,          p. V n        VP                   F  p/ pV P
                  P                  V4       VP                   Fx  p\        VP                  VP                  4      pV FO  w  rW9   d
   W:,          pM7V\        V
!  ,          pV P                  VP                  4      pV! W4      pWV
&   WV	&   KQ  	  Kz  	  K  	  R # r   )r   unpack2ebdtTableVersionFormat	__class__locatorName
strikeDatastrikesappendindexSubTableszipnames	locationsslicer   r   )r   datattFont	glyphDictlocator	curStrikebitmapGlyphDictZindexSubTableZdataItercurNameZcurLoccurGlyphZcurGlyphDataimageFormatClasss   &&&           r   	decompileZtable_E_B_D_T_.decompile:   s    
 	.; 	
 334 I OOO""?3!*!9!9}22M4K4KL'/OG *#,#4'+E6N';+/+C+C)55,( $4L#I,4&)/7G, (0 ": )r   c                s   . pVP                  \        P                  ! \        V 4      4       \	        V^ ,          4      p/ pWP
                  P                  ,          p\        VP                  V P                  4       F  w  rgVP                   F  p. p	VP                   F  p
Wz,          p\        V4      pW9  dR   VP                  V4      pVP                  V4      pTpV\	        V4      ,          pTpVP                  V4       W3pVWL&   MWL,          pV	P                  V4       K  	  Wn        K  	  K  	  \!        V4      # )r    )r   r   packr   lenr   r   r    r   r   r   r!   ZidcompileZpadBitmapDatar"   r   )r   r%   dataListZdataSizer&   r'   r(   curGlyphDictcurIndexSubTableZdataLocationsr*   glyphZobjectIdr$   Z	startByteZendByteZdataLocs   &&               r   r0   Ztable_E_B_D_T_.compile]   s"   %;TBCx{#
 	 334'*7??DOO'L#I$-$<$<  "/55G )1E!%yH0$}}V4/==dC$,	 CI-"* -#,"6.5	+"+"5!((1/  66 .;*; %= (M@ ""r   c                sb   VP                   R9   d   W P                  P                  ,          p\        VP                  V P
                  4       F  w  rEVP                   Fn  pVP                   F[  pWW,          p\        VR4      '       d   VP                  Vn
        MVP                  Vn
        VP                  P                  Vn        K]  	  Kp  	  K  	  VP                  RRV P                  3.4       VP!                  4        W P                  P                  ,          p\#        V P
                  4       Fv  w  rVP%                  RRV	3.4       VP!                  4        V
P'                  4        F  w  r{VP)                  WW4       K  	  VP+                  R4       VP!                  4        Kx  	  R# )rowmetricsheaderversion
strikedataindexN)r5   bitwise)bitmapGlyphDataFormatr   r   r    r   r   r   r!   hasattrr6   exportMetricsZbitmapSizeTablebitDepthexportBitDepth	simpletagr8   newline	enumeratebegintagZitemstoXMLendtag)r   writerr%   r'   r(   r2   r3   r*   r4   strikeIndexr)   Z	curBitmaps   &&&         r   rE   Ztable_E_B_D_T_.toXML   sT    ''+==^^778G+.w+P'	(1(@(@$#3#9#9 , 5 #5)4427--E/2B2J2JE//8/H/H/Q/Q, $: )A ,Q 	Y$=#>?334,5doo,F(KOOLG[+A*BCNN&5&;&;&="fE '>MM,'NN -Gr   c                s&   VR 8X  d   \        VR,          4      V n        R# VR8X  Edi   \        V R4      '       g   . V n        \        VR,          4      p/ pV F  p\	        V\
        4      '       g   K  Vw  rpVR,          P                  \        R,          4      '       dW   \        V\        \        4      R 4      pVR,          p	V P                  V4      p
V
! RR4      pVP                  WW44       WV	&   K  \        P                  RWP                  P                  4       K  	  V\        V P                  4      8  dC   V ;P                  R.V^,           \        V P                  4      ,
          ,          ,          un        W`P                  V&   R# R# )	r7   r8   r9   r   r:   :i   NNNnamez%s being ignored by %s)r   r8   r=   r   
isinstancetupleZ
startswith_bitmapGlyphSubclassPrefixr/   r   fromXMLlogwarningr   __name__)r   rI   attrscontentr%   rH   r)   elementr   	glyphNamer,   r+   s   &&&&&       r   rM   Ztable_E_B_D_T_.fromXML   sG   8#E)$45DL\!4.."$"5>2K O"!'511'.$W8&&'A"'EFF"*44N0O0Q+R"SK %fI'+'?'?'L$/d;H$$T'B
 2:I.KK 8$@W@WX! #( c$//22D6[1_s4???S-S#TT ,;OOK(? "r   )r   r8   N)rP   
__module____qualname____firstlineno__Z__doc__r   r   r-   r0   rE   rM   __static_attributes____classdictcell____classdict__   @r   r   r   (   s1      K
0!8F0#d:"; ";r   r   c                   s,   a  ] tR t^t o R tR tRtV tR# )EbdtComponentc                s\   VP                  R RV P                  3.4       VP                  4        \        P                  ! \
        4      ^,          R,           F/  pVP                  V\        W4      R7       VP                  4        K1  	  VP                  R 4       VP                  4        R# )ebdtComponentrI      NNvalueN)	rD   rI   rB   r   	getformatebdtComponentFormatrA   getattrrF   )r   rG   r%   ZcomponentNames   &&& r   rE   ZEbdtComponent.toXML   s    6499*=)>?$../BCAFrJJM]'$2NONN K 	o&r   c                sH   VR ,          V n         \        \        P                  ! \        4      ^,          R,          4      pV F\  p\        V\        4      '       g   K  Vw  rpW9   d!   \        VR,          4      \        V 4      V&   KF  \        P                  RV4       K^  	  R# )rI   r_   rb   z1unknown name '%s' being ignored by EbdtComponent.N)rI   Zsetr   rc   rd   rJ   rK   r   ZvarsrN   rO   )r   rI   rQ   rR   r%   ZcomponentNamesrS      &&&&&  r   rM   ZEbdtComponent.fromXML   s~    &M	W../BCAFrJKGgu--#* D%#+E'N#;T
4 OQUV r   )rI   NrP   rU   rV   rW   rE   rM   rX   rY   rZ   r\   r   r]   r]      s     
W 
Wr   r]   c                 s   . pV  Fo  p\        V4      p\        ^V4      p\        V4       F>  pV^,          '       d   VP                  R4       MVP                  R4       V^,	          pK@  	  W,          pKq  	  \	        V4      # )   10)r   minranger   r   )r$   numBitsZ
binaryListcurByterb   
numBitsCutis   &&     r   _data2binaryrq      sz    J G_
z"As{{!!#&!!#&QJE # 	  :r   c                 s    . p\        ^ \        V 4      ^4       FW  pWV^,            p^ p\        V4       F  pV^,          pVR8X  g   K  V^,          pK   	  VP                  \	        V4      4       KY  	  \        V4      # )r    ri   )rl   r/   Zreversedr   r   r   )ZbinaryZbyteListZbitLocZ
byteStringrn   curBit   &     r   _binary2datart      sy    H3v;*VaZ0
z*FlG}1 + 	() + Xr   c                 sJ   a   ! V 3R  lR\         4      pV! 4       P                  # )c                   s.   <a  ] tR tRt o V3R ltRtV tR# )_memoize.<locals>.memodicti  c                sl   < S! V4      p\        V\        4      '       g   \        V4      ^8X  d   W V&   V# )r`   )rJ   Zintr/   )r   ZkeyZretfs   && r   __missing__Z&_memoize.<locals>.memodict.__missing__	  s/    C&C#s##s3x1}S	Jr    N)rP   rU   rV   rW   rw   rX   rY   )r[   rv   s   @r   memodictru     s     	 	r   ry   )ZdictZ__getitem__)rv   ry   s   f r   _memoizerz     s    4  :!!!r   c                s   \        V \        4      '       d*   \        V 4      ^8w  d   \        \	        \
        V 4      4      # \        V 4      p^ p\        ^4       F$  pV^,          pW!^,          ,          pV^,	          pK&  	  \        V4      # )za
>>> bin(ord(_reverseBytes(0b00100111)))
'0b11100100'
>>> _reverseBytes(b'\x00\xf0')
b'\x00\x0f'
)	rJ   Zbytesr/   r   map_reverseBytesr   rl   r   )r$   ZbyteZresultrp   s   &   r   r|   r|     ss     $3t9>]D1224=DF1X1(qy  6?r   c                 s    VP                  R 4       VP                  4        VP                  VP                  4       VP	                  R 4       VP                  4        R# )ZrawimagedataN)rD   rB   Zdumphex	imageDatarF   )rH   rT   bitmapObjectrG   r%      &&&&&r   _writeRawImageDatar   ,  s@    
OON#
NN
NN<))*
MM.!
NNr   c                 s&    \        V4      V n        R # r   )r   r}   )r~   rI   rQ   rR   r%   r   r   _readRawImageDatar   4  s    $W-Lr   c                 s   VP                   pV= VP                  pV=VP                  R WeP                  VP                  R7       VP                  4        \        VP                  4       FB  pVP                  WvVR7      pVP                  R\        V4      R7       VP                  4        KD  	  VP                  R 4       VP                  4        R# )Zrowimagedatar?   widthheightr?   r6   r5   ra   N)r>   r@   rD   r   r   rB   rl   getRowrA   r   rF   )	rH   rT   r~   rG   r%   r6   r?   curRowrowData	   &&&&&    r   _writeRowImageDatar   8  s    ((G"**H#
OOw~~   NN'%%f%QfWo6 ( MM.!
NNr   c                 sd   \        VR ,          4      p\        4       p\        VR,          4      Vn        \        VR,          4      Vn        . pV FJ  p\	        V\
        4      '       g   K  Vw  rpVR8X  g   K)  VP                  \        V	R,          4      4       KL  	  V P                  WuVR7       R# )r?   r   r   r5   rb   r   N)	r   r   r   r   rJ   rK   r   r	   setRows)
r~   rI   rQ   rR   r%   r?   r6   dataRowsrS   attr
   &&&&&     r   _readRowImageDatar   J  s    j)*H!GU7^,GMeHo.GNH'5))%G5=OOHT']34  gFr   c                 s   VP                   pV= VP                  pV=R RRR/pVP                  RVVP                  VP                  R7       VP                  4        \        VP                  4       Fo  pVP                  V^VRR7      p	\        WP                  4      p	\        \        VP                  V	4      4      p	VP                  RV	R	7       VP                  4        Kq  	  VP                  R4       VP                  4        R
# )rj   .ri   Z@Zbitwiseimagedatar   Tr?   r6   reverseBytesr5   ra   N)r>   r@   rD   r   r   rB   rl   r   rq   r   r{   getrA   rF   )
rH   rT   r~   rG   r%   r6   r?   
binaryConvr   r   r   r   _writeBitwiseImageDatar   [  s    ((G"**H# sC%J
OOmm~~	   NN'%%Qd & 
 w6#jnng67g. ( MM$%
NNr   c                 s
   \        VR ,          4      p\        4       p\        VR,          4      Vn        \        VR,          4      Vn        RRRRRR/p. pV F  p	\	        V	\
        4      '       g   K  V	w  rpVR8X  g   K)  \        V
R,          \        P                  ! R4      4      p\        \        P                  ! VP                  V4      4      pVP                  \        V4      4       K  	  V P                  WVR	R
7       R# )r?   r   r   Z rj   r   r5   rb   ri   Tr   N)r   r   r   r   rJ   rK   r    	itertoolsZrepeatr   Zstarmapr   r   rt   r   )r~   rI   rQ   rR   r%   r?   r6   r   r   rS   r   Z	mapParamsr   s   &&&&&        r   _readBitwiseImageDatar   x  s    j)*H!GU7^,GMeHo.GN sCc3/JH'5))%G5=DM9+;+;C+@AIi//
	JKGOOL12  W4  r   c                 sP    \         P                  P                  VP                  P                  4      p\         P                  P                  VR4      pWP                  ,           p\         P                  P                  V4      '       g   \         P                  ! V4       \         P                  P                  VRV ,          4      p\         P                  P                  V4      '       g   \         P                  ! V4       \         P                  P                  WV4      pVP                  RVR7       VP                  4        \        VR4      ;_uu_ 4       pVP                  VP                  4       RRR4       R#   \
         d    R p EL[i ; i  + '       g   i     R# ; i)r   Zbitmapszstrike%dZextfileimagedatara   ZwbN)osZpathZdirnamefilerI   AttributeErrorZjoinfileExtensionZisdirZmakedirsrA   rB   openZwriter}   )	rH   rT   r~   rG   r%   ZfolderZfilenamefullPathr   r   r   _writeExtFileImageDatar     s   !1!12 WW\\&),F555H77==  
FWW\\&*{":;F77==  
Fww||F-H
'x8
NN	h		

<))* 
	   
		s   3F  F FFF%	c                 s    VR ,          p\        VR4      ;_uu_ 4       pVP                  4       V n        RRR4       R#   + '       g   i     R# ; i)rb   ZrbN)r   Zreadr}   )r~   rI   rQ   rR   r%   r   r   rf   r   _readExtFileImageDatar     s7    W~H	h		!% 
			s	   >A	Zebdt_bitmap_format_c            	       s   a  ] tR tRt o RtR]]3R]]3R]	]
3R]]3/tR tR tRR	 ltR
 tR tR tR tR tR tR tRtV tR# )BitmapGlyphi  z.binZrawr5   r;   Zextfilec                s    Wn         W n        R # r   r$   r%   )r   r$   r%      &&&r   __init__ZBitmapGlyph.__init__  s    	r   c                s    VR ,          R8X  d   \        V4      hVR8X  d   \        V4      hV P                  4        V =\        W4      # )N   NZ__r$   )r   r-   r$   re   )r   r   r   r   __getattr__ZBitmapGlyph.__getattr__  sE    8t &&6> &&It""r   c                sR    \        V R 4      '       d   V P                  4        V =R# R# )r$   N)r=   r-   r$   )r   Zrecurser   r   ensureDecompiledZBitmapGlyph.ensureDecompiled  s#    4  NN	 !r   c                s`    \        V P                  P                  \        \        4      R  4      # r   )r   r   rP   r/   rL   r      &r   	getFormatZBitmapGlyph.getFormat  s%    //4N0O0QRSSr   c                s(   VP                  V P                  P                  R V3.4       VP                  4        V P	                  W44       V P                  WW44       VP                  V P                  P                  4       VP                  4        R# )rI   N)rD   r   rP   rB   writeMetrics	writeDatarF   )r   rH   rT   rG   r%   r   r   rE   ZBitmapGlyph.toXML  sh    //692E1FG&){v>dnn--.r   c                s    V P                  WW44       V FZ  p\        V\        4      '       g   K  Vw  rpVP                  R 4      '       g   K9  VR\	        R 4      )  pV P                  WW44       K\  	  R# )	imagedataN)readMetricsrJ   rK   Zendswithr/   readData)r   rI   rQ   rR   r%   rS   r   option   &&&&&   r   rM   ZBitmapGlyph.fromXML  sk    g6Ggu--")D==---S--.FMM$g6 r   c                    R # r   rx   r   rG   r%   r   r   r   ZBitmapGlyph.writeMetrics      r   c                r   r   rx   )r   rI   rQ   rR   r%   r   r   r   ZBitmapGlyph.readMetrics  r   r   c                s     V P                   P                  VP                  ,          w  rVV! WWV4       R #   \         d
    \        p Li ; ir   )r   xmlDataFunctionsr<   ZKeyErrorr   )r   rH   rT   rG   r%   	writeFuncreadFuncrf   r   r   ZBitmapGlyph.writeData  sK    	+"&.."A"A,,#I
 	+$?  	+*I	+s   )7 A
Ac                sv    VR \        R4      )  pV P                  P                  V,          w  rgV! WW#V4       R # )Nr   )r/   r   r   )r   rI   rQ   rR   r%   r   r   r   r   r   r   ZBitmapGlyph.readData  s:    )[))*"nn==fE	UV4r   r   N)F)rP   rU   rV   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   rM   r   r   r   r   rX   rY   rZ   r\   r   r   r     s      M 	"$56"$56*,AB*,AB	#T	7@5 5r   r   c                 s   a aa \         P                  \        P                  .pS P                  oVP                  S4      pV^V,
          ,          o ! VV V3R lR\        4      pV# )r`   c                   s8   <a  ] tR tRt o R tVVV3R ltRtV tR# )=_createBitmapPlusMetricsMixin.<locals>.BitmapPlusMetricsMixini  c                s<    V P                   P                  W4       R # r   )r6   rE   r   r   r   r   ZJ_createBitmapPlusMetricsMixin.<locals>.BitmapPlusMetricsMixin.writeMetrics  s    LLv.r   c                s  < V F  p\        V\        4      '       g   K  Vw  rpVS8X  d+   S! 4       V n        V P                  P                  WW44       KQ  VS8X  g   KZ  \        P                  R SV P                  4       4       K  	  R# )z'Warning: %s being ignored in format %d.N)rJ   rK   r6   rM   rN   rO   r   )	r   rI   rQ   rR   r%   rS   curMetricsNamemetricsClassoppositeMetricsNames	   &&&&& r   r   ZI_createBitmapPlusMetricsMixin.<locals>.BitmapPlusMetricsMixin.readMetrics  sq    "!'511'.$W>)#/>DLLL((gF00KKA+( #r   )r6   N)rP   rU   rV   rW   r   r   rX   rY   )r[   r   r   r   s   @r   BitmapPlusMetricsMixinr     s     	/	 	r   r   )r
   rP   r   r:   object)r   ZmetricStringsZ	metricsIdr   r   r   s   f   @@r   _createBitmapPlusMetricsMixinr     s]    $--/@/I/IJM!**N##N3I'I6  & "!r   c                   :   a  ] tR tRt o R tRR ltRR ltRtV tR# )BitAlignedBitmapMixini7  c                sJ    W#P                   ,          pW,          pWUV,           3# r   r   )r   r5   r?   r6   ZrowBitsZ	bitOffset   &&&&  r   _getBitRangeZ"BitAlignedBitmapMixin._getBitRange8  s#    ]]*M	w.//r   Nc                s   Vf   V P                   p. pV P                  WV4      pVR,           p\        V!   EF&  p\        V^,           V^,          4      p	W,
          p
V^,          pV^,          pV	^,          pW8  d   ^V,
          pMW,
          p\	        V P
                  V,          4      p\        V4      V,	          p^V,          ^,
          V,          pTpW8  dg   V\        V P
                  4      8  dM   \	        V P
                  V,          4      p\        V4      V,          pVV,          ^V
,          ^,
          ,          pVP                  \        V4      4       EK)  	  \        V4      pV'       g   \	        V4      pV# N)rh   )r6   r   rl   rk   r|   r}   r   r/   r   r   r   )r   r5   r?   r6   r   r1   bitRange	stepRangerr   endBitrm   cutPointfirstByteLocsecondByteLocro   rn   Z	firstHalfZnewByteZ
secondHalfr$      &&&&&               r   r   ZBitAlignedBitmapMixin.getRow=  sF   ?llG$ $$SG<tO	Y'F!Xa[1FoGzH!Q;L"aKM+\
#_
#DNN<$@AG(H4Iz/Q.);IG+DNN@S0S'}(EF$W-;
$z1qG|q6HIOOGG,-% (* " &Dr   c                sr   Vf   V P                   pV'       g   \        \        \        V4      4      pV P	                  \        V4      W#4      ^ ,          ^,           ^,          p^ .V,          p\        V4       EF  w  rxV P	                  WrV4      p	V	R,           p
\        \        V
!  V4       F  w  r\        V^,           V	^,          4      pV^,          pV^,          pV^,          pVV8  d   ^V,
          pMW,
          p\        V4      pV^V,          ^,
          ,          pWo;;,          VV,          ,          uu&   VV8  g   K  VV8  g   K  VV,	          ^^V,
          ,          ^,
          ,          pVV;;,          V,          uu&   K  	  EK  	  \        \        \        \        V4      4      4      V n        R # r   )r6   Zlistr{   r|   r   r/   rC   r    rl   rk   r   r   r   r}   )r   r   r?   r6   r   ZnumBytesZordDataListr5   r$   r   r   rr   rn   r   r   r   r   ro   Z	firstByteZ
secondByter   r   r   ZBitAlignedBitmapMixin.setRowsn  sj   ?llGCx89H %%c(mXGJQNSTTcHn"8,IC((@H 4I#&ui'8$#?VaZ!5!A:%{ &!-/!"XJ!'J!'*#Z1'<=	)Y(-BB)-/MH4L")Z"7Q!j.=PTU<U!VJ.*<. $@ -( 'yWk1J'KLr   r}   r`   NF)	rP   rU   rV   rW   r   r   r   rX   rY   rZ   r\   r   r   r   7  s     0
/bM Mr   r   c                   r   )ByteAlignedBitmapMixini  c                sf    W#P                   ,          ^,           ^,          pW,          pWUV,           3# )i   r   )r   r5   r?   r6   ZrowBytesZ
byteOffsetr   r   _getByteRangeZ$ByteAlignedBitmapMixin._getByteRange  s-    }},q0Q6^
122r   Nc                s    Vf   V P                   pV P                  WV4      pV P                  \        V!  ,          pV'       d   \	        V4      pV# r   )r6   r   r}   r#   r|   )r   r5   r?   r6   r   Z	byteRanger$   rf   r   r   ZByteAlignedBitmapMixin.getRow  sG    ?llG&&sg>	~~eY/0 &Dr   c                sv    Vf   V P                   pV'       d   \        \        V4      p\        V4      V n        R # r   )r6   r{   r|   r   r}   )r   r   r?   r6   r   r   r   r   ZByteAlignedBitmapMixin.setRows  s+    ?llG=(3H"8,r   r   r   )	rP   rU   rV   rW   r   r   r   rX   rY   rZ   r\   r   r   r     s     3
- -r   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )ebdt_bitmap_format_1i  c                    \        4       V n        \        P                  ! \        V P
                  V P                  4      w  rW n        R # r   r   r6   r   r   r   r$   r}   r   dummyr$      &  r   r-   Zebdt_bitmap_format_1.decompile  .    (*oo&=tyy$,,Wr   c                p    \         P                  ! \        V P                  4      pW P                  ,           # r   r   r.   r   r6   r}   r   r%   r$      && r   r0   Zebdt_bitmap_format_1.compile  $    ||3T\\Bnn$$r   r}   r6   NrP   rU   rV   rW   r-   r0   rX   rY   rZ   r\   r   r   r          
% %r   r   c                   r   )ebdt_bitmap_format_2i  c                r   r   r   r   r   r   r-   Zebdt_bitmap_format_2.decompile  r   r   c                r   r   r   r   r   r   r0   Zebdt_bitmap_format_2.compile  r   r   r   Nr   rZ   r\   r   r   r     r   r   r   c                   r   )ebdt_bitmap_format_5i  c                s(    V P                   V n        R # r   )r$   r}   r   r   r   r-   Zebdt_bitmap_format_5.decompile  s    r   c                s    V P                   # r   r   )r   r%   r   r   r0   Zebdt_bitmap_format_5.compile  s    ~~r   r   Nr   rZ   r\   r   r   r     s     # r   r   c                   r   )ebdt_bitmap_format_6i  c                r   r   r
   r6   r   r   r   r$   r}   r   r   r   r-   Zebdt_bitmap_format_6.decompile  .    &(oo&;TYYUr   c                r   r   r   r.   r   r6   r}   r   r   r   r0   Zebdt_bitmap_format_6.compile  $    ||14<<@nn$$r   r   Nr   rZ   r\   r   r   r     r   r   r   c                   r   )ebdt_bitmap_format_7i  c                r   r   r   r   r   r   r-   Zebdt_bitmap_format_7.decompile  r   r   c                r   r   r   r   r   r   r0   Zebdt_bitmap_format_7.compile  r   r   r   Nr   rZ   r\   r   r   r     r   r   r   c                   r   )ComponentBitmapGlyphi  c                s   VP                  V P                  P                  R V3.4       VP                  4        V P	                  W44       VP                  R4       VP                  4        V P
                   F  pVP                  W44       K  	  VP                  R4       VP                  4        VP                  V P                  P                  4       VP                  4        R# )rI   
componentsN)rD   r   rP   rB   r   componentArrayrE   rF   )r   rH   rT   rG   r%   curComponents   &&&&& r   rE   ZComponentBitmapGlyph.toXML  s    //692E1FG&)% //Lv. 0l#dnn--.r   c                s   V P                  WW44       V F  p\        V\        4      '       g   K  Vw  rpVR 8X  g   K)  . V n        V Fv  p\        V\        4      '       g   K  Vw  rpVR8X  d:   \	        4       pVP                  WW44       V P                  P                  V4       K`  \        P                  RV4       Kx  	  K  	  R# )r   r^   z&'%s' being ignored in component array.N)	r   rJ   rK   r   r]   rM   r   rN   rO   )	r   rI   rQ   rR   r%   rS   r   ZcompElementr   r   r   rM   ZComponentBitmapGlyph.fromXML  s    g6Ggu--")D|#&(##*K%k599 +6(D.'4$,,T'J++22<@$LdS $+ r   )r   Nrg   rZ   r\   r   r   r     s      T Tr   r   c                   r   )ebdt_bitmap_format_8i  c                s   \        4       V n        \        P                  ! \        V P
                  V P                  4      w  rVR ,          p\        P                  ! RVR,          4      w  pVR,          p. V n        \        V4       Fo  p\        4       p\        P                  ! \        W%4      w  rV P                  P                  VP                  4      Vn        V P                  P!                  V4       Kq  	  R# )r_   >Hr   r   NNN)r   r6   r   r   r   r$   structunpackr   rl   r]   rd   r%   getGlyphName	glyphCoderI   r   r   r   r$   ZnumComponentsrp   r   rs   r   r-   Zebdt_bitmap_format_8.decompile	  s    (*oo&=tyy$,,WBx!==tBx8Bx }%A(?L!//*=tRKE $ 8 89O9O PL&&|4	 &r   c                s   . pVP                  \        P                  ! \        V P                  4      4       VP                  R 4       VP                  \
        P                  ! R\        V P                  4      4      4       V P                   FM  pVP                  VP                  4      Vn
        VP                  \        P                  ! \        V4      4       KO  	  \        V4      # )s    r   )r   r   r.   r   r6   r   r/   r   
getGlyphIDrI   r   rd   r   r   r%   r1   r      &&  r   r0   Zebdt_bitmap_format_8.compile  s    %<dllKLD#d.A.A*BCD //L%+%6%6|7H7H%IL"OOGLL)<lKL 0 ""r   r   r6   Nr   rZ   r\   r   r   r     s     5# #r   r   c                   r   )ebdt_bitmap_format_9i"  c                s   \        4       V n        \        P                  ! \        V P
                  V P                  4      w  r\        P                  ! R VR,          4      w  pVR,          p. V n        \        V4       Fo  p\        4       p\        P                  ! \        W%4      w  rV P                  P                  VP                  4      Vn        V P                  P!                  V4       Kq  	  R# )r   r   r   N)r
   r6   r   r   r   r$   r   r   r   rl   r]   rd   r%   r   r   rI   r   r   rs   r   r-   Zebdt_bitmap_format_9.decompile#  s    &(oo&;TYYU!==tBx8Bx }%A(?L!//*=tRKE $ 8 89O9O PL&&|4	 &r   c                s   . pVP                  \        P                  ! \        V P                  4      4       VP                  \
        P                  ! R \        V P                  4      4      4       V P                   FM  pVP                  VP                  4      Vn
        VP                  \        P                  ! \        V4      4       KO  	  \        V4      # )r   )r   r   r.   r   r6   r   r/   r   r   rI   r   rd   r   r   r   r   r0   Zebdt_bitmap_format_9.compile/  s    %:DLLIJD#d.A.A*BCD //L%+%6%6|7H7H%IL"OOGLL)<lKL 0 ""r   r   Nr   rZ   r\   r   r   r   "  s     
5# #r   r   ):ZfontTools.miscr   ZfontTools.misc.textToolsr   r   r   r   r   r   r   r	   ZBitmapGlyphMetricsr
   r   r   r   Z r   r   r   r   ZloggingZ	getLoggerrP   rN   r   rd   r   r   r]   rq   rt   rz   r|   r   r   r   r   r   r   r   r   rL   r   r   ZBitmapPlusBigMetricsMixinZBitmapPlusSmallMetricsMixinr   r   r   r   r   r   r   r   r   r   r   rx   r   r   <module>r      s   "	 	 	    	   ! 
 f;\.. f;RWF W4
" 
 
*.$G":2+,- 3 W5& W5z"> :/J ;<MN UMF UMp-V -0
%7
%
%6
%0+ 
%5{
%
%4k
%"T; "TJ#68L #4#46J #4  r   