{"id":19464412,"url":"https://github.com/arrowtype/recursive-code-config","last_synced_at":"2025-04-25T09:31:29.855Z","repository":{"id":44639082,"uuid":"285957613","full_name":"arrowtype/recursive-code-config","owner":"arrowtype","description":"Customize your own version of Recursive for code. Build your own, or find the built fonts in releases within the main Recursive repo.","archived":false,"fork":false,"pushed_at":"2023-11-16T00:35:31.000Z","size":30495,"stargazers_count":120,"open_issues_count":4,"forks_count":52,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-03T19:39:15.610Z","etag":null,"topics":["code","fonts"],"latest_commit_sha":null,"homepage":"https://github.com/arrowtype/recursive","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arrowtype.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-08-08T02:25:04.000Z","updated_at":"2025-03-19T20:10:01.000Z","dependencies_parsed_at":"2023-11-16T01:30:47.150Z","dependency_job_id":"29fead55-ae72-4576-ab16-285bf321a63c","html_url":"https://github.com/arrowtype/recursive-code-config","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrowtype%2Frecursive-code-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrowtype%2Frecursive-code-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrowtype%2Frecursive-code-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arrowtype%2Frecursive-code-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arrowtype","download_url":"https://codeload.github.com/arrowtype/recursive-code-config/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250790066,"owners_count":21487740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code","fonts"],"created_at":"2024-11-10T18:14:57.853Z","updated_at":"2025-04-25T09:31:28.911Z","avatar_url":"https://github.com/arrowtype.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Customize Recursive for Code\n\n```\n#                                             /$$$$$$     /$$                  \n#                                            /$$    /    /  /             $$$  \n#    /$$$$$$$    /$$$$$$$    /$$ $$$$$    /$$$$$$$$$   /$$$$$      /$$$$$$$ /  \n#   /$$_____/   /$$____ $$  | $$$___ $$  |___ $$___/  |___ $$     /$$     $$   \n#  | $$        | $$   | $$  | $$   | $$     | $$         | $$    \\  $$$$$$$    \n#  | $$        | $$   | $$  | $$   | $$     | $$         | $$     \\  $$   /    \n#  \\  $$$$$$$  \\  $$$$$$$   | $$   | $$   /$$$$$$$$$  /$$$$$$$$$  / $$$$$$$$   \n#   \\_______/   \\_______/   |__/   |__/  |_________/ |_________/ | $$      $$  \n#                                                                \\  $$$$$$$$   \n#                                                                 \\_______/    \n```\n\nYou can get premade Recursive fonts for Desktop, Web, \u0026 Code at https://github.com/arrowtype/recursive/releases/latest. If you are just looking for the premade fonts for code, they are also in this repo within the `fonts` folder. But, if you want to customize your own build of Recursive for Code, you can run the script in this repo!\n\nIf you find issues in this customization workflow, please report them in this repo’s [Issues](https://github.com/arrowtype/recursive-code-config/issues).\n\nIf you find issues in the fonts themselves, please report them in the [Recursive project Issues](https://github.com/arrowtype/recursive/issues).\n\n\n## Usage\n\nThe basic way to use this tool is to:\n\n1. Clone the repo and install dependencies (you may wish to fork first, so you can save your preferences to GitHub)\n2. Configure your font options in `config.yaml`\n3. Run the build script\n4. Install the fonts and activate `calt` in your coding app, if you want the code ligatures to be active\n\nThis instantiates custom fonts for Regular, Italic, Bold, and Bold Italic styles, which you can then use in your preferred editor. One VS Code theme that supports Italics is the [Recursive Theme](https://github.com/arrowtype/recursive-theme).\n\n### Video tutorial for Python beginners\n\nHere’s a step-by-step video tutorial, if you aren’t used to working with Python projects like this one:\n\n[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/xEVrdlp24ss/0.jpg)](https://www.youtube.com/watch?v=xEVrdlp24ss)\n\nYou can also follow the instructions below. I have tried to make them pretty granular. My advice is to try the instructions below, and watch the video if you get stuck. If you get _really_ stuck, please [file an issue](https://github.com/arrowtype/recursive-code-config/issues))! It may not be your fault.\n\n### Step-by-step guide\n\n#### Prerequisites for this Python project\n\n- To work directly with these examples, you should have [Git set up on your computer](https://help.github.com/en/github/getting-started-with-github/set-up-git).\n- To run the font-building script, you must also [Download Python](http://python.org/download/) and install it if you haven’t already.\n- This uses a virtual environment to keep installed Python modules contained. If you are used to using node_modules in a JavaScript-based project, it’s somewhat similar to that.\n\nIn a terminal, use `cd` to get to a folder you want this project in. Then, clone the repo and move into it:\n\n```\ngit clone https://github.com/arrowtype/recursive-code-config.git\ncd recursive-code-config\n```\n\n##### Using the venv, on macOS (and maybe Linux?)\n\nThen, set up the venv and install requirements:\n\n```bash\npython3 -m venv venv             # make a virtual environment called \"venv\"\nsource venv/bin/activate         # activate the virtual environment\npip install -r requirements.txt  # install dependencies\n```\n\n##### Using the venv, on Windows\n\nSetting up the venv and install requirements is slightly different in Windows, in my testing. Navigate to the project in a terminal, and then use the following commands:\n\n```bash\npy -m venv venv                  # make a virtual environment called \"venv\"\nvenv\\Scripts\\activate            # activate the virtual environment \npip install -r requirements.txt  # install dependencies\n```\n\n#### 1. Customize your font settings in `config.yaml`\n\nThis file uses YAML. Hopefully, it is fairly self-explanatory. If not, file an issue and someone will hopefully help out!\n\nFirst, specify the family name you want (e.g. `Rec Mono Custom`). \n\nThen, specify axis values you want for Regular, Italic, Bold, \u0026 Bold Italic fonts.\n\nThen, specify whether you want code ligatures on by default. Mark `True` for yes or `False` for no.\n\nFinally, you can copy in the font feature options you want:\n\n```yaml\n# These options only have an affect at CRSV\u003c=0.5 (Roman/normal styles)\n- ss01 # Single-story a\n- ss02 # Single-story g\n- ss03 # Simplified f\n- ss04 # Simplified i ### NOT CURRENTLY WORKING, see issue #4\n- ss05 # Simplified l\n- ss06 # Simplified r\n\n# These options affect both Roman \u0026 Cursive styles\n- ss07 # Simplified italic diagonals (kwxyz) ### NOT CURRENTLY WORKING, see issue #4\n- ss08 # No-serif L and Z\n- ss09 # Simplified 6 and 9\n- ss10 # Dotted 0\n- ss11 # Simplified 1\n- ss12 # Simplified @\n```\n\n![OpenType features](font-data/img/recursive-ot_features.png)\n\nIf you want to turn off all features, you can specify an empty array in YAML like this:\n\n```yaml\nFeatures: []\n```\n\n#### 2. Build the fonts!\n\nBuild the fonts by running the main Python script in the project:\n\n```bash\nsource venv/bin/activate         # activate the virtual environment if you haven’t already\npython3 scripts/instantiate-code-fonts.py\n```\n\nIt will build \u0026 output fonts to a folder like `RecMono-Custom` (this is affected by whatever custom name you give fonts in config.yaml).\n\n#### 3. Install the fonts and activate the ligatures!\n\nThis project saves the “code ligatures” to the `calt` feature of fonts, which is the feature most often used by code editors to control code ligatures.\n\nIn many apps, the `calt` feature will be on by default. In others, like VS Code, you will need to specifically turn it on. \n\nIn VS Code specifically, you can turn on `calt` by adding `fontLigatures` into the `settings.json` file and setting it to `true`:\n\n```JSON\n    \"editor.fontLigatures\": true\n```\n\n#### Building with other config files\n\nIf you wish to build fonts with premade configurations (or reference these), just add their path as an argument (replace `premade-configs/duotone.yaml` below):\n\n```bash\npython3 scripts/instantiate-code-fonts.py premade-configs/duotone.yaml\n```\n\nThis argument may also be helpful if you wish to create multiple custom versions. To experiment, just duplicate the `config.yaml` with a new filename, change the `Family Name` option, and run the script pointing to that new config file.\n\nHappy coding!\n\n## Updating to new versions of Recursive (maintainer notes)\n\nRecursive gets periodic updates, and this repo needs to get these updates, as well.\n\nCurrently, the process to bring in those updates is pretty simple:\n\n1. Copy the latest variable font (e.g. `Recursive_VF_1.0xx.ttf`) into the `font-data` folder, and delete the old one\n3. Activate the `venv` and run `scripts/build-all.sh \u003cFONTPATH\u003e` to build updated versions of the fonts\n\nThen, you can run the build according to the instructions above.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farrowtype%2Frecursive-code-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farrowtype%2Frecursive-code-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farrowtype%2Frecursive-code-config/lists"}