
    Ph4x                     T   d dl mZ ddlmZ d dlmZmZ ddlmZm	Z	m
Z
mZ d dlZd dlZd dlmZ d dlZ ej"                  e      ZdZd	Zd
ZdZdZ ej2                  e      ZdZ ej2                  e      ZdZ ej2                  e      Z G d dej                        Z G d de       Z! G d de       Z" G d de       Z#dZ$ G d de       Z%d Z& G d de       Z' G d d e&d      e%      Z( G d d e'e%      Z) G d! d" e&d#      e%      Z* G d$ d%e%      Z+ G d& d'e'e%      Z,e(e)e*e+e,d(Z-y))    )sstruct   )DefaultTable)	bytesjoinsafeEval)BigGlyphMetricsbigGlyphMetricsFormatSmallGlyphMetricssmallGlyphMetricsFormatN)dequez0
	> # big endian
	version:  16.16F
	numSizes: I
z
	> # big endian
	indexSubTableArrayOffset: I
	indexTablesSize:          I
	numberOfIndexSubTables:   I
	colorRef:                 I
aI  
	> # big endian
	ascender:              b
	descender:             b
	widthMax:              B
	caretSlopeNumerator:   b
	caretSlopeDenominator: b
	caretOffset:           b
	minOriginSB:           b
	minAdvanceSB:          b
	maxBeforeBL:           b
	minAfterBL:            b
	pad1:                  b
	pad2:                  b
z
	> # big endian
	startGlyphIndex: H
	endGlyphIndex:   H
	ppemX:           B
	ppemY:           B
	bitDepth:        B
	flags:           b
z>HHLz>HHc                   4    e Zd ZdZdgZd Zd Zd Zd Zd Z	y)	table_E_B_L_C_a  Embedded Bitmap Location table

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

    See also https://learn.microsoft.com/en-us/typography/opentype/spec/eblc
    EBDTc                     t         |   S N)eblc_sub_table_classes)selfindexFormats     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\fontTools/ttLib/tables/E_B_L_C_.pygetIndexFormatClassz"table_E_B_L_C_.getIndexFormatClassR   s    %k22    c           	      n   |}d}t        j                  t        |d d |       }|dz  }g | _        t	        | j
                        D ]  }t               }| j                  j                  |       |j                  }t        j                  t        |||dz    |      }|dz  }dD ]@  }	t               }
|
t        |      |	<   t        j                  t        |||dz    |
      }|dz  }B t        j                  t        |||dz    |      }|dz  } | j                  D ]  }|j                  }t	        |j                        D ]  }|j                   |t"        z  z   }t%        j                  t&        |||t"        z          }|\  }}}|j                   |z   }t%        j                  t(        |||t*        z          }|\  }}}| j-                  |      } |||t*        z   d  |      }||_        ||_        ||_        ||_        ||_        ||_        |j;                          |j<                  j                  |         y )Nr         horivert   )r   unpackeblcHeaderFormatstrikesrangenumSizesStrikeappendbitmapSizeTableunpack2bitmapSizeTableFormatPart1SbitLineMetricsvarssbitLineMetricsFormatbitmapSizeTableFormatPart2numberOfIndexSubTablesindexSubTableArrayOffsetindexSubTableArraySizestructindexSubTableArrayFormatindexSubHeaderFormatindexSubHeaderSizer   firstGlyphIndexlastGlyphIndexadditionalOffsetToIndexSubtabler   imageFormatimageDataOffset	decompileindexSubTables)r   datattFontorigDataidummycurStrikeIndex	curStrikecurTablemetric	metricObjsubtableIndextupr4   r5   r6   r   r7   r8   indexFormatClassindexSubTables                        r   r9   ztable_E_B_L_C_.decompileU   sO   /bq4@	Q#DMM2NILL	* 00HOO*DQV,<hE GA*+-	)2Xv&)4AF+;Y R + NN*DQUOXE FA% 3( I 00H!&x'F'F!G55#&<<= 
 mm,d1q;Q7Q.R VYR.2Q558WWmm($q17I3I*J ?B;k?#'#;#;K#H  0a:L6L6N1OQW X0?-/=,3 = -8),7)0?-'')((//>9 "H &r   c                    g }t        | j                        | _        |j                  t	        j
                  t        |              t        |d         }| j                  D ]b  }|t	        j                  t              z  }|t        d      t	        j                  t              z  z  }|t	        j                  t              z  }d g }| j                  D ]  }|j                  }t        |j                        |_        ||_        |j                  t        z  }|}	||z  }|}
g }|j                  D ]  }||j                  z
  |_        t#        t%        |j&                  |j(                              }t+        |      |_        t/        |      |_        |j3                  |      }|j                  |       |t        |      z  } t+        d |j                  D              |_        t/        d |j                  D              |_        |j                  D ]M  }t9        j
                  t:        |j,                  |j0                  |j                         }|j                  |       O |j=                  |       ||j                  z
  |_         | j                  D ]  }|j                  }t	        j
                  t        |      }|j                  |       dD ];  }tA        |      |   }t	        j
                  t        |      }|j                  |       = t	        j
                  t        |      }|j                  |        |j=                  |       tC        |      S )Nr   r   c              3   4   K   | ]  }|j                     y wr   )r4   .0ists     r   	<genexpr>z)table_E_B_L_C_.compile.<locals>.<genexpr>   s      +/G##/G   c              3   4   K   | ]  }|j                     y wr   )r5   rK   s     r   rN   z)table_E_B_L_C_.compile.<locals>.<genexpr>   s      ).Fs"".FrO   )"lenr!   r#   r%   r   packr    calcsizer(   r+   r,   r&   r:   r-   r.   r/   r6   listmap
getGlyphIDnamesminr4   maxr5   compilestartGlyphIndexendGlyphIndexr0   r2   extendindexTablesSizer*   r   )r   r<   dataListdataSize_indexSubTablePairDataListrA   rB   sizeOfSubTableArray
lowerBound
upperBoundindexSubTableDataListrH   glyphIdsr;   r>   rC   rD   s                     r   rZ   ztable_E_B_L_C_.compile   s   DLL)%5t<=
 x{#8 A(()CDDH,-0@0@AV0WWWH(()CDDH 
 %'!I 00H.1)2J2J.KH+08H- //2HH   "J++H!J$&!!*!9!9x@@@ =  F$5$5}7J7J KL03H-/28},$,,V4%,,T2CI% ": (+ +/8/G/G+ (H$ &) ).7.F.F) &H" --{{(%%$$55	 *006 . &,,-BC'/(2S2S'SH$U &X I 00H<< :HEDOOD!* N62	||$99E% + << :HEDOOD! & 	12""r   c                     |j                  dd| j                  fg       |j                          t        | j                        D ]  \  }}|j                  |||        y )Nheaderversion)	simpletagrj   newline	enumerater!   toXML)r   writerr<   curIndexrA   s        r   rn   ztable_E_B_L_C_.toXML   sP    Y$=#>?#,T\\#:HiOOHff5 $;r   c                    |dk(  rt        |d         | _        y |dk(  rt        | d      sg | _        t        |d         }t	               }|j                  |||||        |t        | j                        k\  r2| xj                  d g|dz   t        | j                        z
  z  z  c_        | j                  |   J d       || j                  |<   y y )Nri   rj   striker!   indexr   zDuplicate strike EBLC indices.)r   rj   hasattrr!   r$   fromXMLrQ   )r   nameattrscontentr<   strikeIndexrA   s          r   ru   ztable_E_B_L_C_.fromXML   s    8#E)$45DLX4+!"5>2KIdE7FDA c$,,//+/C<M*M NN<<,4V6VV4(1DLL% r   N)
__name__
__module____qualname____doc__dependenciesr   r9   rZ   rn   ru    r   r   r   r   D   s,     8L
3;?zb#H62r   r   c                       e Zd Zd Zd Zd Zy)r$   c                 0    t               | _        g | _        y r   )BitmapSizeTabler&   r:   )r   s    r   __init__zStrike.__init__  s    .0 r   c                 P   |j                  dd|fg       |j                          | j                  j                  ||       |j	                  d       |j                          | j
                  D ]  }|j                  ||        |j                  d       |j                          y )Nrr   rs   zvGlyphIds are written but not read. The firstGlyphIndex and
lastGlyphIndex values will be recalculated by the compiler.)begintagrl   r&   rn   commentr:   endtag)r   ry   ro   r<   rH   s        r   rn   zStrike.toXML  s    G[#9":;""662 F	
 	!00M/ 1hr   c                    |D ]  }t        |t              s|\  }}}|dk(  r| j                  j                  ||||       >|j	                  t
              sTt        |t        t
              d        }|j                  |      } |d d       }	||	_	        |	j                  ||||       | j                  j                  |	        y )Nr&   )
isinstancetupler&   ru   
startswith_indexSubTableSubclassPrefixr   rQ   r   r   r:   r%   )
r   rv   rw   rx   r<   locatorelementr   rG   rH   s
             r   ru   zStrike.fromXML   s    Ggu-#* D%(($$,,T5'6J!=>&tC0L,M,O'PQ#*#>#>{#K  0t <,7)%%dE7FC##**=9 r   N)rz   r{   r|   r   rn   ru   r   r   r   r$   r$     s    !:r   r$   c                       e Zd Zd Zd Zd Zy)r   c                     t        j                  t              d   }i |t        j                  t              d   }t	        |j                               dd  S )Nr      )r   	getformatr(   r,   rT   keys)r   	dataNamess     r   _getXMLMetricNamesz"BitmapSizeTable._getXMLMetricNames3  sR    %%&@A!D	UyUG$5$56P$QRS$TU	INN$%ab))r   c                 T   |j                  d       |j                          dD ]  }t        | |      j                  |||       ! | j	                         D ]/  }|j                  |t        | |             |j                          1 |j                  d       |j                          y )Nr&   r   value)r   rl   getattrrn   r   rk   r   )r   ro   r<   rC   
metricNames        r   rn   zBitmapSizeTable.toXML9  s    )*&FD&!''? '113JZwtZ/HINN 4 	'(r   c                 `   t        | j                               }|D ]  }t        |t              s|\  }}}|dk(  r=|d   }|dv sJ d       t	               }|j                  ||||       |t        |       |<   \||v rt        |d         t        |       |<   {t        j                  d|        y )NsbitLineMetrics	directionr   z,SbitLineMetrics direction specified invalid.r   z3unknown name '%s' being ignored in BitmapSizeTable.)
setr   r   r   r)   ru   r*   r   logwarning)	r   rv   rw   rx   r<   r   r   r   rD   s	            r   ru   zBitmapSizeTable.fromXMLD  s     //12	Ggu-#* D%((!+.	  %  B BB  ,-	!!$w?(1T
9%"#+E'N#;T
4 QSWX! r   N)rz   r{   r|   r   rn   ru   r   r   r   r   r   0  s    *	Yr   r   c                       e Zd Zd Zd Zy)r)   c                 ,   |j                  dd|fg       |j                          t        j                  t              d   D ]/  }|j                  |t        | |             |j                          1 |j                  d       |j                          y )Nr   r   r   r   )r   rl   r   r   r+   rk   r   r   )r   rv   ro   r<   r   s        r   rn   zSbitLineMetrics.toXML\  s|    )[$,?+@A!++,AB1EJZwtZ/HINN F 	'(r   c                     t        t        j                  t              d         }|D ]8  }t	        |t
              s|\  }}}||v st        |d         t        |       |<   : y )Nr   r   )r   r   r   r+   r   r   r   r*   )r   rv   rw   rx   r<   metricNamesr   s          r   ru   zSbitLineMetrics.fromXMLe  s_    '++,AB1EFGgu-#* D%{"#+E'N#;T
4  r   N)rz   r{   r|   rn   ru   r   r   r   r)   r)   [  s    <r   r)   eblc_index_sub_table_c                   J    e Zd Zd Zd ZddZd Zd Zd Zd Z	d Z
d	 Zd
 Zy)EblcIndexSubTablec                      || _         || _        y r   )r;   r<   )r   r;   r<   s      r   r   zEblcIndexSubTable.__init__t  s    	r   c                     |d d dk(  rt        |      |dk(  rt        |      | j                          t        | |      S )N   __r;   )AttributeErrorr9   r   )r   attrs     r   __getattr__zEblcIndexSubTable.__getattr__|  sD    8t &&6> &&tT""r   c                 >    t        | d      r| j                          y y )Nr;   )rt   r9   )r   recurses     r   ensureDecompiledz"EblcIndexSubTable.ensureDecompiled  s    4 NN !r   c                 v    t        j                  t        | j                  | j                  | j
                        S r   )r0   rR   r2   r   r7   r8   )r   r<   s     r   rZ   zEblcIndexSubTable.compile  s1    {{   	
 	
r   c                    |j                  | j                  j                  d| j                  fd| j                  fd| j
                  fg       |j                          | j                  ||       t        |j                  | j                        }t        | j                  |      D ])  \  }}|j                  d||       |j                          + |j                  | j                  j                         |j                          y )Nr7   r4   r5   glyphLoc)rv   id)r   	__class__rz   r7   r4   r5   rl   writeMetricsrU   rV   rW   ziprk   r   )r   ro   r<   rg   	glyphNameglyphIds         r   rn   zEblcIndexSubTable.toXML  s    NN## 0 01"D$8$89!4#6#67	
 	&&) v(($**5"%djj(";IwZiGDNN #< 	dnn--.r   c                 0   t        |d         | _        t        |d         | _        t        |d         | _        | j	                  ||||       g | _        |D ]=  }t        |t              s|\  }}}|dk(  s | j
                  j                  |d          ? y )Nr7   r4   r5   r   rv   )	r   r7   r4   r5   readMetricsrW   r   r   r%   r   rv   rw   rx   r<   r   s         r   ru   zEblcIndexSubTable.fromXML  s     $E-$89'.?(@A&u-='>?ugv6
Ggu-#* D%z!

!!%-0 r   c                      y r   r   r   ro   r<   s      r   r   zEblcIndexSubTable.writeMetrics      r   c                      y r   r   )r   rv   rw   rx   r<   s        r   r   zEblcIndexSubTable.readMetrics  r   r   c                     |S r   r   )r   r;   s     r   padBitmapDatazEblcIndexSubTable.padBitmapData  s    r   c           	          d }t        t        |t        | j                  | j                                    }t        t        t         t        |             \  | _        | _        y )Nc                     | \  }\  }}||k  S r   r   )argsrv   	startByteendBytes       r   isValidLocationz;EblcIndexSubTable.removeSkipGlyphs.<locals>.isValidLocation  s    +/(T'Iww&&r   )rT   filterr   rW   	locationsrU   )r   r   	dataPairss      r   removeSkipGlyphsz"EblcIndexSubTable.removeSkipGlyphs  sG    	'
 TZZ1PQR	%)#dCO*D%E"
DNr   N)F)rz   r{   r|   r   r   r   rZ   rn   ru   r   r   r   r   r   r   r   r   r   s  s5    #
*1*
	Fr   r   c                 b    d| z   t        j                         G fddt              }|S )N>c                   &    e Zd Z fdZ fdZy)K_createOffsetArrayIndexSubTableMixin.<locals>.OffsetArrayIndexSubTableMixinc           
      v   | j                   | j                  z
  dz   }t        |dz         D cg c]  }|z  	 }}t        ||dd        }|D cg c].  }t	        j
                  
| j                  t        |          d   0 }}t        t        | j                  | j                   dz               }|D cg c]  }|| j                  z    }	}t        t        |	|	dd              | _
        t        t        | j                  j                  |            | _        | j                          | `| `y c c}w c c}w c c}w )Nr   r   r   )r5   r4   r"   r   r0   r   r;   slicerT   r8   r   rU   r<   getGlyphNamerW   r   )r   	numGlyphs
glyphIndexindexingOffsetsindexingLocationslocoffsetArrayrg   offsetmodifiedOffsets
dataFormatoffsetDataSizes             r   r9   zU_createOffsetArrayIndexSubTableMixin.<locals>.OffsetArrayIndexSubTableMixin.decompile  s>   ++d.B.BBQFI>CIPQM>R>R

^+>R   !$O_QR5H I -,C j$))E3K*@A!D,  
 E$"6"68K8Ka8OPQHKVW;v(<(<<;OW!#oqr7J"KLDNc$++":":HEFDJ!!#	4; Xs   D,3D14D6c                 D   t        | j                  | j                  dd        D ]  \  }}|d   |d   k(  rJ d        t        t        |j                  | j
                              t        fdt        t              dz
        D              sJ t              }t        | j                        }t        t        | j                  | j                  dz               }g }|D ]Y  }||d   k7  r |j                  |d   d   |d   d   f       +|j                          |j                  |j                                [ t        |d         |dd  D 	cg c]  }	|	d   	 c}	z   }
t        |
      | _        |
D cg c]  }|| j                  z
   }}t         j#                  | |      g}||D cg c]  }t%        j&                  |       c}z  }t        |      z  dz  dk7  r%|j                  t%        j&                  d             t)        |      S c c}	w c c}w c c}w )Nr   r   z8Data must be consecutive in indexSubTable offset formatsc              3   :   K   | ]  }|   |d z      k    yw)r   Nr   )rL   r>   rg   s     r   rN   zf_createOffsetArrayIndexSubTableMixin.<locals>.OffsetArrayIndexSubTableMixin.compile.<locals>.<genexpr>  s%     W>Vx{Xa!e_4>Vs      )r   r   rT   rU   rV   rW   allr"   rQ   r   r4   r5   r%   popleftrX   r8   r   rZ   r0   rR   r   )r   r<   curLocnxtLocidQueuelocQueueallGlyphIdsallLocationscurIdr   offsetsr   r   r_   offsetValuerg   r   r   s                  @r   rZ   zS_createOffsetArrayIndexSubTableMixin.<locals>.OffsetArrayIndexSubTableMixin.compile  s    #&dnndnnQR6H"I1I*NMN* #J
 C 1 14::>?HWeCMTUDU>VWWWW HoGT^^,HuT%9%94;N;NQR;RSTKL$GAJ& ''!Q!Q(HIOO% ''(8(8(:; % <?+abAQ.RAQ#s1vAQ.RRG $'w<D GNOwV6D$8$88wKO)11$?@HHSHSJ4 H K 00149J :;X&& /S
 Ps   H9H-HNrz   r{   r|   r9   rZ   )r   r   s   r   OffsetArrayIndexSubTableMixinr     s    	'&*	'r   r   )r0   rS   object)formatStringForDataTyper   r   r   s     @@r   $_createOffsetArrayIndexSubTableMixinr     s1    ..J__Z0N>' >'@ )(r   c                       e Zd Zd Zd Zd Zy)FixedSizeIndexSubTableMixinc                     |j                  d| j                         |j                          | j                  j	                  ||       y )N	imageSizer   )rk   r   rl   metricsrn   r   s      r   r   z(FixedSizeIndexSubTableMixin.writeMetrics.  s7    DNN;66*r   c                 \   |D ]  }t        |t              s|\  }}}|dk(  rt        |d         | _        3|t        j
                  k(  r.t	               | _        | j                  j                  ||||       t|t        j
                  k(  st        j                  d| j                          y )Nr   r   z-SmallGlyphMetrics being ignored in format %d.)r   r   r   r   r   rz   r   ru   r
   r   r   r   r   s         r   r   z'FixedSizeIndexSubTableMixin.readMetrics3  s    Ggu-#* D%{"!)%.!9111.0$$T5'6B*333CTEUEU r   c                     t        |      | j                  k  sJ d| j                  z         | j                  t        |      z
  dz  }||z   S )NzAData in indexSubTable format %d must be less than the fixed size.    )rQ   r   r   )r   r;   pads      r   r   z)FixedSizeIndexSubTableMixin.padBitmapDataB  sS    4yDNN* 	
O	
*
 ~~D	)U2czr   N)rz   r{   r|   r   r   r   r   r   r   r   r   -  s    +
r   r   c                       e Zd Zy)eblc_index_sub_table_1Nrz   r{   r|   r   r   r   r   r   M       	r   r   Lc                       e Zd Zd Zd Zy)eblc_index_sub_table_2c                 V   t        j                  d| j                  d d       \  | _        t	               | _        t        j                  t        | j                  dd  | j
                         t        t        | j                  | j                  dz               }t        t        |      dz         D cg c]  }| j                  |z  | j                  z     }}t        t        ||dd              | _        t        t#        | j$                  j&                  |            | _        | `| `y c c}w )N>Lr   r   )r0   r   r;   r   r   r   r   r'   r	   rT   r"   r4   r5   rQ   r8   r   r   rU   r<   r   rW   )r   rg   r>   r   s       r   r9   z eblc_index_sub_table_2.decompileT  s    "MM$		"1>&(-tyy}dllKd22D4G4G!4KLM?DS]UVEV?W
?W!DNNQ!5!55?W 	 
 c'712;78#dkk66AB
It{
s   1#D&c           	      ,   t        t        |j                  | j                              }|t        t	        | j
                  | j                  dz               k(  sJ d       t        t        t        t        | j                                     | _        t        j                  | |      g}|j                  t!        j"                  d| j$                               |j                  t'        j"                  t(        | j*                               t-        |      S )Nr   z!Format 2 ids must be consecutive.r  )rT   rU   rV   rW   r"   r4   r5   rX   nextiterr   r   r8   r   rZ   r%   r0   rR   r   r   r	   r   r   )r   r<   rg   r_   s       r   rZ   zeblc_index_sub_table_2.compile`  s    F--tzz:;4$&&(;(;a(?@
 
 	/.	/ 
  #4S$..-A(B#CD%--dF;<D$..9:%:DLLIJ""r   Nr   r   r   r   r  r  S  s    
##r   r  c                       e Zd Zy)eblc_index_sub_table_3Nr   r   r   r   r  r  n  r   r   r  Hc                       e Zd Zd Zd Zy)eblc_index_sub_table_4c           
         t        j                  d| j                  d d       \  }| j                  dd  }t        |dz         D cg c]  }|t        z   }}t        ||dd        }|D cg c]%  }t        j                  t        |t        |          ' }}t        t        t        t        |             \  }}	|j                          |	D 
cg c]  }
|
| j                  z    }	}
t        t        |	|	dd              | _        t        t        | j                  j                  |            | _        | `| `y c c}w c c}w c c}
w )Nr  r   r   r   )r0   r   r;   r"   codeOffsetPairSizer   codeOffsetPairFormatr   rT   rU   popr8   r   r<   r   rW   )r   r   r;   r   r   r   r   
glyphArrayrg   r   r   s              r   r9   z eblc_index_sub_table_4.decompileu  s;   }}T499Ra=9yy}>CIPQM>R
>R
J++>R 	 
  1DE )
( MM.UC[0AB( 	 
 !T3
+;!<='?FGwV6D000wGc'712;78#dkk66AB
It{

 Hs   D4**D9D>c                    t        | j                  | j                  dd        D ]  \  }}|d   |d   k(  rJ d        t        | j                  d         | j                  dd  D cg c]  }|d   	 c}z   }t        |      | _        |D cg c]  }|| j                  z
   }}t        t        |j                  | j                              }t        t        j                  |dg            }t        j                  | |      g}	|	j                  t        j                  dt        |                   t        ||      D 
cg c]  }
t        j                  t         g|
  }}
|	|z  }	t#        |	      }|S c c}w c c}w c c}
w )Nr   r   z2Data must be consecutive in indexSubTable format 4r  )r   r   rT   rX   r8   rU   rV   rW   	itertoolschainr   rZ   r%   r0   rR   rQ   r  r   )r   r<   r   r   r   r   r   rg   
idsPlusPadr_   coptmpr;   s                r   rZ   zeblc_index_sub_table_4.compile  sr    "$..$..2DENFFq	VAY&DCD& F
 t~~a()t~~ab?Q,R?QSV?Q,RR  #7|?FGwV6D000wGF--tzz:;)//(QC89
%--dF;<D#h-89?B:w?W
?WFKK,3s3?W 	 
 	C"# -S
 H
s   &E4E9?!E>Nr   r   r   r   r  r  t  s    #(r   r  c                       e Zd Zd Zd Zy)eblc_index_sub_table_5c                    d| _         t        j                  d| j                  d d       \  | _        | j                  dd  }t        j                  t        |t                     \  | _	        }t        j                  d|d d       \  }|dd  }t        |      D cg c]'  }t        j                  d|d|z  d|dz   z         d   ) }}t        t        |      dz         D cg c]  }| j                  |z  | j                  z     }}t        t        ||dd              | _        t        t!        | j"                  j$                  |            | _        | `| `y c c}w c c}w )Nr   r  r   >Hr   r   )origDataLenr0   r   r;   r   r   r'   r	   r   r   r"   rQ   r8   rT   r   r   rU   r<   r   rW   )r   r;   r   r>   rg   r   s         r   r9   z eblc_index_sub_table_5.decompile  sP   "MM$		"1>yy}$__!4):
d }}T484ABxGLYGW
GW!FMM$QUQ!a%[ 9:1=GW 	 

 @ES]UVEV?W
?W!DNNQ!5!55?W 	 
 c'712;78#dkk66AB
It{

s   ,E #Ec           	         t        t        t        t        | j                                     | _        t        j                  | |      g}|j                  t        j                  d| j                               |j                  t        j                  t        | j                               t        t!        |j"                  | j$                              }|j                  t        j                  dt'        |                   ||D cg c]  }t        j                  d|       c}z  }t'        |      dz  dk(  r%|j                  t        j                  dd             t)        |      S c c}w )Nr  r  r   r   r   )rX   r  r  r   r   r8   r   rZ   r%   r0   rR   r   r   r	   r   rT   rU   rV   rW   rQ   r   )r   r<   r_   rg   r   s        r   rZ   zeblc_index_sub_table_5.compile  s   "4S$..-A(B#CD%--dF;<D$..9:%:DLLIJF--tzz:;D#h-898D8%V[[u-8DDx=1!OOFKKa01"" Es   E+Nr   r   r   r   r  r    s    #(
#r   r  )r   r   r   r      ).fontTools.miscr    r   fontTools.misc.textToolsr   r   BitmapGlyphMetricsr   r	   r
   r   r0   r  collectionsr   logging	getLoggerrz   r   r    r(   r+   r,   r1   rS   r/   r2   r3   r  r  r   r   r$   r   r)   r   r   r   r   r   r  r  r  r  r   r   r   r   <module>r%     s   "  8      g!      " ()AB  $V__%9:  $V__%9: G2\.. G2T:V :D(Yf (YV<f <*  7 iF iF^E)V& @	(-/@	#8:K #6	(-/@	.. .b#8:K #H  r   