+
    ZiRN                    >   ^ RI Ht ^ RIHt ^ RIHtHtHtHtH	t	H
t
 ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RI H!t!H"t"H#t#H$t$H%t%H&t& ^ RI'H(t(H)t)H*t*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1H2t2 ]/] ! R R4      4       4       t3R# )    )annotations)deepcopy)AnyIteratorListMappingOptionalcast)definefield)	Transform)AbstractPen)AbstractPointPenPointToSegmentPenSegmentToPointPen)Anchor)	Component)Contour)	Guideline)Image)Lib_convert_Lib_get_lib_get_tempLib_set_lib_set_tempLib)BoundingBox_object_lib	getBoundsgetControlBoundsGlyphPointPen)serde)GlyphSetHasIdentifierc                     ] tR t^"t$ RtRtR]R&   ^ tR]R&    ^ tR]R&    ]	! ]
R7      tR	]R
&    ]	! ]R7      tR]R&   ]	! ]]R7      tR]R&    RtR]R&    ]	! ]
R7      tR]R&   ]	! ]
R7      tR]R&    ]	! ]
R7      tR]R&    ]	! ]
R7      tR]R&   ]	! ]]R7      tR]R&    R R ltR R ltR R ltR  R! ltR" R# lt]! ]]4      t]! ] ]!4      t"]R$ R% l4       t#]#PH                  R& R' l4       t#]R( R) l4       t%]%PH                  R* R+ l4       t%]R, R- l4       t&]R. R/ l4       t']'PH                  R0 R1 l4       t']R2 R3 l4       t(](PH                  R4 R5 l4       t(R6 R7 lt)R8 R9 lt*R: R; lt+R< R= lt,R> R? lt-R@ RA lt.RB RC lt/RD RE lt0RF RG lt1RH RI lt2RuRJ RK llt3RL RM lt4RN RO lt5RvRP RQ llt6RR RS lt7RT RU lt8RV RW lt9]RX RY l4       t:]:PH                  RZ R[ l4       t:]R\ R] l4       t;];PH                  R^ R_ l4       t;RuR` Ra llt<RuRb Rc llt=RuRd Re llt>RuRf Rg llt?RuRh Ri llt@RuRj Rk lltARuRl Rm lltBRuRn Ro lltCRuRp Rq lltDRuRr Rs lltERttFR# )wGlypha  Represents a glyph, containing contours, components, anchors and various
other bits of data concerning it.

See http://unifiedfontobject.org/versions/ufo3/glyphs/glif/.

Behavior:
    The Glyph object has list-like behavior. This behavior allows you to interact
    with contour data directly. For example, to get a particular contour::

        contour = glyph[0]

    To iterate over all contours::

        for contour in glyph:
            ...

    To get the number of contours::

        contourCount = len(glyph)

    To check if a :class:`.Contour` object is in glyph::

        exists = contour in glyph

    To interact with components or anchors in a similar way, use the
    :attr:`.Glyph.components` and :attr:`.Glyph.anchors` attributes.
NzOptional[str]_namefloatwidthheight)factoryz	List[int]unicodesr   _image)r,   	converterr   _libnotezList[Anchor]_anchorszList[Component]
componentszList[Contour]contourszList[Guideline]_guidelines_tempLibc                   V ^8  d   QhRR/# )   returnint )formats   "7/usr/lib/python3/dist-packages/ufoLib2/objects/glyph.py__annotate__Glyph.__annotate__a   s     " " "    c                	,    \        V P                  4      # N)lenr4   selfs   &r=   __len__Glyph.__len__a   s    4==!!r@   c                    V ^8  d   QhRRRR/# )r8   indexr:   r9   r   r;   )r<   s   "r=   r>   r?   d   s     $ $ $ $r@   c                	(    V P                   V,          # rB   r4   )rE   rI   s   &&r=   __getitem__Glyph.__getitem__d   s    }}U##r@   c                    V ^8  d   QhRRRR/# )r8   contourr   r9   boolr;   )r<   s   "r=   r>   r?   g   s     ( (G ( (r@   c                	    WP                   9   # rB   rK   rE   rO   s   &&r=   __contains__Glyph.__contains__g   s    --''r@   c                   V ^8  d   QhRR/# )r8   r9   zIterator[Contour]r;   )r<   s   "r=   r>   r?   j   s     # #+ #r@   c                	,    \        V P                  4      # rB   )iterr4   rD   s   &r=   __iter__Glyph.__iter__j   s    DMM""r@   c                   V ^8  d   QhRR/# )r8   r9   strr;   )r<   s   "r=   r>   r?   m   s     
 
# 
r@   c           
     	    R P                  V P                  P                  V P                  P                  V P                  e   RV P                   R2MR\        \        V 4      4      4      # )z<{}.{} {}at {}>'z'  )r<   	__class__
__module____name__r(   hexidrD   s   &r=   __repr__Glyph.__repr__m   sU     ''NN%%NN##"&**"8a

|2b4M	
 	
r@   c                   V ^8  d   QhRR/# )r8   r9   list[Anchor]r;   )r<   s   "r=   r>   r?   z   s     
 
 
r@   c                    V P                   # )zThe list of anchors the glyph contains.

Getter:
    Returns a list of anchors the glyph contains. Modifications of the list
    modify the Glyph object.

Setter:
    Clears current anchors and sets the new ones.
r2   rD   s   &r=   anchorsGlyph.anchorsy   s     }}r@   c                    V ^8  d   QhRRRR/# )r8   valuerg   r9   Noner;   )r<   s   "r=   r>   r?      s     & &\ &d &r@   c                	Z    V P                  4        V F  pV P                  V4       K  	  R # rB   )clearAnchorsappendAnchor)rE   rm   anchors   && r=   rj   rk      s&    Ff% r@   c                   V ^8  d   QhRR/# )r8   r9   list[Guideline]r;   )r<   s   "r=   r>   r?      s     
  
 O 
 r@   c                    V P                   # )zThe list of guidelines the glyph contains.

Getter:
    Returns a list of guidelines the glyph contains. Modifications of the list
    modify the Glyph object.

Setter:
    Clears current guidelines and sets the new ones.
r5   rD   s   &r=   
guidelinesGlyph.guidelines   s     r@   c                    V ^8  d   QhRRRR/# )r8   rm   rt   r9   rn   r;   )r<   s   "r=   r>   r?      s     , , ,D ,r@   c                	Z    V P                  4        V F  pV P                  V4       K  	  R # rB   )clearGuidelinesappendGuideline)rE   rm   	guidelines   && r=   rw   rx      s&    I  + r@   c                   V ^8  d   QhRR/# r8   r9   
str | Noner;   )r<   s   "r=   r>   r?      s      j r@   c                    V P                   # )zThe name of the glyph.)r(   rD   s   &r=   name
Glyph.name   s     zzr@   c                   V ^8  d   QhRR/# )r8   r9   
int | Noner;   )r<   s   "r=   r>   r?      s       r@   c                P    V P                   '       d   V P                   ^ ,          # R# )a)  The first assigned Unicode code point or None.

See http://unifiedfontobject.org/versions/ufo3/glyphs/glif/#unicode.

Setter:
    Sets the value to be the first of the assigned Unicode code points. Will
    remove a duplicate if exists. Will clear the list of Unicode points if
    value is None.
N)r-   rD   s   &r=   unicodeGlyph.unicode   s     =====##r@   c                    V ^8  d   QhRRRR/# )r8   rm   r   r9   rn   r;   )r<   s   "r=   r>   r?      s     , ,Z ,D ,r@   c                	D   Vf
   . V n         R # V P                   '       dU   V P                   ^ ,          V8X  d   R #  V P                   P                  V4       V P                   P                  ^ V4       R # V P                   P	                  V4       R #   \         d     LHi ; irB   )r-   remove
ValueErrorinsertappendrE   rm   s   &&r=   r   r      s~    =DM}}}==#u,MM((/ $$Q.$$U+	 " s   B BBc                   V ^8  d   QhRR/# )r8   r9   r   r;   )r<   s   "r=   r>   r?      s      u r@   c                    V P                   # )zThe background image reference associated with the glyph.

See http://unifiedfontobject.org/versions/ufo3/glyphs/glif/#image.

Setter:
    Sets the background image reference. Clears it if value is None.
)r.   rD   s   &r=   imageGlyph.image   s     {{r@   c                    V ^8  d   QhRRRR/# )r8   r   z Image | Mapping[str, Any] | Noner9   rn   r;   )r<   s   "r=   r>   r?      s      ;  r@   c                	D   Vf   V P                   P                  4        R # \        V\        4      '       d	   Wn         R # \        VR,          \	        VR,          VR,          VR,          VR,          VR,          VR,          4      VP                  R4      R	7      V n         R # )
NfileNamexScalexyScaleyxScaleyScalexOffsetyOffsetcolor)r   transformationr   )r.   clear
isinstancer   r   get)rE   r   s   &&r=   r   r      s    =KKu%%Kz*((O)$)$(O)$)$  ii(DKr@   c                    V ^8  d   QhRRRR/# )r8   objectr%   r9   zdict[str, Any]r;   )r<   s   "r=   r>   r?      s     - - -. -r@   c                .    \        V P                  V4      # )a  Return the lib for an object with an identifier, as stored in a glyph's lib.

If the object does not yet have an identifier, a new one is assigned to it. If
the font lib does not yet contain the object's lib, a new one is inserted and
returned.

.. doctest::

    >>> from ufoLib2.objects import Font, Guideline
    >>> font = Font()
    >>> glyph = font.newGlyph("a")
    >>> glyph.guidelines = [Guideline(x=100)]
    >>> guideline_lib = glyph.objectLib(glyph.guidelines[0])
    >>> guideline_lib["com.test.foo"] = 1234
    >>> guideline_id = glyph.guidelines[0].identifier
    >>> assert guideline_id is not None
    >>> assert glyph.lib["public.objectLibs"][guideline_id] is guideline_lib
)r   lib)rE   r   s   &&r=   	objectLibGlyph.objectLib   s    ( 488V,,r@   c                   V ^8  d   QhRR/# r8   r9   rn   r;   )r<   s   "r=   r>   r?      s      t r@   c                    V P                   R V P                  R V P                  R V P                  R V P                  P                  4        R# )zJClears out anchors, components, contours, guidelines and image
references.NNNN)r2   r3   r4   r5   r   r   rD   s   &r=   r   Glyph.clear   sF     MM!OOAMM!Q

r@   c                   V ^8  d   QhRR/# r   r;   )r<   s   "r=   r>   r?     s      d r@   c                     V P                   R R# )zClears out anchors.r   Nri   rD   s   &r=   rp   Glyph.clearAnchors      MM!r@   c                   V ^8  d   QhRR/# r   r;   )r<   s   "r=   r>   r?     s      t r@   c                     V P                   R R# )zClears out contours.r   NrK   rD   s   &r=   clearContoursGlyph.clearContours  r   r@   c                   V ^8  d   QhRR/# r   r;   )r<   s   "r=   r>   r?   	  s       r@   c                     V P                   R R# )zClears out components.r   N)r3   rD   s   &r=   clearComponentsGlyph.clearComponents	  s    OOAr@   c                   V ^8  d   QhRR/# r   r;   )r<   s   "r=   r>   r?     s          r@   c                     V P                   R R# )zClears out guidelines.r   Nrv   rD   s   &r=   r{   Glyph.clearGuidelines  s    Qr@   c                    V ^8  d   QhRRRR/# )r8   	componentr   r9   rn   r;   )r<   s   "r=   r>   r?     s     * * *t *r@   c                <    V P                   P                  V4       R# )zGRemoves :class:`.Component` object from the glyph's list of components.N)r3   r   )rE   r   s   &&r=   removeComponentGlyph.removeComponent  s    y)r@   c                    V ^8  d   QhRRRR/# )r8   rr   zAnchor | Mapping[str, Any]r9   rn   r;   )r<   s   "r=   r>   r?     s     $ $#= $$ $r@   c                    \        V\        4      '       gD   \        V\        4      '       g#   \        RR\	        V4      P
                   24      h\        R/ VB pV P                  P                  V4       R# )zAppends an :class:`.Anchor` object to glyph's list of anchors.

Args:
    anchor: An :class:`.Anchor` object or mapping for the Anchor constructor.
z,Expected Anchor object or a Mapping for the zAnchor constructor, found Nr;   )r   r   r   	TypeErrortypera   rj   r   )rE   rr   s   &&r=   rq   Glyph.appendAnchor  sd     &&))fg..B0f1F1F0GH  %f%FF#r@   c                    V ^8  d   QhRRRR/# )r8   r}   zGuideline | Mapping[str, Any]r9   rn   r;   )r<   s   "r=   r>   r?   $  s     + +)F +4 +r@   c                    \        V\        4      '       gD   \        V\        4      '       g#   \        RR\	        V4      P
                   24      h\        R/ VB pV P                  P                  V4       R# )zAppends a :class:`.Guideline` object to glyph's list of guidelines.

Args:
    guideline: A :class:`.Guideline` object or a mapping for the Guideline
        constructor.
z/Expected Guideline object or a Mapping for the zGuideline constructor, found Nr;   )r   r   r   r   r   ra   r5   r   )rE   r}   s   &&r=   r|   Glyph.appendGuideline$  sf     )Y//i11E3DO4L4L3MN  ".I.I	*r@   c                    V ^8  d   QhRRRR/# )r8   rO   r   r9   rn   r;   )r<   s   "r=   r>   r?   4  s     & &W & &r@   c                    \        V\        4      '       g"   \        R\        V4      P                   24      hV P
                  P                  V4       R# )z?Appends a :class:`.Contour` object to glyph's list of contours.zExpected Contour, found N)r   r   r   r   ra   r4   r   rR   s   &&r=   appendContourGlyph.appendContour4  s?    '7++6tG}7M7M6NOPPW%r@   c                    V ^8  d   QhRRRR/# )r8   r   r   r9   r'   r;   )r<   s   "r=   r>   r?   :  s       u r@   c                0    \        V 4      pVe   Wn        V# )zHReturns a new Glyph (deep) copy, optionally override the new glyph
name.)r   r(   )rE   r   others   && r=   copy
Glyph.copy:  s     Kr@   c                    V ^8  d   QhRRRR/# )r8   glyphr'   r9   rn   r;   )r<   s   "r=   r>   r?   B  s     # #u # #r@   c                   VP                   V n         VP                  V n        \        VP                  4      V n        \	        VP
                  4      V n        VP                  V n        \	        VP                  4      V n        \	        VP                  4      V n        \	        VP                  4      V n	        V P                  4        V P                  4        V P                  4       pVP                  V4       R# )zDeep-copies everything from the other glyph into self, except for
the name.

Existing glyph data is overwritten.

|defcon_compat|
N)r*   r+   listr-   r   r   r1   r   rj   rw   r   r   getPointPen
drawPoints)rE   r   pointPens   && r=   copyDataFromGlyphGlyph.copyDataFromGlyphB  s     [[
llU^^,ekk*
JJ	EII&."5#3#34 	##%"r@   c                    V ^8  d   QhRRRR/# )r8   deltaztuple[float, float]r9   rn   r;   )r<   s   "r=   r>   r?   Y  s      - $ r@   c                    V P                    F  pVP                  V4       K  	  V P                   F  pVP                  V4       K  	  V P                   F  pVP                  V4       K  	  R# )z@Moves all contours, components and anchors by (x, y) font units.N)r4   mover3   rj   )rE   r   rO   r   rr   s   &&   r=   r   
Glyph.moveY  sP    }}GLL %INN5! )llFKK #r@   c               $    V ^8  d   QhRRRRRR/# )r8   penr   outputImpliedClosingLinerP   r9   rn   r;   )r<   s   "r=   r>   r?   f  s"     " " "t "PT "r@   c                @    \        WR7      pV P                  V4       R# )zDraws glyph into given pen.)r   N)r   r   )rE   r   r   r   s   &&& r=   draw
Glyph.drawf  s     %
 	!r@   c                    V ^8  d   QhRRRR/# )r8   r   r   r9   rn   r;   )r<   s   "r=   r>   r?   n  s     + +#3 + +r@   c                    V P                    F  pVP                  V4       K  	  V P                   F  pVP                  V4       K  	  R# )z+Draws points of glyph into given point pen.N)r4   r   r3   )rE   r   rO   r   s   &&  r=   r   Glyph.drawPointsn  s:    }}Gx( %I  * )r@   c                   V ^8  d   QhRR/# )r8   r9   r   r;   )r<   s   "r=   r>   r?   u  s       r@   c                8    \        V P                  4       4      pV# )z+Returns a pen for others to draw into self.)r   r   )rE   r   s   & r=   getPenGlyph.getPenu  s     0 0 23
r@   c                   V ^8  d   QhRR/# )r8   r9   r   r;   )r<   s   "r=   r>   r?   z  s      - r@   c                    \        V 4      pV# )z8Returns a point pen for others to draw points into self.r!   )rE   r   s   & r=   r   Glyph.getPointPenz  s     &r@   c                   V ^8  d   QhRR/# r   r;   )r<   s   "r=   r>   r?     s     E E: Er@   c                j    \        \        \        ,          V P                  P	                  R4      4      # )zThe color assigned to the glyph.

See http://unifiedfontobject.org/versions/ufo3/glyphs/glif/#publicmarkcolor.

Getter:
    Returns the mark color or None.

Setter:
    Sets the mark color. If value is None, deletes the key from the lib if
    present.
public.markColor)r
   r	   r[   r   r   rD   s   &r=   	markColorGlyph.markColor  s#     HSM488<<0B#CDDr@   c                    V ^8  d   QhRRRR/# )r8   rm   r   r9   rn   r;   )r<   s   "r=   r>   r?     s     - -z -d -r@   c                	n    Ve   WP                   R&   R # RV P                   9   d   V P                   R R # R # )Nr   r   r   s   &&r=   r   r     s3    +0HH'(488++, ,r@   c                   V ^8  d   QhRR/# )r8   r9   float | Noner;   )r<   s   "r=   r>   r?     s     L L Lr@   c                j    \        \        \        ,          V P                  P	                  R4      4      # )a  The vertical origin of the glyph.

See http://unifiedfontobject.org/versions/ufo3/glyphs/glif/#publicverticalorigin.

Getter:
    Returns the vertical origin or None.

Setter:
    Sets the vertical origin. If value is None, deletes the key from the lib if
    present.
public.verticalOrigin)r
   r	   r)   r   r   rD   s   &r=   verticalOriginGlyph.verticalOrigin  s#     HUOTXX\\2I%JKKr@   c                    V ^8  d   QhRRRR/# )r8   rm   r   r9   rn   r;   )r<   s   "r=   r>   r?     s     2 2L 2T 2r@   c                	n    Ve   WP                   R&   R # RV P                   9   d   V P                   R R # R # )Nr   r   r   s   &&r=   r   r     s3    05HH,-$001 1r@   c                    V ^8  d   QhRRRR/# r8   layerGlyphSet | Noner9   zBoundingBox | Noner;   )r<   s   "r=   r>   r?     s     & & &:L &r@   c                Z    Vf   V P                   '       d   \        R4      h\        W4      # )zReturns the (xMin, yMin, xMax, yMax) bounding box of the glyph,
taking the actual contours into account.

Args:
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
1layer is required to compute bounds of components)r3   r   r   rE   r  s   &&r=   r   Glyph.getBounds  s(     =T___OPP%%r@   c                    V ^8  d   QhRRRR/# r  r;   )r<   s   "r=   r>   r?     s     - -o -AS -r@   c                Z    Vf   V P                   '       d   \        R4      h\        W4      # )zReturns the (xMin, yMin, xMax, yMax) bounding box of the glyph,
taking only the control points into account.

Args:
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
r  )r3   r   r    r  s   &&r=   r    Glyph.getControlBounds  s(     =T___OPP,,r@   c                    V ^8  d   QhRRRR/# r8   r  r  r9   r   r;   )r<   s   "r=   r>   r?     s      ? l r@   c                H    V P                  V4      pVf   R# VP                  # )zReturns the the space in font units from the point of origin to the
left side of the glyph.

Args:
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
N)r   xMinrE   r  boundss   && r=   getLeftMarginGlyph.getLeftMargin  s$     &>{{r@   c               $    V ^8  d   QhRRRRRR/# r8   rm   r)   r  r  r9   rn   r;   )r<   s   "r=   r>   r?     s!     ! !5 ! !D !r@   c                    V P                  V4      pVf   R# WP                  ,
          pV'       d/   V ;P                  V,          un        V P                  V^ 34       R# R# )zSets the the space in font units from the point of origin to the
left side of the glyph.

Args:
    value: The desired left margin in font units.
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
N)r   r  r*   r   )rE   rm   r  r  diffs   &&&  r=   setLeftMarginGlyph.setLeftMargin  sL     &>{{"JJ$JIItQi  r@   c                    V ^8  d   QhRRRR/# r  r;   )r<   s   "r=   r>   r?     s     ( (O (| (r@   c                j    V P                  V4      pVf   R# V P                  VP                  ,
          # )zReturns the the space in font units from the glyph's advance width
to the right side of the glyph.

Args:
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
N)r   r*   xMaxr  s   && r=   getRightMarginGlyph.getRightMargin  s-     &>zzFKK''r@   c               $    V ^8  d   QhRRRRRR/# r  r;   )r<   s   "r=   r>   r?     s!     ) )E )/ )T )r@   c                d    V P                  V4      pVf   R# VP                  V,           V n        R# )a  Sets the the space in font units from the glyph's advance width to
the right side of the glyph.

Args:
    value: The desired right margin in font units.
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
N)r   r  r*   )rE   rm   r  r  s   &&& r=   setRightMarginGlyph.setRightMargin  s*     &>[[5(
r@   c                    V ^8  d   QhRRRR/# r  r;   )r<   s   "r=   r>   r?     s     E E_ E Er@   c                    V P                  V4      pVf   R# V P                  f   VP                  # VP                  V P                  V P                  ,
          ,
          # )zReturns the the space in font units from the bottom of the canvas to
the bottom of the glyph.

Args:
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
Nr   r   yMinr+   r  s   && r=   getBottomMarginGlyph.getBottomMargin  sN     &>&;;;;$"5"5"CDDr@   c               $    V ^8  d   QhRRRRRR/# r  r;   )r<   s   "r=   r>   r?     s!        U  ?  d  r@   c                >   V P                  V4      pVf   R# V P                  f   VP                  pV P                  V n        M.VP                  V P                  V P                  ,
          ,
          pW,
          pV'       d   V ;P                  V,          un        R# R# )a  Sets the the space in font units from the bottom of the canvas to
the bottom of the glyph.

Args:
    value: The desired bottom margin in font units.
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
Nr$  rE   rm   r  r  oldValuer  s   &&&   r=   setBottomMarginGlyph.setBottomMargin  sv     &>&{{H"&++D{{d&9&9DKK&GHHKK4K r@   c                    V ^8  d   QhRRRR/# r  r;   )r<   s   "r=   r>   r?   (  s     5 5/ 5\ 5r@   c                    V P                  V4      pVf   R# V P                  f   V P                  VP                  ,
          # V P                  VP                  ,
          # )zReturns the the space in font units from the top of the canvas to
the top of the glyph.

Args:
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
Nr   r   r+   yMaxr  s   && r=   getTopMarginGlyph.getTopMargin(  sN     &>&;;,,&&44r@   c               $    V ^8  d   QhRRRRRR/# r  r;   )r<   s   "r=   r>   r?   8  s!        %    4  r@   c                H   V P                  V4      pVf   R# V P                  f   V P                  VP                  ,
          pMV P                  VP                  ,
          pW,
          pWA8w  d4   VP                  V,           V n        V ;P                  V,          un        R# R# )zSets the the space in font units from the top of the canvas to the
top of the glyph.

Args:
    value: The desired top margin in font units.
    layer: The layer of the glyph to look up components, if any. Not needed for
        pure-contour glyphs.
Nr0  r*  s   &&&   r=   setTopMarginGlyph.setTopMargin8  s~     &>&{{V[[0H**V[[8H"(++"5DKK4K r@   )
r.   rj   rw   r+   r   r   r1   r-   r   r*   rB   )F)Gra   r`   __qualname____firstlineno____doc__r(   __annotations__r*   r+   r   r   r-   r   r.   r   r   r0   r1   r2   r3   r4   r5   r6   rF   rL   rS   rX   rd   propertyr   r   r   r   r   tempLibrj   setterrw   r   r   r   r   r   rp   r   r   r{   r   rq   r|   r   r   r   r   r   r   r   r   r   r   r   r    r  r  r  r   r&  r,  r2  r6  __static_attributes__r;   r@   r=   r'   r'   "   s   8  E=E5!FE"-Hi- %(FE(c\:D#:?D-0"40Hl0"'"5J54#D1Hm12#(#6K6#>Hc>4"$(#
 8X
&C|\2G
 
 ^^& &
 
  
  , ,
     ^^, ,   \\ &-, *$+ &#."+
 E E - - L L 2 2&-!"()E  ,5    r@   r'   N)4
__future__r   r   r   typingr   r   r   r   r	   r
   attrsr   r   fontTools.misc.transformr   fontTools.pens.basePenr   fontTools.pens.pointPenr   r   r   ufoLib2.objects.anchorr   ufoLib2.objects.componentr   ufoLib2.objects.contourr   ufoLib2.objects.guideliner   ufoLib2.objects.imager   ufoLib2.objects.libr   r   r   r   r   r   ufoLib2.objects.miscr   r   r   r    ufoLib2.pointPens.glyphPointPenr"   ufoLib2.serder#   ufoLib2.typingr$   r%   r'   r;   r@   r=   <module>rP     su    "  ? ?  . .  * / + / '  W V 9  2 h  h   h r@   