mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-20 12:24:59 +00:00
feat: Add script to generate SVG logo with embedded font
This commit is contained in:
parent
c14d406f59
commit
c6e544750b
2 changed files with 112 additions and 0 deletions
|
@ -58,6 +58,11 @@ nav {
|
||||||
letter-spacing: 0.5px;
|
letter-spacing: 0.5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.logo-svg {
|
||||||
|
height: 32px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
.nav-links {
|
.nav-links {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 30px;
|
gap: 30px;
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Script to generate an SVG logo for Aider with embedded font.
|
||||||
|
Reads the Glass_TTY_VT220.ttf font and creates an SVG with the word "aider"
|
||||||
|
in terminal green (#14b014) on a white background.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import base64
|
||||||
|
import os
|
||||||
|
import argparse
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def generate_svg_with_embedded_font(font_path, text="aider", color="#14b014", output_path=None):
|
||||||
|
"""
|
||||||
|
Generate an SVG with embedded TTF font data.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
font_path (str): Path to the TTF font file
|
||||||
|
text (str): Text to display in the SVG
|
||||||
|
color (str): Color of the text (hex format)
|
||||||
|
output_path (str, optional): Path to save the SVG file, if None prints to stdout
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: The SVG content
|
||||||
|
"""
|
||||||
|
# Read the font file and encode it as base64
|
||||||
|
with open(font_path, 'rb') as f:
|
||||||
|
font_data = f.read()
|
||||||
|
|
||||||
|
font_base64 = base64.b64encode(font_data).decode('utf-8')
|
||||||
|
|
||||||
|
# Calculate SVG dimensions based on text length
|
||||||
|
# These values can be adjusted to modify the appearance
|
||||||
|
char_width = 40
|
||||||
|
width = len(text) * char_width + 40 # Add padding
|
||||||
|
height = 100
|
||||||
|
text_x = 20
|
||||||
|
text_y = 65
|
||||||
|
|
||||||
|
# Create the SVG with embedded font
|
||||||
|
svg = f"""<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg width="{width}" height="{height}" viewBox="0 0 {width} {height}" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
@font-face {{
|
||||||
|
font-family: 'GlassTTYVT220';
|
||||||
|
src: url(data:font/truetype;charset=utf-8;base64,{font_base64}) format('truetype');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}}
|
||||||
|
.logo-text {{
|
||||||
|
font-family: 'GlassTTYVT220', monospace;
|
||||||
|
font-size: 60px;
|
||||||
|
fill: {color};
|
||||||
|
}}
|
||||||
|
.background {{
|
||||||
|
fill: white;
|
||||||
|
}}
|
||||||
|
</style>
|
||||||
|
<rect class="background" width="{width}" height="{height}" x="0" y="0" />
|
||||||
|
<text x="{text_x}" y="{text_y}" class="logo-text">{text}</text>
|
||||||
|
</svg>"""
|
||||||
|
|
||||||
|
# Save to file or print to stdout
|
||||||
|
if output_path:
|
||||||
|
with open(output_path, 'w') as f:
|
||||||
|
f.write(svg)
|
||||||
|
print(f"SVG logo saved to {output_path}")
|
||||||
|
|
||||||
|
return svg
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='Generate an SVG logo with embedded font')
|
||||||
|
parser.add_argument('--font', type=str, default='aider/website/assets/Glass_TTY_VT220.ttf',
|
||||||
|
help='Path to the TTF font file')
|
||||||
|
parser.add_argument('--text', type=str, default='aider',
|
||||||
|
help='Text to display in the SVG')
|
||||||
|
parser.add_argument('--color', type=str, default='#14b014',
|
||||||
|
help='Color of the text (hex format)')
|
||||||
|
parser.add_argument('--output', type=str, default='aider/website/assets/logo.svg',
|
||||||
|
help='Path to save the SVG file')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Make sure the font file exists
|
||||||
|
if not os.path.exists(args.font):
|
||||||
|
print(f"Error: Font file not found at {args.font}")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Create output directory if it doesn't exist
|
||||||
|
if args.output:
|
||||||
|
output_dir = os.path.dirname(args.output)
|
||||||
|
if output_dir and not os.path.exists(output_dir):
|
||||||
|
os.makedirs(output_dir)
|
||||||
|
|
||||||
|
# Generate the SVG
|
||||||
|
generate_svg_with_embedded_font(
|
||||||
|
args.font,
|
||||||
|
text=args.text,
|
||||||
|
color=args.color,
|
||||||
|
output_path=args.output
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Add table
Add a link
Reference in a new issue