Icon Keylines

아이콘 키라인

The invisible circle, square, and two rectangles inside an icon grid that keep differently shaped icons feeling the same size.

Also known as: Keyline shapesIcon geometry
···
html
<div class="wrap">
  <svg viewBox="0 0 24 24" width="72%" height="72%">
    <rect x="1" y="1" width="22" height="22" fill="none" stroke="var(--line)" stroke-width="0.5"/>
    <circle id="k0" cx="12" cy="12" r="10" fill="none" stroke="var(--line)" stroke-width="0.7"/>
    <rect id="k1" x="3" y="3" width="18" height="18" fill="none" stroke="var(--line)" stroke-width="0.7"/>
    <rect id="k2" x="4" y="2" width="16" height="20" fill="none" stroke="var(--line)" stroke-width="0.7"/>
    <rect id="k3" x="2" y="4" width="20" height="16" fill="none" stroke="var(--line)" stroke-width="0.7"/>
  </svg>
  <div class="label" id="lbl">circle 20dp</div>
</div>
css
.wrap{display:flex;flex-direction:column;align-items:center;gap:10px}
.label{font-size:11px;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;font-weight:600}
#k0,#k1,#k2,#k3{transition:stroke .3s,opacity .3s,stroke-width .3s}
js
const ids = ['k0', 'k1', 'k2', 'k3'];
const names = { k0: 'circle 20dp', k1: 'square 18dp', k2: 'portrait 16\u00d720', k3: 'landscape 20\u00d716' };
const lbl = document.getElementById('lbl');
let i = 0;
function paint() {
  ids.forEach((id) => {
    const el = document.getElementById(id);
    const on = id === ids[i];
    el.style.stroke = on ? 'var(--accent)' : 'var(--muted)';
    el.style.strokeWidth = on ? '1.4' : '0.8';
    el.style.opacity = on ? '1' : '.55';
  });
  lbl.textContent = names[ids[i]];
  i = (i + 1) % ids.length;
}
paint();
setInterval(paint, 1300);

Split an icon set across several designers and icons that share the exact same 24px frame can still look mismatched in size — some feel oversized, others shrunk. The cause is that every shape has a different point where it "reads as full." Keylines fix this ahead of time with four reference shapes — circle, square, portrait rectangle, landscape rectangle. Round icons (a clock, a globe) get drawn to the circle keyline, blocky ones (a stop button, a card) to the square, tall ones (a document, a book) to the portrait rectangle — and once each shape is drawn to its matching keyline, the whole set reads as one consistent weight.

In practice, a 24px grid gets a roughly 20px circle, an 18px square, and a 16×20 (or 20×16) rectangle overlaid before anyone draws anything. Starting a new icon means picking which keyline it's closest to first, then filling in detail without crossing that shape's outer edge. Keylines aren't a hard law — they're a team's shared answer to "how big does this need to be to look the same," turned into geometry.

The telltale symptom of skipping them is a row of icons where the round ones look small and the square ones look bulky — and resizing them to match on paper won't fix it, because it's an optical illusion, which is exactly what the optical-correction entry covers.

When to use

Draw it first, before the first icon in a new set. When adding to an existing set, check the original keyline measurements so the new icon doesn't break the set's consistency.