# face-grinning icon

Face grinning. Gentleface icon, drawn on the 16 px pixel grid. Free, MIT licensed. Page: https://gentleface.com/icons/face-grinning

- Category: Social & emotions
- Use it for: laugh, haha, grinning, laughing, lol, funny
- Tags: grin, grinning, laugh, haha, face, emoji, happy, joy, reaction, mood
- Family: face-angry, face-crying, face-neutral, face-nod, face-surprised, face-wink, frown, smile, smile-clock, smile-off, smile-plus, smile-search, smile-sparkle, smile-x
- Component name: FaceGrinningIcon
- Added: 2026-11-05
- Since: version 0.4.0
- npm: `import { FaceGrinningIcon } from '@gentleface/react';` (@gentleface/react 0.6.0)
- Changed: 2026-11-06 (released in 0.4.0)

## Alternatives

- `smile`: happy, or the emoji picker

## 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/face-grinning.svg · PNG https://gentleface.com/png/line-round/16/face-grinning.png · https://gentleface.com/png/line-round/32/face-grinning.png · https://gentleface.com/png/line-round/48/face-grinning.png
- line-soft: https://gentleface.com/svg/line-soft/16/face-grinning.svg · PNG https://gentleface.com/png/line-soft/16/face-grinning.png · https://gentleface.com/png/line-soft/32/face-grinning.png · https://gentleface.com/png/line-soft/48/face-grinning.png
- line-sharp: https://gentleface.com/svg/line-sharp/16/face-grinning.svg · PNG https://gentleface.com/png/line-sharp/16/face-grinning.png · https://gentleface.com/png/line-sharp/32/face-grinning.png · https://gentleface.com/png/line-sharp/48/face-grinning.png
- solid-round: https://gentleface.com/svg/solid-round/16/face-grinning.svg · PNG https://gentleface.com/png/solid-round/16/face-grinning.png · https://gentleface.com/png/solid-round/32/face-grinning.png · https://gentleface.com/png/solid-round/48/face-grinning.png
- solid-soft: https://gentleface.com/svg/solid-soft/16/face-grinning.svg · PNG https://gentleface.com/png/solid-soft/16/face-grinning.png · https://gentleface.com/png/solid-soft/32/face-grinning.png · https://gentleface.com/png/solid-soft/48/face-grinning.png
- solid-sharp: https://gentleface.com/svg/solid-sharp/16/face-grinning.svg · PNG https://gentleface.com/png/solid-sharp/16/face-grinning.png · https://gentleface.com/png/solid-sharp/32/face-grinning.png · https://gentleface.com/png/solid-sharp/48/face-grinning.png

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

## Animated

`face-grinning-laugh`: The eyes squeeze shut into happy arcs and the open mouth laughs: it drops wide and snaps half shut three times. The eyes open again and the grin settles.

File: https://gentleface.com/motion/face-grinning-laugh.svg (line-round, 16 px). Native SVG animation that loops by itself. To play it once, run 0.2 s to 2.4 s. Patterns: https://gentleface.com/animated-icons.md

```svg
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.001" stroke-linecap="round" stroke-linejoin="round"><path d="M1.5 8C1.5 4.41 4.41 1.5 8 1.5C11.59 1.5 14.5 4.41 14.5 8C14.5 11.59 11.59 14.5 8 14.5C4.41 14.5 1.5 11.59 1.5 8Z"></path><path fill="currentColor" stroke="none" d="M4 6C4 5.448 4.448 5 5 5C5.552 5 6 5.448 6 6C6 6.552 5.552 7 5 7C4.448 7 4 6.552 4 6Z"><animate attributeName="d" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.078;0.112;0.638;0.688;1" values="M4 6C4 5.448 4.448 5 5 5C5.552 5 6 5.448 6 6C6 6.552 5.552 7 5 7C4.448 7 4 6.552 4 6Z;M4 6C4 5.448 4.448 5 5 5C5.552 5 6 5.448 6 6C6 6.552 5.552 7 5 7C4.448 7 4 6.552 4 6Z;M4 6C4 5.724 4.448 5.5 5 5.5C5.552 5.5 6 5.724 6 6C6 6.276 5.552 6.5 5 6.5C4.448 6.5 4 6.276 4 6Z;M4 6C4 5.724 4.448 5.5 5 5.5C5.552 5.5 6 5.724 6 6C6 6.276 5.552 6.5 5 6.5C4.448 6.5 4 6.276 4 6Z;M4 6C4 5.448 4.448 5 5 5C5.552 5 6 5.448 6 6C6 6.552 5.552 7 5 7C4.448 7 4 6.552 4 6Z;M4 6C4 5.448 4.448 5 5 5C5.552 5 6 5.448 6 6C6 6.552 5.552 7 5 7C4.448 7 4 6.552 4 6Z" calcMode="spline" keySplines="0 0 1 1;.6 0 .9 .4;0 0 1 1;.15 .75 .25 1;0 0 1 1"/><animate attributeName="visibility" calcMode="discrete" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.112;0.638" values="visible;hidden;visible"/></path><path d="M4.5 6Q5 6 5.5 6" visibility="hidden"><animate attributeName="d" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.112;0.169;0.587;0.638;1" values="M4.5 6Q5 6 5.5 6;M4.5 6Q5 6 5.5 6;M3.75 6.45Q5 4.75 6.25 6.45;M3.75 6.45Q5 4.75 6.25 6.45;M4.5 6Q5 6 5.5 6;M4.5 6Q5 6 5.5 6" calcMode="spline" keySplines="0 0 1 1;.15 .75 .25 1;0 0 1 1;.6 0 .9 .4;0 0 1 1"/><animate attributeName="visibility" calcMode="discrete" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.112;0.638" values="hidden;visible;hidden"/></path><path fill="currentColor" stroke="none" d="M10 6C10 5.448 10.448 5 11 5C11.552 5 12 5.448 12 6C12 6.552 11.552 7 11 7C10.448 7 10 6.552 10 6Z"><animate attributeName="d" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.078;0.112;0.638;0.688;1" values="M10 6C10 5.448 10.448 5 11 5C11.552 5 12 5.448 12 6C12 6.552 11.552 7 11 7C10.448 7 10 6.552 10 6Z;M10 6C10 5.448 10.448 5 11 5C11.552 5 12 5.448 12 6C12 6.552 11.552 7 11 7C10.448 7 10 6.552 10 6Z;M10 6C10 5.724 10.448 5.5 11 5.5C11.552 5.5 12 5.724 12 6C12 6.276 11.552 6.5 11 6.5C10.448 6.5 10 6.276 10 6Z;M10 6C10 5.724 10.448 5.5 11 5.5C11.552 5.5 12 5.724 12 6C12 6.276 11.552 6.5 11 6.5C10.448 6.5 10 6.276 10 6Z;M10 6C10 5.448 10.448 5 11 5C11.552 5 12 5.448 12 6C12 6.552 11.552 7 11 7C10.448 7 10 6.552 10 6Z;M10 6C10 5.448 10.448 5 11 5C11.552 5 12 5.448 12 6C12 6.552 11.552 7 11 7C10.448 7 10 6.552 10 6Z" calcMode="spline" keySplines="0 0 1 1;.6 0 .9 .4;0 0 1 1;.15 .75 .25 1;0 0 1 1"/><animate attributeName="visibility" calcMode="discrete" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.112;0.638" values="visible;hidden;visible"/></path><path d="M10.5 6Q11 6 11.5 6" visibility="hidden"><animate attributeName="d" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.112;0.169;0.587;0.638;1" values="M10.5 6Q11 6 11.5 6;M10.5 6Q11 6 11.5 6;M9.75 6.45Q11 4.75 12.25 6.45;M9.75 6.45Q11 4.75 12.25 6.45;M10.5 6Q11 6 11.5 6;M10.5 6Q11 6 11.5 6" calcMode="spline" keySplines="0 0 1 1;.15 .75 .25 1;0 0 1 1;.6 0 .9 .4;0 0 1 1"/><animate attributeName="visibility" calcMode="discrete" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.112;0.638" values="hidden;visible;hidden"/></path><path d="M5.5 8.5L10.5 8.5L10.5 9C10.5 10.381 9.381 11.5 8 11.5C6.619 11.5 5.5 10.381 5.5 9L5.5 8.5Z"><animate attributeName="d" dur="3.2s" repeatCount="indefinite" keyTimes="0;0.094;0.163;0.225;0.288;0.35;0.413;0.475;0.544;0.656;1" values="M5.5 8.5L10.5 8.5L10.5 9C10.5 10.381 9.381 11.5 8 11.5C6.619 11.5 5.5 10.381 5.5 9L5.5 8.5Z;M5.5 8.5L10.5 8.5L10.5 9C10.5 10.381 9.381 11.5 8 11.5C6.619 11.5 5.5 10.381 5.5 9L5.5 8.5Z;M5.35 8.25L10.65 8.25L10.65 8.75C10.65 10.545 9.464 12 8 12C6.536 12 5.35 10.545 5.35 8.75L5.35 8.25Z;M5.5 8.5L10.5 8.5L10.5 9C10.5 9.994 9.381 10.8 8 10.8C6.619 10.8 5.5 9.994 5.5 9L5.5 8.5Z;M5.35 8.25L10.65 8.25L10.65 8.75C10.65 10.545 9.464 12 8 12C6.536 12 5.35 10.545 5.35 8.75L5.35 8.25Z;M5.5 8.5L10.5 8.5L10.5 9C10.5 9.994 9.381 10.8 8 10.8C6.619 10.8 5.5 9.994 5.5 9L5.5 8.5Z;M5.35 8.25L10.65 8.25L10.65 8.75C10.65 10.545 9.464 12 8 12C6.536 12 5.35 10.545 5.35 8.75L5.35 8.25Z;M5.5 8.5L10.5 8.5L10.5 9C10.5 10.16 9.381 11.1 8 11.1C6.619 11.1 5.5 10.16 5.5 9L5.5 8.5Z;M5.4 8.35L10.6 8.35L10.6 8.85C10.6 10.452 9.436 11.75 8 11.75C6.564 11.75 5.4 10.452 5.4 8.85L5.4 8.35Z;M5.5 8.5L10.5 8.5L10.5 9C10.5 10.381 9.381 11.5 8 11.5C6.619 11.5 5.5 10.381 5.5 9L5.5 8.5Z;M5.5 8.5L10.5 8.5L10.5 9C10.5 10.381 9.381 11.5 8 11.5C6.619 11.5 5.5 10.381 5.5 9L5.5 8.5Z" calcMode="spline" keySplines="0 0 1 1;.15 .75 .25 1;.37 0 .63 1;.37 0 .63 1;.37 0 .63 1;.37 0 .63 1;.37 0 .63 1;.37 0 .63 1;.37 0 .63 1;0 0 1 1"/></path></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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z"/></svg>
```

### React

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

export function FaceGrinningIcon(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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z" />
    </svg>
  );
}
```

### Vue

```vue
<!-- Gentleface "face-grinning" (line-round), MIT. https://gentleface.com/icons/face-grinning -->
<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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z" />
  </svg>
</template>
```

### Svelte

```svelte
<!-- Gentleface "face-grinning" (line-round), MIT. https://gentleface.com/icons/face-grinning -->
<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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z" />
</svg>
```

### HTML img

```html
<!-- Gentleface "face-grinning" (line-round), MIT. https://gentleface.com/icons/face-grinning. 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/face-grinning.svg" width="16" height="16" alt="">
```

### CSS

```css
/* Gentleface "face-grinning" (line-round), MIT. https://gentleface.com/icons/face-grinning. Takes the text color. */
.icon-face-grinning {
  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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z'/%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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z'/%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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z'/%3E%3C/svg%3E
```

### Sprite

```html
<!-- Gentleface "face-grinning" (line-round), MIT. https://gentleface.com/icons/face-grinning
     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#face-grinning"/></svg>
```

### SwiftUI

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

struct FaceGrinningIcon: Shape {
    func path(in rect: CGRect) -> Path {
        var p = Path()
        p.move(to: CGPoint(x: 3.05, y: 3.05))
        p.addCurve(to: CGPoint(x: 5.423, y: 1.491), control1: CGPoint(x: 3.734, y: 2.367), control2: CGPoint(x: 4.525, y: 1.847))
        p.addCurve(to: CGPoint(x: 8, y: 1), control1: CGPoint(x: 6.251, y: 1.164), control2: CGPoint(x: 7.11, y: 1))
        p.addCurve(to: CGPoint(x: 10.577, y: 1.491), control1: CGPoint(x: 8.89, y: 1), control2: CGPoint(x: 9.749, y: 1.164))
        p.addCurve(to: CGPoint(x: 12.95, y: 3.05), control1: CGPoint(x: 11.475, y: 1.847), control2: CGPoint(x: 12.266, y: 2.367))
        p.addCurve(to: CGPoint(x: 14.509, y: 5.423), control1: CGPoint(x: 13.633, y: 3.734), control2: CGPoint(x: 14.153, y: 4.525))
        p.addCurve(to: CGPoint(x: 15, y: 8), control1: CGPoint(x: 14.836, y: 6.251), control2: CGPoint(x: 15, y: 7.11))
        p.addCurve(to: CGPoint(x: 14.509, y: 10.577), control1: CGPoint(x: 15, y: 8.89), control2: CGPoint(x: 14.836, y: 9.749))
        p.addCurve(to: CGPoint(x: 12.95, y: 12.95), control1: CGPoint(x: 14.153, y: 11.475), control2: CGPoint(x: 13.633, y: 12.266))
        p.addCurve(to: CGPoint(x: 10.577, y: 14.509), control1: CGPoint(x: 12.266, y: 13.633), control2: CGPoint(x: 11.475, y: 14.153))
        p.addCurve(to: CGPoint(x: 8, y: 15), control1: CGPoint(x: 9.749, y: 14.836), control2: CGPoint(x: 8.89, y: 15))
        p.addCurve(to: CGPoint(x: 5.423, y: 14.509), control1: CGPoint(x: 7.11, y: 15), control2: CGPoint(x: 6.251, y: 14.836))
        p.addCurve(to: CGPoint(x: 3.05, y: 12.95), control1: CGPoint(x: 4.525, y: 14.153), control2: CGPoint(x: 3.734, y: 13.633))
        p.addCurve(to: CGPoint(x: 1.491, y: 10.577), control1: CGPoint(x: 2.367, y: 12.266), control2: CGPoint(x: 1.847, y: 11.475))
        p.addCurve(to: CGPoint(x: 1, y: 8), control1: CGPoint(x: 1.164, y: 9.749), control2: CGPoint(x: 1, y: 8.89))
        p.addCurve(to: CGPoint(x: 1.491, y: 5.423), control1: CGPoint(x: 1, y: 7.11), control2: CGPoint(x: 1.164, y: 6.251))
        p.addCurve(to: CGPoint(x: 3.05, y: 3.05), control1: CGPoint(x: 1.847, y: 4.525), control2: CGPoint(x: 2.367, y: 3.734))
        p.closeSubpath()
        p.move(to: CGPoint(x: 3.757, y: 12.243))
        p.addCurve(to: CGPoint(x: 5.791, y: 13.579), control1: CGPoint(x: 4.343, y: 12.828), control2: CGPoint(x: 5.021, y: 13.274))
        p.addCurve(to: CGPoint(x: 8, y: 14), control1: CGPoint(x: 6.501, y: 13.86), control2: CGPoint(x: 7.237, y: 14))
        p.addCurve(to: CGPoint(x: 10.209, y: 13.579), control1: CGPoint(x: 8.763, y: 14), control2: CGPoint(x: 9.499, y: 13.86))
        p.addCurve(to: CGPoint(x: 12.243, y: 12.243), control1: CGPoint(x: 10.979, y: 13.274), control2: CGPoint(x: 11.657, y: 12.828))
        p.addCurve(to: CGPoint(x: 13.579, y: 10.209), control1: CGPoint(x: 12.828, y: 11.657), control2: CGPoint(x: 13.274, y: 10.979))
        p.addCurve(to: CGPoint(x: 14, y: 8), control1: CGPoint(x: 13.86, y: 9.499), control2: CGPoint(x: 14, y: 8.763))
        p.addCurve(to: CGPoint(x: 13.579, y: 5.791), control1: CGPoint(x: 14, y: 7.237), control2: CGPoint(x: 13.86, y: 6.501))
        p.addCurve(to: CGPoint(x: 12.243, y: 3.757), control1: CGPoint(x: 13.274, y: 5.021), control2: CGPoint(x: 12.828, y: 4.343))
        p.addCurve(to: CGPoint(x: 10.209, y: 2.421), control1: CGPoint(x: 11.657, y: 3.172), control2: CGPoint(x: 10.979, y: 2.726))
        p.addCurve(to: CGPoint(x: 8, y: 2), control1: CGPoint(x: 9.499, y: 2.14), control2: CGPoint(x: 8.763, y: 2))
        p.addCurve(to: CGPoint(x: 5.791, y: 2.421), control1: CGPoint(x: 7.237, y: 2), control2: CGPoint(x: 6.501, y: 2.14))
        p.addCurve(to: CGPoint(x: 3.757, y: 3.757), control1: CGPoint(x: 5.021, y: 2.726), control2: CGPoint(x: 4.343, y: 3.172))
        p.addCurve(to: CGPoint(x: 2.421, y: 5.791), control1: CGPoint(x: 3.172, y: 4.343), control2: CGPoint(x: 2.726, y: 5.021))
        p.addCurve(to: CGPoint(x: 2, y: 8), control1: CGPoint(x: 2.14, y: 6.501), control2: CGPoint(x: 2, y: 7.237))
        p.addCurve(to: CGPoint(x: 2.421, y: 10.209), control1: CGPoint(x: 2, y: 8.763), control2: CGPoint(x: 2.14, y: 9.499))
        p.addCurve(to: CGPoint(x: 3.757, y: 12.243), control1: CGPoint(x: 2.726, y: 10.979), control2: CGPoint(x: 3.172, y: 11.657))
        p.closeSubpath()
        p.move(to: CGPoint(x: 5.707, y: 5.293))
        p.addCurve(to: CGPoint(x: 6, y: 6), control1: CGPoint(x: 5.902, y: 5.488), control2: CGPoint(x: 6, y: 5.724))
        p.addCurve(to: CGPoint(x: 5.707, y: 6.707), control1: CGPoint(x: 6, y: 6.276), control2: CGPoint(x: 5.902, y: 6.512))
        p.addCurve(to: CGPoint(x: 5, y: 7), control1: CGPoint(x: 5.512, y: 6.902), control2: CGPoint(x: 5.276, y: 7))
        p.addCurve(to: CGPoint(x: 4.293, y: 6.707), control1: CGPoint(x: 4.724, y: 7), control2: CGPoint(x: 4.488, y: 6.902))
        p.addCurve(to: CGPoint(x: 4, y: 6), control1: CGPoint(x: 4.098, y: 6.512), control2: CGPoint(x: 4, y: 6.276))
        p.addCurve(to: CGPoint(x: 4.293, y: 5.293), control1: CGPoint(x: 4, y: 5.724), control2: CGPoint(x: 4.098, y: 5.488))
        p.addCurve(to: CGPoint(x: 5, y: 5), control1: CGPoint(x: 4.488, y: 5.098), control2: CGPoint(x: 4.724, y: 5))
        p.addCurve(to: CGPoint(x: 5.707, y: 5.293), control1: CGPoint(x: 5.276, y: 5), control2: CGPoint(x: 5.512, y: 5.098))
        p.closeSubpath()
        p.move(to: CGPoint(x: 10.293, y: 5.293))
        p.addCurve(to: CGPoint(x: 11, y: 5), control1: CGPoint(x: 10.488, y: 5.098), control2: CGPoint(x: 10.724, y: 5))
        p.addCurve(to: CGPoint(x: 11.707, y: 5.293), control1: CGPoint(x: 11.276, y: 5), control2: CGPoint(x: 11.512, y: 5.098))
        p.addCurve(to: CGPoint(x: 12, y: 6), control1: CGPoint(x: 11.902, y: 5.488), control2: CGPoint(x: 12, y: 5.724))
        p.addCurve(to: CGPoint(x: 11.707, y: 6.707), control1: CGPoint(x: 12, y: 6.276), control2: CGPoint(x: 11.902, y: 6.512))
        p.addCurve(to: CGPoint(x: 11, y: 7), control1: CGPoint(x: 11.512, y: 6.902), control2: CGPoint(x: 11.276, y: 7))
        p.addCurve(to: CGPoint(x: 10.293, y: 6.707), control1: CGPoint(x: 10.724, y: 7), control2: CGPoint(x: 10.488, y: 6.902))
        p.addCurve(to: CGPoint(x: 10, y: 6), control1: CGPoint(x: 10.098, y: 6.512), control2: CGPoint(x: 10, y: 6.276))
        p.addCurve(to: CGPoint(x: 10.293, y: 5.293), control1: CGPoint(x: 10, y: 5.724), control2: CGPoint(x: 10.098, y: 5.488))
        p.closeSubpath()
        p.move(to: CGPoint(x: 11, y: 8.5))
        p.addLine(to: CGPoint(x: 11, y: 9))
        p.addCurve(to: CGPoint(x: 10.789, y: 10.104), control1: CGPoint(x: 11, y: 9.381), control2: CGPoint(x: 10.93, y: 9.75))
        p.addCurve(to: CGPoint(x: 10.121, y: 11.121), control1: CGPoint(x: 10.637, y: 10.489), control2: CGPoint(x: 10.414, y: 10.828))
        p.addCurve(to: CGPoint(x: 9.104, y: 11.789), control1: CGPoint(x: 9.828, y: 11.414), control2: CGPoint(x: 9.489, y: 11.637))
        p.addCurve(to: CGPoint(x: 8, y: 12), control1: CGPoint(x: 8.75, y: 11.93), control2: CGPoint(x: 8.381, y: 12))
        p.addCurve(to: CGPoint(x: 6.896, y: 11.789), control1: CGPoint(x: 7.619, y: 12), control2: CGPoint(x: 7.25, y: 11.93))
        p.addCurve(to: CGPoint(x: 5.879, y: 11.121), control1: CGPoint(x: 6.511, y: 11.637), control2: CGPoint(x: 6.172, y: 11.414))
        p.addCurve(to: CGPoint(x: 5.211, y: 10.104), control1: CGPoint(x: 5.586, y: 10.828), control2: CGPoint(x: 5.363, y: 10.489))
        p.addCurve(to: CGPoint(x: 5, y: 9), control1: CGPoint(x: 5.07, y: 9.75), control2: CGPoint(x: 5, y: 9.381))
        p.addLine(to: CGPoint(x: 5, y: 8.5))
        p.addCurve(to: CGPoint(x: 5.144, y: 8.144), control1: CGPoint(x: 5, y: 8.359), control2: CGPoint(x: 5.048, y: 8.241))
        p.addCurve(to: CGPoint(x: 5.5, y: 8), control1: CGPoint(x: 5.241, y: 8.048), control2: CGPoint(x: 5.359, y: 8))
        p.addLine(to: CGPoint(x: 10.5, y: 8))
        p.addCurve(to: CGPoint(x: 10.856, y: 8.144), control1: CGPoint(x: 10.641, y: 8), control2: CGPoint(x: 10.759, y: 8.048))
        p.addCurve(to: CGPoint(x: 11, y: 8.5), control1: CGPoint(x: 10.952, y: 8.241), control2: CGPoint(x: 11, y: 8.359))
        p.closeSubpath()
        p.move(to: CGPoint(x: 6.586, y: 10.414))
        p.addCurve(to: CGPoint(x: 7.264, y: 10.86), control1: CGPoint(x: 6.781, y: 10.609), control2: CGPoint(x: 7.007, y: 10.758))
        p.addCurve(to: CGPoint(x: 8, y: 11), control1: CGPoint(x: 7.5, y: 10.953), control2: CGPoint(x: 7.746, y: 11))
        p.addCurve(to: CGPoint(x: 8.736, y: 10.86), control1: CGPoint(x: 8.254, y: 11), control2: CGPoint(x: 8.5, y: 10.953))
        p.addCurve(to: CGPoint(x: 9.414, y: 10.414), control1: CGPoint(x: 8.993, y: 10.758), control2: CGPoint(x: 9.219, y: 10.609))
        p.addCurve(to: CGPoint(x: 9.86, y: 9.736), control1: CGPoint(x: 9.609, y: 10.219), control2: CGPoint(x: 9.758, y: 9.993))
        p.addCurve(to: CGPoint(x: 10, y: 9), control1: CGPoint(x: 9.953, y: 9.5), control2: CGPoint(x: 10, y: 9.254))
        p.addLine(to: CGPoint(x: 6, y: 9))
        p.addCurve(to: CGPoint(x: 6.14, y: 9.736), control1: CGPoint(x: 6, y: 9.254), control2: CGPoint(x: 6.047, y: 9.5))
        p.addCurve(to: CGPoint(x: 6.586, y: 10.414), control1: CGPoint(x: 6.242, y: 9.993), control2: CGPoint(x: 6.391, y: 10.219))
        p.closeSubpath()
        return p.applying(CGAffineTransform(scaleX: rect.width / 16, y: rect.height / 16))
    }
}

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

### Compose

```kotlin
// Gentleface "face-grinning" (line-round), MIT. https://gentleface.com/icons/face-grinning
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 FaceGrinningIcon: ImageVector by lazy {
    ImageVector.Builder(
        name = "face-grinning", defaultWidth = 16.dp, defaultHeight = 16.dp,
        viewportWidth = 16f, viewportHeight = 16f,
    ).addPath(
        pathData = addPathNodes("M3.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z"),
        fill = SolidColor(Color.Black),
    ).build()
}

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

### Android XML

```xml
<!-- res/drawable/ic_face_grinning.xml · Gentleface "face-grinning" (line-round), MIT. https://gentleface.com/icons/face-grinning -->
<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.05 3.05C3.734 2.367 4.525 1.847 5.423 1.491C6.251 1.164 7.11 1 8 1C8.89 1 9.749 1.164 10.577 1.491C11.475 1.847 12.266 2.367 12.95 3.05C13.633 3.734 14.153 4.525 14.509 5.423C14.836 6.251 15 7.11 15 8C15 8.89 14.836 9.749 14.509 10.577C14.153 11.475 13.633 12.266 12.95 12.95C12.266 13.633 11.475 14.153 10.577 14.509C9.749 14.836 8.89 15 8 15C7.11 15 6.251 14.836 5.423 14.509C4.525 14.153 3.734 13.633 3.05 12.95C2.367 12.266 1.847 11.475 1.491 10.577C1.164 9.749 1 8.89 1 8C1 7.11 1.164 6.251 1.491 5.423C1.847 4.525 2.367 3.734 3.05 3.05ZM3.757 12.243C4.343 12.828 5.021 13.274 5.791 13.579C6.501 13.86 7.237 14 8 14C8.763 14 9.499 13.86 10.209 13.579C10.979 13.274 11.657 12.828 12.243 12.243C12.828 11.657 13.274 10.979 13.579 10.209C13.86 9.499 14 8.763 14 8C14 7.237 13.86 6.501 13.579 5.791C13.274 5.021 12.828 4.343 12.243 3.757C11.657 3.172 10.979 2.726 10.209 2.421C9.499 2.14 8.763 2 8 2C7.237 2 6.501 2.14 5.791 2.421C5.021 2.726 4.343 3.172 3.757 3.757C3.172 4.343 2.726 5.021 2.421 5.791C2.14 6.501 2 7.237 2 8C2 8.763 2.14 9.499 2.421 10.209C2.726 10.979 3.172 11.657 3.757 12.243ZM5.707 5.293C5.902 5.488 6 5.724 6 6C6 6.276 5.902 6.512 5.707 6.707C5.512 6.902 5.276 7 5 7C4.724 7 4.488 6.902 4.293 6.707C4.098 6.512 4 6.276 4 6C4 5.724 4.098 5.488 4.293 5.293C4.488 5.098 4.724 5 5 5C5.276 5 5.512 5.098 5.707 5.293ZM10.293 5.293C10.488 5.098 10.724 5 11 5C11.276 5 11.512 5.098 11.707 5.293C11.902 5.488 12 5.724 12 6C12 6.276 11.902 6.512 11.707 6.707C11.512 6.902 11.276 7 11 7C10.724 7 10.488 6.902 10.293 6.707C10.098 6.512 10 6.276 10 6C10 5.724 10.098 5.488 10.293 5.293ZM11 8.5L11 9C11 9.381 10.93 9.75 10.789 10.104C10.637 10.489 10.414 10.828 10.121 11.121C9.828 11.414 9.489 11.637 9.104 11.789C8.75 11.93 8.381 12 8 12C7.619 12 7.25 11.93 6.896 11.789C6.511 11.637 6.172 11.414 5.879 11.121C5.586 10.828 5.363 10.489 5.211 10.104C5.07 9.75 5 9.381 5 9L5 8.5C5 8.359 5.048 8.241 5.144 8.144C5.241 8.048 5.359 8 5.5 8L10.5 8C10.641 8 10.759 8.048 10.856 8.144C10.952 8.241 11 8.359 11 8.5ZM6.586 10.414C6.781 10.609 7.007 10.758 7.264 10.86C7.5 10.953 7.746 11 8 11C8.254 11 8.5 10.953 8.736 10.86C8.993 10.758 9.219 10.609 9.414 10.414C9.609 10.219 9.758 9.993 9.86 9.736C9.953 9.5 10 9.254 10 9L6 9C6 9.254 6.047 9.5 6.14 9.736C6.242 9.993 6.391 10.219 6.586 10.414Z"/>
</vector>
```

### Flutter

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

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

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

class _FaceGrinningIconPainter extends CustomPainter {
  _FaceGrinningIconPainter(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.05, 3.05)
      ..cubicTo(3.734, 2.367, 4.525, 1.847, 5.423, 1.491)
      ..cubicTo(6.251, 1.164, 7.11, 1, 8, 1)
      ..cubicTo(8.89, 1, 9.749, 1.164, 10.577, 1.491)
      ..cubicTo(11.475, 1.847, 12.266, 2.367, 12.95, 3.05)
      ..cubicTo(13.633, 3.734, 14.153, 4.525, 14.509, 5.423)
      ..cubicTo(14.836, 6.251, 15, 7.11, 15, 8)
      ..cubicTo(15, 8.89, 14.836, 9.749, 14.509, 10.577)
      ..cubicTo(14.153, 11.475, 13.633, 12.266, 12.95, 12.95)
      ..cubicTo(12.266, 13.633, 11.475, 14.153, 10.577, 14.509)
      ..cubicTo(9.749, 14.836, 8.89, 15, 8, 15)
      ..cubicTo(7.11, 15, 6.251, 14.836, 5.423, 14.509)
      ..cubicTo(4.525, 14.153, 3.734, 13.633, 3.05, 12.95)
      ..cubicTo(2.367, 12.266, 1.847, 11.475, 1.491, 10.577)
      ..cubicTo(1.164, 9.749, 1, 8.89, 1, 8)
      ..cubicTo(1, 7.11, 1.164, 6.251, 1.491, 5.423)
      ..cubicTo(1.847, 4.525, 2.367, 3.734, 3.05, 3.05)
      ..close()
      ..moveTo(3.757, 12.243)
      ..cubicTo(4.343, 12.828, 5.021, 13.274, 5.791, 13.579)
      ..cubicTo(6.501, 13.86, 7.237, 14, 8, 14)
      ..cubicTo(8.763, 14, 9.499, 13.86, 10.209, 13.579)
      ..cubicTo(10.979, 13.274, 11.657, 12.828, 12.243, 12.243)
      ..cubicTo(12.828, 11.657, 13.274, 10.979, 13.579, 10.209)
      ..cubicTo(13.86, 9.499, 14, 8.763, 14, 8)
      ..cubicTo(14, 7.237, 13.86, 6.501, 13.579, 5.791)
      ..cubicTo(13.274, 5.021, 12.828, 4.343, 12.243, 3.757)
      ..cubicTo(11.657, 3.172, 10.979, 2.726, 10.209, 2.421)
      ..cubicTo(9.499, 2.14, 8.763, 2, 8, 2)
      ..cubicTo(7.237, 2, 6.501, 2.14, 5.791, 2.421)
      ..cubicTo(5.021, 2.726, 4.343, 3.172, 3.757, 3.757)
      ..cubicTo(3.172, 4.343, 2.726, 5.021, 2.421, 5.791)
      ..cubicTo(2.14, 6.501, 2, 7.237, 2, 8)
      ..cubicTo(2, 8.763, 2.14, 9.499, 2.421, 10.209)
      ..cubicTo(2.726, 10.979, 3.172, 11.657, 3.757, 12.243)
      ..close()
      ..moveTo(5.707, 5.293)
      ..cubicTo(5.902, 5.488, 6, 5.724, 6, 6)
      ..cubicTo(6, 6.276, 5.902, 6.512, 5.707, 6.707)
      ..cubicTo(5.512, 6.902, 5.276, 7, 5, 7)
      ..cubicTo(4.724, 7, 4.488, 6.902, 4.293, 6.707)
      ..cubicTo(4.098, 6.512, 4, 6.276, 4, 6)
      ..cubicTo(4, 5.724, 4.098, 5.488, 4.293, 5.293)
      ..cubicTo(4.488, 5.098, 4.724, 5, 5, 5)
      ..cubicTo(5.276, 5, 5.512, 5.098, 5.707, 5.293)
      ..close()
      ..moveTo(10.293, 5.293)
      ..cubicTo(10.488, 5.098, 10.724, 5, 11, 5)
      ..cubicTo(11.276, 5, 11.512, 5.098, 11.707, 5.293)
      ..cubicTo(11.902, 5.488, 12, 5.724, 12, 6)
      ..cubicTo(12, 6.276, 11.902, 6.512, 11.707, 6.707)
      ..cubicTo(11.512, 6.902, 11.276, 7, 11, 7)
      ..cubicTo(10.724, 7, 10.488, 6.902, 10.293, 6.707)
      ..cubicTo(10.098, 6.512, 10, 6.276, 10, 6)
      ..cubicTo(10, 5.724, 10.098, 5.488, 10.293, 5.293)
      ..close()
      ..moveTo(11, 8.5)
      ..lineTo(11, 9)
      ..cubicTo(11, 9.381, 10.93, 9.75, 10.789, 10.104)
      ..cubicTo(10.637, 10.489, 10.414, 10.828, 10.121, 11.121)
      ..cubicTo(9.828, 11.414, 9.489, 11.637, 9.104, 11.789)
      ..cubicTo(8.75, 11.93, 8.381, 12, 8, 12)
      ..cubicTo(7.619, 12, 7.25, 11.93, 6.896, 11.789)
      ..cubicTo(6.511, 11.637, 6.172, 11.414, 5.879, 11.121)
      ..cubicTo(5.586, 10.828, 5.363, 10.489, 5.211, 10.104)
      ..cubicTo(5.07, 9.75, 5, 9.381, 5, 9)
      ..lineTo(5, 8.5)
      ..cubicTo(5, 8.359, 5.048, 8.241, 5.144, 8.144)
      ..cubicTo(5.241, 8.048, 5.359, 8, 5.5, 8)
      ..lineTo(10.5, 8)
      ..cubicTo(10.641, 8, 10.759, 8.048, 10.856, 8.144)
      ..cubicTo(10.952, 8.241, 11, 8.359, 11, 8.5)
      ..close()
      ..moveTo(6.586, 10.414)
      ..cubicTo(6.781, 10.609, 7.007, 10.758, 7.264, 10.86)
      ..cubicTo(7.5, 10.953, 7.746, 11, 8, 11)
      ..cubicTo(8.254, 11, 8.5, 10.953, 8.736, 10.86)
      ..cubicTo(8.993, 10.758, 9.219, 10.609, 9.414, 10.414)
      ..cubicTo(9.609, 10.219, 9.758, 9.993, 9.86, 9.736)
      ..cubicTo(9.953, 9.5, 10, 9.254, 10, 9)
      ..lineTo(6, 9)
      ..cubicTo(6, 9.254, 6.047, 9.5, 6.14, 9.736)
      ..cubicTo(6.242, 9.993, 6.391, 10.219, 6.586, 10.414)
      ..close();
    canvas.drawPath(p, Paint()..color = color);
  }

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