Nupuram is a Malayalam variable typeface inspired by the early Malayalam movie title designs of the 1960s–70s, particularly the work of title designer S. Appukkuttan Nair. Its curves are fluid, bold, and expressive — wide strokes with thin verticals, reminiscent of hand-painted cinema posters.

Nupuram is a superfamily of five related typefaces: Nupuram, Nupuram Calligraphy, Nupuram Color, Nupuram Arrows Color, and Nupuram Dots. The word Nupuram means anklet.

Taking full advantage of variable font technology, Nupuram offers an unprecedented level of flexibility from a single font file. It has 479 characters, 847 glyphs, 4 variation axes, 33 named instances, and 12 OpenType layout features. The style sits between Chilanka (raw handwriting) and Manjari (formal humanistic).

One of the defining design characteristics of Nupuram is that it has no straight lines — every stroke is curved, giving the letters their distinctive playfulness.

Download the latest fonts from the SMC website or the GitLab releases. Try the color selector and variations in the Nupuram playground.

നൂപുരം

Variation axes

AxisTagRangeDescription
Weightwght100–900, default 400Thin to Black. 9 standard weights. Also controllable via CSS font-weight.
Widthwdth75–125%, default 10075% = Condensed, 125% = Expanded. 50 possible values. Use to fit text into a predefined rendering space. Also controllable via CSS font-stretch.
Slantslnt0 to −15, default 0Upright to slanted (15° clockwise, negative due to type design's roots in geometry).
SoftSOFT0–100, default 50Controls terminal roundness. 0 = sharp cuts, 100 = half‑circle terminals with diameter equal to terminal width. Useful for shifting tone from mechanical to warm.

Weight instances

9 upright weights: Thin (100), Extra Light (200), Light (300), Regular (400), Medium (500), SemiBold (600), Bold (700), ExtraBold (800), Black (900). Each also available as a Slanted variant.

Width instances

Condensed, Semi Condensed, Regular, Semi Expanded, Expanded — with 50 possible values between 75% and 125%. Condense or expand to achieve precise typographic layout; be mindful of legibility at extreme values.

Softness

Terminals are slightly rounded by default. Lower the SOFT value for sharp, formal cuts; raise it for warmer, softer shapes. Recommended: adjust roundness to shift communication tone from mechanical to human, from formal to informal.

Design

Nupuram is inspired by the title posters of early Malayalam movies around 1960–1970, specifically by title designer S. Appukkuttan Nair. These title designs featured wide, flat, sharp terminals, thin vertical strokes and thick horizontal strokes (examples: 1, 2, 3, 4). Adapting this handmade style to a typeface required many customizations — Nupuram avoids the sharpness of the original terminals while retaining the wide strokes with reduced thickness.

This is the third Malayalam typeface, after Chilanka and Manjari.

Technology

Nupuram is built using a parametric design approach that departs from conventional type design workflows. All glyphs are defined in MetaPost, a language for producing vector graphics from geometric and algebraic descriptions, descended from Knuth's Metafont.

MetaPost's parametric curve generation enables changing a few internal variables to produce glyphs with varying design characteristics — weight, stroke modulation, glyph width, and custom terminal shapes. Custom pens that draw over defined paths produce the glyph outlines. A pen defined by a line with a given width and rotation yields calligraphic strokes; picking different pens along a path produces stroke modulation. Drawing patterns like arrows or dots on the path is also possible.

MetaPost source code for the letter ഗ with live SVG preview in VS Code
MetaPost definition of letter ഗ (left) and the generated SVG (right).

SVGs prepared by MetaPost are converted to glif format in the UFO font format. OpenType features, glyph-to-Unicode mapping, kerning, and font metadata are all auto-generated from a configuration file — work that used to require manual effort for Malayalam typefaces. The UFOs are then compiled to OpenType fonts using fontmake.

This approach builds on macros from the MetaType1 package. See the source code repository for details.

Animation showing Nupuram variable font axes changing in real time
Nupuram variable font — animated across weight, width, and slant axes.
Grid showing Nupuram weight and width axis combinations
Weight × Width grid.

Research

The methodology behind Nupuram's parametric approach is documented in the research paper Parametric type design in the era of variable and color fonts (arXiv:2502.07386), presented at Grapholinguistics in the 21st Century — From Graphemes to Knowledge, October 2024.

Further reading: Nupuram announcement thread on X/Twitter · Anatomy of Nupuram Color 3D glyphs on X/Twitter · Introducing Nupuram blog post

OpenType features

aalt akhn calt liga pref pres pstf psts salt abvm blwm kern

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 19 predefined palettes and you can override colors using CSS @font-palette-values.

Learn more about browser support for color fonts at colorfonts.wtf and COLRv1 support in Chrome at the Chrome developers blog.

Variants

  • 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.
Nupuram Calligraphy sample text in Malayalam
Nupuram Calligraphy — wide nib at 40°.
Nupuram Color sample text with shadow rendering
Nupuram Color — COLRv1 with customizable palettes.
Nupuram Arrows showing pen movement for Malayalam letters
Nupuram Arrows — educational stroke direction.
Nupuram Dots showing dotted letter outlines for tracing
Nupuram Dots — dotted outlines for tracing practice.

Language support

Nupuram covers all Malayalam characters defined in Unicode 15 and includes Latin script support. It supports approximately 294 languages covering ~2.8 billion speakers (calculated using Hyperglot).

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.

License

Nupuram is licensed under the SIL Open Font License, Version 1.1. Copyright 2023 The Nupuram Project Authors (source).