# Contributing to Simple Icons Simple Icons welcomes contributions and corrections. Before contributing, please make sure you have read the guidelines below. If you decide to contribute anything, please do the following: 1. Fork this repository 1. (Optional) Clone the fork ```bash # Using SSH git clone --filter=tree:0 git@github.com:simple-icons/simple-icons.git # Using HTTPS git clone --filter=tree:0 https://github.com/simple-icons/simple-icons.git # Using GitHub CLI gh repo clone simple-icons/simple-icons -- --filter=tree:0 ``` 1. Create a new branch from the latest `develop` (read more [here](https://guides.github.com/introduction/flow/)) 1. Start hacking on the new branch 1. Commit and push to the new branch 1. Make a pull request ## Table of contents * [Requesting an Icon](#requesting-an-icon) * [Adding or Updating an Icon](#adding-or-updating-an-icon) * [Building the Website](#building-locally) * [Using Docker](#using-docker) ## Requesting an Icon We welcome icon requests. Before you submit a new issue please make sure the icon: * Has not already been requested. If you find an existing issue or pull request for the brand you're looking for then please add a reaction or comment to show your support. * Is of a _popular_ brand: - For websites, the [Alexa rank](https://www.alexa.com/siteinfo) should be less than 500k. - For GitHub projects, the amount of "stars" should be above 5k. - For anything else, popularity will be judged on a case-by-case basis. * Doesn't fall into one of the following categories: - Illegal service (e.g. piracy, malware, threatening material, spam etc.) - Governmental agencies, programs, departments - Allowed: International organizations and NGOs with supranational interests - Allowed: Space agencies - Symbols, including flags and banners - Sport clubs - Allowed: Sport organizations - Yearly releases - Universities or other educational institutions - Any brands representing individuals rather than an organization, company or product. This includes musicians, bands, and social media personalities. If you are in doubt, feel free to submit it and we'll have a look. When submitting a request for a new or updated icon include helpful information such as: * **Issue Title:** The brand name. For example: * New Icons: `Request: GitHub Icon` * Icon Updates: `Update: GitHub Color` or `Update: GitHub Icon` * **Issue Body:** Links to official sources for the brand's icon and colors (e.g. media kits, brand guidelines, SVG files etc.) If you have an affiliation to the brand you are requesting that allows you to speak on their behalf then please disclose that in your issue as it can help speed up our research process. ## Adding or Updating an Icon **Note**: If you decide to add an icon without requesting it first, the requirements above still apply. ### 1. Identify Official Logos and Colors Most of the icons and brand colors on SimpleIcons have been derived from official sources. Using official sources helps ensure that the icons and colors in SimpleIcons accurately match the brand they represent. Thankfully, this is usually a simple process as organizations often provide brand guides and high quality versions of their logo for download. Official high quality brand logos and brand colors can usually be found in the following locations: 1. About pages, Press pages, Media Kits, and Brand Guidelines. 1. Website headers (you can use [svg-grabber](https://chrome.google.com/webstore/detail/svg-grabber-get-all-the-s/ndakggdliegnegeclmfgodmgemdokdmg) for Chrome) 1. Favicons 1. Wikimedia (which should provide a source) 1. GitHub repositories #### Icon Guidelines Working with an SVG version of the logo is best. In the absence of an SVG version, other vector filetypes may work as well (e.g. EPS, AI, PDF). In the absence of vector logos, a vector can be created from a high quality rasterized image, however this is much more labor intensive. If the icon includes a (registered) trademark icon we follow the guidelines below to decide whether to include the symbol or not: * If brand guidelines explicitly require including the symbol, it must be included. * If the symbol is incorporated into the design of the logo (e.g. [Intel](https://github.com/simple-icons/simple-icons/blob/develop/icons/intel.svg)), it must be included. * If there is ambiguity about the conditions under which the symbol is required, it must be included if it is a _registered trademark symbol_ (®) but not if is a _trademark symbol_ (™). * If brand guidelines say it _may_ be removed, usually when the icon is displayed at small sizes, it must not be included. * If there is no explicit requirement that a symbol must be included, it must not be included. #### Color Guidelines For color, the brand's primary color should be used. The official color of a brand is usually found in their brand guidelines, media kits, or some of the other locations mentioned above. If no official color can be identified, use the brand's primary web color or the most prominent color in the logo itself (please indicate why you choose the particular color in your pull request). Simple Icons stores brand colors in the standard 6 character hexadecimal format. ### 2. Extract the Icon from the Logo There are many different tools for editing SVG files, some options include: | Name | Description | Platform | Price | | :---- | :---- | :----: | :----: | | [Inkscape](https://inkscape.org/en/) | Vector Graphics Editor | Windows, Mac, Linux | Free | | [Affinity Designer](https://affinity.serif.com/de/designer/) | Vector Graphics Editor | Windows, Mac | $ | | [Adobe Illustrator](https://www.adobe.com/products/illustrator.html) | Vector Graphics Editor | Windows, Mac | $ - $$$ | | [IcoMoon](https://icomoon.io/) | Icon Editing/Management Tool | Online | Free | Using your preferred tool you should: 1. Isolate the icon from any text or extraneous items. 1. Merge any overlapping paths. 1. Compound all paths into one. 1. Change the icon's viewbox/canvas/page size to 24x24. 1. 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. 1. Center the icon horizontally and vertically. 1. Remove all colors. The icon should be monochromatic. 1. Export the icon as an SVG. ### 3. Optimize the Icon All icons in Simple Icons have been optimized with the [SVGO tool](https://github.com/svg/svgo). This can be done in one of two ways: * The [SVGO Command Line Tool](https://github.com/svg/svgo) * Install dependencies * With npm: `npm install` from the root of this repository * Run the following command `npm run svgo -- icons/file-to-optimize.svg` * Check if there is a loss of quality in the output, if so increase the precision. * The [SVGOMG Online Tool](https://jakearchibald.github.io/svgomg/) * Click "Open SVG" and select an SVG file. * Set the precision to about 3, depending on if there is a loss of quality. * Leave the remaining settings untouched (or reset them with the button at the bottom of the settings). * Click the download button. * The [SVGO Command Line Tool](https://github.com/svg/svgo) in Docker * If none of the options above work for you, it is possible to build a Docker image for compressing the images. * Build: `docker build . -t simple-icons` * Run: `docker run --rm -v ${PWD}/icons/file-to-optimize.svg:/image.svg simple-icons` After optimizing the icon, double-check it against your original version to ensure no visual imperfections have crept in. Also make sure that the dimensions of the path have not been changed so that the icon no longer fits exactly within the canvas. We currently check the dimensions up to a precision of 3 decimal points. ### 4. Annotate the Icon Each icon in Simple Icons has been annotated with a number of attributes and elements to increase accessibility. These include: * An svg element with: * An img role attribute. * `role="img"` * A 24x24 viewbox. * `viewBox="0 0 24 24"` * The svg namespace. * `xmlns="http://www.w3.org/2000/svg"` * A title element (Note the format). * `