
    hW                     `   S SK 7  SSKJr  SSKJr  SSKJrJrJr  SSK	J
r
  SSKJr  SSKJrJrJr  SS	KJrJr  SS
KJr  SSKJr  SSKJr  SSKrSSKrSSKrSSKr\R<                  " S5      r " S S\ 5      r! " S S5      r" " S S\"5      r# " S S\#5      r$ " S S\#5      r% " S S\"5      r&g)   )*    )TTFont)LerpGlyphSet)RecordingPenDecomposingRecordingPenRecordingPointPen)ControlBoundsPen)CairoPen)SegmentToPointPenPointToSegmentPenReverseContourPointPen)PerContourOrComponentPenSimpleRecordingPointPen)cycle)wraps)BytesIONzfontTools.varLib.interpolatablec                        \ rS rSrS rS rSrg)OverridingDict   c                     Xl         g Nparent_dict)selfr   s     U/var/www/html/env/lib/python3.13/site-packages/fontTools/varLib/interpolatablePlot.py__init__OverridingDict.__init__    s    &    c                      U R                   U   $ r   r   )r   keys     r   __missing__OverridingDict.__missing__#   s    $$r   r   N)__name__
__module____qualname____firstlineno__r   r"   __static_attributes__ r   r   r   r      s    '%r   r   c            	          \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(S r)S!r*S"r+S#r,SGS% jr-S& r.S' r/S( r0S)S$S$S*.S+ jr1S)S$S$S*.S, jr2S- r3S. r4S/ r5S0 r6S)S)S1.S2 jr7S)S)S1.S3 jr8S4S4S5S4S6S$S$S$S7.S8 jr9S4S4S$S9.S: jr:S4S4S5S;S<.S= jr;S4S4S5S;SS>.S? jr<S4S4S5S@.SA jr=S4S4S5S$S$SB.SC jr>SD r?SHSE jr@SFrAg$)IInterpolatablePlot'   g      @i  g@      r   )333333?r/   r/   )皙?r0   r0   )?r1   r1         ?)皙?r3   r3   )皙?r4   r4   )r   r3   r   ffffff?   )r   r2   r   r5      )r   r1   r   r5      )r   r   r   r5   )r   r   r   r5   	   )r   r   r   r5      ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   皙?z#Your font's good! Have a cupcake...)r   r2   r   )r/   r   r/   a  
                          ,@.
                        ,@.@@,.
                  ,@@,.@@@.  @.@@@,.
                ,@@. @@@.     @@. @@,.
        ,@@@.@,.@.              @.  @@@@,.@.@@,.
   ,@@.@.     @@.@@.            @,.    .@' @'  @@,
 ,@@. @.          .@@.@@@.  @@'                  @,
,@.  @@.                                          @,
@.     @,@@,.     ,                             .@@,
@,.       .@,@@,.         .@@,.  ,       .@@,  @, @,
@.                             .@. @ @@,.    ,      @
 @,.@@.     @,.      @@,.      @.           @,.    @'
  @@||@,.  @'@,.       @@,.  @@ @,.        @'@@,  @'
     \\@@@@'  @,.      @'@@@@'   @@,.   @@@' //@@@'
      |||||||| @@,.  @@' |||||||  |@@@|@||  ||
       \\\\\\\  ||@@@||  |||||||  |||||||  //
        |||||||  ||||||  ||||||   ||||||  ||
         \\\\\\  ||||||  ||||||  ||||||  //
          ||||||  |||||  |||||   |||||  ||
           \\\\\  |||||  |||||  |||||  //
            |||||  ||||  |||||  ||||  ||
             \\\\  ||||  ||||  ||||  //
              ||||||||||||||||||||||||
)r   r/   r/   z\_(")_/z
 o
/|\
/ \
z
 o
/O\
/ \
z \o/ Nc                    Xl         X l        U=(       d    U Vs/ s H  n[        U5      PM     snU l        0 U l        UR                  5        H/  u  pg[        X5      (       d  [        SU-  5      e[        XU5        M1     U R                  S-  U R                  S-  -
  U l        U R                  S-  U R                  S-  -
  U R                  S-  -
  U R                  -
  U l        g s  snf )NzUnknown keyword argument: %s      r6   )out	glyphsetsreprnamestocitemshasattr	TypeErrorsetattrwidthpadpanel_widthheight	font_sizetitle_font_sizepanel_height)r   r?   r@   rB   kwargsgkvs           r   r   InterpolatablePlot.__init__r   s    ":	:	1tAw	:
LLNDA4## > BCCDQ #
  ::>DHHqL8KK!Odhhl*T^^a-??$BVBVV 	 ;s   C'c                     U $ r   r)   r   s    r   	__enter__InterpolatablePlot.__enter__   s    r   c                     g r   r)   r   typevalue	tracebacks       r   __exit__InterpolatablePlot.__exit__   s    r   c                 .    U =R                   S-  sl         g )Nr   )page_numberrU   s    r   	show_pageInterpolatablePlot.show_page   s    Ar   Tshow_tolerance	tolerance	kinkinessc          
         U R                   nU R                  SU R                   -  -
  nU R                  SU R                   -  -
  nU=pU R                  SUU	SUU R                  S9  XR                  -  n	SS Kn
U GH  n[        R                  R                  U5      nXR                  U R                   -   -  n	U R                  XU	SUS9  XR                  U R                   -   -  n	 U
R                  [        US5      R                  5       5      R                  5       nU R                  S	U-  X-   XS
9  XR                  -  n	UR                  S5      (       a|  [!        U5      nSU;   a  US   OS nU(       aZ  S HQ  u  nnUR#                  U5      nUc  M  U R                  U< SU< 3X-   XS
9  XR                  U R                   -   -  n	MS     GMV  GMY  UR                  S5      (       d  GMr  SSKJn  U" U5      nS HF  u  nnU R                  U< S[)        UU5      < 3X-   U	US
9  XR                  U R                   -   -  n	MH     GM     U R+                  X#US9  U R-                  5         g ! [         a     GN8f = f)Nr>   r=   zProblem report for:TxyboldrH   rL   r   )ri   rj   rk   rH   rbzsha1: %sri   rj   rH   z.ttfname))Family name)   r.   r   )Version)   z: )z.glyphsz.glyphspackage)GSFont))ro   
familyName)VersionMajorversionMajor)VersionMinor_versionMinorrc   )rI   rH   rK   
draw_labelrM   hashlibospathbasenamerL   sha1openread	hexdigestIsADirectoryErrorendswithr   getFirstDebugName	glyphsLibrs   getattrdraw_legendra   )r   filesrd   re   rf   rI   rH   rK   ri   rj   rz   file	base_filehttFontrn   whatnameIDsnrs   ffields                         r   add_title_page!InterpolatablePlot.add_title_page   sk    hh

Q\)q488|+!** 	 	
 	
!!!D((.I$((**AOOIad%OH$((**ALLdD!1!6!6!89CCE
Q!'QL^^# }}V$$)/6)9vf~t*g !227;9$(,a0AGq (  ^^dhh66*  <==,4L$KD%
 OO$('!U*;<'#	 $  $((22A$A Z 	)) 	 	
 	M % s   &AI,,
I:9I:c          	      L   [         R                  " U R                  5      nU R                  nU R                  U R                  -
  U R
                  S-  -
  nU R                  SU R                  -  -
  nXPR                  S-  -   nXPR                  S-  -   n	U(       a,  U R                  SXUS9  X`R                  U R
                  -   -  nU R                  SXUS9  UR                  XR                  S-  -
  USU R                  -  U R
                  5        UR                  " U R                  6   UR                  5         U R                  (       aD  UR                  " U R                  6   UR                  U R                  5        UR                  5         UR                   " U R"                  6   UR%                  5         X`R                  U R
                  -   -  nU R                  SXUS9  UR                  XR                  S-  -
  USU R                  -  U R
                  5        U R                  (       a)  UR                  " U R                  6   UR                  5         U R                  (       aD  UR                  " U R                  6   UR                  U R                  5        UR                  5         UR                   " / U R&                  S	   QU R(                  P76   UR%                  5         X`R                  U R
                  -   -  nU R                  S
XUS9  U R+                  UUX`R
                  S-  -   U R,                  U R.                  U R0                  S9  X`R                  U R
                  -   -  nU R                  SXUS9  U R3                  UUX`R
                  S-  -   U R4                  U R6                  S9  X`R                  U R
                  -   -  nU R                  SXUS9  U R3                  UUX`R
                  S-  -   U R8                  U R:                  S9  X`R                  U R
                  -   -  nU R                  SU	UUS9  U R=                  UXR>                  S-  -
  X`R
                  S-  -   U R@                  S9  X`R                  U R
                  -   -  nU R                  SU	UUS9  U R3                  UUX`R
                  S-  -   U R8                  U RB                  S9  X`R                  U R
                  -   -  nU R                  SXUS9  U R=                  UXR>                  S-  -
  X`R
                  S-  -   U RB                  S9  X`R                  U R
                  -   -  nU R                  SXVUSS9  X`R                  U R
                  -   -  nUb0  U R                  SU-  U	UUS9  X`R                  U R
                  -   -  nUb0  U R                  SU-  U	UUS9  X`R                  U R
                  -   -  nU R                  SXVUSS9  X`R                  U R
                  -   -  ng )Nr=   r7   z,Tolerance: badness; closer to zero the worserm   zUnderweight contoursr5   g      ?z/Colored contours: contours with the wrong orderr   zKink artifactr2   )ri   rj   diameterstroke_widthcolorz!Point causing kink in the contour)ri   rj   r   r   z!Suggested new contour start pointz4Contour start point in contours with wrong directionr/   ri   rj   r   z5Contour start point when the first two points overlapz!Contour start point and directionzLegend:Tri   rj   rH   rk   z!Kink-reporting aggressiveness: %gzError tolerance: %gzParameters:)"cairoContextsurfacerI   rK   rL   rH   ry   	rectangleset_source_rgb
fill_colorfill_preservestroke_colorset_line_widthr   stroke_preserveset_source_rgbaweight_issue_contour_colorfillcontour_colorscontour_alphadraw_circlekink_circle_sizekink_circle_stroke_widthkink_circle_colordraw_dotkink_point_sizekink_point_colorcorrected_start_point_sizecorrected_start_point_color
draw_arrowstart_arrow_lengthwrong_start_point_colorstart_point_color)
r   rd   re   rf   crri   rj   rH   xxxxxs
             r   r   InterpolatablePlot.draw_legend   s   ]]4<<(HHKK$(("T^^a%77

Q\)A((Q,OO>#RW   DNN**A.#%H
R((S.(!S488^T^^L
4??+
t001d//0 
D;;<
		XX&&=QV 	 	
 	R((S.(!S488^T^^L??t/t001d//0 
GD//2GD4F4FG
		XX&&35A..3&&**66(( 	 	
 	
XX&&;suU..3&&))'' 	 	
 	
XX&&;suU..3&&4422 	 	
 	
XX&&B	 	 	
 	**S00..3&&..	 	 	
 	
XX&&C	 	 	
 	..3&&44(( 	 	
 	
XX&&;suU**S00..3&&((	 	 	
 	
XX&&	Q5tD	XX&& OO3i?	   DNN**A OO%	1	   DNN**Au4H	XX&&r   c           
      <   U R                   nU R                  SU R                   -  -
  nU R                  SU R                   -  -
  nU=pVU R                  SUUSUU R                  S9  X`R                  -  n[        [        5      n[        UR                  5       5       H$  u  pU H  n	XyS      R                  U5        M     M&     SU;   a  US	 [        US S	9 H  n
X`R                  -  nU R                  S
U
[        Xz   5      4-  UUUSS9  X`R                  -  n[        Xz   5       H^  nX`R                  -   U:  a  U R                  5         U R                  U-   nU R                  XSU-  -   XcSU-  -
  S9  X`R                  -  nM`     M     U R                  5         g )Nr>   r=   zSummary of problemsTrh   rZ   nothingc                 (    [         R                  U    $ r   )InterpolatableProblemseverityri   s    r   <lambda>0InterpolatablePlot.add_summary.<locals>.<lambda>r  s    .C.L.LQ.Or   r!   z%s: %dr   rm   )rI   rH   rK   ry   rM   defaultdictsetsortedrD   addrL   lenra   )r   problemsrI   rH   rK   ri   rj   glyphs_per_problem	glyphnameproblemproblem_types              r   add_summaryInterpolatablePlot.add_summaryY  s   hh

Q\)q488|+!** 	 	
 	
!!!(-#)(..*:#;I#"6?377	B $ $< **"9-"$O
L AOOL#.@.N*OPP   A#$6$DE	~~%.NN$,A	S[AQQTW_U^^# F
( 	r   c           	      D   U R                   nU R                  SU R                   -  -
  nU R                  SU R                   -  -
  nU=pgU R                  XUSX@R                  S9  XpR                  U R                   -   -  nS nU H  u  n	u  pX:X  a  M  U
nXpR
                  -   U:  a  U R                  5         U R
                  U-   nU R                  XSU-  -   XtSU-  -
  S9  U R                  [        U	5      XgSU-  SS9  XpR
                  -  nM     U R                  5         g )	Nr=   Trh   rr   rm   r7   r   )ri   rj   rH   align)rI   rH   rK   ry   rM   rL   ra   str)r   titlerD   rI   rH   rK   ri   rj   last_glyphnamepage_nor   r   s               r   _add_listingInterpolatablePlot._add_listing  s   hh

Q\)q488|+!$e?S?S 	 	
 	
!!DHH,,.3*G*i*&N>>!F* NNS(OOIQWSOQOOCLA!c'OKA /4 	r   c                 j    U R                  S[        U R                  R                  5       5      5        g )NzTable of contentsr   r   rC   rD   rU   s    r   add_table_of_contents(InterpolatablePlot.add_table_of_contents  s#    -vdhhnn6F/GHr   c                 j    U R                  S[        U R                  R                  5       S S95        g )NIndexc                     U S   S   $ )Nr   r   r)   r   s    r   r   .InterpolatablePlot.add_index.<locals>.<lambda>  s    !A$q'r   r   r   rU   s    r   	add_indexInterpolatablePlot.add_index  s%    '6$((..*:@Q#RSr   rd   show_page_numberc          	      |   UR                  5        H  u  pES n/ nU Hn  nSU;   a  US   O	US   US   4n	X:X  a  UR                  U5        M0  U(       a$  U R                  UUUUS9  U R                  5         / nU	nUR                  U5        Mp     U(       d  M  U R                  UUUUS9  U R                  5         M     g )N
master_idxmaster_1_idxmaster_2_idxr   )rD   appendadd_problemra   )
r   r   rd   r   glyphglyph_problemslast_masterscurrent_glyph_problemspmasterss
             r   add_problemsInterpolatablePlot.add_problems  s    %-^^%5!EL%'"# $q( lON+Q~->? 
 **11!4)$$.'5)9	 %  NN$-/*&&--a0) $* &%  *#1%5	 !   ? &6r   c                "  ^^: [        U5      [        [        4;  a  U/nTU4U R                  U R                  '   US   S   m:[        S U 5       5      n[        U:4S jU 5       5      (       d-  SR                  [        U Vs1 s H  ofS   iM	     sn5      5      m:[        R                  STT:5        SUS   ;   a  SOS	nU Vs/ s H
  oS   U   PM     n	nT:[        R                  :X  a:  [        U4S
 j[        U R                  5       5       5      n
U	R!                  SU
5        U R"                  nU R"                  nU R%                  ST-   UUU R&                  SSU R(                  S9  [+        S U 5       5      nUS:  a8  U(       a1  U R%                  SU-  UUU R,                  SU R"                  -  -
  SSS9  XR(                  U R"                  -   -  nU R%                  ST:-   UUU R,                  SU R"                  -  -
  U R&                  SS9  XR.                  U R"                  S-  -   -  n/ n[        U	5       H  u  nnU R                  U   nU R0                  U   nU R%                  UUUU R2                  U R4                  SS9  XR.                  U R"                  -   -  nUT   b"  UR7                  U R9                  UTX/XS95        OU R;                  U R<                  XS9  XR>                  U R.                  -   U R"                  -   -  nM     [A        S U 5       5      (       Gas  U R"                  U R4                  -   U R"                  -   nU R"                  nXR(                  U R"                  S-  -   -  nXR.                  U R"                  -   -  nU R                  U	S      nU R                  U	S      nU R%                  SUUU R&                  U R4                  SS9  XR.                  U R"                  -   -  n[C        UU5      nU R9                  UTSS0/U Vs/ s H=  nUS   [        RD                  [        RF                  [        RH                  4;   d  M;  UPM?     sn-   S UU[+        U5      S9  XR>                  U R.                  -   U R"                  -   -  n[A        S U 5       5      (       Ga  U R%                  SUUU R&                  U R4                  SS9  XR.                  U R"                  -   -  n[K        W5      n[K        W5      n[M        [N        US9n[M        [N        US9nUT   RQ                  U5        UT   RQ                  U5        U HH  nUS   [        RR                  :X  d  M  US   S    Vs/ s H  nURT                  U   PM     nnUUl*        MJ     U GH  nUS   [        RV                  :X  d  M  URT                  US       nURT                  US       n[Y        5       n[[        US!5      n UR]                  U 5        [Y        5       n![[        U!S!5      n UR]                  U 5        US   n"US"   (       aC  [Y        5       n#[_        U#5      n$U!R]                  U$5        U#n![a        U!RT                  5      S-
  U"-
  n"U!RT                  S S n%U!RT                  S#S  n&U!RT                  SS# n'U'U"S  U'S U" -   n'U%U'-   U&-   U!l*        [O        5       n([c        U(S5      n UR]                  U 5        [O        5       n)[c        U)S5      n U!R]                  U 5        U(RT                  Ul*        U)RT                  Ul*        UURT                  US    '   UURT                  US    '   GM     U GH  nUS   [        RD                  :X  d  M  URT                  US       nURT                  US       n[Y        5       n[[        US!5      n UR]                  U 5        [Y        5       n![[        U!S!5      n UR]                  U 5        US$   nUS-   n*URT                  U*   S   S   n+U!RT                  U*   S   S   n,US-
  [a        URT                  5      S-
  -  S-   n-URT                  U-   S   S   n.U!RT                  U-   S   S   n/US-   [a        URT                  5      S-
  -  S-   n0URT                  U0   S   S   n1U!RT                  U0   S   S   n2[e        U+6 n+[e        U,6 n,[e        U.6 n.[e        U/6 n/[e        U16 n1[e        U26 n2[g        U+U.-
  5      [g        U1U.-
  5      -  n3[g        U,U/-
  5      [g        U2U/-
  5      -  n4U3U4-   S-  n5U.U5U1U.-
  -  -   n+U/U5U2U/-
  -  -   n,URT                  U*   S   U+Rh                  U+Rj                  44URT                  U*   S   SS  -   URT                  U*   S   4URT                  U*'   U!RT                  U*   S   U,Rh                  U,Rj                  44U!RT                  U*   S   SS  -   U!RT                  U*   S   4U!RT                  U*'   [O        5       n([c        U(S5      n UR]                  U 5        [O        5       n)[c        U)S5      n U!R]                  U 5        U(RT                  Ul*        U)RT                  Ul*        GM     [O        5       n6[O        5       n7URT                   H(  n8U6RT                  Rm                  U8RT                  5        M*     URT                   H(  n8U7RT                  Rm                  U8RT                  5        M*     U6R\                  U6l(        U7R\                  U7l(        U6UT'   U7UT'    [C        UU5      nU R9                  UTSS%0S UU[+        U5      S9  XR>                  U R"                  -   -  nO~U R<                  n9[        RF                  U;   a  U Rp                  n9OA[        RH                  U;   a  U Rr                  n9O [        Rt                  U;   a  U Rv                  n9U R;                  U9XS9  U(       a`  U R%                  [y        U R                  5      SU Rz                  U R.                  -
  U R"                  -
  U R,                  U R&                  SS&9  g g s  snf s  snf s  snf s  snf ! [n         a    U R;                  U R<                  XS9   GN=f = f)'Nr   rZ   c              3   *   #    U  H	  oS    v   M     g7frZ   Nr)   .0r   s     r   	<genexpr>1InterpolatablePlot.add_problem.<locals>.<genexpr>       D8FO8   c              3   ,   >#    U  H	  oT:H  v   M     g 7fr   r)   r   ptr   s     r   r   r          >"%   z, zDrawing %s: %sr   )r   )r   r   c              3   <   >#    U  H  u  pUT   c  M  Uv   M     g 7fr   r)   )r   imr   s      r   r   r     s       7da1Y<7s   	zGlyph name: T)ri   rj   r   r   rk   rL   c              3   D   #    U  H  oR                  S S5      v   M     g7f)re   r   N)get)r   r   s     r   r   r     s     @x!k1--xs    r   ztolerance: %.2fr=   )ri   rj   rH   r   rk   z
Problems: )ri   rj   rH   r   rk   r2   )ri   rj   r   rH   r   )ri   rj   c              3      #    U  Hd  nU[         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  4;   v   Mf     g 7fr   )r   NOTHINGWRONG_START_POINTCONTOUR_ORDERKINKUNDERWEIGHT
OVERWEIGHTr   r   s     r   r   r     s[      
 $ %--%77%33%**%11%00 $s   A,A.zmidway interpolationmidwayri   rj   scalec              3      #    U  H7  nU[         R                  [         R                  [         R                  4;   v   M9     g 7fr   )r   r  r  r  r  s     r   r   r   S  s@      
 $ %77%33%** $s   ?Azproposed fixglyphsetvalue_2contourFreversedr[   fixed)ri   rj   rH   r   r   )>rZ   listtuplerC   r`   r   alljoinr   loginfor   MISSINGnext	enumerater@   insertrI   ry   
head_colorrM   minrH   rL   rB   label_colorrJ   r   
draw_glyphdraw_emoticonshrugrN   anyr   r  r	  r
  r   r   r   drawr  r[   r  r	   r   replayr   r   r   complexabsrealimagextend
ValueErrorunderweight
overweightr  yayr   rK   );r   r   r   rd   r   problem_typesr   master_keysrQ   master_indicessample_glyphri   rj   re   scaleswhichr   r  rn   	glyphset1	glyphset2midway_glyphsetr   overriding1overriding2perContourPen1perContourPen2r   fixed_contourswrongContour1wrongContour2points1	converterpoints2proposed_startnew_points2reversedPen	beginPathendPathptssegment1segment2jpt0pt1j_prevpt0_prevpt1_prevj_nextpt0_nextpt1_nextr0r1r_midfixed1fixed2r  emoticonr   s;    `                                                        @r   r   InterpolatablePlot.add_problem  sz    >$. zH&/%:!!"{6*D8DD>>>>99VH,UHV_H,U%VWL!9l; x{* 1 	
 3>>+Q1+a.+>0888  '7  L !!!\2HHHHY&//** 	 	
 @x@@	q=^OO!I-jj1txx</   	
!!DHH,,<'**q488|+// 	 	
 	
^^dhhl**!*>!:E:~~j1H::j)DOO&&&&   $((**A	".OOHiAOS ""4::"8""T^^3dhh>>A) ";,  
 $
 
 
 4+++dhh6AA%%144A$((**A~a'89I~a'89I OO&oo&&   $((**A*9i@OOO(#$ &	%y-22-99-88 %	
 &k#  ( ""T^^3dhh>>A 
 $
 
 
 OOoo&&   $((**A(3K(3K5{N 6{N i %%n5i %%n5#6?&;&I&II9A!Y9O&9OA,,Q/9O # & ,:N( $ $6?&;&M&MM$2$8$89K$LM$2$8$89K$LM 01G 1'5 AI!((3/1G 1'5 AI!((3%,Y%7N z*&7&9&<[&I{3"-),W]]);a)?.)P !(bq 1I%mmBC0G!--"-Cno._n1EEC$-Og$=GM  ,~H 1(D AINN9-+~H 1(D AINN9- +3..M'*2..M'?LN(();<?LN(();<W $Z $6?&;&@&@@$2$8$89K$LM$2$8$89K$LM 01G 1'5 AI!((3/1G 1'5 AI!((3(A AA!--*1-a0C!--*1-a0C!eGMM(:Q(>?!CF&}}V4Q7:H&}}V4Q7:H!eGMM(:Q(>?!CF&}}V4Q7:H&}}V4Q7:H!3-C!3-C&1H&1H&1H&1H S8^,s8h3F/GGBS8^,s8h3F/GGB"WME"Uh.A%BBC"Uh.A%BBC  a(+88SXX.07==3CA3Fqr3JJa(+(GMM!$  a(+88SXX.07==3CA3Fqr3JJa(+(GMM!$  ,~H 1(D AINN9-+~H 1(D AINN9- +3..M'*2..M'C $H "^F!^F)//##GMM2 0)//##GMM2 0 --FK --FK%+K	"%+K	"9".{K"H#W%f+    ""TXX--A zzH$00MA++&11]B??&..-?88x12OOD$$%++.9jjoo   {	 -V ?J	h&Z  9""4::"89s0   qq:qq6q!$,q& &$rrr   )r   r   r   F)ri   rj   r   r   rk   rH   rK   rL   c                "   Uc  U R                   nUc  U R                  nU	c  U R                  n	[        R                  " U R
                  5      n
U
R                  S[        R                  U(       a  [        R                  O[        R                  5        U
R                  U	5        U
R                  5       nX-  US   -  n	U
R                  U	5        U
R                  5       nU
R                  " U6   U
R                  U5      nUR                   U:  aC  XUR                   -  -  n	U
R                  U	5        U
R                  5       nU
R                  U5      nX'UR                   -
  U-  -   nX;S   -   nU
R                  X5        U
R                  U5        g )Nz@cairo:r=   r   )rH   rK   rL   r   r   r   select_font_faceFONT_SLANT_NORMALFONT_WEIGHT_BOLDFONT_WEIGHT_NORMALset_font_sizefont_extentsr   text_extentsmove_to	show_text)r   labelri   rj   r   r   rk   rH   rK   rL   r   rd  extentslabel_xlabel_ys                  r   ry   InterpolatablePlot.draw_label  sR    =JJE>[[FI]]4<<(
##&*E""0H0H	

 	#()LO;	
#(
5!//%(==5 ..IY'??,Looe,G w}},551o%


7$
Ur   r  c          	        ^"^# [        U5      [        [        4;  a  U/n[        S U 5       5      nUS   S   m"[	        S U 5       5      m#[        U"4S jT# 5       5      (       d  Sm"X   n	[        5       n
U	R                  U
5        [        U5      nU	R                  U5        [        U5      nUR                  U5        UR                  nUc  SnUS   US   -
  nUS	   US
   -
  nU(       a+  Uc  U R                  U-  nO[        XpR                  U-  5      nU(       a+  Uc  U R                  U-  nO[        XpR                  U-  5      nUc  S
n[        R                   " U R"                  5      nUR%                  XV5        UR%                  U R                  X-  -
  S-  U R                  X-  -
  S-  5        UR'                  Xw* 5        UR%                  US   * US	   * 5        U R(                  (       a`  UR*                  " U R(                  6   UR-                  US   US
   X5        UR/                  U R0                  U-  5        UR3                  5         U R4                  (       d  U R6                  (       a  [9        UU5      nUR                  U5        U R4                  (       a=  T"[:        R<                  :w  a)  UR*                  " U R4                  6   UR?                  5         U R6                  (       aG  UR*                  " U R6                  6   UR/                  U R@                  U-  5        URC                  5         URE                  5         [:        RF                  T#;   d  [:        RH                  T#;   a  [K        [        US9nU
R                  U5        U H  nUS   [:        RF                  [:        RH                  4;   d  M,  URL                  US      nUR                  [9        UU5      5        URN                  " U RP                  6   URS                  5         M     [        U#4S j[:        RT                  [:        RV                  [:        RX                  1 5       5      (       Gaz  UR[                  [        R\                  5        URL                   H8  u  nnU(       d  M  US   u  pVUR_                  XV5        URa                  XV5        M:     URN                  " U Rb                  6   UR/                  U Rd                  U-  5        UR3                  5         URL                   H?  u  nnU(       d  M  US S  H'  u  pVUR_                  XV5        URa                  XV5        M)     MA     URN                  " U Rf                  6   UR/                  U Rh                  U-  5        UR3                  5         URL                   H  u  nnU(       d  M  US;   a  UR^                  " US   6   M)  US:X  a@  U H  u  pVURa                  XV5        M     URk                  5         UR^                  " US   6   Mo  US:X  aj  UR`                  " US   6   URk                  5         UR^                  " US
   6   UR`                  " US   6   URk                  5         UR^                  " US   6   M  M     URN                  " U Rl                  6   UR/                  U Rn                  U-  5        UR3                  5         S nU H  nUS   [:        Rp                  :X  d  M  US   n[s        U Rt                  5      n[K        [        US9nU
R                  U5        [w        URL                  5       He  u  nnUU   U:X  a  M  [y        U5      nUR                  [9        UU5      5        URN                  " / UQU Rz                  P76   URS                  5         Mg     M     U GH)  nUS   [:        RT                  [:        R|                  4;   Ga  UR                  S5      nUb  US
:X  a  SU;   a  [K        [        US9nUR                  U5        [        5       n[        US5      nURL                  Uc  UOUU      R                  U5        URL                  US      S   nUR                  5         UR$                  " U6   UR'                  S
U-  S
U-  5        U R                  UU R                  U R                  S9  UR                  5         US:X  d  UR                  S5      (       d  U R                  nOU R                  nS nSnUR                  5         URL                   GHX  u  nnUS:X  a  US   nM  Uc  M  US:X  a  Un OUS   n Ub  UU:X  Ga   UR                  5         [        U6 n[        U 6 n [        U U-
  5      n!UR%                  UR                  UR                  5        U!(       a}  UR                  [        R                  " U R                  UR                  -
  U R                  UR                  -
  5      5        UR'                  S
U-  S
U-  5        U R                  UUS9  O3UR'                  S
U-  S
U-  5        U R                  UU R                  US9  UR                  5         Ub    OS nUS
-  nGM[     UR                  5         US   [:        R                  :X  d  GM  UR                  S5      n[K        [        US9nUR                  U5        [        5       n[        US5      nURL                  Uc  UOUU      R                  U5        URL                  US      S   nUR                  5         UR$                  " U6   UR'                  S
U-  S
U-  5        U(       a1  U R                  UU R                  U R                  U R                  S9  O%U R                  UU R                  U R                  S9  UR                  5         GM,     U$ )Nc              3   0   #    U  H  oS    S:H  v   M     g7f)rZ   r  Nr)   r   s     r   r   0InterpolatablePlot.draw_glyph.<locals>.<genexpr>M  s     IWV_0s   r   rZ   c              3   *   #    U  H	  oS    v   M     g7fr   r)   r   s     r   r   ro  O  r   r   c              3   ,   >#    U  H	  oT:H  v   M     g 7fr   r)   r   s     r   r   ro  P  r   r   mixed)r   r   r   r   r=   r>   r   r  r  c              3   .   >#    U  H
  nUT;   v   M     g 7fr   r)   )r   tr3  s     r   r   ro    s!      
 s   r  )moveTolineToqCurveTocurveTor  F)r   r   r  ru  	closePath)r   r[   )r   r   r   )XrZ   r  r  r'  r   r  r   r(  r   r
   r)  boundsrJ   r"  rN   r   r   r   	translater  border_colorr   r   r   border_widthstroker   r   r   r   	OPEN_PATHr   r   r   new_pathr	  r
  r   r[   r   r   r   r  
NODE_COUNTNODE_INCOMPATIBILITYset_line_capLINE_CAP_ROUNDrf  line_tooncurve_node_coloroncurve_node_diameteroffcurve_node_coloroffcurve_node_diameternew_sub_pathhandle_colorhandle_widthr  r   r   r  r  r   r  r  r   r   saver   r   r   restorer   r   r*  r+  r,  r-  rotatemathatan2r   r  r   r   r   r   r   r   )$r   r  r   r   r8  ri   rj   r  r  r   	recordingdecomposedRecording	boundsPenrz  glyph_widthglyph_heightr   penperContourPenr   r  segmentargsmatchingcolorsr   r   idxpointsrD  targetPointfirst_pt	second_ptlengthr   r3  s$                                     @@r   r$  InterpolatablePlot.draw_glyphI  sl
   >$. zHIII{6*D8DD>>>>"L# N	

95h?

&'$X.	""9-!!>!FQi&)+ay6!9,}((;6E#4#4|#CD}))L8E#4#4|#CD=E]]4<<(
Q
 33q8!55:	
 	
fQiZ&),t001LLF1I{Id//%78IIK??d//8R(C&&s+<3H3R3R#R!!4??3  "  !!4#4#45!!$"3"3e";<""$KKM "-->$//=@4\HUM]+#6?)55)44'  ,11')2DEGNN8Hb#9:&&(G(GHGGI $  
 &--%00%::
 
 
 OOE001 "5!:!:Bx

1 

1  ";  7 78d885@AIIK "5!:!: "IDAJJq$JJq$ & ";  8 89d99EABIIK "5!:!: 44JJQ(
* $

1( !%OO%JJR)	)JJQ(OO%JJQ(JJQ(OO%JJR)% ";(  1 12d//%78IIKGv"7"E"EE"9-t223 8 8!   /"+M,?,?"@JAw{a'  LENN8Hb#9:&&BBt/A/ABGGI #A     Gv%--%77#  kk), ?uzi76J$<$x%M (..}=46F 1&% @I!'''/Xc]fY'"(,,wy/A"B1"EKGGILL+.HHQYE	2MM!%!@!@">> " 
 JJL A:W[[%<%< 22E 88E	%8%>%>MGT(*#'7 ' +-$,	$(G	{a3h	#*H#5$+Y$7	!$Y%9!:X]]HMMB!II $

$-NNX]]$B$-NNX]]$B!" HHQYE	: OOBeO< HHQYE	: MM ")-)H)H&+ * 
 

?!#HFAS &?V 

v"7"<"<<kk), 8 8! $**=902-fe<	##8+;C#OVV %ll77+;<Q?	k*UAI.$$!%!6!6%)%B%B"44	 %  MM!%!5!5"33 " 
 

_  b r   
   )ri   rj   r   r   c                N   UR                  5         UR                  U5        UR                  [        R                  5        UR                  X#5        UR                  X#5        [        U5      S:X  a  US-   nUR                  " U6   UR                  5         UR                  5         g )Nr>   r   )r  r   r  r   r  rf  r  r   r   r~  r  )r   r   ri   rj   r   r   s         r   r   InterpolatablePlot.draw_dot[  sw    
	
(#
,,-


1


1u:?DLE
E"
		


r   )ri   rj   r   r   r   c                Z   UR                  5         UR                  U5        UR                  [        R                  5        UR                  X#US-  SS[        R                  -  5        [        U5      S:X  a  US-   nUR                  " U6   UR                  5         UR                  5         g )Nr=   r   r>   r  )r  r   r  r   LINE_CAP_SQUAREarcr  pir   r   r~  r  )r   r   ri   rj   r   r   r   s          r   r   InterpolatablePlot.draw_circleg  s     		
,'
--.
qX\1a$''k2u:?DLE
E"
		


r   r   c                   UR                  5         [        U5      S:X  a  US-   nUR                  " U6   UR                  U R                  U-   U5        UR                  SS5        UR                  U R                  * U R                  * S-  5        UR                  U R                  * U R                  S-  5        UR                  5         UR                  5         UR                  5         g )Nr>   r  r   r;   )
r  r   r   r{  r   rf  r  
close_pathr   r  )r   r   ri   rj   r   s        r   r   InterpolatablePlot.draw_arrowt  s    
	u:?DLE
E"
T,,q0!4


1a


$$$$$$s*	
 	

$$$##c)	
 	
	


r   ri   rj   r   rH   rK   c                L   Uc  U R                   nUc  U R                  nUR                  5       n[        R                  " U R
                  5      nUR                  " U6   UR                  U R                  5        UR                  S[        R                  [        R                  5        SnSn	UR                  5       n
U
S   nU
S   nU H-  nUR                  U5      n[        XR                  5      nX-  n	M/     U(       d  g UR!                  X#5        [#        XX-  Xi-  5      nUR!                  XXU-  -
  S-  XiU-  -
  S-  5        UR%                  X5        UR!                  SU5        U H8  nUR'                  SS5        UR)                  U5        UR!                  SU5        M:     g )Nz@cairo:monospacer   r=   )rH   rK   
splitlinesr   r   r   r   rc  rL   r_  r`  rb  rd  re  max	x_advancer{  r"  r  rf  rg  )r   textri   rj   r   rH   rK   r   
text_widthtext_heightrd  font_font_sizefont_ascentlineri  r  s                   r   	draw_textInterpolatablePlot.draw_text  sv   =JJE>[[F ]]4<<(
5!
(
 7 79Q9Q	
 
(%a"1oDood+GZ):):;J)K  
QE&(<=
%''1,ve8K/Kq.P	
 	
Q$DJJq!LLLLN+ r   c                    U R                  U R                  U R                  U R                  U R                  U R                  SU R                  -  -
  SSU R
                  S9  U R                  U R                  U R                  U R                  U R                  -   U R                  SU R                  -  -
  U R                  SU R                  -  -
  U R                  -
  U R                  S9  g )Nr=   r2   T)ri   rj   r   rH   r   rk   rL   )ri   rj   rH   rK   r   )ry   no_issues_labelrI   no_issues_label_colorrH   rM   r  cupcakerL   rK   cupcake_colorrU   s    r   draw_cupcakeInterpolatablePlot.draw_cupcake  s      hhhh,,**q488|+** 	 		
 	LLhhhh'**q488|+;;TXX->$$ 	 	
r   c           	      h    U R                  UUUU R                  U R                  U R                  S9  g )Nr  )r  emoticon_colorrJ   rN   )r   r\  ri   rj   s       r   r%   InterpolatablePlot.draw_emoticon  s7    %%""$$ 	 	
r   )r@   rB   r?   rN   rJ   rC   r   )r   r   )Br$   r%   r&   r'   rH   rK   rI   rM   rL   r`   r!  r#  r|  r}  r   r   r   r  r  r  r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r&  r0  r1  r2  r   rV   r]   ra   r   r   r   r   r   r   r   r   ry   r$  r   r   r   r  r  r%  r(   r)   r   r   r+   r+   '   s   EF
COIK J!K"LL J"LL)*#LL"2!",&O% &WNM!/;O'!MG2 #NEK
J
 C
  (,ttDL -1DD F'P,\2IT 8<d  !F 6:DPl
 
-^ EFRV Pd !"Qi" 
 AY! #$q	 & $%$t $,L
*
r   r+   c                   .   ^  \ rS rSrS rU 4S jrSrU =r$ )InterpolatablePostscriptLikei  c                 8    U R                   R                  5         g r   )r   finishrY   s       r   r]   %InterpolatablePostscriptLike.__exit__  s    r   c                 V   > [         TU ]  5         U R                  R                  5         g r   )superra   r   r   	__class__s    r   ra   &InterpolatablePostscriptLike.show_page  s     r   r)   )r$   r%   r&   r'   r]   ra   r(   __classcell__r  s   @r   r  r    s    ! !r   r  c                       \ rS rSrS rSrg)InterpolatablePSi  c                 |    [         R                  " U R                  U R                  U R                  5      U l        U $ r   )r   	PSSurfacer?   rH   rK   r   rU   s    r   rV   InterpolatablePS.__enter__  s'    txxT[[Ir   r   Nr$   r%   r&   r'   rV   r(   r)   r   r   r  r    s    r   r  c                       \ rS rSrS rSrg)InterpolatablePDFi  c                 $   [         R                  " U R                  U R                  U R                  5      U l        U R
                  R                  [         R                  S5        U R
                  R                  [         R                  S5        U $ )Nzfonttools varLib.interpolatable )	r   
PDFSurfacer?   rH   rK   r   set_metadataPDF_METADATA_CREATORPDF_METADATA_CREATE_DATErU   s    r   rV   InterpolatablePDF.__enter__  sc    ''$**dkkJ!!&&(I	
 	!!%"@"@"Er   r  Nr  r)   r   r   r  r    s    r   r  c                   4   ^  \ rS rSrS rS rU 4S jrSrU =r$ )InterpolatableSVGi  c                     [        5       U l        [        R                  " U R                  U R                  U R
                  5      U l        U $ r   )r   sinkr   
SVGSurfacerH   rK   r   rU   s    r   rV   InterpolatableSVG.__enter__  s2    I	''		4::t{{Kr   c                 @    U R                   b  U R                  5         g g r   )r   ra   rY   s       r   r]   InterpolatableSVG.__exit__  s    <<#NN $r   c                 P  > [         TU ]  5         U R                  R                  5         U R                  R                  U R                  R                  5       5        [        5       U l        [        R                  " U R                  U R                  U R                  5      U l        g r   )r  ra   r   r  r?   r   r  getvaluer   r   r  rH   rK   r  s    r   ra   InterpolatableSVG.show_page  sf    		**,-I	''		4::t{{Kr   )r  r   )	r$   r%   r&   r'   rV   r]   ra   r(   r  r  s   @r   r  r    s    
L Lr   r  )'interpolatableHelpersfontTools.ttLibr   fontTools.ttLib.ttGlyphSetr   fontTools.pens.recordingPenr   r   r	   fontTools.pens.boundsPenr
   fontTools.pens.cairoPenr   fontTools.pens.pointPenr   r   r   &fontTools.varLib.interpolatableHelpersr   r   	itertoolsr   	functoolsr   ior   r   r  r{   logging	getLoggerr  dictr   r+   r  r  r  r  r)   r   r   <module>r     s    $ " 3 
 6 , 
      	 9:%T %c
 c
L%!#5 !3 4 L* Lr   