
    jkeAt                     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                   0    e Zd ZdgZd Zd Zd Zd Zd Zy)table_E_B_L_C_EBDTc                     t         |   S N)eblc_sub_table_classes)selfindexFormats     A/usr/lib/python3/dist-packages/fontTools/ttLib/tables/E_B_L_C_.pygetIndexFormatClassz"table_E_B_L_C_.getIndexFormatClassJ   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_.decompileM   sb   /bq4@	Q#DMM2 	N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%	(  	?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?	?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      +(+##+   c              3   4   K   | ]  }|j                     y wr   )r5   rK   s     r   rN   z)table_E_B_L_C_.compile.<locals>.<genexpr>   s      )'*"")rO   )"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  	EA(()CDDH,-0@0@AV0WWWH(()CDDH	E
 %'! *	T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" -- 7{{(%%$$55	 *0067 &,,-BC'/(2S2S'SH$U*	T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   sU    Y$=#>?#,T\\#: 	6HiOOHff5	6r   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__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0 	0M/	0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   }|t        j                  t              d   z   }|dd  S )Nr      )r   	getformatr(   r,   )r   	dataNamess     r   _getXMLMetricNamesz"BitmapSizeTable._getXMLMetricNames+  s?    %%&@A!D	 1 12L Ma PP	}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.toXML1  s    )*& 	@FD&!''?	@113 	JZwtZ/HINN	 	'(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.fromXML<  s     //12	 	YGgu-#* D%((!+.	  %  B BB  ,-	!!$w?(1T
9%"#+E'N#;T
4 QSWX!	Yr   N)rz   r{   r|   r   rn   ru   r~   r   r   r   r   (  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.toXMLT  s    )[$,?+@A!++,AB1E 	JZwtZ/HINN	 	'(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.fromXML]  sd    '++,AB1EF 	<Ggu-#* D%{"#+E'N#;T
4 	<r   N)rz   r{   r|   rn   ru   r~   r   r   r)   r)   S  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__l  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__t  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
 	1Ggu-#* D%z!

!!%-0	1r   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   k  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  s7   ++d.B.BBQFI>CIPQM>R0:
^+O  !$O_QR5H I - j$))E3K*@A!DK 
 E$"6"68K8Ka8OPQHKVWv(<(<<WO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x{Xa!e_4Ws      )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 N1I*NMN*N
 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.R#s1v.RRG $'w<D GNOV6D$8$88OKO)11$?@HHS9D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.readMetrics+  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.padBitmapData:  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   E       	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.decompileL  s    "MM$		"1>&(-tyy}dllKd22D4G4G!4KLM?DS]UVEV?W
:;DNNQ!5!55
 
 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.compileX  s    F--tzz:;4$&&(;(;a(?@
 
 	/.	/ 
  #4S$..-A(B#CD%--dF;<D$..9:%:DLLIJ""r   Nr   r~   r   r   r   r   K  s    
##r   r   c                       e Zd Zy)eblc_index_sub_table_3Nr   r~   r   r   r  r  f  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.decompilem  s4   }}T499Ra=9yy}>CIPQM>R
0:J++
 
  1DE )
 MM.UC[0AB

 
 !T3
+;!<='?FGV6D000G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  sn    "$..$..2DE 	DNFFq	VAY&DCD&	D
 t~~a()t~~ab?Q,RSV,RR  #7|?FGV6D000GGF--tzz:;)//(QC89
%--dF;<D#h-89?B:w?W
8;FKK,3s3
 
 	C"# -S
 H
s   &E4E9?!E>Nr   r~   r   r   r	  r	  l  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  sJ   "MM$		"1>yy}$__!4):
d }}T484ABxGLYGW
BCFMM$QUQ!a%[ 9:1=
 

 @ES]UVEV?W
:;DNNQ!5!55
 
 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D%V[[u-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: 2\.. 2D:V :D(Yf (YV<f <*  7 iF iF^E)V& @	(-/@	#8:K #6	(-/@	.. .b#8:K #H  r   