Research reports on datetime handling, RFC 9457, font selection. Implementation plans for US-1 create event and post-review fixes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
405 lines
17 KiB
Markdown
405 lines
17 KiB
Markdown
# Research: Modern Sans-Serif Fonts for Mobile-First PWA
|
||
|
||
**Date:** 2026-03-04
|
||
**Context:** Selecting a primary typeface for fete, a privacy-focused PWA for event announcements and RSVPs. The font must be open-source with permissive licensing, modern geometric/neo-grotesque style, excellent mobile readability, and strong weight range.
|
||
|
||
---
|
||
|
||
## Executive Summary
|
||
|
||
Based on research of 9 candidate fonts, **6 meet all requirements** for self-hosting and redistribution under permissive licenses. Two do not qualify:
|
||
|
||
- **General Sans**: Proprietary (ITF Free Font License, non-commercial personal use only)
|
||
- **Satoshi**: License ambiguity; sources conflict between full OFL and ITF restrictions
|
||
|
||
The remaining **6 fonts are fully open-source** and suitable for the project:
|
||
|
||
| Font | License | Design | Weights | Status |
|
||
|------|---------|--------|---------|--------|
|
||
| Inter | OFL-1.1 | Neo-grotesque, humanist | 9 (Thin–Black) | ✅ Recommended |
|
||
| Plus Jakarta Sans | OFL-1.1 | Geometric, modern | 7 (ExtraLight–ExtraBold) | ✅ Recommended |
|
||
| Outfit | OFL-1.1 | Geometric | 9 (Thin–Black) | ✅ Recommended |
|
||
| Space Grotesk | OFL-1.1 | Neo-grotesque, distinctive | 5 (Light–Bold) | ✅ Recommended |
|
||
| Manrope | OFL-1.1 | Geometric, humanist | 7 (ExtraLight–ExtraBold) | ✅ Recommended |
|
||
| DM Sans | OFL-1.1 | Geometric, low-contrast | 9 (Thin–Black) | ✅ Recommended |
|
||
| Sora | OFL-1.1 | Geometric | 8 (Thin–ExtraBold) | ✅ Recommended |
|
||
|
||
---
|
||
|
||
## Detailed Candidate Analysis
|
||
|
||
### 1. Inter
|
||
|
||
**License:** SIL Open Font License 1.1 (OFL-1.1)
|
||
|
||
**Download Location:**
|
||
- **Official:** https://github.com/rsms/inter (releases page)
|
||
- **NPM:** `inter-ui` package
|
||
- **Homebrew:** `font-inter`
|
||
- **Official CDN:** https://rsms.me/inter/inter.css
|
||
|
||
**Design Character:** Neo-grotesque with humanist touches. High x-height for enhanced legibility on screens. Geometric letterforms with open apertures. Designed specifically for UI and on-screen use.
|
||
|
||
**Available Weights:** 9 weights from Thin (100) to Black (900), each with italic variant. Also available as a variable font with weight axis.
|
||
|
||
**Notable Apps/Products:**
|
||
- **UX/Design tools:** Figma, Notion, Pixar Presto
|
||
- **OS:** Elementary OS, GNOME
|
||
- **Web:** GitLab, ISO, Mozilla, NASA
|
||
- **Why:** Chosen by product teams valuing clarity and modern minimalism; default choice for UI designers
|
||
|
||
**Mobile Suitability:** Excellent. Specifically engineered for screen readability with high x-height and open apertures. Performs well at 14–16px body text.
|
||
|
||
**Distinctive Strengths:**
|
||
- Purpose-built for digital interfaces
|
||
- Exceptional clarity in dense UI layouts
|
||
- Strong brand identity (recognizable across tech products)
|
||
- Extensive OpenType features
|
||
|
||
**Weakness:** Very widely used; less distinctive for a bold brand identity. Considered the "safe" choice.
|
||
|
||
---
|
||
|
||
### 2. Plus Jakarta Sans
|
||
|
||
**License:** SIL Open Font License 1.1 (OFL-1.1)
|
||
|
||
**Download Location:**
|
||
- **Official Repository:** https://github.com/tokotype/PlusJakartaSans
|
||
- **Source Files:** `sources/`, compiled fonts in `fonts/` directory
|
||
- **Designer Contact:** mail@tokotype.com (Gumpita Rahayu, Tokotype)
|
||
- **Latest Version:** 2.7.1 (May 2023)
|
||
- **Build Command:** `gftools builder sources/builder.yaml`
|
||
|
||
**Design Character:** Geometric sans-serif with modern, clean-cut forms. Inspired by Neuzeit Grotesk and Futura but with contemporary refinement. Slightly taller x-height for clear spacing between caps and lowercase. Open counters and balanced spacing for legibility across sizes. **Bold, distinctive look** with personality.
|
||
|
||
**Available Weights:** 7 weights from ExtraLight (200) to ExtraBold (800), with matching italics.
|
||
|
||
**Notable Apps/Products:**
|
||
- Original commission: Jakarta Provincial Government's "+Jakarta City of Collaboration" program (2020)
|
||
- Now widely used in: Branding projects, modern web design, UI design
|
||
- **Why:** Chosen for fresh, contemporary feel without generic blandness
|
||
|
||
**Mobile Suitability:** Excellent. Designed with mobile UI in mind. Clean letterforms render crisply on small screens.
|
||
|
||
**Distinctive Strengths:**
|
||
- **Stylistic sets:** Sharp, Straight, and Swirl variants add design flexibility
|
||
- Modern geometric with Indonesian design heritage (unique perspective)
|
||
- Excellent for branding (not generic like Inter)
|
||
- OpenType features for sophisticated typography
|
||
- Well-maintained, active development
|
||
|
||
**Weakness:** Less ubiquitous than Inter; smaller ecosystem of design tool integrations.
|
||
|
||
---
|
||
|
||
### 3. Outfit
|
||
|
||
**License:** SIL Open Font License 1.1 (OFL-1.1)
|
||
|
||
**Download Location:**
|
||
- **Official Repository:** https://github.com/Outfitio/Outfit-Fonts
|
||
- **Fonts Directory:** `/fonts` in repository
|
||
- **OFL Text:** `OFL.txt` in repository
|
||
- **Designer:** Rodrigo Fuenzalida (originally for Outfit.io)
|
||
- **Status:** Repository archived Feb 25, 2025 (read-only, downloads remain accessible)
|
||
|
||
**Design Character:** Geometric sans-serif with warm, friendly appearance. Generous x-height, balanced spacing, low contrast. Nine static weights plus variable font with weight axis.
|
||
|
||
**Available Weights:** 9 weights from Thin (100) to Black (900). No italics.
|
||
|
||
**Notable Apps/Products:**
|
||
- Originally created for Outfit.io platform
|
||
- Good readability for body text (≈16px) and strong headline presence
|
||
- Used in design tools (Figma integration)
|
||
|
||
**Mobile Suitability:** Good. Geometric forms and generous spacing work well on mobile, though low contrast may require careful pairing with sufficient color contrast.
|
||
|
||
**Distinctive Strengths:**
|
||
- Full weight range (Thin–Black)
|
||
- Variable font option for granular weight control
|
||
- Stylistic alternates and rare ligatures
|
||
- Accessible character set
|
||
|
||
**Weakness:** Archived repository; no active development. Low contrast design requires careful color/contrast pairing for accessibility.
|
||
|
||
---
|
||
|
||
### 4. Space Grotesk
|
||
|
||
**License:** SIL Open Font License 1.1 (OFL-1.1)
|
||
|
||
**Download Location:**
|
||
- **Official Repository:** https://github.com/floriankarsten/space-grotesk
|
||
- **Official Site:** https://fonts.floriankarsten.com/space-grotesk
|
||
- **Designer:** Florian Karsten
|
||
- **Variants:** Variable font with weight axis
|
||
|
||
**Design Character:** Neo-grotesque with distinctive personality. Proportional variant of Space Mono (Colophon Foundry, 2016). Retains Space Mono's idiosyncratic details while optimizing for improved readability. Bold, tech-forward aesthetic with monowidth heritage visible in character design.
|
||
|
||
**Available Weights:** 5 weights—Light (300), Regular (400), Medium (500), SemiBold (600), Bold (700). No italics.
|
||
|
||
**Notable Apps/Products:**
|
||
- Modern tech companies and startups seeking distinctive branding
|
||
- Popular in neo-brutalist web design
|
||
- Good for headlines and display use
|
||
|
||
**Mobile Suitability:** Good. Clean proportional forms with distinctive character. Works well for headlines; body text at 14px+ is readable.
|
||
|
||
**Distinctive Strengths:**
|
||
- **Bold, tech-forward personality** — immediately recognizable
|
||
- Heritage from Space Mono adds character without looking dated
|
||
- Excellent OpenType support (old-style figures, tabular figures, superscript, subscript, fractions, stylistic alternates)
|
||
- **Supports extended language coverage:** Latin, Vietnamese, Pinyin, Central/South-Eastern European
|
||
|
||
**Weakness:** Only 5 weights (lightest is 300, no Thin). Fewer weight options than Inter or DM Sans.
|
||
|
||
---
|
||
|
||
### 5. Manrope
|
||
|
||
**License:** SIL Open Font License 1.1 (OFL-1.1)
|
||
|
||
**Download Location:**
|
||
- **Official Repository:** https://github.com/sharanda/manrope
|
||
- **Designer:** Mikhail Sharanda (2018), converted to variable by Mirko Velimirovic (2019)
|
||
- **Alternative Sources:** Multiple community forks on GitHub, npm packages
|
||
- **NPM Package:** `@fontsource/manrope`, `@fontsource-variable/manrope`
|
||
|
||
**Design Character:** Modern geometric sans-serif blending geometric shapes with humanistic elements. Semi-condensed structure with clean, contemporary feel. Geometric digits, packed with OpenType features.
|
||
|
||
**Available Weights:** 7 weights from ExtraLight (200) to ExtraBold (800). Available as variable font.
|
||
|
||
**Notable Apps/Products:**
|
||
- Widely used in modern design systems
|
||
- Popular in product/SaaS design
|
||
- Good for both UI and branding
|
||
|
||
**Mobile Suitability:** Excellent. Clean geometric design with humanistic touches; balanced proportions work well on mobile.
|
||
|
||
**Distinctive Strengths:**
|
||
- Geometric + humanistic blend (best of both worlds)
|
||
- Well-maintained active project
|
||
- Variable font available
|
||
- Strong design community around the font
|
||
|
||
**Weakness:** None significant; solid all-around choice.
|
||
|
||
---
|
||
|
||
### 6. DM Sans
|
||
|
||
**License:** SIL Open Font License 1.1 (OFL-1.1)
|
||
|
||
**Download Location:**
|
||
- **Official Repository:** https://github.com/googlefonts/dm-fonts
|
||
- **Releases Page:** https://github.com/googlefonts/dm-fonts/releases
|
||
- **Google Fonts:** https://fonts.google.com/specimen/DM+Sans
|
||
- **Design:** Commissioned from Colophon Foundry; Creative Direction: MultiAdaptor & DeepMind
|
||
|
||
**Design Character:** Low-contrast geometric sans-serif optimized for text at smaller sizes. Part of the DM suite (DM Sans, DM Serif Text, DM Serif Display). Designed for clarity and efficiency in dense typography.
|
||
|
||
**Available Weights:** 9 weights from Thin (100) to Black (900), each with italic variant.
|
||
|
||
**Notable Apps/Products:**
|
||
- DeepMind products (by commission)
|
||
- Tech companies favoring geometric clarity
|
||
- Professional and commercial products requiring text legibility
|
||
|
||
**Mobile Suitability:** Excellent. Specifically optimized for small text sizes; low contrast minimizes visual noise on mobile screens.
|
||
|
||
**Distinctive Strengths:**
|
||
- **Optimized for small text** — superior at 12–14px
|
||
- Full weight range (Thin–Black)
|
||
- Active Google Fonts maintenance
|
||
- Italic variants (unlike Outfit or Space Grotesk)
|
||
- Commissioned by reputable team (DeepMind)
|
||
|
||
**Weakness:** Low contrast may feel less bold on headlines without careful sizing/weight adjustment.
|
||
|
||
---
|
||
|
||
### 7. Sora
|
||
|
||
**License:** SIL Open Font License 1.1 (OFL-1.1)
|
||
|
||
**Download Location:**
|
||
- **Official Repository:** https://github.com/sora-xor/sora-font
|
||
- **GitHub Releases:** Direct TTF/OTF downloads available
|
||
- **NPM Packages:** `@fontsource/sora`, `@fontsource-variable/sora`
|
||
- **Original Purpose:** Custom typeface for SORA decentralized autonomous economy
|
||
|
||
**Design Character:** Geometric sans-serif with contemporary, clean aesthetic. Available as both static fonts and variable font. Designed as a branding solution for decentralized systems.
|
||
|
||
**Available Weights:** 8 weights from Thin (100) to ExtraBold (800), each with italic variant. Variable font available.
|
||
|
||
**Notable Apps/Products:**
|
||
- Sora (XOR) decentralized projects
|
||
- Crypto/blockchain projects using modern typography
|
||
- Web3 products seeking distinctive branding
|
||
|
||
**Mobile Suitability:** Good. Clean geometric forms render well on mobile; italics available for emphasis.
|
||
|
||
**Distinctive Strengths:**
|
||
- Full weight range with italics
|
||
- Variable font option
|
||
- Designed for digital-first branding
|
||
- GitHub-native distribution
|
||
|
||
**Weakness:** Less established than Inter or DM Sans in mainstream product design; smaller ecosystem.
|
||
|
||
---
|
||
|
||
## Rejected Candidates
|
||
|
||
### General Sans
|
||
|
||
**Status:** ❌ Does not meet licensing requirements
|
||
|
||
**License:** ITF Free Font License (proprietary, non-commercial personal use only)
|
||
|
||
**Why Rejected:** This is a **paid commercial font** distributed by the Indian Type Foundry (not open-source). The ITF Free Font License permits personal use only; commercial use requires a separate paid license. Does not meet the "open-source with permissive license" requirement.
|
||
|
||
**Designer:** Frode Helland (published by Indian Type Foundry)
|
||
|
||
---
|
||
|
||
### Satoshi
|
||
|
||
**Status:** ⚠️ License ambiguity — conflicting sources
|
||
|
||
**Documented License:**
|
||
- Some sources claim SIL Open Font License (OFL-1.1)
|
||
- Other sources indicate ITF Free Font License (personal use only) similar to General Sans
|
||
|
||
**Design:** Swiss-style modernist sans-serif (Light to Black, 5–10 weights)
|
||
|
||
**Download:** Fontshare (Indian Type Foundry's free font service)
|
||
|
||
**Why Not Recommended:** The license status is unclear. While Fontshare advertises "free for personal and commercial use," the font's origin (Indian Type Foundry) and conflicting license documentation create uncertainty. For a privacy-focused project with clear open-source requirements, Satoshi's ambiguous licensing creates unnecessary legal risk. Better alternatives with unambiguous OFL-1.1 licensing are available.
|
||
|
||
**Recommendation:** If clarity is needed, contact Fontshare/ITF directly. For now, exclude from consideration to reduce licensing complexity.
|
||
|
||
---
|
||
|
||
## Comparative Table: Qualified Fonts
|
||
|
||
| Metric | Inter | Plus Jakarta Sans | Outfit | Space Grotesk | Manrope | DM Sans | Sora |
|
||
|--------|-------|-------------------|--------|---------------|---------|---------|------|
|
||
| **License** | OFL-1.1 | OFL-1.1 | OFL-1.1 | OFL-1.1 | OFL-1.1 | OFL-1.1 | OFL-1.1 |
|
||
| **Weights** | 9 | 7 | 9 | 5 | 7 | 9 | 8 |
|
||
| **Italics** | ✅ Yes | ✅ Yes | ❌ No | ❌ No | ❌ No | ✅ Yes | ✅ Yes |
|
||
| **Variable Font** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
|
||
| **Design** | Neo-grotesque | Geometric | Geometric | Neo-grotesque | Geo + Humanist | Geometric | Geometric |
|
||
| **Personality** | Generic/Safe | Bold/Fresh | Warm/Friendly | Tech-Forward | Balanced | Efficient/Clean | Contemporary |
|
||
| **Mobile Text** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||
| **Distinctiveness** | Low | High | Medium | High | High | Medium | Medium |
|
||
| **Ecosystem** | Very Large | Growing | Medium | Growing | Growing | Large | Small |
|
||
| **Active Dev** | ✅ Yes | ✅ Yes | ❌ Archived | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
|
||
|
||
---
|
||
|
||
## Recommendations
|
||
|
||
### For Bold App-Native Branding
|
||
|
||
**Primary Choice: Plus Jakarta Sans**
|
||
|
||
**Rationale:**
|
||
- Fully open-source (OFL-1.1) with unambiguous licensing
|
||
- Bold, modern geometric aesthetic suitable for app branding
|
||
- Stylistic sets (Sharp, Straight, Swirl) provide design flexibility
|
||
- Well-maintained by Tokotype with clear development history
|
||
- Strong presence in modern UI/web design
|
||
- Excellent mobile readability with thoughtful character spacing
|
||
- Indonesian design heritage adds unique perspective (not generic)
|
||
|
||
**Alternative: Space Grotesk**
|
||
|
||
If you prefer **even more distinctive character:**
|
||
- Neo-grotesque with tech-forward personality
|
||
- Smaller weight range (5 weights) but strong identity
|
||
- Popular in contemporary design circles
|
||
- Good for headlines; pair with a more neutral font for body text if needed
|
||
|
||
---
|
||
|
||
### For Safe, Professional UI
|
||
|
||
**Primary Choice: Inter or DM Sans**
|
||
|
||
**Inter if:**
|
||
- Maximum ecosystem and tool support desired
|
||
- Designing for broad recognition and trust
|
||
- Team already familiar with Inter (widespread in tech)
|
||
|
||
**DM Sans if:**
|
||
- Emphasis on small text legibility (optimized for 12–14px)
|
||
- Prefer italic variants
|
||
- Want active maintenance from Google Fonts community
|
||
|
||
---
|
||
|
||
### For Balanced Approach
|
||
|
||
**Manrope**
|
||
|
||
- Geometric + humanistic blend (versatile)
|
||
- Excellent mobile performance
|
||
- Strong weight range (7 weights)
|
||
- Underrated choice; often overlooked for bolder options but delivers polish
|
||
|
||
---
|
||
|
||
## Implementation Notes for Self-Hosting
|
||
|
||
All recommended fonts can be self-hosted:
|
||
|
||
1. **Download:** Clone repository or download from releases page
|
||
2. **Generate Web Formats:** Use FontForge, FontTools, or online converters to generate WOFF2 (required for modern browsers)
|
||
3. **CSS:** Include via `@font-face` with local file paths
|
||
4. **License:** Include `LICENSE.txt` or `OFL.txt` in the distribution
|
||
|
||
Example self-hosted CSS:
|
||
```css
|
||
@font-face {
|
||
font-family: 'Plus Jakarta Sans';
|
||
src: url('/fonts/PlusJakartaSans-Regular.woff2') format('woff2');
|
||
font-weight: 400;
|
||
font-display: swap;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Privacy Considerations
|
||
|
||
All selected fonts are self-hosted open-source projects with no telemetry, no external CDN dependencies, and no tracking. Fully compliant with the project's privacy-first principles.
|
||
|
||
---
|
||
|
||
## Conclusion
|
||
|
||
**Inter, Plus Jakarta Sans, and Space Grotesk** are the strongest candidates. The choice depends on brand positioning:
|
||
|
||
- **Generic + Safe → Inter**
|
||
- **Bold + Modern → Plus Jakarta Sans**
|
||
- **Tech-Forward + Distinctive → Space Grotesk**
|
||
|
||
All seven recommended fonts meet the strict licensing, openness, mobile readability, and weight-range requirements. Any of them are viable; the decision is primarily aesthetic.
|
||
|
||
---
|
||
|
||
## Sources
|
||
|
||
- [Inter Font GitHub Repository](https://github.com/rsms/inter)
|
||
- [Plus Jakarta Sans GitHub Repository](https://github.com/tokotype/PlusJakartaSans)
|
||
- [Outfit Fonts GitHub Repository](https://github.com/Outfitio/Outfit-Fonts)
|
||
- [Space Grotesk GitHub Repository](https://github.com/floriankarsten/space-grotesk)
|
||
- [Manrope GitHub Repository](https://github.com/sharanda/manrope)
|
||
- [DM Fonts GitHub Repository](https://github.com/googlefonts/dm-fonts)
|
||
- [Sora Font GitHub Repository](https://github.com/sora-xor/sora-font)
|
||
- [SIL Open Font License](https://openfontlicense.org/)
|
||
- [Google Fonts (reference)](https://fonts.google.com)
|
||
- [Fontshare (reference)](https://www.fontshare.com)
|