figma_squircle

Crates.iofigma_squircle
lib.rsfigma_squircle
version0.1.0
created_at2025-09-17 22:43:42.414272+00
updated_at2025-09-17 22:43:42.414272+00
descriptionsquircle svg path generator.
homepagehttps://github.com/gpui-elements/figma-squircle-rust
repository
max_upload_size
id1844016
size35,712
Cameron Campbell (cameronpcampbell)

documentation

README

Figma Squircle Rust

Figma-flavored squircles for everyone

Disclaimer

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.

What is this?

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.

Installation

figma_squircle = "0.1.0"

Usage

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.)
    );
}

Preserve Smoothing

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.

Thanks

Commit count: 0

cargo fmt