diff --git a/docs/images/sd-font-previews/Alegreya.png b/docs/images/sd-font-previews/Alegreya.png new file mode 100644 index 00000000..ac9d7746 Binary files /dev/null and b/docs/images/sd-font-previews/Alegreya.png differ diff --git a/docs/images/sd-font-previews/Arimo.png b/docs/images/sd-font-previews/Arimo.png new file mode 100644 index 00000000..a7c948e3 Binary files /dev/null and b/docs/images/sd-font-previews/Arimo.png differ diff --git a/docs/images/sd-font-previews/AtkinsonHyperlegibleNext.png b/docs/images/sd-font-previews/AtkinsonHyperlegibleNext.png new file mode 100644 index 00000000..16b61aa3 Binary files /dev/null and b/docs/images/sd-font-previews/AtkinsonHyperlegibleNext.png differ diff --git a/docs/images/sd-font-previews/Bitter.png b/docs/images/sd-font-previews/Bitter.png new file mode 100644 index 00000000..fba7fb60 Binary files /dev/null and b/docs/images/sd-font-previews/Bitter.png differ diff --git a/docs/images/sd-font-previews/Gelasio.png b/docs/images/sd-font-previews/Gelasio.png new file mode 100644 index 00000000..5b412c0d Binary files /dev/null and b/docs/images/sd-font-previews/Gelasio.png differ diff --git a/docs/images/sd-font-previews/GentiumBookPlus.png b/docs/images/sd-font-previews/GentiumBookPlus.png new file mode 100644 index 00000000..fa7b962c Binary files /dev/null and b/docs/images/sd-font-previews/GentiumBookPlus.png differ diff --git a/docs/images/sd-font-previews/IBMPlexMono.png b/docs/images/sd-font-previews/IBMPlexMono.png new file mode 100644 index 00000000..49b3141f Binary files /dev/null and b/docs/images/sd-font-previews/IBMPlexMono.png differ diff --git a/docs/images/sd-font-previews/IBMPlexSans.png b/docs/images/sd-font-previews/IBMPlexSans.png new file mode 100644 index 00000000..032c806d Binary files /dev/null and b/docs/images/sd-font-previews/IBMPlexSans.png differ diff --git a/docs/images/sd-font-previews/IBMPlexSerif.png b/docs/images/sd-font-previews/IBMPlexSerif.png new file mode 100644 index 00000000..c35c3b5f Binary files /dev/null and b/docs/images/sd-font-previews/IBMPlexSerif.png differ diff --git a/docs/images/sd-font-previews/Inter.png b/docs/images/sd-font-previews/Inter.png new file mode 100644 index 00000000..fa8e0b62 Binary files /dev/null and b/docs/images/sd-font-previews/Inter.png differ diff --git a/docs/images/sd-font-previews/LexicaUltralegible.png b/docs/images/sd-font-previews/LexicaUltralegible.png new file mode 100644 index 00000000..27e5161a Binary files /dev/null and b/docs/images/sd-font-previews/LexicaUltralegible.png differ diff --git a/docs/images/sd-font-previews/Literata.png b/docs/images/sd-font-previews/Literata.png new file mode 100644 index 00000000..3a85fcf6 Binary files /dev/null and b/docs/images/sd-font-previews/Literata.png differ diff --git a/docs/images/sd-font-previews/Lora.png b/docs/images/sd-font-previews/Lora.png new file mode 100644 index 00000000..d0e9e68b Binary files /dev/null and b/docs/images/sd-font-previews/Lora.png differ diff --git a/docs/images/sd-font-previews/Merriweather.png b/docs/images/sd-font-previews/Merriweather.png new file mode 100644 index 00000000..ae2362ac Binary files /dev/null and b/docs/images/sd-font-previews/Merriweather.png differ diff --git a/docs/images/sd-font-previews/NotoSansExtended.png b/docs/images/sd-font-previews/NotoSansExtended.png new file mode 100644 index 00000000..4029610d Binary files /dev/null and b/docs/images/sd-font-previews/NotoSansExtended.png differ diff --git a/docs/images/sd-font-previews/NotoSerifExtended.png b/docs/images/sd-font-previews/NotoSerifExtended.png new file mode 100644 index 00000000..e51b4567 Binary files /dev/null and b/docs/images/sd-font-previews/NotoSerifExtended.png differ diff --git a/docs/images/sd-font-previews/OpenDyslexic.png b/docs/images/sd-font-previews/OpenDyslexic.png new file mode 100644 index 00000000..9f21de6b Binary files /dev/null and b/docs/images/sd-font-previews/OpenDyslexic.png differ diff --git a/docs/images/sd-font-previews/Readerly.png b/docs/images/sd-font-previews/Readerly.png new file mode 100644 index 00000000..0958ba42 Binary files /dev/null and b/docs/images/sd-font-previews/Readerly.png differ diff --git a/docs/images/sd-font-previews/SourceCodePro.png b/docs/images/sd-font-previews/SourceCodePro.png new file mode 100644 index 00000000..fac175c0 Binary files /dev/null and b/docs/images/sd-font-previews/SourceCodePro.png differ diff --git a/docs/images/sd-font-previews/SourceSans3.png b/docs/images/sd-font-previews/SourceSans3.png new file mode 100644 index 00000000..42a3e689 Binary files /dev/null and b/docs/images/sd-font-previews/SourceSans3.png differ diff --git a/docs/images/sd-font-previews/SourceSerif4.png b/docs/images/sd-font-previews/SourceSerif4.png new file mode 100644 index 00000000..f215b1a4 Binary files /dev/null and b/docs/images/sd-font-previews/SourceSerif4.png differ diff --git a/docs/images/sd-font-previews/Spectral.png b/docs/images/sd-font-previews/Spectral.png new file mode 100644 index 00000000..53815b7b Binary files /dev/null and b/docs/images/sd-font-previews/Spectral.png differ diff --git a/docs/images/sd-font-previews/Vollkorn.png b/docs/images/sd-font-previews/Vollkorn.png new file mode 100644 index 00000000..46083823 Binary files /dev/null and b/docs/images/sd-font-previews/Vollkorn.png differ diff --git a/docs/sd-fonts-preview.md b/docs/sd-fonts-preview.md new file mode 100644 index 00000000..5678736d --- /dev/null +++ b/docs/sd-fonts-preview.md @@ -0,0 +1,29 @@ +# SD Font Preview + +This page lists the available SD font families under `assets/sd-fonts` and embeds rendered preview images for each family. + +| Font Family | Preview | +|---|---| +| Alegreya | ![Preview of Alegreya](images/sd-font-previews/Alegreya.png) | +| Arimo | ![Preview of Arimo](images/sd-font-previews/Arimo.png) | +| AtkinsonHyperlegibleNext | ![Preview of AtkinsonHyperlegibleNext](images/sd-font-previews/AtkinsonHyperlegibleNext.png) | +| Bitter | ![Preview of Bitter](images/sd-font-previews/Bitter.png) | +| Gelasio | ![Preview of Gelasio](images/sd-font-previews/Gelasio.png) | +| GentiumBookPlus | ![Preview of GentiumBookPlus](images/sd-font-previews/GentiumBookPlus.png) | +| IBMPlexMono | ![Preview of IBMPlexMono](images/sd-font-previews/IBMPlexMono.png) | +| IBMPlexSans | ![Preview of IBMPlexSans](images/sd-font-previews/IBMPlexSans.png) | +| IBMPlexSerif | ![Preview of IBMPlexSerif](images/sd-font-previews/IBMPlexSerif.png) | +| Inter | ![Preview of Inter](images/sd-font-previews/Inter.png) | +| LexicaUltralegible | ![Preview of LexicaUltralegible](images/sd-font-previews/LexicaUltralegible.png) | +| Literata | ![Preview of Literata](images/sd-font-previews/Literata.png) | +| Lora | ![Preview of Lora](images/sd-font-previews/Lora.png) | +| Merriweather | ![Preview of Merriweather](images/sd-font-previews/Merriweather.png) | +| NotoSansExtended | ![Preview of NotoSansExtended](images/sd-font-previews/NotoSansExtended.png) | +| NotoSerifExtended | ![Preview of NotoSerifExtended](images/sd-font-previews/NotoSerifExtended.png) | +| OpenDyslexic | ![Preview of OpenDyslexic](images/sd-font-previews/OpenDyslexic.png) | +| Readerly | ![Preview of Readerly](images/sd-font-previews/Readerly.png) | +| SourceCodePro | ![Preview of SourceCodePro](images/sd-font-previews/SourceCodePro.png) | +| SourceSans3 | ![Preview of SourceSans3](images/sd-font-previews/SourceSans3.png) | +| SourceSerif4 | ![Preview of SourceSerif4](images/sd-font-previews/SourceSerif4.png) | +| Spectral | ![Preview of Spectral](images/sd-font-previews/Spectral.png) | +| Vollkorn | ![Preview of Vollkorn](images/sd-font-previews/Vollkorn.png) | diff --git a/scripts/generate_sd_font_previews.py b/scripts/generate_sd_font_previews.py new file mode 100644 index 00000000..901e134c --- /dev/null +++ b/scripts/generate_sd_font_previews.py @@ -0,0 +1,44 @@ +"""Generate a markdown font preview page and images for SD font families.""" +from pathlib import Path +from PIL import Image, ImageDraw, ImageFont + +ROOT = Path(__file__).resolve().parent.parent / 'assets' / 'sd-fonts' +OUTPUT_DIR = Path(__file__).resolve().parent.parent / 'docs' / 'images' / 'sd-font-previews' +MD_PATH = Path(__file__).resolve().parent.parent / 'docs' / 'sd-fonts-preview.md' +SAMPLE_TEXT = 'Everyone has the right to freedom of thought...' +DEFAULT_FONT_SIZE = 28 +IMAGE_SIZE = (1080, 220) + +OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + +try: + font = ImageFont.truetype('arial.ttf', DEFAULT_FONT_SIZE) +except Exception: + font = ImageFont.load_default() + +families = [p.name for p in sorted(ROOT.iterdir()) if p.is_dir()] +lines = [ + '# SD Font Preview', + '', + 'This page lists the available SD font families under `assets/sd-fonts` and includes preview images showing the family name plus the sample phrase.', + '', + '| Font Family | Preview |', + '|---|---|', +] + +for family in families: + text = f'{family} - {SAMPLE_TEXT}' + image = Image.new('RGB', IMAGE_SIZE, color=(255, 255, 255)) + draw = ImageDraw.Draw(image) + text_width, text_height = draw.textsize(text, font=font) + x = 20 + y = (IMAGE_SIZE[1] - text_height) // 2 + draw.text((x, y), text, fill='black', font=font) + output_file = OUTPUT_DIR / f'{family}.png' + image.save(output_file) + lines.append(f'| {family} | ![Preview of {family}](images/sd-font-previews/{family}.png) |') + +with MD_PATH.open('w', encoding='utf-8') as md_file: + md_file.write('\n'.join(lines) + '\n') + +print(f'Generated {len(families)} preview images and markdown at {MD_PATH}')