astroglyphs_2K
OFL astrology glyph fonts built from Noto: one Unicode font for charts and the web, plus two keyboard fonts for typing in design and video apps, all sharing one set of drawings. The package adds per-glyph metrics and one-line embedding helpers, so any chart renderer gets deterministic astrology symbols instead of depending on whatever fonts the viewer has.
The good astrology fonts (Linotype Astrology Pi, AstrotypeP and friends) are proprietary and can't be bundled. astroglyphs_2K builds compact fonts from the freely-licensed Noto family instead.
pip install astroglyphs_2K
Just want the fonts? Every font is in the Out/ folder as ready-to-install TTF,
OTF and WOFF2 files, with a guide to which one to use. No Python needed.
import astroglyphs_2K as ag
svg = (ag.font_face_css() # <style> with the embedded @font-face rule
+ f'<text font-family={ag.FAMILY!r}>☉︎ 22°♏︎ 36′ ℞</text>')
The three fonts
| Font | What it is | Size (woff2) |
|---|---|---|
| Astroglyphs 2K | The Unicode font. Signs, planets, points, aspects, alternate forms, Hermetic lots, and plain text (digits, Latin, ℞ ° ′ ″) in one family. This is what font_face_css() embeds. |
12 KB |
| AstroglyphPi | Keyboard font, key-for-key compatible with AstrotypeP LT Std. Swap the font in an existing document and the glyphs carry over. | 5 KB |
| AstroglyphPro | Keyboard font with a mnemonic layout: a–l signs in zodiac order, A–L Sun … South Node, M–Z points, m–z aspects. Digits, punctuation and ° ′ ″ stay text, so 15a22° reads 15♈22°. |
8 KB |
The key maps are in spec/astroglyph_pi.csv and
spec/astroglyph_pro.csv. keys_to_unicode() converts text typed in
either keyboard font back to real Unicode, so AstrotypeP-era text can be migrated.
Alternate forms are separate codepoints, default first: Pluto ♇ ⯓ ⯔ ⯕ ⯖, Uranus ♅ ⛢,
Eris ⯰ ⯱, Hygiea ⚕ ⯚, Lot of Fortune 🝴 ⊗, Lot of Spirit ⦶ Ⓢ, semisquare ∠ ∟. A renderer
chooses a form by codepoint (ag.alternates("pluto")).
Lots. Only lots with a glyph in use get one: the seven Hermetic lots. Fortune and Spirit use
established forms; Eros, Necessity, Courage, Victory and Nemesis are drawn as their planet with a
small lot index. All seven also sit in one contiguous Private Use block (U+E100–E106, Paulus
order) and on the keys È–Î in both keyboard fonts. The hundreds of other Arabic parts are best
shown as ⊗ plus a text label.
Codepoints, Private Use slots and key assignments are never reassigned once released; new glyphs only take empty slots.
Glyph inventory
Every glyph in Astroglyphs 2K. Character is the literal character; Unicode name is its official name, so a row is identifiable even where the character can't render.
Zodiac signs
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| ♈ | U+2648 | ARIES | Aries |
| ♉ | U+2649 | TAURUS | Taurus |
| ♊ | U+264A | GEMINI | Gemini |
| ♋ | U+264B | CANCER | Cancer |
| ♌ | U+264C | LEO | Leo |
| ♍ | U+264D | VIRGO | Virgo |
| ♎ | U+264E | LIBRA | Libra |
| ♏ | U+264F | SCORPIUS | Scorpio |
| ♐ | U+2650 | SAGITTARIUS | Sagittarius |
| ♑ | U+2651 | CAPRICORN | Capricorn |
| ♒ | U+2652 | AQUARIUS | Aquarius |
| ♓ | U+2653 | PISCES | Pisces |
Luminaries, planets & nodes
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| ☉ | U+2609 | SUN | Sun |
| ☽ | U+263D | FIRST QUARTER MOON | Moon |
| ☿ | U+263F | MERCURY | Mercury |
| ♀ | U+2640 | FEMALE SIGN | Venus |
| ♁ | U+2641 | EARTH | Earth |
| ♂ | U+2642 | MALE SIGN | Mars |
| ♃ | U+2643 | JUPITER | Jupiter |
| ♄ | U+2644 | SATURN | Saturn |
| ♅ | U+2645 | URANUS | Uranus |
| ♆ | U+2646 | NEPTUNE | Neptune |
| ♇ | U+2647 | PLUTO | Pluto |
| ☊ | U+260A | ASCENDING NODE | North Node |
| ☋ | U+260B | DESCENDING NODE | South Node |
Points & asteroids
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| ⚷ | U+26B7 | CHIRON | Chiron |
| ⚸ | U+26B8 | BLACK MOON LILITH | Black Moon Lilith |
| ☾ | U+263E | LAST QUARTER MOON | Asteroid / Dark Moon Lilith |
| ⚳ | U+26B3 | CERES | Ceres |
| ⚴ | U+26B4 | PALLAS | Pallas |
| ⚵ | U+26B5 | JUNO | Juno |
| ⚶ | U+26B6 | VESTA | Vesta |
| ♡ | U+2661 | WHITE HEART SUIT | Eros (asteroid) |
| ⯰ | U+2BF0 | ERIS FORM ONE | Eris |
| ⯲ | U+2BF2 | SEDNA | Sedna |
| ⚕ | U+2695 | STAFF OF AESCULAPIUS | Hygiea |
| ⯛ | U+2BDB | PHOLUS | Pholus |
Aspects
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| ☌ | U+260C | CONJUNCTION | Conjunction (0°) |
| ☍ | U+260D | OPPOSITION | Opposition (180°) |
| △ | U+25B3 | WHITE UP-POINTING TRIANGLE | Trine (120°) |
| □ | U+25A1 | WHITE SQUARE | Square (90°) |
| ⚹ | U+26B9 | SEXTILE | Sextile (60°) |
| ⚻ | U+26BB | QUINCUNX | Quincunx (150°) |
| ⚺ | U+26BA | SEMISEXTILE | Semisextile (30°) |
| ∠ | U+2220 | ANGLE | Semisquare (45°) |
| ⚼ | U+26BC | SESQUIQUADRATE | Sesquiquadrate (135°) |
| ⯵ | U+2BF5 | RUSSIAN ASTROLOGICAL SYMBOL QUINTILE | Quintile (72°) |
| ⯴ | U+2BF4 | RUSSIAN ASTROLOGICAL SYMBOL NOVILE | Novile (40°) |
| ⯳ | U+2BF3 | RUSSIAN ASTROLOGICAL SYMBOL VIGINTILE | Vigintile (18°) |
Marks
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| ✦ | U+2726 | BLACK FOUR POINTED STAR | Fixed star |
| · | U+00B7 | MIDDLE DOT | Middle dot |
Lots
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| 🝴 | U+1F774 | LOT OF FORTUNE | Lot of Fortune |
| ⦶ | U+29B6 | CIRCLED VERTICAL BAR | Lot of Spirit |
Alternate forms
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| ⯓ | U+2BD3 | PLUTO FORM TWO | Pluto, form two (circle, crescent, cross) |
| ⯔ | U+2BD4 | PLUTO FORM THREE | Pluto, form three |
| ⯕ | U+2BD5 | PLUTO FORM FOUR | Pluto, form four |
| ⯖ | U+2BD6 | PLUTO FORM FIVE | Pluto, form five |
| ⛢ | U+26E2 | ASTRONOMICAL SYMBOL FOR URANUS | Uranus (astronomical) |
| ⯱ | U+2BF1 | ERIS FORM TWO | Eris, form two |
| ⯚ | U+2BDA | HYGIEA | Hygiea, form two |
| ⊗ | U+2297 | CIRCLED TIMES | Lot of Fortune (circled times) |
| Ⓢ | U+24C8 | CIRCLED LATIN CAPITAL LETTER S | Lot of Spirit (circled S) |
| ∟ | U+221F | RIGHT ANGLE | Semisquare (right angle form) |
Astronomy & esoteric glyphs (used by AstroglyphPi)
| Character | Codepoint | Unicode name | Description |
|---|---|---|---|
| ⦵ | U+29B5 | CIRCLE WITH HORIZONTAL BAR | Circle with horizontal bar |
| ⊖ | U+2296 | CIRCLED MINUS | Circled minus |
| ⊕ | U+2295 | CIRCLED PLUS | Circled plus |
| ○ | U+25CB | WHITE CIRCLE | White circle |
| ◯ | U+25EF | LARGE CIRCLE | Large circle |
| ● | U+25CF | BLACK CIRCLE | Black circle |
| ⬤ | U+2B24 | BLACK LARGE CIRCLE | Large black circle |
| ◐ | U+25D0 | CIRCLE WITH LEFT HALF BLACK | Circle, left half black |
| ◑ | U+25D1 | CIRCLE WITH RIGHT HALF BLACK | Circle, right half black |
| ◒ | U+25D2 | CIRCLE WITH LOWER HALF BLACK | Circle, lower half black |
| ◓ | U+25D3 | CIRCLE WITH UPPER HALF BLACK | Circle, upper half black |
| ◖ | U+25D6 | LEFT HALF BLACK CIRCLE | Left half black circle |
| ◗ | U+25D7 | RIGHT HALF BLACK CIRCLE | Right half black circle |
| ◠ | U+25E0 | UPPER HALF CIRCLE | Upper half circle (horned crescent) |
| ◡ | U+25E1 | LOWER HALF CIRCLE | Lower half circle (horned crescent) |
| ▽ | U+25BD | WHITE DOWN-POINTING TRIANGLE | White down-pointing triangle |
| ⛤ | U+26E4 | PENTAGRAM | Pentagram |
| ✡ | U+2721 | STAR OF DAVID | Hexagram |
| 🜁 | U+1F701 | ALCHEMICAL SYMBOL FOR AIR | Air (alchemical) |
| 🜃 | U+1F703 | ALCHEMICAL SYMBOL FOR EARTH | Earth (alchemical) |
| 🜍 | U+1F70D | ALCHEMICAL SYMBOL FOR SULFUR | Sulfur (alchemical) |
| ▩ | U+25A9 | SQUARE WITH DIAGONAL CROSSHATCH FILL | Gateway |
Composed glyphs (Private Use Area)
Unicode has no codepoint for these, so they are drawn by tools/build.py and placed in
reserved Private Use ranges: E000–E0FF astronomy, E100–E1FF lots.
| Codepoint | Name | How it is drawn |
|---|---|---|
| U+E001 | Moon: white disc, dark crescent left | Composed moon phase |
| U+E002 | Moon: white disc, dark crescent right | Composed moon phase |
| U+E003 | Moon: dark disc, white crescent right | Composed moon phase |
| U+E004 | Moon: dark disc, white crescent left | Composed moon phase |
| U+E100 | Lot of Fortune | Same drawing as U+1F774 |
| U+E101 | Lot of Spirit | Same drawing as U+29B6 |
| U+E102 | Lot of Eros | ♀ with a small lot index |
| U+E103 | Lot of Necessity | ☿ with a small lot index |
| U+E104 | Lot of Courage | ♂ with a small lot index |
| U+E105 | Lot of Victory | ♃ with a small lot index |
| U+E106 | Lot of Nemesis | ♄ with a small lot index |
API
font_face_css(embed=True)→ a<style>element inlining Astroglyphs 2K as adata:woff2 URI (self-contained; returns""whenembed=False).FAMILY→ thefont-familystack (embedded family first, system fallbacks after).SYM_FAMILYandTXT_FAMILYremain, with symbol and text fallbacks respectively.glyph(name),alternates(name),lot(name)→ characters by name, e.g.glyph("scorpio"),alternates("pluto"),lot("lot of genius")(aliases resolve: Genius and Daimon are Spirit).keys_to_unicode(text, layout="pi" | "pro")→ convert keyboard-font text to Unicode.glyph_metrics(ch)→(advance, ymin, ymax, xmin, xmax)in fractions of the em (ink bounding box from the outline), for laying glyphs out without guessing.save_fonts(dest, fonts=None, formats=("ttf","otf","woff2"))writes the installable font files;font_bytes(font, fmt)returns one file's bytes.- Data:
GLYPHS,ALTERNATES,LOTS,LOT_ALIASES,PI_KEYMAP,PRO_KEYMAP,GLYPH_METRICS,FONT_NAMES,FONT_FORMATS,OFL_ATTRIBUTION,SOURCE_FONT_VERSIONS.
Upgrading from 0.1? See the CHANGELOG: the four Astro* families became one,
and the fontset= argument is gone.
Licensing
Code: MIT. Font data: SIL Open Font License 1.1 — see LICENSES/OFL.txt
and astroglyphs_2K.OFL_ATTRIBUTION. The fonts are renamed so they are not distributed under a
Noto Reserved Font Name. AstroglyphPi matches AstrotypeP's key layout only; every drawing comes
from Noto or is composed from Noto outlines.
Rebuilding
pip install -e ".[build]" # fonttools + brotli + skia-pathops
python tools/build.py # fonts, src/astroglyphs_2K/_data.py, spec/*.csv and Out/
python tools/build.py --out-only # just refresh Out/ from the committed package fonts
Everything is driven by tools/registry.py. The build is deterministic:
the same vendored sources produce byte-identical outputs.
MIT © 2026 Elizabeth Huston, Ph.D. and Noah Christian, Ph.D. · glyphs © the Noto Project (OFL 1.1)
Metadata
Release files for astroglyphs-2K 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| astroglyphs_2k-0.2.0.tar.gz | 2.6 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| astroglyphs_2k-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.7 MB
Release files / astroglyphs_2k-0.2.0.tar.gz
| Download URL | astroglyphs_2k-0.2.0.tar.gz |
|---|---|
| Size | 2.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
206bb8c10c5d93fdd966b1c5d5bde343c3a52e373d100bb22c15e39996ff2f69
|
|
BLAKE2b-256 checksum How to use checksums |
8ce751a69722df2e61c904e3334c7a06a9091f5b0316a98f73cee822bf5b5ad2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / astroglyphs_2k-0.2.0-py3-none-any.whl
| Download URL | astroglyphs_2k-0.2.0-py3-none-any.whl |
|---|---|
| Size | 124.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74abb2698fdcb3df9177dc4afe53b156e5026cb2005513826237e6d208a87858
|
|
BLAKE2b-256 checksum How to use checksums |
62365b042377bdc4f3c39fdaf1cdd158e0cc324755e9f6062f89a7a6eccacc80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logSecurity for astroglyphs-2K 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for astroglyphs_2k-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.