Back to Docs

AstroFont Guide

Utilities

Implement AstroFont in any frontend project

AstroFont packages the public-domain StarFont Sans and StarFont Serif families for astrology interfaces, reports, tables, SVG overlays, and chart UI. This guide turns the original PDF manual into a web-ready implementation path with downloadable assets, CSS, mappings, and live browser examples.

Glyph coverage for planets, signs, aspects, angles, and moreStarFont Sans is the default recommended familyManual source: version 1.2, 29 September 2010

Frontend implementation strategy

Self-host the font files, define `@font-face`, and keep all glyph choices in one mapping file so charts, tables, and legends share the same source of truth.

Use Sans for UI-heavy screens, use Serif for report-style surfaces, and expose glyphs through a tiny `AstroGlyph` component instead of hardcoding characters all over the app.

Because the fonts are outline fonts, they work well in modern browsers, generated PDFs, canvas text, and server-rendered HTML.

Download the assets

Step 1

Host the fonts in your app

Put the `.woff2` files in your public assets directory and keep the `.ttf` files as fallback or for native export pipelines. This project uses `/fonts/starfont/` and registers both families globally.

@font-face {
  font-family: "StarFont Sans";
  src:
    url("/fonts/starfont/strfnsan.woff2") format("woff2"),
    url("/fonts/starfont/strfnsan.ttf") format("truetype");
  font-display: swap;
}

@font-face {
  font-family: "StarFont Serif";
  src:
    url("/fonts/starfont/strfnser.woff2") format("woff2"),
    url("/fonts/starfont/strfnser.ttf") format("truetype");
  font-display: swap;
}

Step 2

Centralize the glyph mapping

Keep one mapping file for bodies, signs, and aspects so every chart, legend, tooltip, and PDF renderer uses the same characters. The snippet below is web-friendly and follows the glyph assignments documented in the manual.

export const AstroFontBodyMapping = {
  Sun: "s",
  Moon: "d",
  Mercury: "f",
  Venus: "g",
  Mars: "h",
  Jupiter: "j",
  Saturn: "S",
  Uranus: "F",
  Neptune: "G",
  Pluto: "J",
  NorthNode: "k",
  SouthNode: "?",
  Ascendant: "1",
  MidHeaven: "3",
  Vertex: "!",
};

export const AstroFontSignMapping = {
  Aries: "x",
  Taurus: "c",
  Gemini: "v",
  Cancer: "b",
  Leo: "n",
  Virgo: "m",
  Libra: "X",
  Scorpio: "C",
  Sagittarius: "V",
  Capricorn: "B",
  Aquarius: "N",
  Pisces: "M",
};

export const AstroFontAspectMapping = {
  Conjunction: "q",
  Opposite: "p",
  Square: "t",
  Trine: "u",
  Sextile: "r",
  Inconjunct: "o",
  SemiSextile: "w",
  SemiSquare: "e",
  SesquiQuadrate: "i",
};

Step 3

Render glyphs through a small component

Wrapping the glyph in a component makes it easy to switch between Sans and Serif, control sizing, and attach accessible labels around the symbol.

type AstroGlyphProps = {
  glyph: string;
  family?: "sans" | "serif";
  className?: string;
};

export function AstroGlyph({
  glyph,
  family = "sans",
  className = "",
}: AstroGlyphProps) {
  const fontFamily = family === "serif" ? '"StarFont Serif"' : '"StarFont Sans"';

  return (
    <span
      aria-hidden="true"
      className={className}
      style={{ fontFamily, lineHeight: 1 }}
    >
      {glyph}
    </span>
  );
}

StarFont Sans bodies and angles

Live preview rendered with the shipped web font.

s
Sun
"s"
d
Moon
"d"
f
Mercury
"f"
g
Venus
"g"
h
Mars
"h"
j
Jupiter
"j"
S
Saturn
"S"
F
Uranus
"F"
G
Neptune
"G"
J
Pluto
"J"
k
North Node
"k"
?
South Node
"?"
1
ASC
"1"
3
MC
"3"
!
Vertex
"!"

StarFont Sans zodiac signs

Live preview rendered with the shipped web font.

x
Aries
"x"
c
Taurus
"c"
v
Gemini
"v"
b
Cancer
"b"
n
Leo
"n"
m
Virgo
"m"
X
Libra
"X"
C
Scorpio
"C"
V
Sagittarius
"V"
B
Capricorn
"B"
N
Aquarius
"N"
M
Pisces
"M"

StarFont Sans aspects

Live preview rendered with the shipped web font.

q
Conjunction
"q"
p
Opposition
"p"
t
Square
"t"
u
Trine
"u"
r
Sextile
"r"
o
Quincunx
"o"
w
Semisextile
"w"
e
Semisquare
"e"
i
Sesquiquadrate
"i"

StarFont Serif bodies and angles

Live preview rendered with the shipped web font.

s
Sun
"s"
d
Moon
"d"
f
Mercury
"f"
g
Venus
"g"
h
Mars
"h"
j
Jupiter
"j"
S
Saturn
"S"
F
Uranus
"F"
G
Neptune
"G"
J
Pluto
"J"
k
North Node
"k"
?
South Node
"?"
1
ASC
"1"
3
MC
"3"
!
Vertex
"!"

StarFont Serif zodiac signs

Live preview rendered with the shipped web font.

x
Aries
"x"
c
Taurus
"c"
v
Gemini
"v"
b
Cancer
"b"
n
Leo
"n"
m
Virgo
"m"
X
Libra
"X"
C
Scorpio
"C"
V
Sagittarius
"V"
B
Capricorn
"B"
N
Aquarius
"N"
M
Pisces
"M"

Practical notes for real projects

  • Load the font before measuring chart labels or laying out symbol-heavy tables.
  • Use Sans for dashboards and toolbars, Serif for long-form reports or PDF exports.
  • Prefer `.woff2` on the web and keep `.ttf` only for compatibility or downstream generation.
  • The manual also documents alternate forms such as Moon `a`, Uranus `A`, Pluto `H`, and Capricorn `Z`.

Source attribution

This guide is based on the included StarFont manual by Matthew Skala, describing fonts designed by Anthony I.P. Owen and distributed in the public domain.

The PDF notes that StarFont Sans is the default recommended face, while StarFont Serif is available for alternate styling inside the same document or app.

If you need the original reference while integrating, open the bundled manual PDF.