
    Ph#                         d dl mZ d dlmZmZmZm	Z
 d dlmZmZmZ d dlmZ ddlmZ d dlZdZd	Zd
Z G d dej$                        Z G d de      Z G d de      Zy)    )sstruct)fixedToFloatfloatToFixedfloatToFixedToStrstrToFixedToFloat)Tag	bytesjoinsafeEval)
TTLibError   )DefaultTableNz
    > # big endian
    version:        L
    offsetToData:   H
    countSizePairs: H
    axisCount:      H
    axisSize:       H
    instanceCount:  H
    instanceSize:   H
z
    > # big endian
    axisTag:        4s
    minValue:       16.16F
    defaultValue:   16.16F
    maxValue:       16.16F
    flags:          H
    axisNameID:         H
zA
    > # big endian
    subfamilyNameID:     H
    flags:      H
c                   <    e Zd ZdZdgZd
dZd Zd Zd Zd Z	d	 Z
y)table__f_v_a_rzFonT Variations table

    The ``fvar`` table contains records of the variation axes and of the
    named instances in a variable font.

    See also https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6fvar.html
    nameNc                 `    t         j                   j                  | |       g | _        g | _        y N)r   __init__axes	instances)selftags     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\fontTools/ttLib/tables/_f_v_a_r.pyr   ztable__f_v_a_r.__init__8   s&    !!**45	    c                    t        j                  t              t        | j                        dz  z   }t        d | j                  D              }|r|dz  }dt        j                  t              dt        | j                        t        j                  t              t        | j                        |d}t        j                  t        |      g}|j                  | j                  D cg c]  }|j                          c}       | j                  D cg c]  }|j                   }}| j                  D ]#  }|j                  |j                  ||             % t        |      S c c}w c c}w )N   c              3   :   K   | ]  }|j                   d k7    yw)  N)postscriptNameID).0instances     r   	<genexpr>z)table__f_v_a_r.compile.<locals>.<genexpr>?   s      %
@NHH%%/s         )versionoffsetToDatacountSizePairs	axisCountaxisSizeinstanceCountinstanceSize)r   calcsizeFVAR_INSTANCE_FORMATlenr   anyr   FVAR_HEADER_FORMATFVAR_AXIS_FORMATpackextendcompileaxisTagappendr	   )	r   ttFontr*   includePostScriptNamesheaderresultaxisaxisTagsr    s	            r   r3   ztable__f_v_a_r.compile=   s(   ''(<=TYYRSAST!$ %
@D%
 "
 "AL!#,,-?@TYY(()9: 0(
 ,,16:;$))<)$t||~)<=-1YY7YTDLLY7HMM(**85KLM '  	 =7s   (E&E+c                 f   i }t        j                  t              }t        j                  t        |d|       }|d   dk7  rt	        d|d   z        |d   }|d   }t        |d         D ]C  }t               }|j                  ||||z           | j                  j                  |       ||z  }E |d   }	| j                  D cg c]  }|j                   }
}t        |d	         D ]D  }t               }|j                  ||||	z    |
       | j                  j                  |       ||	z  }F y c c}w )
Nr   r$   r#   zunsupported 'fvar' version %04xr%   r(   r'   r*   r)   )r   r+   r/   unpackr   rangeAxis	decompiler   r5   r4   NamedInstancer   )r   datar6   r8   
headerSizeposr(   _r:   r*   r;   r    s               r   r@   ztable__f_v_a_r.decompileT   s4   %%&89
 2D:4FG)
*>	ARRSS^$*%vk*+A6DNN4cHn56IIT"8OC	 ,
 n--1YY7YTDLLY7vo./A$HtC#*<=xHNN!!(+<C	 0 8s   D.c                     | j                   D ]  }|j                  ||        | j                  D ]  }|j                  ||        y r   )r   toXMLr   )r   writerr6   r:   r    s        r   rG   ztable__f_v_a_r.toXMLi   s:    IIDJJvv& HNN66* 'r   c                     |dk(  r:t               }|j                  ||||       | j                  j                  |       y |dk(  r:t	               }|j                  ||||       | j
                  j                  |       y y )Nr?   rA   )r?   fromXMLr   r5   rA   r   )r   r   attrscontentr6   r:   r    s          r   rJ   ztable__f_v_a_r.fromXMLo   sn    6>6DLLugv6IIT"_$$HT5'6:NN!!(+ %r   c                     | j                   D ci c]0  }|j                  |j                  |j                  |j                  f2 c}S c c}w r   )r   r4   minValuedefaultValuemaxValue)r   as     r   getAxesztable__f_v_a_r.getAxesy   s:    MQYYWY		AJJ

CCYWWWs   5Ar   )__name__
__module____qualname____doc__dependenciesr   r3   r@   rG   rJ   rR    r   r   r   r   -   s/     8L
!. *+,Xr   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)r?   c                 X    d | _         d| _        d| _        d| _        d| _        d| _        y )Nr   g      g        g      ?)r4   
axisNameIDflagsrN   rO   rP   r   s    r   r   zAxis.__init__~   s-    
r   c                 6    t        j                  t        |       S r   )r   r1   r0   r]   s    r   r3   zAxis.compile   s    ||,d33r   c                 :    t        j                  t        ||        y r   )r   unpack2r0   )r   rB   s     r   r@   zAxis.decompile   s    ($5r   c           	         d|v r|d   j                  | j                        nd }|1|j                          |j                  |       |j                          |j	                  d       |j                          d| j
                  fdd| j                  z  fdt        | j                  d      fdt        | j                  d      fd	t        | j                  d      fd
t        | j                        ffD ]H  \  }}|j	                  |       |j                  |       |j                  |       |j                          J |j                  d       |j                          y )Nr   r?   AxisTagFlags0x%XMinValue   DefaultValueMaxValue
AxisNameID)getDebugNamer[   newlinecommentbegintagr4   r\   fl2strrN   rO   rP   strwriteendtag)r   rH   r6   r   r   values         r   rG   z
Axis.toXML   s&   <Bf<LF6N''8RV 	 NNNN4 NN%ftzz)*r23VD$5$5r:;r233t/0
JC OOC LLMM#NN
 	fr   c           	      *   |dk(  sJ t        d |      D ]|  \  }}}dj                  |      }|dk(  rt        |      | _        .|dv s3t	        | |d   j                         |dd  z   |j                  d      rt        |d	      n
t        |             ~ y )
Nr?   c                 $    t        |       t        u S r   typetuplets    r   <lambda>zAxis.fromXML.<locals>.<lambda>   s    d1g.>r    rb   >   rc   rh   re   ri   rg   r   r   Valuerf   )	filterjoinr   r4   setattrlowerendswithstr2flr
   )r   r   _attrsrL   r6   r   rE   rr   s           r   rJ   zAxis.fromXML   s    v~~#$>HMCEGGENEi"5zWWFLLNSW,),g)>F5"%HUO Ir   NrS   rT   rU   r   r3   r@   rG   rJ   rX   r   r   r?   r?   }   s    462r   r?   c                   *    e Zd Zd Zd Zd Zd Zd Zy)rA   c                 <    d| _         d| _        d| _        i | _        y )Nr   r   )subfamilyNameIDr   r\   coordinatesr]   s    r   r   zNamedInstance.__init__   s!      &
r   c                 :   t        j                  t        |       g}|D ]@  }t        | j                  |   d      }|j                  t        j                  d|             B |r/|j                  t        j                  d| j                               t        |      S )Nrf   >l>H)	r   r1   r,   fl2fir   r5   structr   r	   )r   r;   includePostScriptNamer9   r:   
fixedCoords         r   r3   zNamedInstance.compile   s{    ,,3T:;Dt//5r:JMM&++dJ78  !MM&++dD,A,ABC  r   c                 n   t        j                  t        ||        t        j                  t              }|D ]?  }t	        j
                  d|||dz          d   }t        |d      | j                  |<   |dz  }A |dz   t        |      k  r%t	        j
                  d|||dz          d   | _	        y d| _	        y )Nr   r   r   rf   r"   r   r   )
r   r`   r,   r+   r   r=   fi2flr   r-   r   )r   rB   r;   rD   r:   rr   s         r   r@   zNamedInstance.decompile   s    ,dD934DMM$S37(;<Q?E%*5"%5DT"1HC  7c$i$*MM$S378K$LQ$OD!$*D!r   c           	      P   d|v r|d   j                  | j                        nd }|1|j                          |j                  |       |j                          d|v r|d   j                  | j                        nd }|$|j                  d|z          |j                          | j                  dk(  r,|j                  dd| j                  z  | j                         n6|j                  dd| j                  z  | j                  | j                         |j                          |d   j                  D ]Q  }|j                  d	|j                  t        | j                  |j                     d
             |j                          S |j                  d       |j                          y )Nr   zPostScript: r   rA   rd   )r\   r   )r\   r   r   fvarcoordrf   )r:   rr   )rj   r   rk   rl   r   rm   r\   r   	simpletagr4   rn   r   rq   )r   rH   r6   r   psnamer:   s         r   rG   zNamedInstance.toXML   s     6N''(<(<= 	
 NNNN4 NN  6N''(=(=> 	
 NN>F23NN  F*OO

* $ 4 4   OO

* $ 4 4!%!6!6	   	6N''D\\T--dll;R@  
 NN ( 	o&r   c                 0   |dk(  sJ t        |d         | _        t        |j                  dd            | _        d|v rt        |d         | _        nd| _        t        d |      D ]-  \  }}}|dk(  st        |d	   d
      }|| j                  |d   <   / y )NrA   r   r\   0r   r   c                 $    t        |       t        u S r   ru   rx   s    r   rz   z'NamedInstance.fromXML.<locals>.<lambda>  s    T!W5Er   r   rr   rf   r:   )r
   r   getr\   r   r}   r   r   )	r   r   rK   rL   r6   r   elementAttrsrE   rr   s	            r   rJ   zNamedInstance.fromXML   s    &&&'.?(@Aeii56
&$,U3E-F$GD!$*D!$*+Ew$O Cqg~|G4b99>  f!56 %Pr   Nr   rX   r   r   rA   rA      s    !
+(T?r   rA   )fontTools.miscr   fontTools.misc.fixedToolsr   r   r   r   r   rn   r   r   fontTools.misc.textToolsr   r	   r
   fontTools.ttLibr   r{   r   r   r/   r0   r,   r   objectr?   rA   rX   r   r   <module>r      sm    "  > = &  	   MX\.. MX`36 3lR?F R?r   