From 21f1237490003cb8f219d3bf937202b11583b557 Mon Sep 17 00:00:00 2001 From: Jarrod Millman Date: Thu, 8 May 2025 08:15:18 -0700 Subject: [PATCH 1/3] Add logo --- images/README.md | 34 +++++++++++ images/favicon.ico | Bin 0 -> 32038 bytes images/statistical-python-logo.svg | 92 +++++++++++++++++++++++++++++ myst.yml | 4 +- 4 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 images/README.md create mode 100644 images/favicon.ico create mode 100644 images/statistical-python-logo.svg diff --git a/images/README.md b/images/README.md new file mode 100644 index 0000000..a7e5bd8 --- /dev/null +++ b/images/README.md @@ -0,0 +1,34 @@ +# Statistical Python logo + +## How to generate favicon.ico + +1. Convert SVG to png: + +``` +inkscape --export-type=png statistical-python-logo.svg +``` + +2. Convert png to multi-resolution icon: + +``` +convert statistical-python-logo.png -define icon:auto-resize=64,48,32,16 -colors 3 favicon.ico +``` + +## To simplify SVGs for making icons + +See the [SimpleIcons guidelines](https://github.com/simple-icons/simple-icons/blob/develop/CONTRIBUTING.md#adding-or-updating-an-icon): + +1. Isolate the icon from any text or extraneous items. +2. Merge any overlapping paths. +3. Compound all paths into one. +4. Change the icon's viewbox/canvas/page size to 24x24. +5. Scale the icon to fit the viewbox, while preserving the icon's original proportions. This means the icon should be touching at least two sides of the viewbox. +6. Center the icon horizontally and vertically. +7. Remove all colors. The icon should be monochromatic. +8. Export the icon as an SVG. + +They use [SVGO](https://github.com/svg/svgo) to optimize SVGs. You can also use scour: `pip install scour`. + +``` +scour --set-precision=2 --strip-xml-prolog --remove-metadata --enable-comment-stripping --enable-viewboxing --indent=none --no-line-breaks --strip-xml-space --shorten-ids --enable-id-stripping statistical-python.svg statistical-python-icon.svg +``` diff --git a/images/favicon.ico b/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2c2838bb22faa51d206824b805dcaee0285f27eb GIT binary patch literal 32038 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 + + + + + + + + + + + + diff --git a/myst.yml b/myst.yml index c63746b..9b54ce6 100644 --- a/myst.yml +++ b/myst.yml @@ -14,6 +14,6 @@ site: # - title: Packages # url: /packages options: + favicon: images/favicon.ico + logo: images/statistical-python-logo.svg logo_text: Statistical Python - # favicon: favicon.ico - # logo: statistical-python_logo.png From 3251e8ab811588d3d2da6a9bedd17dd2432f5e7a Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Fri, 9 May 2025 01:42:56 -0700 Subject: [PATCH 2/3] Add logo cutout --- images/statistical-python-logo.svg | 138 ++++++++++++++++++++++++----- 1 file changed, 116 insertions(+), 22 deletions(-) diff --git a/images/statistical-python-logo.svg b/images/statistical-python-logo.svg index e41a773..600bc48 100644 --- a/images/statistical-python-logo.svg +++ b/images/statistical-python-logo.svg @@ -12,7 +12,96 @@ xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> + id="defs4"> + + + + + + + + + + + + + + + + + + + + + + + + + - + + id="rect2" + style="stroke:none;stroke-opacity:1;stroke-width:2;stroke-dasharray:none" + clip-path="url(#clipPath9)" /> + style="stroke-width:0.619648" + clip-path="url(#clipPath8)" /> + style="stroke-width:0.619648" + clip-path="url(#clipPath7)" /> + style="stroke-width:0.619648" + clip-path="url(#clipPath6)" /> + style="stroke-width:0.619648" + clip-path="url(#clipPath5)" /> + style="stroke-width:0.619648" + clip-path="url(#clipPath4)" /> + style="stroke-width:0.619648" + clip-path="url(#clipPath3)" /> From f7171f1273e63449272d4de927f3248e532cf42b Mon Sep 17 00:00:00 2001 From: Jarrod Millman Date: Fri, 9 May 2025 08:36:07 -0700 Subject: [PATCH 3/3] Update favicon --- images/README.md | 4 ++-- images/favicon.ico | Bin 32038 -> 32038 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/images/README.md b/images/README.md index a7e5bd8..6c5e71c 100644 --- a/images/README.md +++ b/images/README.md @@ -11,7 +11,7 @@ inkscape --export-type=png statistical-python-logo.svg 2. Convert png to multi-resolution icon: ``` -convert statistical-python-logo.png -define icon:auto-resize=64,48,32,16 -colors 3 favicon.ico +convert statistical-python-logo.png -define icon:auto-resize=64,48,32,16 -colors 4 favicon.ico ``` ## To simplify SVGs for making icons @@ -30,5 +30,5 @@ See the [SimpleIcons guidelines](https://github.com/simple-icons/simple-icons/bl They use [SVGO](https://github.com/svg/svgo) to optimize SVGs. You can also use scour: `pip install scour`. ``` -scour --set-precision=2 --strip-xml-prolog --remove-metadata --enable-comment-stripping --enable-viewboxing --indent=none --no-line-breaks --strip-xml-space --shorten-ids --enable-id-stripping statistical-python.svg statistical-python-icon.svg +scour --set-precision=2 --strip-xml-prolog --remove-metadata --enable-comment-stripping --enable-viewboxing --indent=none --no-line-breaks --strip-xml-space --shorten-ids --enable-id-stripping statistical-python-logo.svg statistical-python-icon.svg ``` diff --git a/images/favicon.ico b/images/favicon.ico index 2c2838bb22faa51d206824b805dcaee0285f27eb..77574a2f176dcf3aa5b2d1dfb87d1365b8b95b18 100644 GIT binary patch literal 32038 zcmeHQ33L=yx~@dgQD?0jK@h^i%0AD3To7XLtZG&D^Miu$aI_#ih%3Jz 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