# torus icon

Torus. Gentleface icon, drawn on the 16 px pixel grid. Free, MIT licensed. Page: https://gentleface.com/icons/torus

- Category: Shapes
- Use it for: torus, torus solid
- Tags: torus, ring, 3d, shape, solid, geometry, doughnut shape, toroid, primitive, modelling
- Component name: TorusIcon
- Added: 2026-11-07
- Since: version 0.5.0
- npm: `import { TorusIcon } from '@gentleface/react';` (@gentleface/react 0.6.0)

## Files

Each icon is drawn on the 16 px grid, and most also on the 20 and 24 px grids (at 24 in three weights: light 1 px, regular 1.5 px, bold 2 px). Show the drawing made for your size, or an exact multiple of it, on whole pixels: 16 for 16 and 32 px, 20 for 20 and 40, 24 for 24 and 48. A size in between or a fractional position blurs it. The code on each icon page is the 16 px drawing, an SVG with fill="currentColor"; the icon page's downloads follow its Grid switch, and npm has the 20 and 24 px drawings too.

- line-round: https://gentleface.com/svg/line-round/16/torus.svg · PNG https://gentleface.com/png/line-round/16/torus.png · https://gentleface.com/png/line-round/32/torus.png · https://gentleface.com/png/line-round/48/torus.png
- line-soft: https://gentleface.com/svg/line-soft/16/torus.svg · PNG https://gentleface.com/png/line-soft/16/torus.png · https://gentleface.com/png/line-soft/32/torus.png · https://gentleface.com/png/line-soft/48/torus.png
- line-sharp: https://gentleface.com/svg/line-sharp/16/torus.svg · PNG https://gentleface.com/png/line-sharp/16/torus.png · https://gentleface.com/png/line-sharp/32/torus.png · https://gentleface.com/png/line-sharp/48/torus.png
- solid-round: https://gentleface.com/svg/solid-round/16/torus.svg · PNG https://gentleface.com/png/solid-round/16/torus.png · https://gentleface.com/png/solid-round/32/torus.png · https://gentleface.com/png/solid-round/48/torus.png
- solid-soft: https://gentleface.com/svg/solid-soft/16/torus.svg · PNG https://gentleface.com/png/solid-soft/16/torus.png · https://gentleface.com/png/solid-soft/32/torus.png · https://gentleface.com/png/solid-soft/48/torus.png
- solid-sharp: https://gentleface.com/svg/solid-sharp/16/torus.svg · PNG https://gentleface.com/png/solid-sharp/16/torus.png · https://gentleface.com/png/solid-sharp/32/torus.png · https://gentleface.com/png/solid-sharp/48/torus.png

The SVG of every style: https://gentleface.com/icons/torus.json (`svg`).

## Code (line-round)

The snippets are decorative (aria-hidden). For an icon that carries meaning on its own, such as an icon-only button, label the button, or give the SVG role="img" and an aria-label. For another style, take its SVG from the JSON and swap the path `d`.

### SVG

```svg
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z"/></svg>
```

### React

```tsx
// Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus
import type { SVGProps } from 'react';

export function TorusIcon(props: SVGProps<SVGSVGElement>) {
  return (
    <svg xmlns="http://www.w3.org/2000/svg" width={16} height={16} viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" {...props}>
      <path d="M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z" />
    </svg>
  );
}
```

### Vue

```vue
<!-- Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus -->
<template>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
    <path d="M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z" />
  </svg>
</template>
```

### Svelte

```svelte
<!-- Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus -->
<script>
  let props = $props();
</script>

<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" {...props}>
  <path d="M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z" />
</svg>
```

### HTML img

```html
<!-- Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus. An <img> can't take currentColor: it draws black. Inline the SVG or use the CSS mask to color it. -->
<img src="https://gentleface.com/svg/line-round/16/torus.svg" width="16" height="16" alt="">
```

### CSS

```css
/* Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus. Takes the text color. */
.icon-torus {
  display: inline-block;
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z'/%3E%3C/svg%3E") center / 16px 16px no-repeat;
}
```

### Data URL

```text
data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='currentColor'%3E%3Cpath d='M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z'/%3E%3C/svg%3E
```

### Sprite

```html
<!-- Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus
     Every icon of this style in one file: https://gentleface.com/sprite/line-round.svg
     Serve it from your own origin: <use> does not load from another origin. -->
<svg width="16" height="16" aria-hidden="true"><use href="/sprite/line-round.svg#torus"/></svg>
```

### SwiftUI

```swift
// Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus
import SwiftUI

struct TorusIcon: Shape {
    func path(in rect: CGRect) -> Path {
        var p = Path()
        p.move(to: CGPoint(x: 3.119, y: 4.407))
        p.addCurve(to: CGPoint(x: 5.475, y: 3.334), control1: CGPoint(x: 3.801, y: 3.935), control2: CGPoint(x: 4.586, y: 3.577))
        p.addCurve(to: CGPoint(x: 8, y: 3), control1: CGPoint(x: 6.287, y: 3.111), control2: CGPoint(x: 7.129, y: 3))
        p.addCurve(to: CGPoint(x: 10.525, y: 3.334), control1: CGPoint(x: 8.871, y: 3), control2: CGPoint(x: 9.713, y: 3.111))
        p.addCurve(to: CGPoint(x: 12.881, y: 4.407), control1: CGPoint(x: 11.414, y: 3.577), control2: CGPoint(x: 12.199, y: 3.935))
        p.addCurve(to: CGPoint(x: 14.478, y: 6.095), control1: CGPoint(x: 13.578, y: 4.889), control2: CGPoint(x: 14.11, y: 5.452))
        p.addCurve(to: CGPoint(x: 15, y: 8), control1: CGPoint(x: 14.826, y: 6.704), control2: CGPoint(x: 15, y: 7.339))
        p.addCurve(to: CGPoint(x: 14.478, y: 9.905), control1: CGPoint(x: 15, y: 8.661), control2: CGPoint(x: 14.826, y: 9.296))
        p.addCurve(to: CGPoint(x: 12.881, y: 11.593), control1: CGPoint(x: 14.11, y: 10.548), control2: CGPoint(x: 13.578, y: 11.111))
        p.addCurve(to: CGPoint(x: 10.525, y: 12.666), control1: CGPoint(x: 12.199, y: 12.065), control2: CGPoint(x: 11.414, y: 12.423))
        p.addCurve(to: CGPoint(x: 8, y: 13), control1: CGPoint(x: 9.713, y: 12.889), control2: CGPoint(x: 8.871, y: 13))
        p.addCurve(to: CGPoint(x: 5.475, y: 12.666), control1: CGPoint(x: 7.129, y: 13), control2: CGPoint(x: 6.287, y: 12.889))
        p.addCurve(to: CGPoint(x: 3.119, y: 11.593), control1: CGPoint(x: 4.586, y: 12.423), control2: CGPoint(x: 3.801, y: 12.065))
        p.addCurve(to: CGPoint(x: 1.522, y: 9.905), control1: CGPoint(x: 2.422, y: 11.111), control2: CGPoint(x: 1.89, y: 10.548))
        p.addCurve(to: CGPoint(x: 1, y: 8), control1: CGPoint(x: 1.174, y: 9.296), control2: CGPoint(x: 1, y: 8.661))
        p.addCurve(to: CGPoint(x: 1.522, y: 6.095), control1: CGPoint(x: 1, y: 7.339), control2: CGPoint(x: 1.174, y: 6.704))
        p.addCurve(to: CGPoint(x: 3.119, y: 4.407), control1: CGPoint(x: 1.89, y: 5.452), control2: CGPoint(x: 2.422, y: 4.889))
        p.closeSubpath()
        p.move(to: CGPoint(x: 3.688, y: 10.771))
        p.addCurve(to: CGPoint(x: 5.74, y: 11.702), control1: CGPoint(x: 4.276, y: 11.178), control2: CGPoint(x: 4.96, y: 11.488))
        p.addCurve(to: CGPoint(x: 8, y: 12), control1: CGPoint(x: 6.465, y: 11.901), control2: CGPoint(x: 7.218, y: 12))
        p.addCurve(to: CGPoint(x: 10.26, y: 11.702), control1: CGPoint(x: 8.782, y: 12), control2: CGPoint(x: 9.535, y: 11.901))
        p.addCurve(to: CGPoint(x: 12.312, y: 10.771), control1: CGPoint(x: 11.04, y: 11.488), control2: CGPoint(x: 11.724, y: 11.178))
        p.addCurve(to: CGPoint(x: 13.61, y: 9.408), control1: CGPoint(x: 12.884, y: 10.375), control2: CGPoint(x: 13.317, y: 9.92))
        p.addCurve(to: CGPoint(x: 14, y: 8), control1: CGPoint(x: 13.87, y: 8.953), control2: CGPoint(x: 14, y: 8.484))
        p.addCurve(to: CGPoint(x: 13.61, y: 6.592), control1: CGPoint(x: 14, y: 7.516), control2: CGPoint(x: 13.87, y: 7.047))
        p.addCurve(to: CGPoint(x: 12.312, y: 5.229), control1: CGPoint(x: 13.317, y: 6.08), control2: CGPoint(x: 12.884, y: 5.625))
        p.addCurve(to: CGPoint(x: 10.26, y: 4.298), control1: CGPoint(x: 11.724, y: 4.822), control2: CGPoint(x: 11.04, y: 4.512))
        p.addCurve(to: CGPoint(x: 8, y: 4), control1: CGPoint(x: 9.535, y: 4.099), control2: CGPoint(x: 8.782, y: 4))
        p.addCurve(to: CGPoint(x: 5.74, y: 4.298), control1: CGPoint(x: 7.218, y: 4), control2: CGPoint(x: 6.465, y: 4.099))
        p.addCurve(to: CGPoint(x: 3.688, y: 5.229), control1: CGPoint(x: 4.96, y: 4.512), control2: CGPoint(x: 4.276, y: 4.822))
        p.addCurve(to: CGPoint(x: 2.39, y: 6.592), control1: CGPoint(x: 3.116, y: 5.625), control2: CGPoint(x: 2.683, y: 6.08))
        p.addCurve(to: CGPoint(x: 2, y: 8), control1: CGPoint(x: 2.13, y: 7.047), control2: CGPoint(x: 2, y: 7.516))
        p.addCurve(to: CGPoint(x: 2.39, y: 9.408), control1: CGPoint(x: 2, y: 8.484), control2: CGPoint(x: 2.13, y: 8.953))
        p.addCurve(to: CGPoint(x: 3.688, y: 10.771), control1: CGPoint(x: 2.683, y: 9.92), control2: CGPoint(x: 3.116, y: 10.375))
        p.closeSubpath()
        p.move(to: CGPoint(x: 4.378, y: 7.109))
        p.addCurve(to: CGPoint(x: 5.328, y: 6.48), control1: CGPoint(x: 4.605, y: 6.864), control2: CGPoint(x: 4.921, y: 6.654))
        p.addCurve(to: CGPoint(x: 6.628, y: 6.112), control1: CGPoint(x: 5.706, y: 6.318), control2: CGPoint(x: 6.14, y: 6.195))
        p.addCurve(to: CGPoint(x: 8, y: 6), control1: CGPoint(x: 7.07, y: 6.037), control2: CGPoint(x: 7.527, y: 6))
        p.addCurve(to: CGPoint(x: 9.372, y: 6.112), control1: CGPoint(x: 8.473, y: 6), control2: CGPoint(x: 8.93, y: 6.037))
        p.addCurve(to: CGPoint(x: 10.672, y: 6.48), control1: CGPoint(x: 9.86, y: 6.195), control2: CGPoint(x: 10.294, y: 6.318))
        p.addCurve(to: CGPoint(x: 11.622, y: 7.109), control1: CGPoint(x: 11.079, y: 6.654), control2: CGPoint(x: 11.395, y: 6.864))
        p.addCurve(to: CGPoint(x: 12, y: 8), control1: CGPoint(x: 11.874, y: 7.382), control2: CGPoint(x: 12, y: 7.679))
        p.addCurve(to: CGPoint(x: 11.622, y: 8.891), control1: CGPoint(x: 12, y: 8.321), control2: CGPoint(x: 11.874, y: 8.618))
        p.addCurve(to: CGPoint(x: 10.672, y: 9.52), control1: CGPoint(x: 11.395, y: 9.136), control2: CGPoint(x: 11.079, y: 9.346))
        p.addCurve(to: CGPoint(x: 9.372, y: 9.888), control1: CGPoint(x: 10.294, y: 9.682), control2: CGPoint(x: 9.86, y: 9.805))
        p.addCurve(to: CGPoint(x: 8, y: 10), control1: CGPoint(x: 8.93, y: 9.963), control2: CGPoint(x: 8.473, y: 10))
        p.addCurve(to: CGPoint(x: 6.628, y: 9.888), control1: CGPoint(x: 7.527, y: 10), control2: CGPoint(x: 7.07, y: 9.963))
        p.addCurve(to: CGPoint(x: 5.328, y: 9.52), control1: CGPoint(x: 6.14, y: 9.805), control2: CGPoint(x: 5.706, y: 9.682))
        p.addCurve(to: CGPoint(x: 4.378, y: 8.891), control1: CGPoint(x: 4.921, y: 9.346), control2: CGPoint(x: 4.605, y: 9.136))
        p.addCurve(to: CGPoint(x: 4, y: 8), control1: CGPoint(x: 4.126, y: 8.618), control2: CGPoint(x: 4, y: 8.321))
        p.addCurve(to: CGPoint(x: 4.378, y: 7.109), control1: CGPoint(x: 4, y: 7.679), control2: CGPoint(x: 4.126, y: 7.382))
        p.closeSubpath()
        p.move(to: CGPoint(x: 5.113, y: 8.213))
        p.addCurve(to: CGPoint(x: 5.722, y: 8.601), control1: CGPoint(x: 5.243, y: 8.353), control2: CGPoint(x: 5.446, y: 8.483))
        p.addCurve(to: CGPoint(x: 6.795, y: 8.902), control1: CGPoint(x: 6.027, y: 8.732), control2: CGPoint(x: 6.385, y: 8.832))
        p.addCurve(to: CGPoint(x: 8, y: 9), control1: CGPoint(x: 7.181, y: 8.967), control2: CGPoint(x: 7.583, y: 9))
        p.addCurve(to: CGPoint(x: 9.205, y: 8.902), control1: CGPoint(x: 8.417, y: 9), control2: CGPoint(x: 8.819, y: 8.967))
        p.addCurve(to: CGPoint(x: 10.278, y: 8.601), control1: CGPoint(x: 9.615, y: 8.832), control2: CGPoint(x: 9.973, y: 8.732))
        p.addCurve(to: CGPoint(x: 10.887, y: 8.213), control1: CGPoint(x: 10.554, y: 8.483), control2: CGPoint(x: 10.757, y: 8.353))
        p.addCurve(to: CGPoint(x: 11, y: 8), control1: CGPoint(x: 10.962, y: 8.131), control2: CGPoint(x: 11, y: 8.06))
        p.addCurve(to: CGPoint(x: 10.887, y: 7.787), control1: CGPoint(x: 11, y: 7.94), control2: CGPoint(x: 10.962, y: 7.869))
        p.addCurve(to: CGPoint(x: 10.278, y: 7.399), control1: CGPoint(x: 10.757, y: 7.647), control2: CGPoint(x: 10.554, y: 7.517))
        p.addCurve(to: CGPoint(x: 9.205, y: 7.098), control1: CGPoint(x: 9.973, y: 7.268), control2: CGPoint(x: 9.615, y: 7.168))
        p.addCurve(to: CGPoint(x: 8, y: 7), control1: CGPoint(x: 8.819, y: 7.033), control2: CGPoint(x: 8.417, y: 7))
        p.addCurve(to: CGPoint(x: 6.795, y: 7.098), control1: CGPoint(x: 7.583, y: 7), control2: CGPoint(x: 7.181, y: 7.033))
        p.addCurve(to: CGPoint(x: 5.722, y: 7.399), control1: CGPoint(x: 6.385, y: 7.168), control2: CGPoint(x: 6.027, y: 7.268))
        p.addCurve(to: CGPoint(x: 5.113, y: 7.787), control1: CGPoint(x: 5.446, y: 7.517), control2: CGPoint(x: 5.243, y: 7.647))
        p.addCurve(to: CGPoint(x: 5, y: 8), control1: CGPoint(x: 5.038, y: 7.869), control2: CGPoint(x: 5, y: 7.94))
        p.addCurve(to: CGPoint(x: 5.113, y: 8.213), control1: CGPoint(x: 5, y: 8.06), control2: CGPoint(x: 5.038, y: 8.131))
        p.closeSubpath()
        return p.applying(CGAffineTransform(scaleX: rect.width / 16, y: rect.height / 16))
    }
}

// TorusIcon().frame(width: 16, height: 16) fills with the foreground style. Keep it on whole points to stay crisp.
```

### Compose

```kotlin
// Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.vector.addPathNodes
import androidx.compose.ui.unit.dp

val TorusIcon: ImageVector by lazy {
    ImageVector.Builder(
        name = "torus", defaultWidth = 16.dp, defaultHeight = 16.dp,
        viewportWidth = 16f, viewportHeight = 16f,
    ).addPath(
        pathData = addPathNodes("M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z"),
        fill = SolidColor(Color.Black),
    ).build()
}

// Icon(TorusIcon, contentDescription = null) tints it with LocalContentColor.
```

### Android XML

```xml
<!-- res/drawable/ic_torus.xml · Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="16dp"
    android:height="16dp"
    android:viewportWidth="16"
    android:viewportHeight="16"
    android:tint="?attr/colorControlNormal">
  <path
      android:fillColor="@android:color/white"
      android:pathData="M3.119 4.407C3.801 3.935 4.586 3.577 5.475 3.334C6.287 3.111 7.129 3 8 3C8.871 3 9.713 3.111 10.525 3.334C11.414 3.577 12.199 3.935 12.881 4.407C13.578 4.889 14.11 5.452 14.478 6.095C14.826 6.704 15 7.339 15 8C15 8.661 14.826 9.296 14.478 9.905C14.11 10.548 13.578 11.111 12.881 11.593C12.199 12.065 11.414 12.423 10.525 12.666C9.713 12.889 8.871 13 8 13C7.129 13 6.287 12.889 5.475 12.666C4.586 12.423 3.801 12.065 3.119 11.593C2.422 11.111 1.89 10.548 1.522 9.905C1.174 9.296 1 8.661 1 8C1 7.339 1.174 6.704 1.522 6.095C1.89 5.452 2.422 4.889 3.119 4.407ZM3.688 10.771C4.276 11.178 4.96 11.488 5.74 11.702C6.465 11.901 7.218 12 8 12C8.782 12 9.535 11.901 10.26 11.702C11.04 11.488 11.724 11.178 12.312 10.771C12.884 10.375 13.317 9.92 13.61 9.408C13.87 8.953 14 8.484 14 8C14 7.516 13.87 7.047 13.61 6.592C13.317 6.08 12.884 5.625 12.312 5.229C11.724 4.822 11.04 4.512 10.26 4.298C9.535 4.099 8.782 4 8 4C7.218 4 6.465 4.099 5.74 4.298C4.96 4.512 4.276 4.822 3.688 5.229C3.116 5.625 2.683 6.08 2.39 6.592C2.13 7.047 2 7.516 2 8C2 8.484 2.13 8.953 2.39 9.408C2.683 9.92 3.116 10.375 3.688 10.771ZM4.378 7.109C4.605 6.864 4.921 6.654 5.328 6.48C5.706 6.318 6.14 6.195 6.628 6.112C7.07 6.037 7.527 6 8 6C8.473 6 8.93 6.037 9.372 6.112C9.86 6.195 10.294 6.318 10.672 6.48C11.079 6.654 11.395 6.864 11.622 7.109C11.874 7.382 12 7.679 12 8C12 8.321 11.874 8.618 11.622 8.891C11.395 9.136 11.079 9.346 10.672 9.52C10.294 9.682 9.86 9.805 9.372 9.888C8.93 9.963 8.473 10 8 10C7.527 10 7.07 9.963 6.628 9.888C6.14 9.805 5.706 9.682 5.328 9.52C4.921 9.346 4.605 9.136 4.378 8.891C4.126 8.618 4 8.321 4 8C4 7.679 4.126 7.382 4.378 7.109ZM5.113 8.213C5.243 8.353 5.446 8.483 5.722 8.601C6.027 8.732 6.385 8.832 6.795 8.902C7.181 8.967 7.583 9 8 9C8.417 9 8.819 8.967 9.205 8.902C9.615 8.832 9.973 8.732 10.278 8.601C10.554 8.483 10.757 8.353 10.887 8.213C10.962 8.131 11 8.06 11 8C11 7.94 10.962 7.869 10.887 7.787C10.757 7.647 10.554 7.517 10.278 7.399C9.973 7.268 9.615 7.168 9.205 7.098C8.819 7.033 8.417 7 8 7C7.583 7 7.181 7.033 6.795 7.098C6.385 7.168 6.027 7.268 5.722 7.399C5.446 7.517 5.243 7.647 5.113 7.787C5.038 7.869 5 7.94 5 8C5 8.06 5.038 8.131 5.113 8.213Z"/>
</vector>
```

### Flutter

```dart
// Gentleface "torus" (line-round), MIT. https://gentleface.com/icons/torus
import 'package:flutter/widgets.dart';

class TorusIcon extends StatelessWidget {
  const TorusIcon({super.key, this.size = 16, this.color});
  final double size;
  final Color? color;

  @override
  Widget build(BuildContext context) => CustomPaint(
        size: Size.square(size),
        painter: _TorusIconPainter(color ?? IconTheme.of(context).color ?? const Color(0xFF000000)),
      );
}

class _TorusIconPainter extends CustomPainter {
  _TorusIconPainter(this.color);
  final Color color;

  @override
  void paint(Canvas canvas, Size size) {
    canvas.scale(size.width / 16, size.height / 16);
    final p = Path()
      ..moveTo(3.119, 4.407)
      ..cubicTo(3.801, 3.935, 4.586, 3.577, 5.475, 3.334)
      ..cubicTo(6.287, 3.111, 7.129, 3, 8, 3)
      ..cubicTo(8.871, 3, 9.713, 3.111, 10.525, 3.334)
      ..cubicTo(11.414, 3.577, 12.199, 3.935, 12.881, 4.407)
      ..cubicTo(13.578, 4.889, 14.11, 5.452, 14.478, 6.095)
      ..cubicTo(14.826, 6.704, 15, 7.339, 15, 8)
      ..cubicTo(15, 8.661, 14.826, 9.296, 14.478, 9.905)
      ..cubicTo(14.11, 10.548, 13.578, 11.111, 12.881, 11.593)
      ..cubicTo(12.199, 12.065, 11.414, 12.423, 10.525, 12.666)
      ..cubicTo(9.713, 12.889, 8.871, 13, 8, 13)
      ..cubicTo(7.129, 13, 6.287, 12.889, 5.475, 12.666)
      ..cubicTo(4.586, 12.423, 3.801, 12.065, 3.119, 11.593)
      ..cubicTo(2.422, 11.111, 1.89, 10.548, 1.522, 9.905)
      ..cubicTo(1.174, 9.296, 1, 8.661, 1, 8)
      ..cubicTo(1, 7.339, 1.174, 6.704, 1.522, 6.095)
      ..cubicTo(1.89, 5.452, 2.422, 4.889, 3.119, 4.407)
      ..close()
      ..moveTo(3.688, 10.771)
      ..cubicTo(4.276, 11.178, 4.96, 11.488, 5.74, 11.702)
      ..cubicTo(6.465, 11.901, 7.218, 12, 8, 12)
      ..cubicTo(8.782, 12, 9.535, 11.901, 10.26, 11.702)
      ..cubicTo(11.04, 11.488, 11.724, 11.178, 12.312, 10.771)
      ..cubicTo(12.884, 10.375, 13.317, 9.92, 13.61, 9.408)
      ..cubicTo(13.87, 8.953, 14, 8.484, 14, 8)
      ..cubicTo(14, 7.516, 13.87, 7.047, 13.61, 6.592)
      ..cubicTo(13.317, 6.08, 12.884, 5.625, 12.312, 5.229)
      ..cubicTo(11.724, 4.822, 11.04, 4.512, 10.26, 4.298)
      ..cubicTo(9.535, 4.099, 8.782, 4, 8, 4)
      ..cubicTo(7.218, 4, 6.465, 4.099, 5.74, 4.298)
      ..cubicTo(4.96, 4.512, 4.276, 4.822, 3.688, 5.229)
      ..cubicTo(3.116, 5.625, 2.683, 6.08, 2.39, 6.592)
      ..cubicTo(2.13, 7.047, 2, 7.516, 2, 8)
      ..cubicTo(2, 8.484, 2.13, 8.953, 2.39, 9.408)
      ..cubicTo(2.683, 9.92, 3.116, 10.375, 3.688, 10.771)
      ..close()
      ..moveTo(4.378, 7.109)
      ..cubicTo(4.605, 6.864, 4.921, 6.654, 5.328, 6.48)
      ..cubicTo(5.706, 6.318, 6.14, 6.195, 6.628, 6.112)
      ..cubicTo(7.07, 6.037, 7.527, 6, 8, 6)
      ..cubicTo(8.473, 6, 8.93, 6.037, 9.372, 6.112)
      ..cubicTo(9.86, 6.195, 10.294, 6.318, 10.672, 6.48)
      ..cubicTo(11.079, 6.654, 11.395, 6.864, 11.622, 7.109)
      ..cubicTo(11.874, 7.382, 12, 7.679, 12, 8)
      ..cubicTo(12, 8.321, 11.874, 8.618, 11.622, 8.891)
      ..cubicTo(11.395, 9.136, 11.079, 9.346, 10.672, 9.52)
      ..cubicTo(10.294, 9.682, 9.86, 9.805, 9.372, 9.888)
      ..cubicTo(8.93, 9.963, 8.473, 10, 8, 10)
      ..cubicTo(7.527, 10, 7.07, 9.963, 6.628, 9.888)
      ..cubicTo(6.14, 9.805, 5.706, 9.682, 5.328, 9.52)
      ..cubicTo(4.921, 9.346, 4.605, 9.136, 4.378, 8.891)
      ..cubicTo(4.126, 8.618, 4, 8.321, 4, 8)
      ..cubicTo(4, 7.679, 4.126, 7.382, 4.378, 7.109)
      ..close()
      ..moveTo(5.113, 8.213)
      ..cubicTo(5.243, 8.353, 5.446, 8.483, 5.722, 8.601)
      ..cubicTo(6.027, 8.732, 6.385, 8.832, 6.795, 8.902)
      ..cubicTo(7.181, 8.967, 7.583, 9, 8, 9)
      ..cubicTo(8.417, 9, 8.819, 8.967, 9.205, 8.902)
      ..cubicTo(9.615, 8.832, 9.973, 8.732, 10.278, 8.601)
      ..cubicTo(10.554, 8.483, 10.757, 8.353, 10.887, 8.213)
      ..cubicTo(10.962, 8.131, 11, 8.06, 11, 8)
      ..cubicTo(11, 7.94, 10.962, 7.869, 10.887, 7.787)
      ..cubicTo(10.757, 7.647, 10.554, 7.517, 10.278, 7.399)
      ..cubicTo(9.973, 7.268, 9.615, 7.168, 9.205, 7.098)
      ..cubicTo(8.819, 7.033, 8.417, 7, 8, 7)
      ..cubicTo(7.583, 7, 7.181, 7.033, 6.795, 7.098)
      ..cubicTo(6.385, 7.168, 6.027, 7.268, 5.722, 7.399)
      ..cubicTo(5.446, 7.517, 5.243, 7.647, 5.113, 7.787)
      ..cubicTo(5.038, 7.869, 5, 7.94, 5, 8)
      ..cubicTo(5, 8.06, 5.038, 8.131, 5.113, 8.213)
      ..close();
    canvas.drawPath(p, Paint()..color = color);
  }

  @override
  bool shouldRepaint(_TorusIconPainter old) => old.color != color;
}
```
