# `GSOffsetCurve offsetPath:offsetX:offsetY:makeStroke:position:capStyleStart:capStyleEnd:join:italicAngle:grid:keepCompatibleOutlines:extraHandles:`

*Type Method*

## Declaration

```swift
class func offsetPath(_ path: any GSDrawPath, offsetX: CGFloat, offsetY: CGFloat, makeStroke: Bool, position: CGFloat, capStyleStart: GSLineCapStyle, capStyleEnd: GSLineCapStyle, join: GSLineJoinStyle, italicAngle: CGFloat, grid: GSGridSettings, keepCompatibleOutlines keepCompatible: Bool, extraHandles: NSMutableArray?) -> [GSPath]
```

```objc
+ (NSArray<GSPath *> *) offsetPath:(id<GSDrawPath>) path offsetX:(CGFloat) offsetX offsetY:(CGFloat) offsetY makeStroke:(BOOL) makeStroke position:(CGFloat) position capStyleStart:(GSLineCapStyle) capStyleStart capStyleEnd:(GSLineCapStyle) capStyleEnd join:(GSLineJoinStyle) join italicAngle:(CGFloat) italicAngle grid:(GSGridSettings) grid keepCompatibleOutlines:(BOOL) keepCompatible extraHandles:(NSMutableArray *) extraHandles;
```

```python
offsetPath_offsetX_offsetY_makeStroke_position_capStyleStart_capStyleEnd_join_italicAngle_grid_keepCompatibleOutlines_extraHandles_(path: object, offsetX: float, offsetY: float, makeStroke: bool, position: float, capStyleStart: GSLineCapStyle, capStyleEnd: GSLineCapStyle, join: GSLineJoinStyle, italicAngle: float, grid: GSGridSettings, keepCompatible: bool, extraHandles: list) -> list[GSPath]
```

## Parameters

- `path` — A `GSPath` or `NSBezierPath` since `NSBezierPath` also implements the relevant methods (assuming the `NSBezierPath` contains only a single subpath).
- `position` — `-1`: left of path, `0`: centered on path, `1`: right of path

