From 381f35a1ae67dc6e5d808fa323b1b3fe88bc8682 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <230051081+jmiller-moko@users.noreply.github.com> Date: Tue, 7 Apr 2026 19:06:41 -0500 Subject: [PATCH] =?UTF-8?q?Restore=20download-google-fonts.sh=20=E2=80=94?= =?UTF-8?q?=20only=20local=20script=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/download-google-fonts.sh | 96 ++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 scripts/download-google-fonts.sh diff --git a/scripts/download-google-fonts.sh b/scripts/download-google-fonts.sh new file mode 100644 index 0000000..dc861b1 --- /dev/null +++ b/scripts/download-google-fonts.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# Copyright (C) 2026 Moko Consulting +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Download Google Fonts for self-hosting +# This script downloads Roboto, Noto Sans, and Fira Sans fonts + +set -e + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Target directory +FONTS_DIR="../src/media/fonts" + +echo -e "${BLUE}╔════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ Google Fonts Downloader for MokoCassiopeia ║${NC}" +echo -e "${BLUE}╚════════════════════════════════════════════════╝${NC}" +echo "" + +# Check if fonts directory exists +if [ ! -d "$FONTS_DIR" ]; then + echo -e "${RED}✗ Error: Fonts directory not found: $FONTS_DIR${NC}" + exit 1 +fi + +cd "$FONTS_DIR" + +echo -e "${YELLOW}Target directory: $(pwd)${NC}" +echo "" + +# Function to download font CSS and extract font files +download_font() { + local font_name="$1" + local font_url="$2" + local display_name="$3" + + echo -e "${GREEN}Downloading $display_name...${NC}" + + # Download CSS with user agent for woff2 format + css=$(curl -s -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" "$font_url") + + if [ -z "$css" ]; then + echo -e "${RED} ✗ Failed to download CSS${NC}" + return 1 + fi + + # Extract woff2 URLs + urls=$(echo "$css" | grep -oP 'https://fonts\.gstatic\.com[^\)]*\.woff2' || true) + + if [ -z "$urls" ]; then + echo -e "${RED} ✗ No font URLs found in CSS${NC}" + return 1 + fi + + count=0 + while IFS= read -r url; do + if [ -z "$url" ]; then + continue + fi + + filename=$(basename "$url") + echo -e " → Downloading ${filename}..." + + if curl -s "$url" -o "$filename"; then + size=$(du -h "$filename" | cut -f1) + echo -e "${GREEN} ✓ Downloaded ($size)${NC}" + ((count++)) + else + echo -e "${RED} ✗ Failed${NC}" + fi + done <<< "$urls" + + echo -e "${GREEN} ✓ Downloaded $count font files${NC}" + echo "" +} + +# Download fonts +download_font "roboto" "https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;700&display=swap" "Roboto" +download_font "noto-sans" "https://fonts.googleapis.com/css2?family=Noto+Sans:wght@100;300;400;700&display=swap" "Noto Sans" +download_font "fira-sans" "https://fonts.googleapis.com/css2?family=Fira+Sans:wght@100;300;400;700&display=swap" "Fira Sans" + +echo -e "${GREEN}╔════════════════════════════════════════════╗${NC}" +echo -e "${GREEN}║ ✓ All fonts downloaded successfully! ║${NC}" +echo -e "${GREEN}╚════════════════════════════════════════════╝${NC}" +echo "" +echo -e "Font files saved to: ${BLUE}$(pwd)${NC}" +echo "" +echo "Next steps:" +echo "1. Verify font files are present" +echo "2. Update templateDetails.xml font options (if needed)" +echo "3. Remove Google Fonts CDN preconnect links from PHP templates"