Nupuram is a Malayalam typeface inspired by early Malayalam movie title designs. Its curves are fluid, bold, and expressive.
Taking full advantage of variable font technology, Nupuram offers an unprecedented level of flexibility from a single font file.
Nupuram provides fine-grained control with four axes — Weight, Width, Slant, and Softness — and ships with 64 named instances
that behave like regular static styles in your font menu. Multiple static weights are also available if you prefer a traditional workflow.
Tips: For light text on dark backgrounds, 400 is often appropriate; for dark text on light backgrounds, try 500 for better color.
Use a modest slant (around −12) for emphasis; adjust width to fit tight layouts while keeping legibility in mind. Use SOFT to tune tone
from mechanical (sharp) to warm (rounded).
Color font
Nupuram also has a Color font (COLRv1), with customizable palettes in supporting browsers; a COLRv0 variant exists for legacy apps.
The Color variable font includes a Weight axis that affects the z‑offset for its shadow effect. There are 18 predefined palettes and
you can override colors using CSS @font-palette-values.
Nupuram Color: Color variable font with palettes; customizable via CSS.
Nupuram Arrows: Educational variant showing pen movement with arrows (Color font).
Nupuram Dots: Educational dotted variant useful in worksheets.
Nupuram Calligraphy: Variable calligraphic style simulating a wide nib at 40°; adjustable via weight.
Language support
Nupuram covers all Malayalam characters in Unicode 15 and includes Latin support. It supports approximately 294 languages,
covering ~2.8B speakers (per hyperglot). This makes it suitable for multilingual typesetting that mixes Malayalam and Latin.
Using on the web
Use the variable font in webpages to get rich styles with a single file. Define ranges for weight, width, and slant in
@font-face, and fine‑tune with font-variation-settings where needed. For color fonts, feature‑detect COLRv1
using @supports (font-palette: --custom) and fall back to COLRv0 when necessary.