# knife icon

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

- Category: Food & drink
- Use it for: knife, kitchen knife, chef knife
- Tags: knife, kitchen-knife, chef-knife, blade, cut, chop, slice, cooking, kitchen, cutlery, food
- Component name: KnifeIcon
- Added: 2026-10-29
- Since: version 0.2.0
- npm: `import { KnifeIcon } from '@gentleface/react';` (@gentleface/react 0.2.0)
- Changed: 2026-10-30 (added)

## Alternatives

- `utensils`: cutlery or a restaurant
- `pocket-knife`: a pocket knife or multi-tool

## Not for

- slice (use `slice`): a kitchen knife (food)

## Files

Each SVG is 16 × 16 with fill="currentColor". Keep it at 16 px or an exact multiple (32, 48) on whole pixels: a fractional size or position blurs it.

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

The SVG of every style: https://gentleface.com/icons/knife.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="M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z"/></svg>
```

### React

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

export function KnifeIcon(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="M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z" />
    </svg>
  );
}
```

### Vue

```vue
<!-- Gentleface "knife" (line-round), MIT. https://gentleface.com/icons/knife -->
<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="M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z" />
  </svg>
</template>
```

### Svelte

```svelte
<!-- Gentleface "knife" (line-round), MIT. https://gentleface.com/icons/knife -->
<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="M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z" />
</svg>
```

### HTML img

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

### CSS

```css
/* Gentleface "knife" (line-round), MIT. https://gentleface.com/icons/knife. Takes the text color. */
.icon-knife {
  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='M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z'/%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='M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z'/%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='M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z'/%3E%3C/svg%3E
```

### Sprite

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

### SwiftUI

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

struct KnifeIcon: Shape {
    func path(in rect: CGRect) -> Path {
        var p = Path()
        p.move(to: CGPoint(x: 8.5, y: 11.793))
        p.addCurve(to: CGPoint(x: 7.793, y: 11.5), control1: CGPoint(x: 8.224, y: 11.793), control2: CGPoint(x: 7.988, y: 11.695))
        p.addLine(to: CGPoint(x: 6.889, y: 10.596))
        p.addCurve(to: CGPoint(x: 6.793, y: 10.707), control1: CGPoint(x: 6.86, y: 10.635), control2: CGPoint(x: 6.828, y: 10.672))
        p.addLine(to: CGPoint(x: 3.707, y: 13.793))
        p.addCurve(to: CGPoint(x: 3, y: 14.086), control1: CGPoint(x: 3.512, y: 13.988), control2: CGPoint(x: 3.276, y: 14.086))
        p.addCurve(to: CGPoint(x: 2.293, y: 13.793), control1: CGPoint(x: 2.724, y: 14.086), control2: CGPoint(x: 2.488, y: 13.988))
        p.addLine(to: CGPoint(x: 1.707, y: 13.207))
        p.addCurve(to: CGPoint(x: 1.414, y: 12.5), control1: CGPoint(x: 1.512, y: 13.012), control2: CGPoint(x: 1.414, y: 12.776))
        p.addCurve(to: CGPoint(x: 1.707, y: 11.793), control1: CGPoint(x: 1.414, y: 12.224), control2: CGPoint(x: 1.512, y: 11.988))
        p.addLine(to: CGPoint(x: 4.793, y: 8.707))
        p.addCurve(to: CGPoint(x: 5.208, y: 8.458), control1: CGPoint(x: 4.91, y: 8.59), control2: CGPoint(x: 5.049, y: 8.506))
        p.addCurve(to: CGPoint(x: 5.5, y: 7.793), control1: CGPoint(x: 5.217, y: 8.2), control2: CGPoint(x: 5.315, y: 7.978))
        p.addLine(to: CGPoint(x: 12.146, y: 1.146))
        p.addCurve(to: CGPoint(x: 12.5, y: 0.997), control1: CGPoint(x: 12.246, y: 1.047), control2: CGPoint(x: 12.364, y: 0.997))
        p.addCurve(to: CGPoint(x: 12.854, y: 1.146), control1: CGPoint(x: 12.636, y: 0.997), control2: CGPoint(x: 12.754, y: 1.047))
        p.addCurve(to: CGPoint(x: 12.99, y: 1.402), control1: CGPoint(x: 12.925, y: 1.218), control2: CGPoint(x: 12.971, y: 1.303))
        p.addCurve(to: CGPoint(x: 13.188, y: 3.516), control1: CGPoint(x: 13.122, y: 2.059), control2: CGPoint(x: 13.188, y: 2.764))
        p.addCurve(to: CGPoint(x: 12.992, y: 5.714), control1: CGPoint(x: 13.188, y: 4.264), control2: CGPoint(x: 13.122, y: 4.997))
        p.addCurve(to: CGPoint(x: 12.396, y: 7.745), control1: CGPoint(x: 12.855, y: 6.467), control2: CGPoint(x: 12.657, y: 7.143))
        p.addCurve(to: CGPoint(x: 11.354, y: 9.354), control1: CGPoint(x: 12.109, y: 8.409), control2: CGPoint(x: 11.762, y: 8.945))
        p.addLine(to: CGPoint(x: 9.207, y: 11.5))
        p.addCurve(to: CGPoint(x: 8.5, y: 11.793), control1: CGPoint(x: 9.012, y: 11.695), control2: CGPoint(x: 8.776, y: 11.793))
        p.closeSubpath()
        p.move(to: CGPoint(x: 8.5, y: 10.793))
        p.addLine(to: CGPoint(x: 10.646, y: 8.646))
        p.addCurve(to: CGPoint(x: 11.479, y: 7.348), control1: CGPoint(x: 10.965, y: 8.328), control2: CGPoint(x: 11.242, y: 7.896))
        p.addCurve(to: CGPoint(x: 12.008, y: 5.536), control1: CGPoint(x: 11.709, y: 6.817), control2: CGPoint(x: 11.885, y: 6.212))
        p.addCurve(to: CGPoint(x: 12.188, y: 3.516), control1: CGPoint(x: 12.128, y: 4.878), control2: CGPoint(x: 12.188, y: 4.204))
        p.addCurve(to: CGPoint(x: 12.147, y: 2.561), control1: CGPoint(x: 12.188, y: 3.187), control2: CGPoint(x: 12.174, y: 2.868))
        p.addLine(to: CGPoint(x: 6.207, y: 8.5))
        p.addLine(to: CGPoint(x: 8.5, y: 10.793))
        p.closeSubpath()
        return p.applying(CGAffineTransform(scaleX: rect.width / 16, y: rect.height / 16))
    }
}

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

### Compose

```kotlin
// Gentleface "knife" (line-round), MIT. https://gentleface.com/icons/knife
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 KnifeIcon: ImageVector by lazy {
    ImageVector.Builder(
        name = "knife", defaultWidth = 16.dp, defaultHeight = 16.dp,
        viewportWidth = 16f, viewportHeight = 16f,
    ).addPath(
        pathData = addPathNodes("M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z"),
        fill = SolidColor(Color.Black),
    ).build()
}

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

### Android XML

```xml
<!-- res/drawable/ic_knife.xml · Gentleface "knife" (line-round), MIT. https://gentleface.com/icons/knife -->
<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="M8.5 11.793C8.224 11.793 7.988 11.695 7.793 11.5L6.889 10.596C6.86 10.635 6.828 10.672 6.793 10.707L3.707 13.793C3.512 13.988 3.276 14.086 3 14.086C2.724 14.086 2.488 13.988 2.293 13.793L1.707 13.207C1.512 13.012 1.414 12.776 1.414 12.5C1.414 12.224 1.512 11.988 1.707 11.793L4.793 8.707C4.91 8.59 5.049 8.506 5.208 8.458C5.217 8.2 5.315 7.978 5.5 7.793L12.146 1.146C12.246 1.047 12.364 0.997 12.5 0.997C12.636 0.997 12.754 1.047 12.854 1.146C12.925 1.218 12.971 1.303 12.99 1.402C13.122 2.059 13.188 2.764 13.188 3.516C13.188 4.264 13.122 4.997 12.992 5.714C12.855 6.467 12.657 7.143 12.396 7.745C12.109 8.409 11.762 8.945 11.354 9.354L9.207 11.5C9.012 11.695 8.776 11.793 8.5 11.793ZM8.5 10.793L10.646 8.646C10.965 8.328 11.242 7.896 11.479 7.348C11.709 6.817 11.885 6.212 12.008 5.536C12.128 4.878 12.188 4.204 12.188 3.516C12.188 3.187 12.174 2.868 12.147 2.561L6.207 8.5L8.5 10.793Z"/>
</vector>
```

### Flutter

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

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

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

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

  @override
  void paint(Canvas canvas, Size size) {
    canvas.scale(size.width / 16, size.height / 16);
    final p = Path()
      ..moveTo(8.5, 11.793)
      ..cubicTo(8.224, 11.793, 7.988, 11.695, 7.793, 11.5)
      ..lineTo(6.889, 10.596)
      ..cubicTo(6.86, 10.635, 6.828, 10.672, 6.793, 10.707)
      ..lineTo(3.707, 13.793)
      ..cubicTo(3.512, 13.988, 3.276, 14.086, 3, 14.086)
      ..cubicTo(2.724, 14.086, 2.488, 13.988, 2.293, 13.793)
      ..lineTo(1.707, 13.207)
      ..cubicTo(1.512, 13.012, 1.414, 12.776, 1.414, 12.5)
      ..cubicTo(1.414, 12.224, 1.512, 11.988, 1.707, 11.793)
      ..lineTo(4.793, 8.707)
      ..cubicTo(4.91, 8.59, 5.049, 8.506, 5.208, 8.458)
      ..cubicTo(5.217, 8.2, 5.315, 7.978, 5.5, 7.793)
      ..lineTo(12.146, 1.146)
      ..cubicTo(12.246, 1.047, 12.364, 0.997, 12.5, 0.997)
      ..cubicTo(12.636, 0.997, 12.754, 1.047, 12.854, 1.146)
      ..cubicTo(12.925, 1.218, 12.971, 1.303, 12.99, 1.402)
      ..cubicTo(13.122, 2.059, 13.188, 2.764, 13.188, 3.516)
      ..cubicTo(13.188, 4.264, 13.122, 4.997, 12.992, 5.714)
      ..cubicTo(12.855, 6.467, 12.657, 7.143, 12.396, 7.745)
      ..cubicTo(12.109, 8.409, 11.762, 8.945, 11.354, 9.354)
      ..lineTo(9.207, 11.5)
      ..cubicTo(9.012, 11.695, 8.776, 11.793, 8.5, 11.793)
      ..close()
      ..moveTo(8.5, 10.793)
      ..lineTo(10.646, 8.646)
      ..cubicTo(10.965, 8.328, 11.242, 7.896, 11.479, 7.348)
      ..cubicTo(11.709, 6.817, 11.885, 6.212, 12.008, 5.536)
      ..cubicTo(12.128, 4.878, 12.188, 4.204, 12.188, 3.516)
      ..cubicTo(12.188, 3.187, 12.174, 2.868, 12.147, 2.561)
      ..lineTo(6.207, 8.5)
      ..lineTo(8.5, 10.793)
      ..close();
    canvas.drawPath(p, Paint()..color = color);
  }

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