
    Ph                         d dl mZ d dlmZmZmZm	Z
 d dlmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ dd	lmZ dd
lmZ d dlZd dlZ ej8                  e      Zddlm Z   G d de       Z!y)    )sstruct)fixedToFloatfloatToFixedfloatToFixedToStrstrToFixedToFloat)	bytesjoinsafeEval)otRound)piecewiseLinearMap)VarStoreInstancerNO_VARIATION_INDEX)
TTLibError   )DefaultTable)otTablesN)BaseTTXConverterc                   T     e Zd ZdZdgZd	 fd	Z fdZ fdZd Z fdZ	d Z
 xZS )
table__a_v_a_ra  Axis Variations table

    This class represents the ``avar`` table of a variable font. The object has one
    substantive attribute, ``segments``, which maps axis tags to a segments dictionary::

        >>> font["avar"].segments   # doctest: +SKIP
        {'wght': {-1.0: -1.0,
          0.0: 0.0,
          0.125: 0.11444091796875,
          0.25: 0.23492431640625,
          0.5: 0.35540771484375,
          0.625: 0.5,
          0.75: 0.6566162109375,
          0.875: 0.81927490234375,
          1.0: 1.0},
         'ital': {-1.0: -1.0, 0.0: 0.0, 1.0: 1.0}}

    Notice that the segments dictionary is made up of normalized values. A valid
    ``avar`` segment mapping must contain the entries ``-1.0: -1.0, 0.0: 0.0, 1.0: 1.0``.
    fontTools does not enforce this, so it is your responsibility to ensure that
    mappings are valid.

    See also https://learn.microsoft.com/en-us/typography/opentype/spec/avar
    fvarc                 2    t         |   |       i | _        y N)super__init__segments)selftag	__class__s     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\fontTools/ttLib/tables/_a_v_a_r.pyr   ztable__a_v_a_r.__init__4   s        c                 H   |d   j                   D cg c]  }|j                   }}t        | d      st        j                         | _        t        | j
                  d      sd| j
                  _        t        | dd      dz  t        | dd      z  | j
                  _        t        |      | j
                  _
        g | j
                  _        |D ]  }| j                  |   }t        j                         }t        |      |_        g |_        t        |j!                               D ]B  \  }}t        j                         }||_        ||_        |j                  j'                  |       D | j
                  j                  j'                  |        t(        	| U  |      S c c}w )	Nr   tableReservedr   majorVersionr      minorVersion)axesaxisTaghasattrr   avarr!   r"   getattrVersionlen	AxisCountAxisSegmentMapr   PositionMapCountAxisValueMapsorteditemsFromCoordinateToCoordinateappendr   compile)
r   ttFontaxisaxisTagsmappings
segmentMapkeyvaluevalueMapr   s
            r   r6   ztable__a_v_a_r.compile8   s[   -3F^-@-@A-@TDLL-@AtW%!DJtzz:."#DJJ%dNA>"D.!I
 


  #8}

$&

!D}}T*H!002J*-h-J'&(J#$X^^%56
U#002*-'(-%''..x8	 7
 JJ%%,,Z8  wv&&+ Bs   Fc                    t         |   ||       | j                  j                  dz	  | _        | j                  j                  dz  | _        | j                  dvrt        d      |d   j                  D cg c]  }|j                   }}|D ]  }i | j                  |<    t        || j                  j                        D ]@  \  }}i x}| j                  |<   |j                  D ]  }|j                  ||j                  <    B y c c}w )Nr$   i  r      Unknown avar table versionr   )r   	decompiler!   r+   r#   r%   NotImplementedErrorr&   r'   r   zipr.   r0   r4   r3   )	r   datar7   r8   r9   r;   r   segmentr   s	           r   rC   ztable__a_v_a_r.decompileP   s    $' JJ.."4 JJ..7F*%&BCC-3F^-@-@A-@TDLL-@AD"$DMM$  #Hdjj.G.G HD*-//Ht}}T*%223:3G3G//0 3 !I Bs   8Dc           	      R   |j                  dt        | dd      t        | dd             |j                          |d   j                  D cg c]  }|j                   }}|D ]  }|j                  d|	       |j                          t        | j                  |   j                               D ]B  \  }}t        |d
      }t        |d
      } |j                   di ||d |j                          D |j                  d       |j                           t        | dd      dk\  r|| j                  j                  r(| j                  j                  j                  ||d       | j                  j                  r'| j                  j                  j                  ||       y y y c c}w )Nversionr#   r   r%   r   )majorminorr   rG   )r8      )fromtorA   	VarIdxMap)name)mapping)	simpletagr*   newliner&   r'   begintagr1   r   r2   fl2strendtagr!   rO   toXMLVarStore)r   writerr7   r8   r9   r<   r=   s          r   rW   ztable__a_v_a_r.toXML^   sq   $2$2 	 	

 	-3F^-@-@A-@TDLL-@ADOOIDO1NN$T]]4%8%>%>%@A
US"oub)   Is%.HI 	 B
 MM)$NN  4+q0zz##

$$**66*Lzz""

##))&&9 # 1 Bs   F$c                 p   t        | d      st        j                         | _        t        | j                  d      sd| j                  _        |dk(  rTt        |d         | _        t        |d         | _        t        | dd      d	z  t        | d
d      z  | j                  _	        y |dk(  ry|d   }i x}| j                  |<   |D ]]  }t        |t              s|\  }}	}
|dk(  s t        |	d   d      }t        |	d   d      }||v rt        j                  d||       |||<   _ y t         | E  ||||       y )Nr!   r"   r   rI   rJ   rK   r#   r   r$   r%   rG   r8   rQ   rM   rL   rN   z#duplicate entry for %s in axis '%s')r(   r   r)   r!   r"   r	   r#   r%   r*   r+   r   
isinstancetuplestr2fllogwarningr   fromXML)r   rP   attrscontentr7   r8   rG   elementelementNameelementAttrs_	fromValuetoValuer   s                r   r`   ztable__a_v_a_r.fromXMLv   s8   tW%!DJtzz:."#DJJ9 (w 8D (w 8D")$"Bb"HGnaM "DJJ Y=D,..GdmmD)"gu-3:0Kq"i/$*<+?$D	"(d);R"@$/KK EyRV .5	* # GOD%&9r   c           	         t        | dd      }|dvrt        d      | j                  }i |j                         D ]*  \  }}|j	                  |d       }|t        ||      }||<   , |dk  rS | j                  j                  }| j                  j                  }	|d   j                  }
|	t        |	|
      }t        fd|
D              }g }t        |      D ]H  \  }}|||   }|	)|   }|t        |      z  }t        t        |d      d	      }|j!                  |       J t#        ||
      D ci c]"  \  }}|d
k7  s|j$                  t'        |d      $ c}}S c c}}w )Nr#   r   r@   rB   rA   r   c              3   j   K   | ]*  }t        j                  |j                  d       d       , yw)r   rL   N)fl2figetr'   ).0r8   mappedLocations     r   	<genexpr>z5table__a_v_a_r.renormalizeLocation.<locals>.<genexpr>   s,     VQUeN..t||Q?DQUs   03i i @  r   rL   )r*   rD   r   r2   rl   r   r!   rO   rX   r&   r   list	enumerater
   minmaxr5   rE   r'   fi2fl)r   locationfontr#   avarSegmentsr'   r=   avarMapping	varIdxMapvarStorer&   	instancercoordsoutvarIdxvdeltar8   rn   s                     @r   renormalizeLocationz"table__a_v_a_r.renormalizeLocation   s   t^Q7v%%&BCC}}&nn.NGU&**7D9K&*5+>&+N7#	 / !!! JJ((	::&&F|  )(D.IIVQUVV"6*IFA$"6*#!&)WU^#Az*J7JJqM + 7:#tn
6D71dQDLL%2,&n
 	
s   5E"E"r   )__name__
__module____qualname____doc__dependenciesr   r6   rC   rW   r`   r   __classcell__)r   s   @r   r   r      s0    2 8L'0H:0:8-r   r   )"fontTools.miscr   fontTools.misc.fixedToolsr   rt   r   rk   r   rU   r   r]   fontTools.misc.textToolsr   r	   fontTools.misc.roundToolsr
   fontTools.varLib.modelsr   fontTools.varLib.varStorer   r   fontTools.ttLibr    r   r   structlogging	getLoggerr   r^   otBaser   r    r   r   <module>r      sU    "  9 - 6 K &     g! $g% gr   