lattice

logo

The mark is a letterform written as TeX. It is typeset, read as a relief, and drawn as a square grid of glyphs: the closer a cell falls to the middle of a stroke, the denser the glyph that lands on it.

import { logoSvg } from "@mariovagomarzal/lattice/logo";

const svg = logoSvg({ equation: "\\mathbb{M}", columns: 24 });
logoSvg

loading the typesetter…

equation
size0.75
columns42
density0.53
grain0.30
fill0.75
pitch
px
side
px
shape1.00
polarity
ink#e8e1cf
paper#151b17
accent#cf8542
scatter0.18
seed

Options

optiontypedefaultwhat it does
equationstring"\\mathbb{M}"The letterform, as TeX.
columnsnumber24Cells across the square grid.
pitchnumber24Distance between cell centers, in pixels. The mark's side is this times columns.
sizenumber0.82Share of the grid the equation fills, in [0, 1].
densitynumber0.41The mean level of the mark's own cells, in [0, 1]. How much ink it carries, and nothing else.
grainnumber0.3How far a stroke falls away toward its contour, in [0, 1]. At 0 a flat stencil, at 1 a ridge off its spine. Held at the density asked for, so it changes the texture and not the weight.
fillnumber0.53Share of its cell a glyph covers, in [0, 1]. At 1 the glyphs touch, at 0 there is nothing to draw.
alphabetreadonly string[]rampThe ramp the levels are quantized with, from empty to full ink.
typefaceTypeface | nullspaceMonoOutlines the glyphs are drawn with, or null to set them as text.
fontFamilystring"Space Mono, monospace"The mono family the glyphs are named as. Used only when typeface is null.
inkstringmeet.colors.textColor of the glyphs.
paperstring | nullmeet.colors.baseColor behind them, or null for none.
accentstring | nullmeet.colors.orangeColor the accented cells take, or null to keep the mark monochrome.
scatternumber0.18Share of the mark's cells the accent lands on, in [0, 1].
seednumber1The seed the scatter is drawn from. Equal seeds accent the same cells.
shapenumber0.5The outline the grid is cut to, from a circle at 0 to a square at 1.