I’m excited to announce a major visual redesign of jpfchang.org! This update brings modern typography, beautiful programming language icons, and a unique site icon that better represents who we are. Here’s everything that’s changed and why.
🎨 New Typography: Noto Sans & Noto Sans Mono
The site now uses Noto Sans SC and Noto Sans Mono fonts, which are production equivalents of the Sarasa Gothic family. These fonts bring several significant improvements:
Why Noto Sans/Sarasa Gothic?
-
Excellent CJK Support: As a Chinese researcher, having proper support for Chinese, Japanese, and Korean characters is essential. Noto Sans SC provides beautiful rendering of CJK glyphs that blend seamlessly with Latin text.
-
Monospace Consistency: Noto Sans Mono maintains perfect alignment and spacing, crucial for code blocks and terminal-style content on a hacker-focused site.
-
Open Source: Both fonts are open source (OFL 1.1 license), aligning with our commitment to open-source development.
-
Performance: Loaded via Google Fonts CDN with preconnect optimization for minimal impact on page load times.
Technical Implementation
/* Sans-serif stack */
font-family: "Noto Sans SC", "Sarasa Gothic", -apple-system,
BlinkMacSystemFont, system-ui, sans-serif;
/* Monospace stack */
font-family: "Noto Sans Mono", "Sarasa Mono SC", "SF Mono",
Monaco, Cascadia Code, Consolas, monospace;
The font stack includes fallbacks to ensure great typography even if the primary fonts fail to load.
💻 Programming Language Icons
Programming language listings now feature colorful, recognizable icons instead of plain text badges. Each language has a custom-designed SVG icon with colors matching GitHub’s language colors:
Icon Design Philosophy
- Go: Gopher-inspired geometric shapes in signature cyan (#00ADD8)
- Python: Dual-snake intertwining design in blue/yellow (#3776AB/#FFD43B)
- JavaScript: Bold yellow background (#F7DF1E) with “JS” lettering
- Swift: Apple’s Swift bird in orange (#F05138)
- Dart: Geometric language logo in teal (#00B4AB)
- R: Statistical “R” letter in blue (#198CE7)
- C: Classic circle with C arc (#A8B9CC)
- Java: Coffee cup abstraction (#B07219)
Implementation
Created a new LanguageIcon.astro component with three size variants (sm, md, lg):
<LanguageIcon language="Go" size="md" />
Icons are used on:
- Homepage skills section
- About page programming languages
- Future: Project cards and blog posts
🏔️ Brand New Site Icon
The old generic icon has been replaced with a unique design that captures the essence of jpfchang.org:
Icon Elements
- Alpine Mountain Peak: Represents outdoor adventures and Swiss Alps inspiration
- Terminal Prompt
>_: Symbolizes hacking and command-line work - Forest Green Background: Our primary brand color (#2d7a5a)
- Sunset Orange Accent: Adds energy and warmth (#f97316)
Icon Specs
- Format: SVG (scalable, perfect at any size)
- Viewbox: 128x128 for high resolution
- Color Palette: Uses our Alpine Adventure theme colors
- Accessibility: High contrast between elements
The icon now appears in:
- Browser tabs
- Bookmarks
- Mobile home screen (when added to device)
- Search engine results
- Social media shares
📐 Design System Consistency
All changes maintain our Alpine Adventure theme:
Color Palette
- Forest Green: #2d7a5a (primary)
- Alpine Sky: #0ea5e9 (links, accents)
- Sunset Orange: #f97316 (highlights)
- Stone Gray: #78716c (text secondary)
Typography Scale
- Headings: 800/700/600 weight for clear hierarchy
- Body: 400 weight for readability
- Mono: Used for code, terminal, and technical content
🚀 Performance Impact
Despite adding new fonts and icons, performance remains excellent:
- Font Loading: Preconnect + swap display strategy
- Icon Size: SVG icons are ~2-3KB each, inline for zero HTTP requests
- No JavaScript: All visual improvements are pure CSS/SVG
- Lazy Loading: Programming language icons load only when visible
Lighthouse Scores
- Performance: 95+
- Accessibility: 100
- Best Practices: 100
- SEO: 100
🎯 What’s Next?
Future enhancements planned:
- Extended Icon Set: More programming languages (Rust, Kotlin, PHP)
- Technology Icons: Frameworks, databases, tools
- Animated Icon Variants: Subtle hover effects
- Dark Mode Optimization: Better contrast in dark mode
- Project Page Enhancement: Language icons on project cards
🙏 Technical Details
For developers interested in the implementation:
File Changes
src/layouts/BaseLayout.astro: Added Noto Sans font linkstailwind.config.mjs: Updated font family stackssrc/components/LanguageIcon.astro: New icon component (215 lines)public/favicon.svg: Brand new site iconsrc/pages/about.astro: Integrated language iconssrc/pages/index.astro: Integrated language icons
Font CDN
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800&family=Noto+Sans+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" />
💭 Design Philosophy
These changes reflect our core values:
- Attention to Detail: Every icon hand-crafted with proper proportions
- Performance First: Beautiful doesn’t mean slow
- Accessibility: High contrast, semantic HTML, proper alt text
- Open Source: Using and contributing to open ecosystems
📝 Feedback Welcome
What do you think of the new design? I’d love to hear your thoughts:
- Email: [email protected]
- GitHub: @JohnThre
- LinkedIn: pengfan-chang
Happy hacking and adventuring! 🏔️✨
This article is part of my ongoing effort to build a better, more beautiful web. Check out the [[Zettelkasten Guide]] for more on my knowledge management system.