1
0
mirror of https://github.com/ryanoasis/nerd-fonts.git synced 2024-12-25 20:18:01 +02:00
nerd-fonts/contributing.md
Christian Kjær 6cc5a2527a
Update contribution instructions with fontforge --script
Following issue #225 it seems fontforge has updated how it behaves after installing. For a consistent experience across 
various operating systems (Ubuntu, macOS, etc), it seems we get better results by pre-pending `fontforge --script ..` 
before running the `font-patcher` script.
2021-01-03 14:40:17 +01:00

5.6 KiB

Contributing Guide

Working on your first Pull Request? You can learn how from this free series How to Contribute to an Open Source Project on GitHub

How to contribute

  • Fork the project from the master branch and submit a Pull Request (PR)
    • Explain what the PR fixes or improves
    • Screenshots for bonus points
  • Use sensible commit messages
    • If your PR fixes a separate issue number, include it in the commit message
  • Use a sensible number of commit messages as well
    • e.g. Your PR should not have 100s of commits

Steps for updating an existing font

1. Update original (unpatched) version

  • Copy and replace the existing unpatched version of the font and any readme and/or license files in the src/unpatched-fonts/XYZ-font directory
    • e.g. Updating XYZ Font, update files in directory src/unpatched-fonts/xyz/{PUT FONT FILES HERE}
    • Make sure to update the correct subfolders for each font style (e.g. src/unpatched-fonts/xyz/bold/{BOLD FONT FILES HERE})

2. Execute basic testing

  • Do a basic test with the new font to ensure it patches correctly and generates a new font file, e.g.
    • fontforge --script ./font-patcher src/unpatched-fonts/XYZ/XYZ.ttf --complete
    • Make sure to then delete this new font file if it is in the repository (all patched fonts should be generated in the patched-fonts directory)

3. Run build scripts

  • When fairly satisfied the font patches correctly, run the following scripts in this order:
    • Copy all the unpatched readmes to the patched location with additional info on variations appended:
      • ./standardize-and-complete-readmes.sh
    • Patch all of the variations/options, e.g.
      • ./gotta-patch-em-all-font-patcher\!.sh XYZ

Steps for adding a new font or removing an existing font

  • For removal of a font skip to Step #4

1. Verify license

  • Check the license even allows the font to be modified and shared

2. Add original (unpatched) version

  • Add the unpatched version of the font and any readme and/or license files to the src/unpatched-fonts/ directory inside a new directory
    • e.g. Adding XYZ Font, create directory src/unpatched-fonts/xyz/{PUT FONT FILES HERE}
    • Try to make subfolders for each font style (e.g. src/unpatched-fonts/xyz/bold/{BOLD FONT FILES HERE})

3. Execute basic testing

  • Do a basic test with the new font to ensure it patches correctly and generates a new font file, e.g.
    • fontforge --script ./font-patcher src/unpatched-fonts/XYZ/XYZ.ttf --complete
    • Make sure to then delete this new font file if it is in the repository (all patched fonts should be generated in the patched-fonts directory)

4. Run build scripts

  • When fairly satisfied the font patches correctly, run the following scripts in this order:
    • Copy all the unpatched readmes to the patched location with additional info on variations appended:
      • ./standardize-and-complete-readmes.sh
    • Patch all of the variations/options, e.g.
      • ./gotta-patch-em-all-font-patcher\!.sh XYZ

5. Update readme

  • Add the new font to the table of Patched Fonts
  • Update the "counts" in the Features Section
    • You can get this information by simply passing a second param to the "all patcher": ./gotta-patch-em-all-font-patcher\!.sh "" info
      • "X already patched font families" -> Give exact number from 'typefaces' line
      • "Over X unique combinations/variations..." -> round down to nearest hundred from 'variation' line
      • "Over X glyphs/icons combined" -> manual process for now (@todo)
  • Update the "counts" in the Combinations Section
    • Again, get this info from the "all patcher"

Things to keep in mind

  • Smaller Pull Requests are likely to be merged more quickly than bigger changes
  • This project is using a KISS Workflow
    • Pull Requests and bugfixes are directly merged into master after sanity testing
    • master is basically consider the main developer branch
      • We no longer wait to get changes into master when there is a release/milestone/version!
    • the release branches and version tags are considered stable and frozen
  • This project is using Semantic Versioning 2.0.0
    • If a bugfix or PR is not trivial it will likely end up in the next MINOR version
    • If a bugfix or PR is trivial or critical it will likely end up in the next PATCH version
  • Useful Pull Requests will get merged in eventually

Commit messages

  • Squashing to 1 commit is not required at this time
  • Use sensible commit messages (when in doubt: git log)
  • Use a sensible number of commit messages
  • If your PR fixes a specific issue number, include it in the commit message: "Fixes XYZ error (fixes #123)"

Code standards

Shell Scripts

Python

  • Use 4 spaces for indentation
  • Consider PEP8 and other (@todo)