<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Browse free and premium SVG icon sets in
    IcoMoon's library, import SVG and font files, edit them in the SVG editor,
    export to various formats including Multicolor (COLRv0) icon font, SVG
    sprite, web component, React, Vue, Elm, ico (favicon), and more.">
    <title>

News

      ❍&nbsp;IcoMoon
    </title>
    <link rel="stylesheet" href="/new-app/css/main-13eeb944b90473bd1ad2fa5c03b5e0d6.css?vsn=d">
    <link rel="stylesheet" href="/assets/site-e45bdbb8b779e172a185daa4436e9b2f.css?vsn=d">
    <link rel="alternate" title="News" type="application/atom+xml" href="/news/feed.atom">
    <link rel="icon" href="/common/favicon-c76e8d687e8fa970e38b098f3198fc2b.ico?vsn=d" sizes="any">
    <link rel="icon" href="/common/icon-8092e570f5c06f152a980457c7b4d0e2.svg?vsn=d" type="image/svg+xml">
    <link rel="apple-touch-icon" href="/common/apple-touch-icon-35f4a648bf9ba38347b4ab81eb7a06ba.png?vsn=d">
    <link rel="manifest" href="/common/manifest-d65c8a229123b7772b28b4cc880bb16b.webmanifest?vsn=d">
    <meta name="theme-color" content="#242424" media="(prefers-color-scheme: dark)">
    <meta name="theme-color" content="#eaeaea" media="(prefers-color-scheme: light)">
    <script defer src="/assets/site-81322e73b9dfc1c2ce209268846a2f8f.js?vsn=d"></script>
    <script>
      function setColorSchemeClass() {
        const colorScheme = localStorage.getItem("color-scheme");
        if (colorScheme === "dark" || colorScheme == "light") {
          document.documentElement.classList.add(colorScheme);
        }
      }
      setColorSchemeClass();
      addEventListener("pageshow", setColorSchemeClass);

      localStorage.setItem("was-logged-in", "false");
    </script>
  </head>
  <body>
<header class="noOverflow panelHeaderMaster filter0 zIndex2 sticky w1of1 pvs top0 left0 bShadow9">
  <nav class="flex flexWrap m1Flex flexStart rltv alignCenters zIndex1">
    <svg style="position: absolute; width: 0; height: 0; overflow: hidden;" aria-hidden="true">
      <defs>
          <symbol id="question" viewBox="0 0 19 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none">
              <path d="M6.5345 18C3.0209 16.7743 0.5 13.4315 0.5 9.5c0-4.9706 4.0294-9 9-9s9 4.0294 9 9c0 3.9187-2.5044 7.2524-6 8.4879M6.5 10.6856c-0.6476-0.6511-1-1.5702-1-2.5162 0-1.2036 0.568-2.3149 1.4884-2.9121 1.5563-1.0097 3.4669-1.0097 5.0232 0C12.932 5.8545 13.5 6.9658 13.5 8.1694c0 0.5913-0.1377 1.1721-0.3991 1.6835C12.0087 11.99 9.5 11.8027 9.5 14.5277"></path>
              <circle stroke="none" fill="currentColor" cx="9.5" cy="17.5" r="1"></circle>
          </symbol>
      </defs>
    </svg>
    <input class="visually-hidden" id="searchActionsInput">
    <span class="m1FlexGrow mlm plm m1Phs">
      <a aria-label="IcoMoon.io Front Page" class="transition1 br1 outlineOffset2 rltv extraHitAreaLeft mlns order0 fgc12 lh0 vat iblk hover_fgc4" href="/">
        <svg viewBox="0 0 16 16" fill="currentColor" width="24" height="24">
          <circle cx="6" cy="8" r="2"></circle>
          <path transform="matrix(1, 0, 0, -1, 0, 16)" d="M10.7383 0.4809C9.884 0.1697 8.9619 0 8 0 3.5817 0 0 3.5817 0 8c0 4.4146 3.5757 7.994 7.9889 8 0.9802-13e-4 1.8985-0.171 2.7496-0.481-11.6512 0.7278-11.6513-15.7656-2e-4-15.0381z"></path>
          <path opacity="0.4" d="M6 14.6667c1.2747 0.6374 2.8542 0.97 4.7383 0.8524C13.808 14.4009 16 11.4565 16 8c0-3.4564-2.1919-6.4008-5.2615-7.519-1.8842-0.1177-3.4637 0.215-4.7384 0.8524C11.3333 4 11.3333 12.0001 6 14.6667z"></path>
        </svg>
      </a>
    </span>
    <a id="showActions0" data-edit="searchActionsInput" title="Actions" href="#actions" style="display: none" class="editButton cursorDefault br0 noDisplay m1Block vat pas mrs">
      <svg class="vat" width="19" height="19"><use href="#question"></use></svg>
    </a>
    <input id="menu" type="checkbox" class="focusRing sibling visually-hidden noDisplay m1Block">
    <label aria-label="Menu" for="menu" class="noDisplay m1Block mvs menu checked-close target br0 lh0 mrs pas fgc3 hover_fgc4 active_fgc5 br0 iblk rltv extraHitAreaRight">
      <svg width="19" height="19" viewBox="0 0 19 19" fill="none" stroke="currentColor" stroke-linejoin="round" stroke-linecap="round">
        <line class="transition2" x1="9.5" x2="2.5" y1="4.5" y2="4.5"></line>
        <line class="transition2" x1="16.5" x2="9.5" y1="4.5" y2="4.5"></line>
        <line class="transition2" x1="9.5" x2="2.5" y1="14.5" y2="14.5"></line>
        <line class="transition2" x1="16.5" x2="9.5" y1="14.5" y2="14.5"></line>
        <line class="transition2" x1="2.5" x2="16.5" y1="9.5" y2="9.5"></line>
      </svg>
    </label>
    <h1 class="fgc12 noDisplay m1Inline fs4 checked-m1NoDisplay absl noPointerEvents zIndex0 top0 left0 w1of1 tc lh5 mtm mbn pvn">News</h1>
    <div class="expander checked-expanded checked-m1FlexChildren m1W1of1 flexGrow">
      <ul class="m1NoDisplay phm pvn m1Order3 m1MinHeight0 m1W1of1 order1 mvn flex flexWrap noListStyle flexStart flexGrow">
        <li class="m1W1of2 m1Prs noDisplay m1Block mvs">
          
  <a class="account extraHitAreaRight rltv m1Bgc0 br0 pas iblk w1of1 tc" href="/login">
    <span class="">
      <svg class="vab m1NoDisplay" viewBox="1 0 19 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" width="19" height="19">
        <path d="M7.5 5.5V4.4706c0-0.546 0-1.0919 0.4393-1.5313C8.3787 2.5 8.9246 2.5 9.4706 2.5h6.0588c0.546 0 1.0919 0 1.5313 0.4393C17.5 3.3787 17.5 3.9246 17.5 4.4706v10.0588c0 0.546 0 1.0919-0.4393 1.5313C16.6213 16.5 16.0754 16.5 15.5294 16.5H9.4706c-0.546 0-1.0919 0-1.5313-0.4393C7.5 15.6213 7.5 15.0754 7.5 14.5294V13.5"></path>
        <path d="M10.5 12.5l3-3-3-3M1.5 9.5H13"></path>
      </svg>
      
        Log In
      
    </span>
  </a>

        </li>

          <li style="view-transition-name: Docs" class="m1W1of2 mvs m1Pls">
  <a class="m1Bgc0 br0 pvs phm iblk w1of1 tc " href="/docs">
    <span>Docs</span>
  </a>
</li>

        <li style="view-transition-name: News" class="m1W1of2 mvs m1Prs">
  <a aria-current="page" class="m1Bgc0 br0 pvs phm iblk w1of1 tc fgc15" href="/news">
    <span>News</span>
  </a>
</li>
        <li style="view-transition-name: Pricing" class="m1W1of2 mvs m1Pls">
  <a class="m1Bgc0 br0 pvs phm iblk w1of1 tc " href="/pricing">
    <span>Pricing</span>
  </a>
</li>
        <li style="view-transition-name: OldApp" class="m1W1of2 mvs m1Prs">
  <a class="m1Bgc0 br0 pvs phm iblk w1of1 tc " href="/app/">
    <span>Old App</span>
  </a>
</li>
        <li style="view-transition-name: NewApp" class="m1W1of2 m1Pls mvs flex flexGrow">
          <a href="/new-app" class="m1Bgc0 br0 iblk pvs phm m1W1of1 tc flex flexCenter alignCenters">
            New App
            <span class="mls fs5 uppercase fgc17 bgc16 fs1 lh1 br1 phs pvxs bold" style="--hue: 140">Beta</span>
          </a>
        </li>
      </ul>
    </div>
    <span class="order2 tr mvs m1NoDisplay flex flexEnd">
      <a id="showActions1" data-edit="searchActionsInput" href="#actions" style="display: none" class="editButton br0 iblk vat pas m13NoDisplay mrs">
        <svg class="vat" width="19" height="19"><use href="#question"></use></svg>
        Actions
      </a>
      <a id="showActions2" data-edit="searchActionsInput" href="#actions" style="display: none" class="editButton br0 iblk vat mrs pas noDisplay m13Block" title="Actions">
        <svg class="vat" width="19" height="19"><use href="#question"></use></svg>
      </a>
      
  <a class="account extraHitAreaRight rltv br0 iblk pas mrm m13NoDisplay" href="/login">
    <span class="">
      <svg class="vab m1NoDisplay" viewBox="1 0 19 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" width="19" height="19">
        <path d="M7.5 5.5V4.4706c0-0.546 0-1.0919 0.4393-1.5313C8.3787 2.5 8.9246 2.5 9.4706 2.5h6.0588c0.546 0 1.0919 0 1.5313 0.4393C17.5 3.3787 17.5 3.9246 17.5 4.4706v10.0588c0 0.546 0 1.0919-0.4393 1.5313C16.6213 16.5 16.0754 16.5 15.5294 16.5H9.4706c-0.546 0-1.0919 0-1.5313-0.4393C7.5 15.6213 7.5 15.0754 7.5 14.5294V13.5"></path>
        <path d="M10.5 12.5l3-3-3-3M1.5 9.5H13"></path>
      </svg>
      
        Log In
      
    </span>
  </a>

      
  <a class="account extraHitAreaRight rltv br0 pas iblk square0 noDisplay mrm m13Block" href="/login" title="Log In">
    <span class="">
      <svg class="vab m1NoDisplay" viewBox="1 0 19 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" fill="none" width="19" height="19">
        <path d="M7.5 5.5V4.4706c0-0.546 0-1.0919 0.4393-1.5313C8.3787 2.5 8.9246 2.5 9.4706 2.5h6.0588c0.546 0 1.0919 0 1.5313 0.4393C17.5 3.3787 17.5 3.9246 17.5 4.4706v10.0588c0 0.546 0 1.0919-0.4393 1.5313C16.6213 16.5 16.0754 16.5 15.5294 16.5H9.4706c-0.546 0-1.0919 0-1.5313-0.4393C7.5 15.6213 7.5 15.0754 7.5 14.5294V13.5"></path>
        <path d="M10.5 12.5l3-3-3-3M1.5 9.5H13"></path>
      </svg>
      
    </span>
  </a>

    </span>
  </nav>
</header>
<main>
<div class="_gap0 _m13Phn flex flexWrap flexStart rltv">
  <nav class="_pb0 _ptBar _m13Rltv _m13Phl _m13HeightAuto _m13Mtn _m13Pvn _m13MaxWidth0 _m13NoMaskImage _fadeOnBottom1 prs height0 flexGrow pll width1 scroll fixed top0 left0">
    <h1 class="_mbnm mtl bShadow1 flex alignBaselines">
      News
      <span class="lh1 flex fs4 mlnm">
        <button title="Newer" disabled class="_noBoxShadow disabled0 pln prs pvs">
  
          <svg class="_vatb" viewBox="0 0 19 19" fill="currentColor" width="19" height="19">
            <polygon stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" points="13.5 3.5 7.5 9.5 13.5 15.5 14 15 8.5 9.5 14 4"></polygon>
          </svg>
        
</button>
        <span class="pas">
          <span class="_vatb monospace fs0">1 / 6</span>
        </span>
        <a title="Older" class="prn pls pvs" href="/news/2">
          <svg class="_vatb" viewBox="0 0 19 19" width="19" height="19" fill="currentColor">
            <polygon stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" transform="rotate(180 9.5 9.5)" points="13.5 3.5 7.5 9.5 13.5 15.5 14 15 8.5 9.5 14 4"></polygon>
          </svg>
        </a>
      </span>
      <a class="_fgcFeed fs4 pvs lh1" href="/news/feed.atom">
        <svg viewBox="0 0 16 16" width="16" height="16">
          <path fill="currentColor" d="M12 16A12 12 0 0 0 0 4V1a15 15 0 0 1 15 15zM9.9429 16H7.0286A7.0286 7.0286 0 0 0 0 8.9714V6.0571A9.9429 9.9429 0 0 1 9.9429 16zM2.0571 16a2.0571 2.0571 0 1 1 0-4.1143 2.0571 2.0571 0 1 1 0 4.1143z"></path>
        </svg>
        Feed
      </a>
    </h1>
    <ul class="_list0 mtl mbn">

        <li><a href="#58">New SVG Loading Spinners</a></li>

        <li><a href="#57">SVG Masks</a></li>

        <li><a href="#56">Repeatable Code Edits</a></li>

        <li><a href="#55">Batch Editing Icons</a></li>

        <li><a href="#54">Copy as &lt;symbol&gt; and &lt;use&gt;</a></li>

        <li><a href="#53">Shape Detection in Vector Editor</a></li>

        <li><a href="#52">New Tool for Rounding Coordinates</a></li>

        <li><a href="#51">Drawing a Rocket Icon</a></li>

        <li><a href="#50">Turning an Arc Into a Droplet</a></li>

        <li><a href="#49">Drawing a Heart Using the Pen Tool</a></li>

    </ul>
  </nav>
  <div class="decoratedLinks _m13Mrn _m13Mln _m20Ml0 _m13MaxWidth0 _m13Mtn _m13Phl _m21Fs0 _m21Prl fs2 lh4 flexGrow marginAuto maxWidth3">

      <article id="58" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">New SVG Loading Spinners</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/new-svg-loading-spinners" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-06-07T13:14:23Z">
              <span class="_fs2 icon fgc8">📅</span>
June 7, 2026
            </time>
          </a>
        </p>
<p>
  <a href="/new-app/untitled-project/library#orbiters">Orbiters</a> is a
  free set of animated SVG loading spinners. 21 new spinners were just added to
  this set, which you can see in the following video.
</p>
<video controls style="width: 100%; aspect-ratio: 627 / 353;" loading="lazy">
  <source src="/videos/21-new-svg-loading-spinners.mp4" type="video/mp4">
  Download the
  <a href="/videos/21-new-svg-loading-spinners.mp4">MP4</a>
  video.
</video>
<p>
  The great thing about SVG animations is that they are self-contained and
  have no CSS dependency. You can copy any of these spinners with a single tap
  in the <a href="/new-app/untitled-project/library#orbiters">library</a>
  and paste them in your HTML or anywhere else SVGs are supported and they will
  just work.
</p>
      </article>

      <article id="57" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">SVG Masks</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/svg-editor-masks" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-06-04T18:04:32Z">
              <span class="_fs2 icon fgc8">📅</span>
June 4, 2026
            </time>
          </a>
        </p>
<p>
  SVG masks allow making parts of the graphic transparent in a reversible
  way, without having to use the subtraction boolean operation. Masks are
  defined using the <code>&lt;mask&gt;</code> element. This element can contain
  typical SVG shapes or paths. It should also have an <code>id</code> attribute.
  The mask can be applied to other elements by referencing its <code>id</code>
  in the <code>mask</code> <strong>attribute</strong>: <code>mask="url(#id)"</code>
</p>
<p>
  By default, the <strong>luminosity</strong> of the contents of the
  <code>&lt;mask&gt;</code> element determine which parts of masked elements
  remain visible. In other words:
  <ul class="monospace">
    <li>White → Visible</li>
    <li>Black → Invisible/hole</li>
    <li>Empty → Invisible/hole</li>
    <li>Gray &nbsp;→ Semitransparent</li>
  </ul>
</p>
<p>
  The new app's
  <a href="/new-app/untitled-project/edit/glyph0">vector editor</a>
  was recently updated to support making and applying masks. This can be
  done both using the
  <a href="/docs/svg-editor#actions-search">command bar</a> and the
  <strong>Combine</strong> tab of the
  <a href="/docs/svg-editor#layers-panel">Layers panel</a> as shown in the
  following video.
</p>
<video controls style="width: 100%; aspect-ratio: 627 / 353;" loading="lazy">
  <source src="/videos/svg-vector-editor-masking.mp4" type="video/mp4">
  Download the
  <a href="/videos/svg-vector-editor-masking.mp4">MP4</a>
  video.
</video>
<p></p>
      </article>

      <article id="56" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">Repeatable Code Edits</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/repeatable-code-edits" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-05-24T11:23:55Z">
              <span class="_fs2 icon fgc8">📅</span>
May 24, 2026
            </time>
          </a>
        </p>
<p>
  IcoMoon's
  <a href="/new-app/untitled-project/edit/glyph0">vector editor</a>
  features a code editor which reflects changes made in the visual editor (and
  vice versa). Until now, editing the code would reset the entire SVG. This
  meant that these changes were not suitable for batch editing. This is no
  longer the case in the latest version of the app. Code editing now records
  the difference between the edited SVG and its previous state. This difference
  can then be repeated on other parts of the same SVG using the
  <strong>Repeat Last Action</strong>
  <a href="/docs/svg-editor#actions-search">command</a>
  with hotkey <kbd>Dot</kbd>, or repeated on other glyphs using the
  <a href="/news/batch-editing-icons">Batch</a> panel.
</p>
      </article>

      <article id="55" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">Batch Editing Icons</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/batch-editing-icons" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-05-05T13:11:17Z">
              <span class="_fs2 icon fgc8">📅</span>
May 5, 2026
            </time>
          </a>
        </p>
<p>
  Changes made in the new app's SVG editor can be copied to other glyphs via
  the <a href="/docs#edits">Edits</a> tab of the <strong>Batch</strong>
  panel. This can be especially useful for batch-editing strokes, colors,
  padding, or adding a common background shape to multiple glyphs. The
  following video shows this feature, plus the usage of the
  <strong>Color Shifter</strong> tool under the
  <a href="/docs#colors">Colors</a> tab for adjusting all colors.
</p>
<video controls style="width: 100%; aspect-ratio: 627 / 353;" loading="lazy">
  <source src="/videos/batch-editing-icons.mp4" type="video/mp4">
  Download the
  <a href="/videos/batch-editing-icons.mp4">MP4</a>
  video.
</video>
<p></p>
      </article>

      <article id="54" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">Copy as &lt;symbol&gt; and &lt;use&gt;</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/copy-as-svg-symbol-use" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-04-29T14:23:59Z">
              <span class="_fs2 icon fgc8">📅</span>
April 29, 2026
            </time>
          </a>
        </p>
<p>
  Two new formats were added to the new app's <strong>Quick Export</strong>
  section: SVG
  <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/symbol"><code>&lt;symbol&gt;</code></a>
  and SVG <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/use"><code>&lt;use&gt;</code></a>.
  This allows you to copy icons to clipboard as these formats. If you already
  have an existing set of symbol definitions in your code, you will likely find
  these new formats useful. The Quick Export tab is available under the
  <strong>Export</strong>
  panel, in both the <a href="/new-app/untitled-project">Glyphs</a>
  pane as well as the <a href="/new-app/untitled-project/library">Library</a> pane.
</p>
      </article>

      <article id="53" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">Shape Detection in Vector Editor</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/svg-editor-shape-detection" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-04-20T11:20:51Z">
              <span class="_fs2 icon fgc8">📅</span>
April 20, 2026
            </time>
          </a>
        </p>
<p>
  IcoMoon's vector editor is SVG-first, meaning it doesn't use a different
  internal vector format. As a result, there is no discrepancy between what you
  see and what you get. Furthermore, the editor can detect whether a Bézier path
  is actually a circle/ellipse or a polygon, as shown in the following video.
  When you edit a path, the editor would automatically convert it to a basic
  shape if possible, resulting in a cleaner and simpler SVG code.
</p>
<video controls style="width: 100%; aspect-ratio: 627 / 353;" loading="lazy">
  <source src="/videos/svg-vector-editor-shape-detection.mp4" type="video/mp4">
  Download the
  <a href="/videos/svg-vector-editor-shape-detection.mp4">MP4</a>
  video.
</video>
<p>
  Of course the reverse is also possible. You can turn a shape to a Bézier path
  by "Expanding" it. Press the <strong>Expand Shape or Stroke</strong> button in
  the <strong>Properties</strong> tab or search for
  "expand" in the <a href="/docs/svg-editor#actions-search">command bar</a>
  to apply it on your selection.
</p>
      </article>

      <article id="52" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">New Tool for Rounding Coordinates</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/new-tool-rounding-coords" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-03-31T12:59:38Z">
              <span class="_fs2 icon fgc8">📅</span>
March 31, 2026
            </time>
          </a>
        </p>
<p>
  A new tool was added to the
  <a href="/docs/svg-editor#selection">toolbar</a>
  of IcoMoon's vector editor in selection mode. It lets you round coordinate
  values. This can be used for snapping points to the grid as well as reducing
  the size of SVGs.
</p>
<p>
  You can bring up this tool by pressing <kbd>Shift</kbd> + <kbd>R</kbd>. A
  number field would let you specify the threshold for rounding. For example, If
  you enter <code>0.5</code>, all values would be rounded to the closest
  multiple of <code>0.5</code>. In this example, a coordinate like
  <code>1.3479</code> would become <code>1.5</code> and <code>3.85102</code>
  would be rounded to <code>4</code>, resulting in a cleaner and shorter SVG
  code.
</p>
      </article>

      <article id="51" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">Drawing a Rocket Icon</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/svg-editor-rocket" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-03-20T18:10:29Z">
              <span class="_fs2 icon fgc8">📅</span>
March 20, 2026
            </time>
          </a>
        </p>
<video controls style="width: 100%; aspect-ratio: 627 / 353;" loading="lazy">
  <source src="/videos/svg-vector-editor-rocket-icon.mp4" type="video/mp4">
  Download the
  <a href="/videos/svg-vector-editor-rocket-icon.mp4">MP4</a>
  video.
</video>
<p>
  This video features several techniques shown previously, for drawing a rocket
  icon in IcoMoon's
  <a href="/new-app/untitled-project/edit/glyph0">vector editor</a>.
</p>
<p>
  You might notice that we are holding <kbd>Alt/Option</kbd> before dragging
  a point on the paths that were duplicated and flipped. Holding <kbd>Alt</kbd>
  <em>before</em> dragging a point allows moving the <em>entire</em> shape while
  snapping is only enabled for that point. On the other hand, if you hold
  <kbd>Alt</kbd> <em>after</em> you start dragging a <em>shape</em>, a duplicate
  would be made.
</p>
      </article>

      <article id="50" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">Turning an Arc Into a Droplet</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/svg-editor-droplet" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-03-19T17:12:12Z">
              <span class="_fs2 icon fgc8">📅</span>
March 19, 2026
            </time>
          </a>
        </p>
<video controls style="width: 100%; aspect-ratio: 627 / 353;" loading="lazy">
  <source src="/videos/svg-vector-editor-droplet-icon.mp4" type="video/mp4">
  Download the
  <a href="/videos/svg-vector-editor-droplet-icon.mp4">MP4</a>
  video.
</video>
<p>
  This video highlights path extension using the
  <a href="/docs/svg-editor#pen-tool">pen tool</a> for turning a quarter
  of a circle into a droplet. The resulting path consists of a single segment.
</p>
<p>
  The path is then duplicated and expanded/outlined for offsetting and adding
  a parallel curve inside the droplet.
</p>
      </article>

      <article id="49" class="_target0 _mbnl ptm">
        <h2 class="target _mbnm fgc8 mtn ptl">Drawing a Heart Using the Pen Tool</h2>
        <p class="mtm fs4 lh1">
          <a href="/news/svg-editor-heart" class="_noLine iblk lh1 pvs">
            <time class="fs4" datetime="2026-03-18T16:34:35Z">
              <span class="_fs2 icon fgc8">📅</span>
March 18, 2026
            </time>
          </a>
        </p>
<video controls style="width: 100%; aspect-ratio: 627 / 353;" loading="lazy">
  <source src="/videos/svg-vector-editor-heart-icon.mp4" type="video/mp4">
  Download the
  <a href="/videos/svg-vector-editor-heart-icon.mp4">MP4</a>
  video.
</video>
<p>
  In this video, a new blank glyph with a size of 16&times;16 is added first.
  It is then resized to 24&times;24 in the
  <a href="/new-app/untitled-project/edit/glyph0">vector editor</a>.
</p>
<p>
  Using the pen tool, a single curve is drawn and then flipped horizontally.
  The resulting two paths are then joined together to form the heart icon.
</p>
      </article>

    <nav class="flex flexCenter ptm mtBar">
      <button disabled class="_noBoxShadow disabled0 _noLine iblk lh0 pln prs pvs">
  
        <svg class="vat" viewBox="0 -1 19 19" fill="currentColor" width="19" height="19">
          <polygon stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" points="13.5 3.5 7.5 9.5 13.5 15.5 14 15 8.5 9.5 14 4"></polygon>
        </svg>
        <span class="pvs vam fs2 m1Fs0">Newer</span>
      
</button>
      <span class="fgc12 lh5 fs2 m1Fs0 pvs phl lh1">Page <strong>1</strong> of <strong>6</strong></span>
      <a class="_noLine iblk lh0 prn pls pvs" href="/news/2">
        <span class="pvs vam fs2 m1Fs0">Older</span>
        <svg class="vat" viewBox="0 -1 19 19" width="19" height="19" fill="currentColor">
          <polygon stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" transform="rotate(180 9.5 9.5)" points="13.5 3.5 7.5 9.5 13.5 15.5 14 15 8.5 9.5 14 4"></polygon>
        </svg>
      </a>
    </nav>
  </div>
</div>
<script defer type="text/javascript" src="/assets/intersectionObserver-9e9826bee1d827fe0139856eba0f4e19.js?vsn=d"></script>
</main>
<div id="elm"></div>
<footer class="_top0 _gradient4 mtBar sticky noOverflow flex flexWrap">
  <nav class="_m5FlexCenter _m5W1of1 _m5Order0 gap1 order2 flex flexWrap pvm w1of1">
    <div class="flex phm pvs gap1">
      <a title="RSS Feed" class="iblk phm pvs lh0" href="/news/feed.atom">
        <svg viewBox="0 0 16 16" width="19" height="19">
          <path fill="currentColor" d="M12 16A12 12 0 0 0 0 4V1a15 15 0 0 1 15 15zM9.9429 16H7.0286A7.0286 7.0286 0 0 0 0 8.9714V6.0571A9.9429 9.9429 0 0 1 9.9429 16zM2.0571 16a2.0571 2.0571 0 1 1 0-4.1143 2.0571 2.0571 0 1 1 0 4.1143z"></path>
        </svg>
      </a>
      <a title="Bluesky" class="iblk phm pvs lh0" href="https://bsky.app/profile/icomoon.io">
        <svg viewBox="0 0 24 24" fill="currentColor" width="19" height="19" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
          <path d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995-2.636-1.861-3.641-1.539-4.3-1.24C0.139 1.908 0 3.08 0 3.768c0 0.69 0.378 5.65 0.624 6.479 0.815 2.736 3.713 3.66 6.383 3.364 0.136-0.02 0.275-0.039 0.415-0.056-0.138 0.022-0.276 0.04-0.415 0.056-3.912 0.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308 0.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-0.415-0.056c0.14 0.017 0.279 0.036 0.415 0.056 2.67 0.297 5.568-0.628 6.383-3.364C23.622 9.419 24 4.457 24 3.769c0-0.69-0.139-1.861-0.902-2.206-0.659-0.298-1.664-0.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8z"></path>
        </svg>
      </a>
      <a title="X.com" class="iblk phm pvs lh0" href="https://x.com/_vect_">
        <svg viewBox="0 0 24 24" fill="currentColor" width="19" height="19" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
          <path d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H0.474l8.6-9.83L0 1.154h7.594l5.243 6.932zM17.61 20.644h2.039L6.486 3.24H4.298z"></path>
        </svg>
      </a>
    </div>
    <div class="_m5Order0 _m5W1of1 flex phm pvs">
      <span class="_m5Block noDisplay flexGrow flexBasis0"></span>
      <a class="_flexGrow2 tc br0 pvs phm flexBasis0 " href="/about">
  About
</a>
      <a class="_flexGrow2 tc br0 pvs phm flexBasis0 " href="/faq">
  FAQ
</a>
      <a class="_flexGrow2 tc br0 pvs phm flexBasis0 " href="/contact">
  Contact
</a>
      <a class="_flexGrow2 tc br0 pvs phm flexBasis0 " href="https://store.icomoon.io/affiliates">
  Affiliates
</a>
      <span class="_m5Block noDisplay flexGrow flexBasis0"></span>
    </div>
  </nav>
  <div class="tc order2 flexGrow center">
    <hr class="fadeHorizontal2 opacity1 panelBackground ptxs noBorder m1W1of1 w3of4 flex marginAuto">
    <p class="tc w1of1 fs0">&copy; 2026 IcoMoon.io</p>
  </div>
</footer>
  </body>
</html>