| Crates.io | figma_squircle | 
| lib.rs | figma_squircle | 
| version | 0.1.0 | 
| created_at | 2025-09-17 22:43:42.414272+00 | 
| updated_at | 2025-09-17 22:43:42.414272+00 | 
| description | squircle svg path generator. | 
| homepage | https://github.com/gpui-elements/figma-squircle-rust | 
| repository | |
| max_upload_size | |
| id | 1844016 | 
| size | 35,712 | 
Figma-flavored squircles for everyone
This library is not an official product from the Figma team and does not guarantee to produce the same results as you would get in Figma.
This is a rust fork of phamfoo/figma-squircle - Big thanks to the original creator.
Figma has a great feature called corner smoothing, allowing you to create rounded shapes with a seamless continuous curve (squircles).

This library helps you bring those squircles to your apps.
figma_squircle = "0.1.0"
use figma_squircle::{get_svg_path, FigmaSquircleParams};
fn main() {
    let svg_path = get_svg_path(
        FigmaSquircleParams::default()
            .width(200.)
            .height(200.)
            .corner_radius(24.) // Defaults to 0.
            .corner_smoothing(0.8) // `corner_smoothing` goes from 0 to 1.
    );
    let svg_path = get_svg_path(
        FigmaSquircleParams::default()
            .width(200.)
            .height(200.)
            .corner_radius(24.)
            .corner_smoothing(0.8) // Defaults to 1.
            // You can also adjust the radius of each corner individually.
            .top_left_corner_radius(48.)
    );
    let svg_path = get_svg_path(
        FigmaSquircleParams::default()
            // You can also set both the width and height at once.
            .size(200.)
    );
}
The larger the corner radius, the less space we have left to make a smooth transition from the straight line to the rounded corner. As a result, you might have noticed that the smoothing effect appears to be less pronounced as the radius gets bigger.
Try enabling preserve_smoothing if you're not happy with the generated shape.
let svg_path = get_svg_path(
    FigmaSquircleParams::default()
        .width(200.)
        .height(200.)
        .corner_radius(24.)
        .corner_smoothing(0.8)
        .preserve_smoothing(true) // Defaults to false.
);
There's also a Figma plugin that utilizes this option.