1
0
Fork 0
mirror of synced 2024-05-14 01:23:30 +12:00

Compare commits

...

206 commits
3 ... master

Author SHA1 Message Date
Cyrill Küttel 34cced2a12 link to gnome-terminal issue for Ligatures 2024-02-29 17:53:30 +01:00
Nikita Prokopov ef565289eb Symbols for Legacy Computing: Set color to blue #1566 2024-01-02 17:09:24 +01:00
Nikita Prokopov 40fc56fc4e Add Block elements from the Symbols for Legacy Computing #1566 2024-01-02 17:08:12 +01:00
Josh McKinney f70e21b6e5 Remove makefile edit 2024-01-02 16:27:00 +01:00
Josh McKinney 2b2de1d7a0 Add rest of legacy block elements 2024-01-02 16:27:00 +01:00
Josh McKinney 525f223010 Add horizontal eighth combination blocks 2024-01-02 16:27:00 +01:00
Josh McKinney ea1a77ce75 Add combination one eighth blocks 2024-01-02 16:27:00 +01:00
Josh McKinney 6dfa7e2385 Add horizontal one eighth blocks 2024-01-02 16:27:00 +01:00
Josh McKinney 122cf42d40 Add Vertical eighth blocks and upper quarter block 2024-01-02 16:27:00 +01:00
Nikita Prokopov 747fab5be7 user.clj, nrepl -> socket repl 2024-01-02 16:26:52 +01:00
Nikita Prokopov f064e54c06
Update Notepad++ instructions link #1555 2023-11-09 14:41:46 +01:00
Ikko Eltociear Ashimine ba21c00cdf minor fix 2023-06-19 19:28:30 +02:00
Ikko Eltociear Ashimine 6f05dc2018 Add Japanese README 2023-06-19 19:28:30 +02:00
jim-p 5de1abb167 Update Compatibility List. Fixes #1532
* Adds several entries to Editors and Terminals lists
* Fixes some broken formatting and ordering in the
  second column of Editor list
2023-05-28 15:18:40 +02:00
matan h ee125da078 move Arduino IDE 2.0 to the Works list 2023-05-16 16:07:09 +02:00
matan h a47db68a73 add arduino-ide 2.0 to the explain message of arduino in editor compatibility list 2023-05-16 16:07:09 +02:00
Björn Kautler 79b02adef1 Add an example Docker call for MSYS2 based shells 2023-04-27 06:55:58 -07:00
Nikita Prokopov 20f11a21e0
Merge pull request #1514 from ecerulm/patch-1
Update README with cv01, ss01 , zero, onum, etc
2023-03-16 03:34:27 -07:00
Ruben Laguna f61975c306
Update README with cv01, ss01 , zero, onum, etc
Those are already reference in the images, but they are not searchable. 
By putting in the text is easier to find as you can search for calt, onum, zero, cv01, ss01, 
and find the relevant documentation
2023-03-16 08:36:54 +01:00
Nikita Prokopov b94cc3e0de
Merge pull request #1512 from snan/master
I don't understand why some are red and some are black.
2023-03-08 08:07:46 -08:00
Sandra Snan db910e4cd6 I don't understand why some are red and some are black.
Let's make it a little bit more consistent.
2023-03-08 10:08:02 +01:00
Nikita Prokopov 22c5754289
Tilix doesn’t work (closes #1506) 2023-02-22 16:42:08 +01:00
Nikita Prokopov 63976dd129
Minor tweaks #1501 2023-01-26 13:23:39 -08:00
Goooler a696ca56b0 Ignore IDEA files 2023-01-26 18:20:34 +08:00
Goooler f7a8ac72f2 Bump GHA versions 2023-01-26 18:20:02 +08:00
Nikita Prokopov a03fb501d3 Update scripts for fresh gftools and cross-platform mktemp 2023-01-17 18:35:09 +00:00
Nikita Prokopov e19f63e0e9
Merge pull request #1471 from ollicle/master
Docs: BBEdit support
2022-10-05 00:56:28 +02:00
Oliver Boermans 9f01d4d376 Docs: BBEdit support
[Latest version of BBEdit](https://www.barebones.com/support/bbedit/notes-14.6.html) supports ligatures once more.

BBEdit no longer requires expert preferences to enable ligatures

TextWrangler is no more – replaced by the unlicenced version of BBEdit.

Update the README files to reflect these changes.
2022-10-04 21:47:36 +10:30
Nikita Prokopov ab2aaf3e73 Misspelling of Haskell in Spanish README (closes #1463) 2022-09-01 17:32:32 +02:00
Nikita Prokopov 4cabdfdfb3
Merge pull request #1452 from ACnoway/master
Update README_CN.md
2022-08-03 15:53:16 +02:00
ACnoway aaafcd3702 update README_CN.md 2022-08-03 10:25:35 +08:00
ACnoway 4926aeac29 wiki Chinese translation 2022-08-02 19:13:50 +08:00
Nikita Prokopov c9d4324d90
Merge pull request #1446 from HyunseungLee-Travis/master
Update quotes to single quote
2022-07-23 02:12:56 +02:00
Hyunseung Lee 3b2506cd31
Update quotes to single quote 2022-07-23 08:33:34 +09:00
Nikita Prokopov caf00206a7
Merge pull request #1440 from xgdgsc/patch-1
fix cn translation regarding sponser
2022-07-13 20:52:58 +02:00
Nikita Prokopov 16de164e66
Merge pull request #1438 from ShalokShalom/patch-1
Move Godot to supported
2022-07-13 20:52:38 +02:00
xgdgsc a0130c91fa
fix cn translation 2022-07-12 22:41:22 +08:00
ShalokShalom c44df2bc5f
Correct order in compability list 2022-07-11 21:11:46 +02:00
ShalokShalom db40758747
Move Godot to supported
Godot resolved the hindering issue 2 years ago. 
Godot 4 ships by default with ligatures.
Issue https://github.com/godotengine/godot-proposals/issues/1180
2022-07-11 17:03:03 +02:00
Nikita Prokopov ad43187d10
Merge pull request #1429 from habere-et-dispertire/patch-1
Raku IDE Comma supports FiraCode
2022-06-30 16:39:04 +02:00
habere-et-dispertire 2a95184394
Raku IDE Comma supports FiraCode
Select installed FiraCode under Preferences... > Editor > Font
and toggle the checkbox Enable ligatures in the same place.
2022-06-29 23:59:46 +01:00
Nikita Prokopov 022693f6f0 Fixed overlap in U+2573 ╳ #1414 2022-05-22 22:58:46 +02:00
Nikita Prokopov 164956350f
Merge pull request #1400 from holazz/patch-readme-cn
docs: improve README_CN.md
2022-04-13 14:54:30 +02:00
holazz 7b20ec1e3b docs: improve README_CN.md 2022-04-13 16:35:22 +08:00
Nikita Prokopov ab6e682f93 Reformatted terminal compatibility list, added Wez’s terminal (closes #1397) 2022-04-01 16:55:14 +02:00
Nikita Prokopov d80b0f07f1 Fixed building on the latest fontmake 2022-03-15 18:11:40 +01:00
Nikita Prokopov 390c41cc94 Fixed build.sh to work on macOS, regen glyphs from *.fea 2022-03-15 15:51:00 +01:00
Fabian Preuß 31adb247e5 feat: allow hardcoding of features via arguments to build script
All features that were not already in their own files were pulled out of
FiraCode.glyphs into individual files. There is no way I will write
a parser for the glyphs file to do that at runtime. The build script
will then read the code in these feature files and appends it to the
`calt` property inside the glyphs file. Features to be baked in can be
given to build.sh as a comma separated list with the `-f / --features`
flag.

To more easily generate multiple font versions with different features
baked in, there are flags `-n / --family-name` for build.sh that will
allow users to set a custom family name for the font. The special value
"features" will append the feature list to the font name. The family
name is exported and used by the other build scripts as a directory to
separate different font versions. The filenames were not changed, the
directory name is enough separation.

The flag `-g / --generate-glyphs-only` will cause the script to exit
after the custom glyphs file has been created without actually building
the font. The custom .glyphs file will be saved as
`${family_name}.glyphs`.

Via another flag, `-w / --weights`, a comma separated list of font
weights to be generated can be given to build.sh.

The README received a hint to the new capabilities.

Fixed a mixup of cv25 and cv32.

The .gitignore was adjusted to better deal with the new directories and
files.
2022-03-15 15:34:25 +01:00
Nikita Prokopov 82180459c9 Removed accidental backgroundImage 2022-03-15 15:29:30 +01:00
Nikita Prokopov 8f4cc97fd5 Removed Docker build from Makefile 2022-03-15 15:29:30 +01:00
Nikita Prokopov a712db6f47
Merge pull request #1385 from VladWinner/master
README.md: Correcting the aspect ratio of images on phones
2022-03-06 20:31:28 +01:00
Vlad a258200a13
Correcting the aspect ratio of images on phones 2022-03-05 04:49:56 +03:00
Vlad 37855f9cf8
Correcting the aspect ratio of images on phones 2022-03-05 04:49:03 +03:00
Nikita Prokopov 4488dc4a66
Update WorkOS link 2022-02-09 17:40:30 +01:00
Nikita Prokopov dc096591b0
WorkOS sponsorship 2022-02-09 15:50:05 +01:00
Nikita Prokopov 383835769c
Merge pull request #1366 from jsoref/spelling
Spelling
2022-02-07 19:33:55 +01:00
Josh Soref f1725b4b4a spelling: to
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 19:19:50 -05:00
Josh Soref e4d1280121 spelling: successfully
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref 2c78d18533 spelling: similar
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref 8c616ac0dd spelling: proportion
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref f2fa4431b8 spelling: postscript
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref e6d6ecfcdf spelling: metadata
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref 54f1c04b68 spelling: intellij
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref 6d3291e32f spelling: inferred
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref b95464577a spelling: glyphs
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:49 -05:00
Josh Soref 7b29086fd2 spelling: conjunction
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:48 -05:00
Josh Soref 894d462c02 spelling: characters
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:48 -05:00
Josh Soref 9f66ca846f spelling: aren't
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:48 -05:00
Josh Soref 6462d0d3d3 spelling: apply
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:48 -05:00
Josh Soref f2b14f6dd8 spelling: amount
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2022-02-06 16:27:48 -05:00
Diego Sejas-Viscarra 5b90f15c94
Spanish improvements (#1360)
- Corrected a typo in one of the images in Spanish
- Improved the look of one of the images in Spanish

Co-authored-by: Diego Sejas-Viscarra <dsejas.math@m.me>
2022-01-31 19:08:35 +01:00
Keiran Harcombe 3de2fda715 Updated README.md to include TeXShop 2022-01-31 12:57:27 +01:00
Diego Sejas-Viscarra 1ecbc3ac56 Add Spanish README (LEEME) 2022-01-26 09:11:26 +01:00
Pablo 4c21593495 Fixed link to GNOME issue.
GNOME moved from Bugzilla to Gitlab. Fixed the link to the corresponding issue there.
2022-01-19 16:53:02 +01:00
墨抒颖 6cdf4a0583
Update README.md (#1341)
* Update README.md

加入简体中文翻译

* Update README.md

Co-authored-by: Nikita Prokopov <niki@tonsky.me>
2021-12-20 12:59:31 +01:00
墨抒颖 0d88d99bb1 Create README_CN.md
加入中文翻译
2021-12-20 12:57:15 +01:00
Nikita Prokopov eee6db9936 Fira Code 6.2 2021-12-06 21:52:45 +01:00
Nikita Prokopov 6e5ddfe4fc (hopefully) fixed monospaced #1325 2021-12-06 21:43:43 +01:00
Nikita Prokopov 16b04e0e4d
Fixed README after #1327 for good 2021-12-06 17:12:08 +01:00
Nikita Prokopov dea368f399
Fixed README after #1327 2021-12-06 16:06:18 +01:00
Amon Sha ab85072483 Update editor compatibility information for gVim 2021-12-06 15:34:31 +01:00
Nikita Prokopov 82936fc67e Fixed Fedora install instructions (closes #1319) 2021-12-04 14:04:38 +01:00
humzasiddiq2000 a3edab928e UPDATE download link 2021-12-03 23:24:14 +01:00
Nikita Prokopov 2927d174ff Fira Code v6.1 2021-12-03 17:52:29 +01:00
Nikita Prokopov bd4e557891 Fixed hinting settings to match Glyphs export #1315 2021-12-03 17:47:48 +01:00
Nikita Prokopov 8ff852e533 Stylistic sets showcases 2021-11-29 18:09:59 +01:00
Nikita Prokopov 4d5aaed215 Updated jsdelivr URLs 2021-11-29 17:02:58 +01:00
Nikita Prokopov fe7af86405 Fixed release link 2021-11-29 15:38:14 +01:00
Nikita Prokopov 47b8186471 6.0 Release 2021-11-29 15:28:48 +01:00
Nikita Prokopov aa68c08f1c Moved .= into cv32 #670 2021-11-29 15:25:58 +01:00
Nikita Prokopov 2cf5e1b3ed github release on tag 2021-11-29 15:14:10 +01:00
Nikita Prokopov 4bf6dfe4f3 Update README for v6 2021-11-29 15:13:54 +01:00
Nikita Prokopov 4905eb5151 github release on tag 2021-11-12 13:30:20 +00:00
Nikita Prokopov 776770e5f1 Update font version on CI 2021-11-12 13:30:20 +00:00
Andrew Archibald d172396be6 Fix missing script .sh extensions; add Docker build notes 2021-11-12 13:30:10 +00:00
Nikita Prokopov 650fd69b74 Fixed U+2242 Minus Tilde #1090 2021-11-06 00:49:55 +01:00
Nikita Prokopov 76de04fbb7 Added U+21AA Rightwards Arrow with Hook (closes #1307) 2021-11-05 23:48:05 +01:00
Nikita Prokopov aa9ea3dede Convert glyphs to 3.0.3 2021-11-05 23:34:36 +01:00
Nikita Prokopov fd5acad4fc Try CI in a Docker container tonsky/firacode:latest 2021-08-09 02:53:46 +02:00
Nikita Prokopov 6bf3854628 Removed binaries from git, fixed variable + Retina, added version to CI 2021-08-09 02:29:24 +02:00
Marco Bresciani f1f9767998
Add QOwnNotes as supported editor (#1261)
QOwnNotes is not a code editor but a plain-text file markdown note taking tool, and ligatures and Fira Code features are properly shown.
2021-06-29 14:56:11 +02:00
Nikita Prokopov 7d923625b4
Removed JetBrains from README (closes #1260) 2021-06-27 20:29:43 +02:00
Nikita Prokopov 0abda27a88
#1253 2021-06-11 20:35:50 +02:00
James Harris 4b1d987c65 docs: update editor compatibility for geany
Closes https://github.com/tonsky/FiraCode/issues/1252
2021-06-11 20:34:59 +02:00
Jeroendevr 4e040928e6 Update README.txt
Updated to work in latest brew versions. --cask command is outdated.
2021-05-12 00:44:57 +02:00
Joonas Niilola db85e7e6eb README.md: Add terminology to unsupported terminal list
Closes: #1236
2021-05-10 14:06:59 +02:00
Nikita Prokopov 6b13bc53d1 Added U+EE06..U+EE0B Circular progress indicator  #1182 2021-04-18 02:54:20 +02:00
Nikita Prokopov e5ee4115ba Alternative () cv31 (closes #1198) 2021-04-18 02:10:29 +02:00
Nikita Prokopov 7c879970f7 Added U+2237 Propotion (closes #1219) 2021-04-18 01:42:58 +02:00
Nikita Prokopov f7c77bff84 --- now makes a line (closes #1190) 2021-04-18 01:18:27 +02:00
Nikita Prokopov 75109548c8 Adjust |-| ligatures when cv30 is enabled (closes #1160) 2021-04-18 01:14:03 +02:00
Nikita Prokopov c5047ac007 Fixed weird look of ::< ::> <:: >:: #1145 2021-04-18 00:50:55 +02:00
Nikita Prokopov 1f0408bcb3 Removed cpsp, added strikeout position 2021-04-14 01:31:30 +02:00
Nikita Prokopov e9f9cd3b76 Added progress to showcases 2021-04-10 17:40:43 +02:00
Joshua Hamilton e7d9385716 Add CodeRunner and Nova to compatible editors
Nova just works, and CodeRunner has an option to enable ligatures.
2021-03-24 17:39:05 +01:00
Nikita Prokopov dbfa0defb0
Update README CSS import (closes #1220) 2021-03-24 17:38:36 +01:00
wiznillyp ef7c9b1593 Fixed formatting in Readme 2021-03-08 03:41:43 +01:00
wiznillyp c93367a0f7 Update README.md 2021-03-08 02:51:52 +01:00
Ikko Ashimine b029b9a2ef Fix typo in distr/README.txt
begining -> beginning
2021-03-05 12:27:43 +01:00
Andrew Archibald 9206171b31 Use Markdown links, add alt text for images not described by context 2021-02-19 00:34:41 +01:00
Andrew Archibald 888580a05a Use git-tagged version when packaging
`git describe --tags` returns a version string like '5.2-36-g15f7925'
when on commit g15f7925, which is 36 commits after the tag 5.2.
This is a more clear version when between releases.
2021-02-19 00:34:41 +01:00
Nikita Prokopov e2e526c971
Updated homebrew instructions #760 2021-02-18 14:37:54 +01:00
Matej Focko 15f7925625 Add GitHub Action for building
- Add script to bootstrap GitHub action
- Build fonts
- Upload directory with built fonts as artifacts

Signed-off-by: Matej Focko <me@mfocko.xyz>
2021-02-10 19:52:50 +01:00
Nikita Prokopov af5c3a45fa Added U+EE00..U+EE05 Progress Bar  (closes #1182) 2021-01-16 16:29:13 +01:00
Nikita Prokopov d42e5e4aaa
Update README.md 2021-01-05 13:06:04 +01:00
Gabriel Villela Noriega de Queiroz 415c773d6a Added U+FFFD Replacement Character (closes #1137) 2020-12-29 18:51:48 +01:00
Nikita Prokopov 3ff0138197
Reorganized terminal compatibility table #1164 2020-12-06 23:59:20 +01:00
Michael Vorburger ⛑️ bb660ca841 clarify Hyper Ligature support (currently broken)
see https://github.com/vercel/hyper/issues/3607
2020-12-06 23:32:26 +01:00
Michael Vorburger ⛑️ 1ef9f3a829 split Terminal compatibility list by Platform in README
https://github.com/railsware/upterm is removed, because deprecated (unmaintained).
2020-12-06 23:32:26 +01:00
cormullion 07666484a9 Update README.md
Add CotEditor (macOS, free from Mac App Store). Adding this because it's the best (free) text editing app on Mac as regards text handling.
2020-11-03 16:25:31 +01:00
Nikita Prokopov 4d385a806c Simplified ss06 code 2020-10-26 13:10:54 +01:00
Nikita Prokopov a0e08ea3f9 Mono Lisa affiliate link 2020-10-23 11:27:03 +02:00
Nikita Prokopov d6ffaa44f7 Added U+220E End of Proof (closes #1115) 2020-10-11 22:55:26 +02:00
Nikita Prokopov 28fb42cf1a Restored short | by default, long one moved to cv30 (closes #843) 2020-10-11 22:45:06 +02:00
Nikita Prokopov 92eb35ffac Added numbersign_braceleft.liga.cv29 #{ 2020-10-11 21:04:14 +02:00
Nikita Prokopov 94450a374d Hexagonal * cv16 #708 #1134 2020-10-11 01:11:57 +02:00
Nikita Prokopov acd502658b Returned {. .} as cv28 (closes #875) 2020-10-10 23:29:37 +02:00
Nikita Prokopov 00c09d322d Returned full ligatures for Fl Tl fi fj fl ft as ss10 2020-10-10 23:18:05 +02:00
Nikita Prokopov d1737c0c43 Added :- to cv26 (closes #790) 2020-10-10 23:02:05 +02:00
Nikita Prokopov b67c841c35 /= as not equals cv24 (closes #125) 2020-10-10 22:38:43 +02:00
Nikita Prokopov 89e0af072d C-style compound assignment >>= <<= ||= |= are not combined with equal sign by default. Old behavior is moved into ss09 (closes #974) 2020-10-10 22:30:01 +02:00
Nikita Prokopov df07894745 Moved .- into dlig #1103, added =< #34 2020-10-08 13:55:10 +02:00
Nikita Prokopov 20bd0e45c4 cv16 upper asterisk, cv17 upper tilde, cv18 alternative percent 2020-09-18 18:25:50 +02:00
Nikita Prokopov 3c6fe32a1d cv15 braces 2020-09-18 15:26:34 +02:00
Nikita Prokopov 0547175ddc
Update FUNDING.yml 2020-09-13 19:12:41 +02:00
Nikita Prokopov 1081fc9525 cv14 three variant 2020-09-06 21:39:26 +02:00
Nikita Prokopov ad21f017b6 cv11-cv13 zero variants 2020-09-06 21:19:32 +02:00
Nikita Prokopov 8143fbb009 cv03-cv10 i and l variants 2020-09-03 19:50:22 +02:00
Nikita Prokopov cda551a87c cv01 (single-storey a) and cv02 (single-storey g) 2020-09-01 15:43:23 +02:00
Nikita Prokopov 98774d8c05 Redrew U+27F0..U+27FF Supplemental Arrows-A to be strict monospace ⟲⟳⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿ 2020-08-31 19:19:10 +02:00
Nikita Prokopov e2ae5061fd Added new enclosed characters from Unicode 13 U+0229C , U+1F10D 🄍, U+1F10E 🄎, U+1F10F 🄏, U+1F16D 🅭, U+1F16E 🅮, U+1F16F 🅯, U+1F1AD 🆭 (closes #1070) 2020-08-07 22:18:40 +02:00
Nikita Prokopov 0124c98e1f Added U+2241..U+224B ≁ ≂ ≃ ≄ ≅ ≆ ≇ ≉ ≊ ≋ (closes #1090) 2020-08-07 20:54:15 +02:00
Nikita Prokopov a2363fea8b Fixed height of U+2211 N-ARY SUMMATION (closes #1083) 2020-08-07 18:03:46 +02:00
Shen Huang 64c21a4213 Fixed connected lines, adjusted alignment 2020-07-28 21:08:36 +02:00
Bharat Patodi 1a60382d12 Made some grammatical changes
Minor grammatical changes
2020-07-14 13:04:48 +02:00
Tommy Wang f967f62036 Dockerize build 2020-06-17 22:13:23 +02:00
Nikita Prokopov 6fc75b41f9
Eclipse now works https://bugs.eclipse.org/bugs/show_bug.cgi?id=398656 2020-06-17 16:37:01 +02:00
Nikita Prokopov e367fa4871 bump package.json 2020-06-12 15:19:56 +02:00
Nikita Prokopov 8da49d55f8 Fixed hinting problems caused by build_ttf (closes #1075) 2020-06-12 15:18:38 +02:00
Nikita Prokopov 9fdb974361
closes #1077 2020-06-11 15:52:11 +02:00
Jiachen Yang 66ce8c3c57 Suggest to install ttf version in Arch Linux
The otf-fira-code package is just removed from Arch Linux community repo. ttf-fira-code is distributed from the start. 
Related #939
2020-06-11 15:51:16 +02:00
Nikita Prokopov 216c286f7a Fixed monospace property broken by adding threeemdash #1073 2020-06-10 22:20:11 +02:00
Nikita Prokopov 5cfaa1eacf fixed v5 in the picture 2020-06-08 16:35:26 +02:00
Nikita Prokopov 63c6434ab7 Fira Code v5 2020-06-08 16:10:00 +02:00
Nikita Prokopov 2a76d96b8d Added ss08 that adds gaps to == === != !== (closes #383) 2020-06-08 14:35:34 +02:00
Nikita Prokopov 8f0098bf23 Fixed U+27F8 U+27F9 U+27FA U+27FD U+27FE U+27FF that were broken in v4 (closes #1067) 2020-06-08 02:35:00 +02:00
Nikita Prokopov f95f930937 Added U+21B0..U+21B3 ↰↱↲↳, U+2770..U+2771 ❰❱ (closes #1032) 2020-06-08 02:17:09 +02:00
Nikita Prokopov 267a6fd221 Added //= =// =//= (closes #816) 2020-06-08 01:53:13 +02:00
Nikita Prokopov d41386567b Fixed STAT table in FiraCode-VF.ttf (closes #1054) 2020-06-08 01:04:36 +02:00
Nikita Prokopov 1471298321 Disable =/ because of conflicts with paths PATH=/... (closes #1056) 2020-06-07 23:49:39 +02:00
Nikita Prokopov 176cecd240 Make U+2388 Helm Symbol single-width (closes #1036) 2020-06-05 23:06:24 +02:00
Nikita Prokopov 5eb4ec07b3 Vertically-aligned colons, greater/less signs (closes #980, closes #1061) 2020-06-05 22:32:32 +02:00
Nikita Prokopov 35d2418440 Fixed arrows next to lowercase letters (closes #1049 closes #1059) 2020-06-05 21:28:13 +02:00
Nikita Prokopov 70827e8b7a Added U+2E3A 2-em dash , U+2E3B 3-em dash (closes #1019) 2020-06-05 16:47:11 +02:00
Nikita Prokopov e25f170874 Added U+2236 Ratio (closes #926) 2020-06-05 16:42:55 +02:00
Nikita Prokopov cb5ab83146 Fixed Box drawing diagonal lines U+2571 U+2572 U+2573 (closes #929) 2020-06-05 16:39:28 +02:00
strupo 1a76caac64 specimen.html: Use HTML entities for < and > 2020-05-20 16:22:48 +02:00
Nikita Prokopov 44560d352d Fixed typo (closes #1047) 2020-05-20 13:37:08 +02:00
Nikita Prokopov 9a9a100be1 typo (closes #1045) 2020-05-19 13:37:42 +02:00
Nikita Prokopov d42e7276fa Fira Code v4 2020-05-18 04:10:03 +02:00
Nikita Prokopov 5ef7ba1bf9 Bugs 2020-05-17 23:24:09 +02:00
Nikita Prokopov 06a7b3994d Introduced ligatures priorities 2020-05-16 04:22:24 +02:00
Nikita Prokopov cf2979c97b Numbersign sequences #1014 2020-05-15 16:16:30 +02:00
Nikita Prokopov 3e6f5d195d Fixed asciitilde-based arrows 2020-05-15 03:59:45 +02:00
Nikita Prokopov 524a28629b Catching bugs 2020-05-15 03:51:54 +02:00
Nikita Prokopov c1c62fd720 Arbitrary length underscores 2020-05-14 15:46:47 +02:00
Nikita Prokopov 6bb26fc5fc Disalbed >=< =< |||, added slash_start.darw slash_middle.darw slahs_end.darw colon_middle.darw exclam_middle.darw 2020-05-14 00:21:31 +02:00
Nikita Prokopov ace859529f Extracted other features and classes into separate files, fixed few ligatures conflicts with arrows 2020-05-13 22:52:46 +02:00
Hugo Locurcio 3843439a55 Mention that Godot doesn't support ligatures in the README 2020-05-13 17:26:55 +02:00
Nikita Prokopov 8cc5687a3a Equal-based arrows #346, substitute features from *.fea files 2020-05-13 01:42:49 +02:00
Nikita Prokopov 63292642c3 Middles for hyphen arrows #346 2020-05-11 03:38:37 +02:00
Nikita Prokopov 6c8a2839cd Bar and double bar endings for hyphen arrows #346 2020-05-11 02:41:12 +02:00
Nikita Prokopov e91e955626 Arbitrary-long hyphen arrows #346 2020-05-10 23:23:35 +02:00
Nikita Prokopov cbb7575e97 fixed commareversedabovecomb width 1201 2020-05-10 20:32:12 +02:00
Nikita Prokopov 19fd32dc95 Undid #995 and properly fixed U+04CB Ӌ, U+04CCӌ (closes #1001) and U+0449 щ (closes #1007). Fixed descender in U+040F Џ 2020-05-10 20:22:18 +02:00
Nikita Prokopov 7b0eec6a25 Undo #995 2020-05-10 20:22:18 +02:00
meased b282a970c2 Add st to supported terminals 2020-05-07 23:32:49 +02:00
Nikita Prokopov 9ff4b50cc4 Closed #1028 2020-05-07 19:32:33 +02:00
Haokang Den 532fba44b4 Add Xi Editor to the editor compatibility list 2020-04-18 19:22:42 +02:00
Nikita Prokopov e9943d2d63 Fira Code v3.1 2020-04-15 19:34:18 +02:00
Nikita Prokopov 6c5f328244 Fixed U+0314 COMBINING REVERSED COMMA ABOVE (closes #997) 2020-04-15 19:22:40 +02:00
Nikita Prokopov 00cfe69868 Fixed U+03F4 ϴ (closes #996) 2020-04-15 19:11:50 +02:00
Nikita Prokopov bd081655ed Fixed misplaced descenders on U+04B3 ҳ U+04CB Ӌ and U+04CCӌ (closed #995) 2020-04-15 19:05:50 +02:00
Nikita Prokopov 6d3758123c Fixed width of Germandbls, cornerbracketleft, cornerbracketleft, negativeAcknowledge-control, cornerbracketleft.half, cornerbracketright.half (closes #1000) 2020-04-15 18:51:08 +02:00
Shawn MacIntyre 86090f3f34 Updated README Browser Support to version 3
The README still pointed to version 2 in the Browser support section.
2020-04-13 15:49:54 +02:00
Nikita Prokopov 660cd379bc npm version bump 2020-04-09 19:18:10 +02:00
188 changed files with 45305 additions and 28568 deletions

2
.github/FUNDING.yml vendored
View file

@ -1,3 +1,3 @@
github: [tonsky]
patreon: tonsky
custom: https://paypal.me/nikitonsky
custom: https://paypal.me/nikitaprokopov

27
.github/workflows/build.yml vendored Normal file
View file

@ -0,0 +1,27 @@
on:
push:
branches:
- '*'
tags:
- '[0-9]+.[0-9]+'
paths:
- '.github/workflows/**'
- 'FiraCode.glyphs'
- 'script/**'
jobs:
build:
runs-on: ubuntu-latest
container: tonsky/firacode:latest
steps:
- uses: actions/checkout@v3
- if: startsWith(github.ref, 'refs/tags/')
run: python3 ./script/update_version.py
- run: ./script/build.sh
- run: echo "hash=$(git rev-parse --short $GITHUB_SHA)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v3
with:
name: Fira_Code_${{ env.hash }}
path: distr
- if: startsWith(github.ref, 'refs/tags/')
run: python3 ./script/release.py

15
.gitignore vendored
View file

@ -1,12 +1,19 @@
*.zip
FiraCode_liga.glyphs
FiraCode_mess.glyphs
target
clojure/*.edn
FiraCode\ (Autosaved).glyphs
.cpcache
.repl-port
master_ufo
instance_ufo
venv
.DS_Store
*.numbers
*.numbers
distr/*/
*.glyphs
!FiraCode.glyphs
.idea
.fleet
*.iml

View file

@ -7,4 +7,4 @@
Mozilla Foundation (https://www.mozilla.org/en-US/contact/)
Telefonica S.A.
Nikita Prokopov (prokopov@gmail.com) github.com/tonsky
Nikita Prokopov (niki@tonsky.me) github.com/tonsky

View file

@ -2,7 +2,114 @@
All notable changes to this project will be documented in this file.
#### 3.0
### 7.0
- Fixed overlap in U+2573 #1414
### 6.2
- Fixed monospaced property #1325
### 6.1
- Fixed hinting settings to match Glyphs export #1315
### 6.0
Unicode:
- Fixed height of `∑` U+2211 N-ARY SUMMATION #1083
- Added U+2241..U+224B `≁ ≂ ≃ ≄ ≅ ≆ ≇ ≉ ≊ ≋` #1090
- Added new enclosed characters from Unicode 13 U+0229C `⊜`, U+1F10D `🄍`, U+1F10E `🄎`, U+1F10F `🄏`, U+1F16D `🅭`, U+1F16E `🅮`, U+1F16F `🅯`, U+1F1AD `🆭` #1070
- Redrew U+27F0..U+27FF Supplemental Arrows-A to be strict monospace `⟲⟳⟴⟵⟶⟷⟸⟹⟺⟻⟼⟽⟾⟿` #1109 #1123
- Added U+220E End of Proof `∎` #1115
- Added U+FFFD Replacement Character `<60>` #1137, thanks @gjvnq
- Added U+EE00..U+EE0B Progress Bar `` #1182
- Added U+2237 Proportion `∷` #1219
- Added U+21AA Rightwards Arrow with Hook `↪` #1307
Changed:
- Fixed weird look of `::<` `::>` `<::` `>::` #1145
- `---` now makes a line #1190
Removed:
- C-style compound assignment `>>=` `<<=` `||=` `|=` are not combined with equal sign by default. Old behavior is moved into `ss09` #974
- Restored short `|` by default, long one moved to `cv30` #843 #1160
- Moved `.-` into `cv25` #670 #860 #1103
- Moved `.=` into `cv32` #670
- Removed named “Retina” instance from FiraCode-VF.ttf (you can still get it by setting `wght=450`) #1318
Added (variants):
- Alternative `a` `cv01` #949
- Alternative `g` `cv02` #886
- Alternative `i` `cv03`-`cv06`
- Alternative `l` `cv07`-`cv10` #899
- Alternative `0` `cv11`-`cv13`
- Alternative `3` `cv14`
- Top-aligned `*` `cv15`
- Hexagonal `*` `cv16` #708 #1134
- Top-aligned `~` `cv17`
- Alternative `%` `cv18`
- `<=` with a horizontal bar `cv19`
- `<=` as an arrow `cv20` #34 #696 #858
- `=<` as less than or equal `cv21` #34
- `=<` as less than or equal with horizontal bar `cv22` #34
- `>=` with a horizontal bar `cv23`
- `/=` as not equals `cv24` #125
- Added `:-` to `cv26` #790
- Returned `[]` as `cv27`
- Returned `{. .}` as `cv28` #875 #635 #409 #279 #264 #214
- Alternative `{}` `cv29`
- Returned full ligatures for `Fl` `Tl` `fi` `fj` `fl` `ft` as `ss10`
- Alternative `()` `cv31` #1198
#### 5.2 (June 12, 2020)
- Fixed hinting problems caused by build_ttf #1075
#### 5.1 (June 10, 2020)
- Fixed monospace property broken by adding threeemdash #1073
#### 5.0 (June 8, 2020)
- Fixed Box drawing diagonal lines U+2571 `` U+2572 `╲` U+2573 `` #929
- Added U+2236 Ratio `` #926
- Added U+2E3A 2-em dash `⸺`, U+2E3B 3-em dash `⸻` #1019
- Fixed arrows next to lowercase letters #1049 #1059
- Vertically-aligned colons, greater/less signs #980 #1061
- Make U+2388 Helm Symbol `⎈` single-width #1036
- Disable `=/` because of conflicts with paths `PATH=/...` #1056
- Fixed STAT table in FiraCode-VF.ttf #770 #1054
- Added `//=` `=//` `=//=` #816
- Added U+21B0..U+21B3 `↰ ↱ ↲ ↳`, U+2770..U+2771 `❰ ❱` #1032
- Fixed U+27F8 `⟸` U+27F9 `⟹` U+27FA `⟺` U+27FD `⟽` U+27FE `⟾` U+27FF `⟿` that were broken in v4 #1067
- Added `ss08` that adds gaps to `==` `===` `!=` `!==` #187 #383
- Removed OTF from distr to avoid confusion #939
#### 4.0 (May 18, 2020)
Removed 44 individual arrow ligatures, replaced with four universal, combinative substitutions. 100-150% faster shaping performance, infinite amount of arrow combinations.
- Arbitrary-long combinative hyphen-based arrows #346 #494 #713 #826 #968 #983 #1029
- Arbitrary-long combinative equal-based arrows #229 #234 #346 #494 #698 #826 #919 #931 #946 #948 #968 #1016 #1018 #1022
- Arbitrary-long underscores #120 #269 #346 #494
- Arbitrary-long numbersign sequences #1014
- Fixed descender in U+040F `Џ`
- Undid #995 and properly fixed U+04CB `Ӌ`, U+04CC `ӌ` #1001 and U+0449 `щ` #1007
- Added `|||` to prevent partial ligatures in `|||-|||` `|||=|||` #346
#### 3.1 (April 15, 2020)
- Fixed width of Germandbls, cornerbracketleft, cornerbracketleft, negativeAcknowledge-control, cornerbracketleft.half, cornerbracketright.half [#1000]
- Fixed misplaced descenders on U+04B3 `ҳ` U+04CB `Ӌ` and U+04CC `ӌ` [#995]
- Fixed U+03F4 `ϴ` [#996]
- Fixed U+0314 COMBINING REVERSED COMMA ABOVE [#997]
#### 3.0 (April 9, 2020)
- Disabled ligatures in progress bars `[-> [--> [---> [=> [==> [===>` [#968]
- Added set letters U+2102 `` U+210D `` U+2115 `` U+2119 `` U+211A `` U+211D `` U+2124 `` and U+1D539 `𝔹` [#841]
@ -80,7 +187,7 @@ All notable changes to this project will be documented in this file.
- Alternatives (stylistic sets):
- Lowercase `r` (ss01) [#601]
- Less than/greater than `<=` `>=` (ss02) [#263] [#617]
- Ampersand `&` (ss03) [#617]
- Ampersand `&` (ss03) [#371] [#617]
- Dollar sign `$` (ss04) [#617]
- At sign `@` (ss05) [#617] [#748] [#817]
- Thin backslash (ss06) [#577 #720 #825]
@ -162,7 +269,7 @@ All notable changes to this project will be documented in this file.
#### 1.102
- Support for IntelliJ-based IDEs ([instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions))
- Support for IntelliJ-based IDEs ([instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions))
- Turned on autohinting
#### 1.101

9
Dockerfile Normal file
View file

@ -0,0 +1,9 @@
FROM python:3
WORKDIR /opt
RUN pip install --upgrade Pillow==5.4.1 idna==2.8 requests==2.21.0 urllib3==1.24.1 pycairo==1.20.1 gftools==0.7.4 fontmake==2.4.0 fontbakery==0.8.0
RUN apt-get update && \
apt-get install -y ttfautohint && \
apt-get install -y woff2 && \
apt-get install -y sfnt2woff-zopfli

File diff suppressed because one or more lines are too long

240
LEEME.md Normal file
View file

@ -0,0 +1,240 @@
## Fira Code: la fuente monoespaciada con ligaduras gratuita para programación
![Fira Code](./extras/logo.svg)
Leer en [English](./README.md) | [简体中文](./README_CN.md) | [日本語](./README_JA.md)
### El problema
Los programadores usamos muchos símbolos, frecuentemente codificados con varios caracteres. Para el cerebro humano, sucesiones como `->`, `<=` o `:=` son unidades lógicas individuales, incluso si requieren dos o más caracteres en pantalla. Nuestros ojos utilizan una cantidad no nula de energía para leer, analizar y unir caracteres mútiples en una sola unidad lógica. Idealmente, todos los lenguajes de programación deberían estar diseñados para representar los operadores con símbolos Unicode; pero ese no es el caso aún.
### La solución
Fira Code es una fuente monoespaciada gratuita que contiene ligaduras para combinaciones multicaracter comunes en programación. Esta es simplemente una característica del renderizado de la fuente: el código subyacente permanece compatible con el estándar ASCII. Esto ayuda a leer y comprender más rápido el código. Para algunas sucesiones comunes, como `..` o `//`, las ligaduras nos permiten hacer correcciones en el espaciado.
### Descarga e instalación
<a href="https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip"><img alt="Fira_Code_v6.2.zip - Diciembre 6 de 2021 - 2.5 MB" src="./extras/download_es.png" width="520" height="130"></a>
Recursos adicionales (en inglés):
- [Cómo instalar](https://github.com/tonsky/FiraCode/wiki)
- [Resolución de problemas](https://github.com/tonsky/FiraCode/wiki#troubleshooting)
- [Noticias e información](https://twitter.com/FiraCode)
### Contribuyendo
<a href="https://github.com/sponsors/tonsky" target="_blank"><img alt="Contribuye" src="./extras/sponsor_es.png"></a>
Fira Code es un proyecto personal desarrollado en mi tiempo libre, sin financiamiento y con una enorme [lista de solicitudes](https://github.com/tonsky/FiraCode/issues). Si el resultado es de tu agrado, por favor considera apoyar a su desarrollo por medio de [GitHub Sponsors](https://github.com/sponsors/tonsky) o [Patreon](https://patreon.com/tonsky). ¡Cualquier ayuda cuenta!
### ¿Qué ofrece?
Izquierda: ligaduras renderizadas en Fira Code. Derecha: las mismas secuencias de caracteres sin ligaduras.
<img src="./extras/ligatures_es.png" width="812" height="1326">
Fira Code viene con una gran variedad de flechas. Mejor aun, ¡estas pueden hacerse tan largas como se desee y se pueden combinar los fragmentos incial/medio/final de la forma que se quiera!
<img src="./extras/arrows_es.png" width="754" height="799">
Fira Code no solo se trata de las ligaduras. Algunos ajustes se han hecho a la puntuación y a pares de letras frecuentes.
<img src="./extras/typographics_es.png" width="754" height="649">
Fira Code viene con algunas variantes de caracteres, de manera que cada uno puede escoger lo que mejor le convenga. [Cómo activar (en inglés)](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets)
<img src="./extras/character_variants_es.png" width="754" height="391">
Algunas ligaduras pueden alterarse o activarse usando conjuntos estilísticos/variantes de caracteres:
<img src="./extras/ligature_variants_es.png" width="754" height="561">
Siendo una fuente para programación, Fira Code tiene un soporte fantástico para dibujos ASCII/de cajas, powerline y otras formas de interfaz de usuario para terminal:
<img src="./extras/console_es.png" width="754" height="459">
Fira Code es la primera fuente para programación en ofrecer glifos dedicados al dibujo de barras de progreso:
<img src="./extras/progress.png" width="754" height="282">
En acción:
<img src="./extras/progress_es.gif" width="594" height="181">
Esperamos que más fuentes adopten esta convención y definan sus propias versiones.
La covertura del estándar Unicode hace de Fira Code una gran elección para la escritura matemática:
<img src="./extras/math_es.png" width="754" height="323">
### ¿Cómo luce?
<img src="./extras/samples.png" width="754" height="1068">
<img src="./extras/samples2.png" width="754" height="1257">
### Lista de compatibilidad con editores
| Funciona | No funciona |
|----------|-------------|
| **Abricotine** | **Arduino IDE** |
| **Android Studio** (2.3+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **Adobe Dreamweaver** |
| **Anjuta** (excepto con EOF) | **Delphi IDE** |
| **AppCode** (2016.2+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **Emacs** por sí solo ([solución alternativa](https://github.com/tonsky/FiraCode/wiki/Emacs-instructions)) |
| **Atom** 1.1 o más nuevo ([instrucciones](https://github.com/tonsky/FiraCode/wiki/Atom-instructions)) | **Godot** ([reporte](https://github.com/godotengine/godot/issues/9961)) |
| **BBEdit** (14.6+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/BBEdit-instructions)) | **IDLE** |
| **Brackets** (con [este plugin](https://github.com/polo2ro/firacode-in-brackets)) | **KDevelop 4** |
| **Chocolat** | **Monkey Studio IDE** |
| **CLion** (2016.2+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **UltraEdit** |
| **Cloud9** ([instrucciones](https://github.com/tonsky/FiraCode/wiki/Cloud9-Instructions)) |
| **Coda 2** |
| **CodeLite** |
| **CodeRunner** |
| **CotEditor** |
| **Eclipse** |
| **elementary Code** |
| **Geany** (1.37+) |
| **gEdit / Pluma** |
| **GNOME Builder** |
| **GoormIDE** ([instrucciones](https://github.com/tonsky/FiraCode/wiki/GoormIDE-Instructions)) |
| **gVim** ([Windows](https://github.com/tonsky/FiraCode/issues/462), [GTK](https://vimhelp.org/options.txt.html#%27guiligatures%27)) |
| **IntelliJ IDEA** (2016.2+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **Kate, KWrite** |
| **KDevelop 5+** |
| **Komodo** |
| **Leafpad** |
| **LibreOffice** |
| **LightTable** ([instrucciones](https://github.com/tonsky/FiraCode/wiki/LightTable-instructions)) |
| **LINQPad** |
| **MacVim** 7.4 o más nuevo ([instrucciones](https://github.com/tonsky/FiraCode/wiki/MacVim-instructions)) |
| **Mancy** |
| **MATLAB** ([instrucciones](https://github.com/tonsky/FiraCode/wiki/MATLAB-for-Windows-Instructions)) |
| **Meld** |
| **Mousepad** |
| **NeoVim-gtk** |
| **NetBeans** |
| **Notepad** (Windows) |
| **Notepad++** (con una [solución alternativa](https://github.com/notepad-plus-plus/notepad-plus-plus/issues/2287#issuecomment-256638098)) |
| **Notepad3** ([instrucciones](https://github.com/rizonesoft/Notepad3/issues/361#issuecomment-365977420))|
| **Nova** |
| **PhpStorm** (2016.2+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **PyCharm** (2016.2+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **QOwnNotes** (21.16.6+) |
| **QtCreator** |
| **Rider** |
| **RStudio** ([instrucciones](https://github.com/tonsky/FiraCode/wiki/RStudio-instructions)) |
| **RubyMine** (2016.2+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **Scratch** |
| **Scribus** (1.5.3+) |
| **SublimeText** (3146+) |
| **Spyder IDE** (solamente con Qt5) |
| **SuperCollider 3** |
| **TeXShop** |
| **TextAdept** (Linux, macOS) |
| **TextEdit** |
| **TextMate 2** |
| **VimR** ([instrucciones](https://github.com/qvacua/vimr/wiki#ligatures)) |
| **Visual Studio** (2015+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Visual-Studio-Instructions)) |
| **Visual Studio Code** ([instrucciones](https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions)) |
| **WebStorm** (2016.2+, [instrucciones](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **Xamarin Studio/Monodevelop** |
| **Xcode** (8.0+, alternativamente con [este plugin](https://github.com/robertvojta/LigatureXcodePlugin)) |
| **Xi** |
| Probablemente: **Smultron, Vico** | En duda: **Code::Blocks IDE** |
### Lista de compatibilidad con terminales
| Plataforma | Funciona | No funciona |
|----------------|----------|-------------|
| macOS | Hyper (ver [#3607](https://github.com/vercel/hyper/issues/3607))<br>iTerm 2<br>Kitty<br>Terminal.app<br>ZOC | Alacritty |
| Windows | Hyper (ver [#3607](https://github.com/vercel/hyper/issues/3607))<br>Mintty<br>Token2Shell<br>Windows Terminal | Alacritty<br>Cmder<br>ConEmu<br>PuTTY<br>Windows Console<br>ZOC |
| Linux | Hyper (ver [#3607](https://github.com/vercel/hyper/issues/3607))<br>Kitty<br>Konsole<br>QTerminal<br>Termux<br>st ([parche](https://st.suckless.org/patches/ligatures/)) | Alacritty<br>GNOME Terminal<br>Terminales basadas en libvte ([reporte](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)): <ul><li>gtkterm<li>guake<li>LXTerminal<li> sakura<li>Terminator<li>xfce4-terminal</ul>mate-terminal<br>rxvt<br>terminology<br>xterm
| ChromeOS | crosh ([instrucciones](https://github.com/tonsky/FiraCode/wiki/ChromeOS-Terminal)) | |
### Soporte en el navegador web
```html
<!-- HTML -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css">
```
```css
/* CSS */
@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);
```
```css
/* Especificar en el CSS */
code { font-family: 'Fira Code', monospace; }
@supports (font-variation-settings: normal) {
code { font-family: 'Fira Code VF', monospace; }
}
```
- IE 10+, Edge Legacy: activar con `font-feature-settings: "calt";`
- Firefox
- Safari
- Navegadores basados en Chromium (Chrome, Opera)
- ACE
- CodeMirror (activar con `font-variant-ligatures: contextual;`)
### Proyectos que usan Fira Code
- [CodePen](https://codepen.io/)
- [Blink Shell](http://www.blink.sh/)
- [Klipse](http://app.klipse.tech/)
- [IlyaBirman.net](http://ilyabirman.net/)
- [EvilMartians.com](https://evilmartians.com/)
- [Web Maker](https://webmakerapp.com/)
- [FromScratch](https://fromscratch.rocks/)
- [PEP20.org](https://pep20.org/)
### Alternativas
Fuentes monoespaciadas con ligaduras gratuitas:
- [Hasklig](https://github.com/i-tu/Hasklig)
- [Monoid](http://larsenwork.com/monoid/)
- [Fixedsys Excelsior](https://github.com/kika/fixedsys)
- [Iosevka](https://be5invis.github.io/Iosevka/)
- [DejaVu Sans Code](https://github.com/SSNikolaevich/DejaVuSansCode)
- [Victor Mono](https://rubjo.github.io/victor-mono/)
- [Cascadia Code](https://github.com/microsoft/cascadia-code)
- [JetBrains Mono](https://github.com/JetBrains/JetBrainsMono)
Fuentes monoespaciadas con ligaduras no gratuitas:
- [PragmataPro](http://www.fsd.it/fonts/pragmatapro.htm)
- [Mono Lisa](https://www.monolisa.dev/)
### Compilando Fira Code localmente
En caso que se quiera modificar el código en FiraCode.glyphs y compilar archivos OTF/TTF/WOFF propios, estas son las instrucciones que uso en macOS:
```bash
# instalar las herramientas requeridas para la compilación
./script/bootstrap_macos.sh
# compilar los archivos de la fuente
./script/build.sh
# instalar los OTFs en ~/Library/Fonts
cp distr/otf/*.otf ~/Library/Fonts
```
Alternativamnete, se puede compilar Fira Code usando Docker:
```bash
# instalar las dependencias en un contenedor y compilar los archivos de la fuente
make
# comprimir los archivos de la fuente en dist/ a un zip
make package
```
### Créditos
- Autor: Nikita Prokopov [@nikitonsky](https://twitter.com/nikitonsky)
- Basado en: [Fira Mono](https://github.com/mozilla/Fira)
- Inspirado por: [Hasklig](https://github.com/i-tu/Hasklig)

7
Makefile Normal file
View file

@ -0,0 +1,7 @@
all: build
build:
docker run --rm -v ${PWD}:/opt tonsky/firacode:latest ./script/build.sh
package:
./script/package.sh

226
README.md
View file

@ -1,6 +1,8 @@
## Fira Code: free monospaced font with programming ligatures
<img src="./extras/logo.svg">
![Fira Code](./extras/logo.svg)
Read in [Español](./LEEME.md) | [简体中文](./README_CN.md) | [日本語](./README_JA.md)
### Problem
@ -12,114 +14,108 @@ Fira Code is a free monospaced font containing ligatures for common programming
### Download & Install
**<a href="https://github.com/tonsky/FiraCode/releases/download/3/FiraCode_3.zip">Download Fira Code v3</a>**
<a href="https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip"><img alt="Fira_Code_v6.2.zip - December 6, 2021 - 2.5 MB" src="./extras/download.png" width="520"></a>
Then:
- <a href="https://github.com/tonsky/FiraCode/wiki">How to Install</a>
- <a href="https://github.com/tonsky/FiraCode/wiki#troubleshooting">Troubleshooting</a>
- <a href="https://twitter.com/FiraCode">News & Updates</a>
- [How to Install](https://github.com/tonsky/FiraCode/wiki)
- [Troubleshooting](https://github.com/tonsky/FiraCode/wiki#troubleshooting)
- [News & Updates](https://twitter.com/FiraCode)
### Support
### Sponsors
<a href="https://github.com/sponsors/tonsky" target="_blank"><img src="./extras/sponsor.png"></a>
Fira Code is a personal, free-time project with no funding and a huge [feature request backlog](https://github.com/tonsky/FiraCode/issues). If you love it, consider supporting its development via [GitHub Sponsors](https://github.com/sponsors/tonsky) or [Patreon](https://patreon.com/tonsky). Any help counts!
Fira Code is a personal, free-time project with no funding and huge [feature request backlog](https://github.com/tonsky/FiraCode/issues). If you love it, consider supporting its development via [GitHub Sponsors](https://github.com/sponsors/tonsky) or [Patreon](https://patreon.com/tonsky). Any help counts!
Huge thanks to:
<table>
<td align="center">
<a href="https://workos.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=firacode&utm_source=github">
<div>
<img src="https://user-images.githubusercontent.com/629429/151508669-efb4c3b3-8fe3-45eb-8e47-e9510b5f0af1.svg" width="290" alt="WorkOS">
</div>
<b>Your app, enterprise-ready.</b>
<div>
<sub>Start selling to enterprise customers with just a few lines of code. Add Single Sign-On (and more) in minutes instead of months.</sup>
</div>
</a>
</td>
</table>
### Whats in the box?
Left: ligatures as rendered in Fira Code. Right: same character sequences without ligatures.
<img src="./showcases/v3/all_ligatures.png">
<img src="./extras/ligatures.png" width="754">
Fira Code comes with a few different character variants, so that everyone can choose whats best for them. [How to enable](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets)
Fira Code comes with a huge variety of arrows. Even better: you can make them as long as you like and combine start/middle/end fragments however you want!
<img src="./showcases/v3/stylistic_sets.png">
<img src="./extras/arrows.png" width="754">
In addition to that, Fira Code contains huge variety of Unicode characters well-suited for technical writing, math formulas and terminal UIs.
Fira Code is not only about ligatures. Some fine-tuning is done for punctuation and frequent letter pairs.
<img src="./showcases/v3/unicode.png">
<img src="./extras/typographics.png" width="754">
### Code examples
Fira Code comes with a few different character variants (`cv01`, `cv02`, etc), stylistic sets (`ss01`, `ss02` , etc) and other font features (`zero`, `onum`, `calt`, etc), so that everyone can choose whats best for them. [How to enable](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets)
Ruby:
<img src="./extras/character_variants.png" width="754">
<img src="./showcases/v3/ruby.png">
Some ligatures can be altered or enabled using stylistic sets/character variants:
JavaScript:
<img src="./extras/ligature_variants.png" width="754">
<img src="./showcases/v3/javascript.png">
Being a programming font, Fira Code has fantastic support for ASCII/box drawing, powerline and other forms of console UIs:
PHP:
<img src="./extras/console.png" width="754">
<img src="./showcases/v3/php.png">
Fira Code is the first programming font to offer dedicated glyphs to render progress bars:
Erlang:
<img src="./extras/progress.png" width="754">
<img src="./showcases/v3/erlang.png">
In action:
Elixir:
<img src="./extras/progress.gif" width="560">
<img src="/showcases/v3/elixir.png">
We hope more programming fonts will adopt this convention and ship their own versions.
Go:
Unicode coverage makes Fira Code a great choice for mathematical writing:
<img src="./showcases/v3/go.png">
<img src="./extras/math.png" width="754">
LiveScript:
### How does it look?
<img src="./showcases/v3/livescript.png">
Clojure:
<img src="./showcases/v3/clojure.png">
Swift:
<img src="./showcases/v3/swift.png">
### Terminal compatibility list
| Works | Doesnt work |
| ------------------ | ------------------ |
| **Butterfly** | **Alacritty** |
| **crosh** (ChromeOS, [instructions](https://github.com/tonsky/FiraCode/wiki/ChromeOS-Terminal)) | **Windows Console (conhost.exe)** |
| **Hyper.app** | **Cmder** |
| **iTerm 2** ([3.1+](https://gitlab.com/gnachman/iterm2/issues/3568#note_13118332)) | **ConEmu** |
| **Kitty** | **GNOME Terminal** |
| **Konsole** | **mate-terminal** |
| **mintty** (partial support [2.8.3+](https://github.com/mintty/mintty/issues/601))| **PuTTY** |
| **QTerminal** | **rxvt** |
| **Terminal.app** | **xterm** |
| **Termux** | **ZOC** (Windows) |
| **Token2Shell/MD** | **gtkterm, guake, LXTerminal, sakura, Terminator, xfce4-terminal,** and other libvte-based terminals ([bug report](https://bugzilla.gnome.org/show_bug.cgi?id=584160)) |
| **upterm** |
| **Windows Terminal** |
| **ZOC** (macOS) |
<img src="./extras/samples.png" width="754">
<img src="./extras/samples2.png" width="754">
### Editor compatibility list
| Works | Doesnt work |
| ----- | -------------- |
| **Abricotine** | **Arduino IDE** |
| **Android Studio** (2.3+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **Adobe Dreamweaver** |
| **Anjuta** (unless at the EOF) | **Delphi IDE** |
| **AppCode** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **Eclipse** (Windows, [vote here](https://bugs.eclipse.org/bugs/show_bug.cgi?id=398656)) |
| **Atom** 1.1 or newer ([instructions](https://github.com/tonsky/FiraCode/wiki/Atom-instructions)) | Standalone **Emacs** ([workaround](https://github.com/tonsky/FiraCode/wiki/Emacs-instructions)) |
| **BBEdit/TextWrangler** (v. 11 only, [instructions](https://github.com/tonsky/FiraCode/wiki/BBEdit-instructions)) | **Geany** (Windows) |
| **Brackets** (with [this plugin](https://github.com/polo2ro/firacode-in-brackets)) | **gVim** (Windows [workaround](https://github.com/tonsky/FiraCode/issues/462)) |
| **Chocolat** | **IDLE** |
| **CLion** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **KDevelop 4** |
| **Cloud9** ([instructions](https://github.com/tonsky/FiraCode/wiki/Cloud9-Instructions)) | **MATLAB** |
| **Coda 2** | **Monkey Studio IDE** |
| **CodeLite** | **UltraEdit** |
| **Eclipse** (macOS 4.7+, Linux) | |
| **elementary Code** | |
| **Geany** (macOS) |
|-------|----------------|
| **Arduino IDE** (2.0+,same instructions as [vscode](https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions)) | **Adobe Dreamweaver** |
| **Abricotine** | **Delphi IDE** |
| **Android Studio** (2.3+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) | Standalone **Emacs** ([workaround](https://github.com/tonsky/FiraCode/wiki/Emacs-instructions)) |
| **Anjuta** (unless at the EOF) | **IDLE** |
| **AppCode** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) | **KDevelop 4** |
| **Atom** 1.1 or newer ([instructions](https://github.com/tonsky/FiraCode/wiki/Atom-instructions)) | **Monkey Studio IDE** |
| **BBEdit** (14.6+ [instructions](https://github.com/tonsky/FiraCode/wiki/BBEdit-instructions)) | **UltraEdit** (Windows) |
| **Brackets** (with [this plugin](https://github.com/polo2ro/firacode-in-brackets)) |
| **Chocolat** |
| **CLion** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Cloud9** ([instructions](https://github.com/tonsky/FiraCode/wiki/Cloud9-Instructions)) |
| **Coda 2** |
| **CodeLite** |
| **CodeRunner** |
| **Comma** (Under: Preferences > Editor > Font) |
| **CotEditor** |
| **Eclipse** |
| **elementary Code** |
| **Geany** (1.37+) |
| **gEdit / Pluma** |
| **GNOME Builder** |
| **Godot** |
| **GoormIDE** ([instructions](https://github.com/tonsky/FiraCode/wiki/GoormIDE-Instructions)) |
| **IntelliJ IDEA** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **gVim** ([Windows](https://github.com/tonsky/FiraCode/issues/462), [GTK](https://vimhelp.org/options.txt.html#%27guiligatures%27)) |
| **IntelliJ IDEA** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Kate, KWrite** |
| **KDevelop 5+** |
| **Komodo** |
@ -129,45 +125,76 @@ Swift:
| **LINQPad** |
| **MacVim** 7.4 or newer ([instructions](https://github.com/tonsky/FiraCode/wiki/MacVim-instructions)) |
| **Mancy** |
| **MATLAB** ([instructions](https://github.com/tonsky/FiraCode/wiki/MATLAB-for-Windows-Instructions)) |
| **Meld** |
| **Mousepad** |
| **NeoVim-gtk** |
| **NetBeans** |
| **Notepad** (Windows) |
| **Notepad++** (with a [workaround](https://github.com/notepad-plus-plus/notepad-plus-plus/issues/2287#issuecomment-256638098)) |
| **Notepad++** ([instructions](https://github.com/tonsky/FiraCode/issues/1555)) |
| **Notepad3** ([instructions](https://github.com/rizonesoft/Notepad3/issues/361#issuecomment-365977420))|
| **PhpStorm** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **PyCharm** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **Nova** |
| **PhpStorm** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **PyCharm** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **QOwnNotes** (21.16.6+) |
| **QtCreator** |
| **Rider** |
| **RStudio** ([instructions](https://github.com/tonsky/FiraCode/wiki/RStudio-instructions)) |
| **RubyMine** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **RubyMine** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Scratch** |
| **Scribus** (1.5.3+) |
| **SublimeText** (3146+) |
| **Spyder IDE** (only with Qt5) |
| **SuperCollider 3** |
| **TeXShop**|
| **TextAdept** (Linux, macOS) |
| **TextEdit** |
| **TextMate 2** |
| **UltraEdit (UEX)** (Linux) |
| **VimR** ([instructions](https://github.com/qvacua/vimr/wiki#ligatures)) |
| **Visual Studio** (2015+, [instructions](https://github.com/tonsky/FiraCode/wiki/Visual-Studio-Instructions)) |
| **Visual Studio Code** ([instructions](https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions)) |
| **WebStorm** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) |
| **WebStorm** (2016.2+, [instructions](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Xamarin Studio/Monodevelop** |
| **Xcode** (8.0+, otherwise [with plugin](https://github.com/robertvojta/LigatureXcodePlugin)) |
| **Xi** |
| Probably work: **Smultron, Vico** | Under question: **Code::Blocks IDE** |
### Terminal compatibility list
| Works | Doesnt work |
|-------|--------------|
| crosh ([instructions](https://github.com/tonsky/FiraCode/wiki/ChromeOS-Terminal)) | Alacritty |
| Hyper (see [#3607](https://github.com/vercel/hyper/issues/3607)) | Asbru Connection Manager |
| iTerm 2 | Cmder |
| Kitty | ConEmu |
| Konsole | GNOME Terminal ([ticket](https://gitlab.gnome.org/GNOME/vte/-/issues/192)) |
| Mintty | gtkterm ([ticket](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| QTerminal | guake ([ticket](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| st ([patch](https://st.suckless.org/patches/ligatures/)) | LXTerminal ([ticket](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| Tabby | mate-terminal |
| Terminal.app | PuTTY |
| Termux | rxvt |
| Token2Shell | sakura ([ticket](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| Wezs terminal | SecureCRT
| Windows Terminal | Terminator ([ticket](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| ZOC (macOS) | terminology |
| | Tilix |
| | Windows Console |
| | xfce4-terminal ([ticket](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| | xterm |
| | ZOC (Windows) |
### Browser support
```html
<!-- HTML -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/tonsky/FiraCode@2/distr/fira_code.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css">
```
```css
/* CSS */
@import url(https://cdn.jsdelivr.net/gh/tonsky/FiraCode@2/distr/fira_code.css);
@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);
```
```css
@ -179,7 +206,6 @@ code { font-family: 'Fira Code', monospace; }
}
```
- IE 10+, Edge Legacy: enable with `font-feature-settings: "calt";`
- Firefox
- Safari
@ -189,7 +215,6 @@ code { font-family: 'Fira Code', monospace; }
### Projects using Fira Code
- All [JetBrains products](https://www.jetbrains.com/)
- [CodePen](https://codepen.io/)
- [Blink Shell](http://www.blink.sh/)
- [Klipse](http://app.klipse.tech/)
@ -201,7 +226,7 @@ code { font-family: 'Fira Code', monospace; }
### Alternatives
Other free monospaced fonts with ligatures:
Free monospaced fonts with ligatures:
- [Hasklig](https://github.com/i-tu/Hasklig)
- [Monoid](http://larsenwork.com/monoid/)
@ -215,21 +240,48 @@ Other free monospaced fonts with ligatures:
Paid monospaced fonts with ligatures:
- [PragmataPro](http://www.fsd.it/fonts/pragmatapro.htm)
- [Mono Lisa](https://monolisa.dev/)
- [Mono Lisa](https://www.monolisa.dev/)
### Building Fira Code locally
In case you want to alter FiraCode.glyphs and build OTF/TTF/WOFF files yourself, this is setup I use on macOS:
In case you want to alter FiraCode.glyphs and build OTF/TTF/WOFF files yourself, this is the setup I use on macOS:
```bash
# install all required build tools
./script/bootstrap
./script/bootstrap_macos.sh
# build the font files
./script/build
./script/build.sh
# install OTFs to ~/Library/Fonts
./script/install
cp distr/otf/*.otf ~/Library/Fonts
```
Alternatively, you can build Fira Code using Docker:
```bash
# install dependencies in a container and build the font files
make
# package the font files from dist/ into a zip
make package
```
If you want to *permanently enable* certain style sets or character variations, maybe because your editor of choice does not allow you to toggle these individually, you can provide the desired features as a comma separated list to the build script via the `-f / --features` flag.<br>Default: none.
To separate different versions of your font you can specify the desired font family name with the `-n / --family-name` flag. The special value 'features' will append a sorted, space separated list of enabled features to the default family name.<br>Default: "Fira Code"
You can also limit the font weights that will be created with the `-w / --weights` option.<br>Default: "Light,Regular,Retina,Medium,SemiBold,Bold"
```bash
# locally in your shell
./script/build.sh --features "ss02,ss08,ss10,cv03,cv07,cv14" --family-name "Fira Code straight" --weights "Regular,Bold"
# or via a docker container (creates the family name 'Fira Code cv01 cv02 cv06 cv31 onum ss01 ss03 ss04 zero')
docker run --rm -v "${PWD}":/opt tonsky/firacode:latest ./script/build.sh -f "cv01,cv02,cv06,ss01,zero,onum,ss03,ss04,cv31" -n "features"
# in Git Bash from Git for Windows, or any other MSYS2 based shell, you might need to disable path conversion
MSYS2_ARG_CONV_EXCL="*" docker run --rm -v "${PWD}":/opt tonsky/firacode:latest ./script/build.sh -f "ss02,ss03,ss04,ss05,ss06,ss07"
```
### Credits

284
README_CN.md Normal file
View file

@ -0,0 +1,284 @@
## Fira Code: 免费的编程连字等宽字体
![Fira Code](./extras/logo.svg)
### 问题
开发者们使用的多标记,通常都是用几个字符编码。对于人的大脑来说,像`->`、`<=`或`:=`这样的序列是单一的逻辑标记即使它们在屏幕上显示两到三个字符。您的眼睛并非无消耗的来扫描、解析并将多个字符连接到一个逻辑字符中。理想情况下所有编程语言都应该为操作符设计成熟的Unicode符号但现在还不是这样。
### 解决方案
Fira Code是一种免费的等宽字体包含常用的编程语言中多种字符组合的连字。这只是一个字体呈现功能底层代码仍然与ASCII兼容。这有助于更快地阅读和理解代码。对于一些常见的序列如`..`或`//`,连字允许我们纠正间距。
### 下载和安装
<a href="https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip"><img alt="Fira_Code_v6.2.zip - December 6, 2021 - 2.5 MB" src="./extras/download.png" width="520"></a>
下一步:
- [如何安装](https://github.com/tonsky/FiraCode/wiki)
- [疑难解答](https://github.com/tonsky/FiraCode/wiki#troubleshooting)
- [相关新闻](https://twitter.com/FiraCode)
### 赞助商
<a href="https://github.com/sponsors/tonsky" target="_blank"><img alt="Sponsor" src="./extras/sponsor.png"></a>
Fira Code 是个人的空闲时间进行的项目,缺乏资金但有大量的 [功能请求积压](https://github.com/tonsky/FiraCode/issues)。如果你也热爱这个项目, 请考虑通过 [GitHub Sponsors](https://github.com/sponsors/tonsky) 或 [Patreon](https://patreon.com/tonsky) 来支持它的发展。任何帮助都很重要!
非常感谢:
<table>
<td align="center">
<a href="https://workos.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=firacode&utm_source=github">
<div>
<img src="https://user-images.githubusercontent.com/629429/151508669-efb4c3b3-8fe3-45eb-8e47-e9510b5f0af1.svg" width="290" alt="WorkOS">
</div>
<b>Your app, enterprise-ready.</b>
<div>
<sub>Start selling to enterprise customers with just a few lines of code. Add Single Sign-On (and more) in minutes instead of months.</sup>
</div>
</a>
</td>
</table>
### 字体里都有哪些特征?
左侧Fira Code中呈现的连字。右侧没有连字的相同字符序列。
<img src="./extras/ligatures.png" width="754">
Fira Code 带有种类繁多的箭头。更棒的是:您可以随心所欲地制作它们,并根据需要组合开始/中间/结束片段!
<img src="./extras/arrows.png" width="754">
Fira Code 不仅与连字有关,还对标点符号和频繁的字母对进行了一些微调。
<img src="./extras/typographics.png" width="754">
Fira Code 带有各种各样的箭头,更棒的是,您可以随心所欲地制作它们,并且可以任意组合开始/中间/结束片段![如何启用](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets)
<img src="./extras/character_variants.png" width="754">
可以使用样式集/字符变体更改或启用某些连字:
<img src="./extras/ligature_variants.png" width="754">
作为一种编程字体Fira Code 对 ASCII/框绘图、powerline和其他形式的控制台 UI 具有出色的支持:
<img src="./extras/console.png" width="754">
Fira Code 是第一个提供专用字形来渲染进度条的编程字体:
<img src="./extras/progress.png" width="754">
在运行中:
<img src="./extras/progress.gif" width="560">
我们希望更多的编程字体能够采用这个约定并发布自己的版本。
Unicode 覆盖使 Fira Code 成为数学写作的绝佳选择:
<img src="./extras/math.png" width="754">
### 它看起来怎样?
<img src="./extras/samples.png" width="754">
<img src="./extras/samples2.png" width="754">
### 编辑器兼容性列表
| 支持 | 不支持 |
|-------|----------------|
| **Abricotine** | **Arduino IDE** |
| **Android Studio** (2.3+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) | **Adobe Dreamweaver** |
| **Anjuta** (除非在 EOF) | **Delphi IDE** |
| **AppCode** (2016.2+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) | Standalone **Emacs** ([解决方法](https://github.com/tonsky/FiraCode/wiki/Emacs-instructions)) | **IDLE** |
| **Atom** 1.1 或更新版本 ([说明](https://github.com/tonsky/FiraCode/wiki/Atom-instructions)) | **KDevelop 4** |
| **BBEdit** (14.6+, [说明](https://github.com/tonsky/FiraCode/wiki/BBEdit-instructions)) | **Monkey Studio IDE** |
| **Brackets** (使用 [此插件](https://github.com/polo2ro/firacode-in-brackets)) |
| **Chocolat** | **UltraEdit** |
| **CLion** (2016.2+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Cloud9** ([说明](https://github.com/tonsky/FiraCode/wiki/Cloud9-Instructions)) |
| **Coda 2** |
| **CodeLite** |
| **CodeRunner** |
| **Comma** (在 首选项 > 编辑器 > 字体 中) |
| **CotEditor** |
| **Eclipse** |
| **elementary Code** |
| **Geany** (1.37+) |
| **gEdit / Pluma** |
| **GNOME Builder** |
| **Godot** |
| **GoormIDE** ([说明](https://github.com/tonsky/FiraCode/wiki/GoormIDE-Instructions)) |
| **gVim** ([Windows](https://github.com/tonsky/FiraCode/issues/462), [GTK](https://vimhelp.org/options.txt.html#%27guiligatures%27)) |
| **IntelliJ IDEA** (2016.2+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Kate, KWrite** |
| **KDevelop 5+** |
| **Komodo** |
| **Leafpad** |
| **LibreOffice** |
| **LightTable** ([说明](https://github.com/tonsky/FiraCode/wiki/LightTable-instructions)) |
| **LINQPad** |
| **MacVim** 7.4 或更新版本 ([说明](https://github.com/tonsky/FiraCode/wiki/MacVim-instructions)) |
| **Mancy** |
| **MATLAB** ([说明](https://github.com/tonsky/FiraCode/wiki/MATLAB-for-Windows-Instructions)) |
| **Meld** |
| **Mousepad** |
| **NeoVim-gtk** |
| **NetBeans** |
| **Notepad** (Windows) |
| **Notepad++** ([解决方法](https://github.com/notepad-plus-plus/notepad-plus-plus/issues/2287#issuecomment-256638098)) |
| **Notepad3** ([说明](https://github.com/rizonesoft/Notepad3/issues/361#issuecomment-365977420))|
| **Nova** |
| **PhpStorm** (2016.2+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **PyCharm** (2016.2+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **QOwnNotes** (21.16.6+) |
| **QtCreator** |
| **Rider** |
| **RStudio** ([说明](https://github.com/tonsky/FiraCode/wiki/RStudio-instructions)) |
| **RubyMine** (2016.2+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Scratch** |
| **Scribus** (1.5.3+) |
| **SublimeText** (3146+) |
| **Spyder IDE** (仅适用于 Qt5) |
| **SuperCollider 3** |
| **TeXShop**|
| **TextAdept** (Linux, macOS) |
| **TextEdit** |
| **TextMate 2** |
| **VimR** ([说明](https://github.com/qvacua/vimr/wiki#ligatures)) |
| **Visual Studio** (2015+, [说明](https://github.com/tonsky/FiraCode/wiki/Visual-Studio-Instructions)) |
| **Visual Studio Code** ([说明](https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions)) |
| **WebStorm** (2016.2+, [说明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Xamarin Studio/Monodevelop** |
| **Xcode** (8.0+, 否则 [使用插件](https://github.com/robertvojta/LigatureXcodePlugin)) |
| **Xi** |
| Probably work: **Smultron, Vico** | Under question: **Code::Blocks IDE** |
### 终端兼容性列表
| 支持 | 不支持 |
|-------|--------------|
| crosh ([说明](https://github.com/tonsky/FiraCode/wiki/ChromeOS-Terminal)) | Alacritty |
| Hyper (参见 [#3607](https://github.com/vercel/hyper/issues/3607)) | Cmder |
| iTerm 2 | ConEmu |
| Kitty | GNOME Terminal |
| Konsole | gtkterm ([需求](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| Mintty | guake ([需求](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| QTerminal | LXTerminal ([需求](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| st ([补丁](https://st.suckless.org/patches/ligatures/)) | mate-terminal |
| Terminal.app | PuTTY |
| Termux | rxvt |
| Token2Shell | sakura ([需求](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| Wezs terminal | Terminator ([需求](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| Windows Terminal | terminology |
| ZOC (macOS) | Windows Console |
| | xfce4-terminal ([需求](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| | xterm |
| | ZOC (Windows) |
### 浏览器支持
```html
<!-- HTML -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css">
```
```css
/* CSS */
@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);
```
```css
/* Specify in CSS */
code { font-family: 'Fira Code', monospace; }
@supports (font-variation-settings: normal) {
code { font-family: 'Fira Code VF', monospace; }
}
```
- IE 10+, Edge Legacy: 启用 `font-feature-settings: "calt";`
- Firefox
- Safari
- Chromium-based browsers (Chrome, Opera)
- ACE
- CodeMirror (enable with `font-variant-ligatures: contextual;`)
### 使用 Fira Code的项目
- [CodePen](https://codepen.io/)
- [Blink Shell](http://www.blink.sh/)
- [Klipse](http://app.klipse.tech/)
- [IlyaBirman.net](http://ilyabirman.net/)
- [EvilMartians.com](https://evilmartians.com/)
- [Web Maker](https://webmakerapp.com/)
- [FromScratch](https://fromscratch.rocks/)
- [PEP20.org](https://pep20.org/)
### 备选方案
带连字的免费等宽字体:
- [Hasklig](https://github.com/i-tu/Hasklig)
- [Monoid](http://larsenwork.com/monoid/)
- [Fixedsys Excelsior](https://github.com/kika/fixedsys)
- [Iosevka](https://be5invis.github.io/Iosevka/)
- [DejaVu Sans Code](https://github.com/SSNikolaevich/DejaVuSansCode)
- [Victor Mono](https://rubjo.github.io/victor-mono/)
- [Cascadia Code](https://github.com/microsoft/cascadia-code)
- [JetBrains Mono](https://github.com/JetBrains/JetBrainsMono)
带连字的付费等宽字体:
- [PragmataPro](http://www.fsd.it/fonts/pragmatapro.htm)
- [Mono Lisa](https://www.monolisa.dev/)
### 在本地构建 Fira Code
如果您想更改 FiraCode.glyphs 并自己构建 OTF / TTF / WOFF 文件,这是我在 macOS 上使用的设置:
```bash
# 安装所有编译需要的工具
./script/bootstrap_macos.sh
# 编译字体文件
./script/build.sh
# 将otf文件安装到 ~/Library/Fonts
cp distr/otf/*.otf ~/Library/Fonts
```
或者,您可以使用 Docker 构建 Fira Code
```bash
# install dependencies in a container and build the font files
make
# package the font files from dist/ into a zip
make package
```
如果你想要*永久开启*某个特定的文体集或者字符变种,但你的编辑器有可能不允许你单独开启它们,你可以将你想要的功能作为一个用逗号分隔的列表,通过 `-f / --features` 标志来加入到编译脚本中。<br>默认:无。
要分隔不同的字体版本的话,你可以用 `-n / --family-name` 标志来指定你所需的字体系列名称。特殊值 'features' 将在默认的系列名称后面添加一个有序的、空格分隔的列表,列表内为已经启用的功能。<br>默认:"Fira Code"
你也可以用 `-w / --weights` 选项来限制将要被编译的字体的重量。<br>默认:"Light,Regular,Retina,Medium,SemiBold,Bold"
```bash
# 在你本地的shell中
./script/build.sh --features "ss02,ss08,ss10,cv03,cv07,cv14" --family-name "Fira Code straight" --weights "Regular,Bold"
# 或者通过一个docker容器 (创建系列名为:'Fira Code cv01 cv02 cv06 cv31 onum ss01 ss03 ss04 zero')
docker run --rm -v "${PWD}":/opt tonsky/firacode:latest ./script/build.sh -f "cv01,cv02,cv06,ss01,zero,onum,ss03,ss04,cv31" -n "features"
```
### 制作人员
- 作者: Nikita Prokopov [@nikitonsky](https://twitter.com/nikitonsky)
- 基于此项目: [Fira Mono](https://github.com/mozilla/Fira)
- 灵感来源: [Hasklig](https://github.com/i-tu/Hasklig)
- 翻译:墨抒颖[@moshuying](https://github.com/moshuying)

291
README_JA.md Normal file
View file

@ -0,0 +1,291 @@
## Fira Code: プログラミング合字のフリー等幅フォント
![Fira Code](./extras/logo.svg)
[English](./README.md) | [Español](./LEEME.md) | [简体中文](./README_CN.md) で読む
### 問題点
プログラマは多くの記号を使用し、しばしば数文字で符号化されます。人間の脳にとって`->`、`<=`、`:=`といったシーケンスは、たとえ画面上で 2 文字や 3 文字になったとしても、単一の論理トークンである。あなたの目は、複数の文字をスキャンし、解析し、1 つの論理的なものに結合するために、ゼロではない量のエネルギーを費やしているのです。理想を言えば、すべてのプログラミング言語が演算子のための本格的なユニコード記号を備えて設計されるべきですが、まだそうではありません。
### 解決法
Fira Code は、一般的なプログラミングの複数文字の組み合わせのための合字を含む無料の等幅フォントです。これは単にフォントのレンダリング機能であり、基礎となるコードは ASCII 互換のままです。これによりコードをより速く読み、理解することができます。`...` や `//` のような頻度の高い文字列は、合字によって間隔を修正することができます。
### ダウンロードとインストール
<a href="https://github.com/tonsky/FiraCode/releases/download/6.2/Fira_Code_v6.2.zip"><img alt="Fira_Code_v6.2.zip - December 6, 2021 - 2.5 MB" src="./extras/download.png" width="520"></a>
次は:
- [インストール方法](https://github.com/tonsky/FiraCode/wiki)
- [トラブルシューティング](https://github.com/tonsky/FiraCode/wiki#troubleshooting)
- [ニュースとアップデート](https://twitter.com/FiraCode)
### スポンサー
Fira Code は個人的なフリータイムのプロジェクトで、資金はなく膨大な[機能リクエストバックログ](https://github.com/tonsky/FiraCode/issues)を抱えています。もし気に入っていただけたなら、[GitHub Sponsors](https://github.com/sponsors/tonsky) または [Patreon](https://patreon.com/tonsky) で開発をサポートすることを検討してください。どんな支援でもかまいません!
大いに感謝します:
<table>
<td align="center">
<a href="https://workos.com/?utm_campaign=github_repo&utm_medium=referral&utm_content=firacode&utm_source=github">
<div>
<img src="https://user-images.githubusercontent.com/629429/151508669-efb4c3b3-8fe3-45eb-8e47-e9510b5f0af1.svg" width="290" alt="WorkOS">
</div>
<b>Your app, enterprise-ready.</b>
<div>
<sub>Start selling to enterprise customers with just a few lines of code. Add Single Sign-On (and more) in minutes instead of months.</sup>
</div>
</a>
</td>
</table>
### 何が入っているのでしょうか?
左: Fira Code で描画される合字。右: 合字のない同じ文字列。
<img src="./extras/ligatures.png" width="754">
Fira Code には、膨大な種類の矢印が用意されています。さらに、好きな長さにしたり、始点・中間・終点の断片を自由に組み合わせたりすることができます!
<img src="./extras/arrows.png" width="754">
Fira Code は合字だけではありません。句読点や頻度の高い文字ペアについても、いくつかの微調整が行われています。
<img src="./extras/typographics.png" width="754">
Fira Code には、数種類の文字バリエーション(`cv01`、`cv02` など)、スタイルセット(`ss01`、`ss02` など)、その他のフォント機能(`zero`、`onum`、`calt` など)があり、誰もが自分に最適なものを選ぶことができます。[有効にする方法](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets)
<img src="./extras/character_variants.png" width="754">
一部の合字は、スタイルセット/文字バリアントを使用して変更または有効にすることができます:
<img src="./extras/ligature_variants.png" width="754">
プログラミング用フォントである Fira Code は、ASCII/ボックスドローイング、パワーライン、その他の形式のコンソール UI に素晴らしい対応をしています:
<img src="./extras/console.png" width="754">
Fira Code は、プログレスバーを描画するための専用グリフを提供する最初のプログラミングフォントです:
<img src="./extras/progress.png" width="754">
動作すると:
<img src="./extras/progress.gif" width="560">
より多くのプログラミング用フォントがこの規約を採用し、独自のバージョンを出荷することを望んでいます。
ユニコード対応により、Fira Code は数学の記述に最適です:
<img src="./extras/math.png" width="754">
### どのように見えるのでしょうか?
<img src="./extras/samples.png" width="754">
<img src="./extras/samples2.png" width="754">
### エディタ互換性リスト
| サポート | 非サポート |
|-------|----------------|
| **Arduino IDE** (2.0+,same instructions as [vscode](https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions)) | **Adobe Dreamweaver** |
| **Abricotine** | **Delphi IDE** |
| **Android Studio** (2.3+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) | Standalone **Emacs** ([回避方法](https://github.com/tonsky/FiraCode/wiki/Emacs-instructions)) |
| **Anjuta** (unless at the EOF) | **IDLE** |
| **AppCode** (2016.2+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) | **KDevelop 4** |
| **Atom** 1.1 or newer ([説明](https://github.com/tonsky/FiraCode/wiki/Atom-instructions)) | **Monkey Studio IDE** |
| **BBEdit** (14.6+ [説明](https://github.com/tonsky/FiraCode/wiki/BBEdit-instructions)) | **UltraEdit** (Windows) |
| **Brackets** (with [this plugin](https://github.com/polo2ro/firacode-in-brackets)) |
| **Chocolat** |
| **CLion** (2016.2+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Cloud9** ([説明](https://github.com/tonsky/FiraCode/wiki/Cloud9-Instructions)) |
| **Coda 2** |
| **CodeLite** |
| **CodeRunner** |
| **Comma** (Under: Preferences > Editor > Font) |
| **CotEditor** |
| **Eclipse** |
| **elementary Code** |
| **Geany** (1.37+) |
| **gEdit / Pluma** |
| **GNOME Builder** |
| **Godot** |
| **GoormIDE** ([説明](https://github.com/tonsky/FiraCode/wiki/GoormIDE-Instructions)) |
| **gVim** ([Windows](https://github.com/tonsky/FiraCode/issues/462), [GTK](https://vimhelp.org/options.txt.html#%27guiligatures%27)) |
| **IntelliJ IDEA** (2016.2+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Kate, KWrite** |
| **KDevelop 5+** |
| **Komodo** |
| **Leafpad** |
| **LibreOffice** |
| **LightTable** ([説明](https://github.com/tonsky/FiraCode/wiki/LightTable-instructions)) |
| **LINQPad** |
| **MacVim** 7.4 or newer ([説明](https://github.com/tonsky/FiraCode/wiki/MacVim-instructions)) |
| **Mancy** |
| **MATLAB** ([説明](https://github.com/tonsky/FiraCode/wiki/MATLAB-for-Windows-Instructions)) |
| **Meld** |
| **Mousepad** |
| **NeoVim-gtk** |
| **NetBeans** |
| **Notepad** (Windows) |
| **Notepad++** ([回避方法](https://github.com/notepad-plus-plus/notepad-plus-plus/issues/2287#issuecomment-256638098)) |
| **Notepad3** ([説明](https://github.com/rizonesoft/Notepad3/issues/361#issuecomment-365977420))|
| **Nova** |
| **PhpStorm** (2016.2+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **PyCharm** (2016.2+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **QOwnNotes** (21.16.6+) |
| **QtCreator** |
| **Rider** |
| **RStudio** ([説明](https://github.com/tonsky/FiraCode/wiki/RStudio-instructions)) |
| **RubyMine** (2016.2+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Scratch** |
| **Scribus** (1.5.3+) |
| **SublimeText** (3146+) |
| **Spyder IDE** (Qt5 のみ) |
| **SuperCollider 3** |
| **TeXShop**|
| **TextAdept** (Linux, macOS) |
| **TextEdit** |
| **TextMate 2** |
| **UltraEdit (UEX)** (Linux) |
| **VimR** ([説明](https://github.com/qvacua/vimr/wiki#ligatures)) |
| **Visual Studio** (2015+, [説明](https://github.com/tonsky/FiraCode/wiki/Visual-Studio-Instructions)) |
| **Visual Studio Code** ([説明](https://github.com/tonsky/FiraCode/wiki/VS-Code-Instructions)) |
| **WebStorm** (2016.2+, [説明](https://github.com/tonsky/FiraCode/wiki/IntelliJ-products-instructions)) |
| **Xamarin Studio/Monodevelop** |
| **Xcode** (8.0+, それ以外は[プラグイン付き](https://github.com/robertvojta/LigatureXcodePlugin)) |
| **Xi** |
| Probably work: **Smultron, Vico** | Under question: **Code::Blocks IDE** |
### ターミナル互換性リスト
| サポート | 非サポート |
|-------|--------------|
| crosh ([説明](https://github.com/tonsky/FiraCode/wiki/ChromeOS-Terminal)) | Alacritty |
| Hyper ([#3607](https://github.com/vercel/hyper/issues/3607) を確認) | Asbru Connection Manager |
| iTerm 2 | Cmder |
| Kitty | ConEmu |
| Konsole | GNOME Terminal |
| Mintty | gtkterm ([チケット](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| QTerminal | guake ([チケット](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| st ([パッチ](https://st.suckless.org/patches/ligatures/)) | LXTerminal ([チケット](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| Tabby | mate-terminal |
| Terminal.app | PuTTY |
| Termux | rxvt |
| Token2Shell | sakura ([チケット](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| Wezs terminal | SecureCRT
| Windows Terminal | Terminator ([チケット](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| ZOC (macOS) | terminology |
| | Tilix |
| | Windows Console |
| | xfce4-terminal ([チケット](https://gitlab.gnome.org/GNOME/vte/-/issues/1661)) |
| | xterm |
| | ZOC (Windows) |
### ブラウザサポート
```html
<!-- HTML -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css">
```
```css
/* CSS */
@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);
```
```css
/* Specify in CSS */
code { font-family: 'Fira Code', monospace; }
@supports (font-variation-settings: normal) {
code { font-family: 'Fira Code VF', monospace; }
}
```
- IE 10+, Edge Legacy: `font-feature-settings: "calt";` で有効にします
- Firefox
- Safari
- Chromium-based browsers (Chrome, Opera)
- ACE
- CodeMirror (`font-variant-ligatures: contextual;` で有効にします)
### Fira Code を使用したプロジェクト
- [CodePen](https://codepen.io/)
- [Blink Shell](http://www.blink.sh/)
- [Klipse](http://app.klipse.tech/)
- [IlyaBirman.net](http://ilyabirman.net/)
- [EvilMartians.com](https://evilmartians.com/)
- [Web Maker](https://webmakerapp.com/)
- [FromScratch](https://fromscratch.rocks/)
- [PEP20.org](https://pep20.org/)
### 代替品
合字のある無料等幅フォント:
- [Hasklig](https://github.com/i-tu/Hasklig)
- [Monoid](http://larsenwork.com/monoid/)
- [Fixedsys Excelsior](https://github.com/kika/fixedsys)
- [Iosevka](https://be5invis.github.io/Iosevka/)
- [DejaVu Sans Code](https://github.com/SSNikolaevich/DejaVuSansCode)
- [Victor Mono](https://rubjo.github.io/victor-mono/)
- [Cascadia Code](https://github.com/microsoft/cascadia-code)
- [JetBrains Mono](https://github.com/JetBrains/JetBrainsMono)
合字のある有償等幅フォント:
- [PragmataPro](http://www.fsd.it/fonts/pragmatapro.htm)
- [Mono Lisa](https://www.monolisa.dev/)
### Fira Code をローカルでビルドする
FiraCode.glyphs を変更し、OTF/TTF/WOFF ファイルを自分でビルドしたい場合、私が macOS で使用している設定は次のとおりです:
```bash
# 必要なビルドツールをすべてインストール
./script/bootstrap_macos.sh
# フォントファイルのビルド
./script/build.sh
# OTF を ~/Library/Fonts にインストール
cp distr/otf/*.otf ~/Library/Fonts
```
または、Docker を使用して Fira Code を構築することもできます:
```bash
# コンテナ内に依存関係をインストールし、フォントファイルをビルド
make
# dist/ のフォントファイルを zip にまとめる
make package
```
特定のスタイルセットやキャラクタバリエーションを *永久的に* 有効にしたい場合、おそらくあなたの選んだエディタではこれらを個別に切り替えることができないため、`-f / --features` フラグでビルドスクリプトにカンマ区切りリストとして希望の機能を提供することができます。<br>デフォルト: なし。
異なるバージョンのフォントを分けるために、`-n / --family-name` フラグで希望のフォントファミリー名を指定することができます。特別な値 'features' を指定すると、有効な機能をソートしてスペースで区切ったリストをデフォルトのファミリー名に追加します。<br>デフォルト: "Fira Code"
また、`-w / --weights` オプションで、作成されるフォントのウェイトを制限することができます。<br>デフォルト: "Light,Regular,Retina,Medium,SemiBold,Bold"
```bash
# ローカルでシェル内
./script/build.sh --features "ss02,ss08,ss10,cv03,cv07,cv14" --family-name "Fira Code straight" --weights "Regular,Bold"
# または Docker コンテナ経由(ファミリー名 'Fira Code cv01 cv02 cv06 cv31 onum ss01 ss03 ss04 zero' を作成)
docker run --rm -v "${PWD}":/opt tonsky/firacode:latest ./script/build.sh -f "cv01,cv02,cv06,ss01,zero,onum,ss03,ss04,cv31" -n "features"
# Git for Windows の Git Bash やその他の MSYS2 ベースのシェルで使用する場合は、パス変換を無効にする必要があるかもしれません
MSYS2_ARG_CONV_EXCL="*" docker run --rm -v "${PWD}":/opt tonsky/firacode:latest ./script/build.sh -f "ss02,ss03,ss04,ss05,ss06,ss07"
```
### クレジット
- 作者: Nikita Prokopov [@nikitonsky](https://twitter.com/nikitonsky)
- 基にした: [Fira Mono](https://github.com/mozilla/Fira)
- インスパイアされた: [Hasklig](https://github.com/i-tu/Hasklig)

View file

@ -0,0 +1 @@
bracketright braceright parenright

13
classes/Digit.fea Normal file
View file

@ -0,0 +1,13 @@
zero
zero.zero
one
two
twoTurned
threeTurned
three
four
five
six
seven
eight
nine

12
classes/DigitTosf.fea Normal file
View file

@ -0,0 +1,12 @@
zero.tosf
zero.tosf.zero
zero.zero.tosf
one.tosf
two.tosf
three.tosf
four.tosf
five.tosf
six.tosf
seven.tosf
eight.tosf
nine.tosf

1
classes/HexDigit.fea Normal file
View file

@ -0,0 +1 @@
a b c d e f A B C D E F

View file

@ -0,0 +1 @@
bracketleft braceleft parenleft

1
classes/Tall.fea Normal file
View file

@ -0,0 +1 @@
@Uppercase zero one two twoTurned threeTurned three four five six seven eight nine @OpeningBracket @ClosingBracket bar

View file

@ -33,8 +33,31 @@
";\n"))))
(def priorities
{;; <|>
["less" "bar" "greater"] 0
;; |||> ||> |> <| <|| <|||
["bar" "bar" "bar" "greater"] 1
["bar" "bar" "greater"] 1
["bar" "greater"] 1
["less" "bar" "bar" "bar"] 1
["less" "bar" "bar"] 1
["less" "bar"] 1
;; #346 We need << <<< >> >>> || ||| substituted before -- --- == ===
;; so that `ignore [less greater bar] hyphen hyphen` would not trigger
["less" "less"] 2
["less" "less" "less"] 2
["greater" "greater"] 2
["greater" "greater" "greater"] 2
["bar" "bar"] 2
["bar" "bar" "bar"] 2})
(def ignores
{ ["slash" "asterisk"]
(coll/multimap-by str
["slash" "asterisk"]
(str
" ignore sub slash' asterisk slash;\n"
" ignore sub asterisk slash' asterisk;\n")
@ -53,7 +76,16 @@
(str
" ignore sub slash asterisk' asterisk asterisk;\n"
" ignore sub asterisk' asterisk asterisk slash;\n")
;; #1061
["colon" "colon"]
(str " ignore sub colon' colon [less greater];\n"
" ignore sub [less greater] colon' colon;\n")
["colon" "colon" "colon"]
(str " ignore sub colon' colon colon [less greater];\n"
" ignore sub [less greater] colon' colon colon;\n")
;; #621 <||>
["less" "bar" "bar"]
" ignore sub less' bar bar greater;\n"
@ -61,17 +93,6 @@
["bar" "bar" "greater"]
" ignore sub less bar' bar greater;\n"
;; #574 :>=
["colon" "greater"]
" ignore sub colon' greater equal;\n"
;; #548 >=<
["greater" "equal"]
" ignore sub greater' equal less;\n"
["equal" "less"]
" ignore sub greater equal' less;\n"
;; #593 {|}
["braceleft" "bar"]
" ignore sub braceleft' bar braceright;\n"
@ -88,60 +109,99 @@
;; #410 <*>> <+>> <$>>
["greater" "greater"]
(str " ignore sub asterisk greater' greater;\n"
" ignore sub plus greater' greater;\n"
" ignore sub dollar greater' greater;\n")
" ignore sub [asterisk plus dollar] greater' greater;\n"
;; #410 <*>>> <+>>> <$>>>
["greater" "greater" "greater"]
(str " ignore sub asterisk greater' greater greater;\n"
" ignore sub plus greater' greater greater;\n"
" ignore sub dollar greater' greater greater;\n")
" ignore sub [asterisk plus dollar] greater' greater greater;\n"
;; #410 <<*> <<+> <<$>
["less" "less"]
(str " ignore sub less' less asterisk;\n"
" ignore sub less' less plus;\n"
" ignore sub less' less dollar;\n")
" ignore sub less' less [asterisk plus dollar];\n"
;; #410 <<<*> <<<+> <<<$>
["less" "less" "less"]
(str " ignore sub less' less less asterisk;\n"
" ignore sub less' less less plus;\n"
" ignore sub less' less less dollar;\n")
;; #713 |-|
["bar" "hyphen"]
" ignore sub bar' hyphen bar;\n"
["hyphen" "bar"]
" ignore sub bar hyphen' bar;\n"
;; #968 [-> [--> [==> [=>
["equal" "greater"]
" ignore sub bracketleft equal' greater;\n"
["equal" "equal" "greater"]
" ignore sub bracketleft equal' equal greater;\n"
" ignore sub less' less less [asterisk plus dollar];\n"
;; #948 [==[ ]==]
;; #968 [== ==]
["equal" "equal"]
" ignore sub bracketleft equal' equal;\n"
(str " ignore sub bracketleft equal' equal;\n"
" ignore sub equal' equal bracketright;\n")
;; #948 [===[ ]===]
;; #968 [=== ===]
["equal" "equal" "equal"]
" ignore sub bracketleft equal' equal equal;\n"
(str " ignore sub bracketleft equal' equal equal;\n"
" ignore sub equal' equal equal bracketright;\n")
["hyphen" "greater"]
" ignore sub bracketleft hyphen' greater;\n"
;; #346 =:=
["colon" "equal"]
" ignore sub equal colon' equal;\n"
["hyphen" "hyphen" "greater"]
" ignore sub bracketleft hyphen' hyphen greater;\n"
;; #346 =!=
["exclam" "equal"]
" ignore sub equal exclam' equal;\n"
;; #346 =!==
["exclam" "equal" "equal"]
" ignore sub equal exclam' equal equal;\n"
;; #346 =<= <=< <=> <=| <=: <=! <=/
["less" "equal"]
(str " ignore sub equal less' equal;\n"
" ignore sub less' equal [less greater bar colon exclam slash];\n")
;; #548 >=<
;; #346 =>= >=> >=< >=| >=: >=! >=/
["greater" "equal"]
(str " ignore sub equal greater' equal;\n"
" ignore sub greater' equal [less greater bar colon exclam slash];\n")
;; #346 >>->> >>=>>
;; #974 keep >>=
["greater" "greater"]
(str " ignore sub [hyphen equal] greater' greater;\n"
" ignore sub greater' greater hyphen;\n"
" ignore sub greater' greater equal [equal less greater bar colon exclam slash];\n")
;; #346 <<-<< <<=<<
;; #974 keep <<=
["less" "less"]
(str " ignore sub [hyphen equal] less' less;\n"
" ignore sub less' less hyphen;\n"
" ignore sub less' less equal [equal less greater bar colon exclam slash];\n")
;; #346 ||-|| ||=||
;; #974 keep ||=
["bar" "bar"]
(str " ignore sub [hyphen equal] bar' bar;\n"
" ignore sub bar' bar hyphen;\n"
" ignore sub bar' bar equal [equal less greater bar colon exclam slash];\n")
;; #816 //=
["slash" "slash"]
(str " ignore sub equal slash' slash;\n"
" ignore sub slash' slash equal;\n")
;; #346 <--> >--< |--|
["hyphen" "hyphen"]
" ignore sub bracketleft hyphen' hyphen;\n"
(str " ignore sub [less greater bar] hyphen' hyphen;\n"
" ignore sub hyphen' hyphen [less greater bar];\n")
["hyphen" "hyphen" "hyphen"]
" ignore sub bracketleft hyphen' hyphen hyphen;\n"
})
;; #346 <==> >==< |==| /==/ =:== =!== ==:= ==!=
["equal" "equal"]
(str " ignore sub equal [colon exclam] equal' equal;\n"
" ignore sub [less greater bar slash] equal' equal;\n"
" ignore sub equal' equal [less greater bar slash] ;\n"
" ignore sub equal' equal [colon exclam] equal;\n")
;; #346 <===> >===< |===| /===/ =:=== =!=== ===:= ===!=
["equal" "equal" "equal"]
(str " ignore sub equal [colon exclam] equal' equal equal;\n"
" ignore sub [less greater bar slash] equal' equal equal;\n"
" ignore sub equal' equal equal [less greater bar slash];\n"
" ignore sub equal' equal equal [colon exclam] equal;\n")
))
;; DO NOT generate ignores at all
@ -150,8 +210,6 @@
["less" "asterisk" "greater"]
["less" "plus" "greater"]
["less" "dollar" "greater"]
;; #795
["f" "l"] ["F" "l"] ["T" "l"]
})
@ -235,10 +293,16 @@
(defn compare-ligas [l1 l2]
(cond
(> (count l1) (count l2)) -1
(< (count l1) (count l2)) 1
:else (compare l1 l2)))
(let [p1 (priorities l1 Long/MAX_VALUE)
p2 (priorities l2 Long/MAX_VALUE)
pc (compare p1 p2)
c1 (count l1)
c2 (count l2)
cc (compare c1 c2)]
(cond
(not= 0 pc) pc ;; lower priority first
(not= 0 cc) (- cc) ;; longer first
:else (compare l1 l2)))) ;; alphabetical
(defn replace-calt [font ligas]
@ -251,6 +315,15 @@
glyphs (map #(str (str/join "_" %) ".liga") ligas')
counts (coll/group-by-to count count ligas')]
(when-some [unused (not-empty (reduce dissoc ignores ligas'))]
(println " WARN Unused ignores" (str/join " " (keys unused))))
(when-some [unused (not-empty (reduce disj skip-ignores? ligas'))]
(println " WARN Unused skip-ignores?" (str/join " " unused)))
(when-some [unused (not-empty (reduce disj manual? ligas))]
(println " WARN Unused manual?" (str/join " " unused)))
(println " generated calt:"
; (str/join " " glyphs)
(str
@ -259,7 +332,4 @@
(get counts 4) " quadruples, "
(count ligas') " total" #_")"))
(glyphs/update-code font :features "calt"
#(str/replace %
#"### start of generated calt\n[^#]+\n### end of generated calt\n"
(str "### start of generated calt\n" calt "\n### end of generated calt\n")))))
(glyphs/update-code font :features "calt" (constantly calt))))

View file

@ -0,0 +1,23 @@
(ns fira-code.checks
(:require
[clojure.string :as str]
[fira-code.coll :as coll]
[fira-code.glyphs :as glyphs]))
(defn width-ok? [w]
(#{"0" 0 1200} w))
(defn widths [font]
(doseq [g (:glyphs font)
:when (not= "0" (:export g))
:let [[w & _ :as ws] (mapv :width (:layers g))]]
(when-not (apply = ws)
(println (str "WARN glyph '" (:glyphname g) "' has different widths=" (pr-str ws))))
(when-not (width-ok? w)
(println (str "WARN glyph '" (:glyphname g) "' has unexpected width=" (pr-str w)))))
font)
(defn -main [& args]
(let [path (or (first args) "FiraCode.glyphs")
font (glyphs/load path)]
(widths font)))

View file

@ -0,0 +1,18 @@
(ns fira-code.classes
(:require
[clojure.java.io :as io]
[clojure.string :as str]
[fira-code.glyphs :as glyphs]
[fira-code.files :as files]))
(defn fill-class [font file]
(let [[_ name] (re-matches #"([^.]+)\.fea" (.getName file))
code (slurp file)
class {:code (str/trim code)
:name name}]
(glyphs/set-class font name class)))
(defn fill-all [font]
(reduce fill-class font (files/find "classes" #"classes/[^/]+\.fea")))

View file

@ -3,8 +3,9 @@
(defn index-of [pred xs]
(let [res (reduce (fn [i x] (if (pred x) (reduced i) (inc i))) 0 xs)]
(assert (< res (count xs)) "Nothing found")
res))
(if (>= res (count xs))
-1
res)))
(defn group-by-to [key-fn value-fn xs]
@ -12,4 +13,13 @@
(fn [m k vs]
(assoc m k (value-fn vs)))
{}
(group-by key-fn xs)))
(group-by key-fn xs)))
(defn multimap-by [f & kvs]
(reduce
(fn [m [k v]]
(if (contains? m k)
(update m k f v)
(assoc m k v)))
{} (partition 2 kvs)))

View file

@ -0,0 +1,37 @@
(ns fira-code.features
(:require
[clojure.java.io :as io]
[clojure.string :as str]
[fira-code.glyphs :as glyphs]
[fira-code.files :as files]))
(defn append-calt [font]
(let [features (->> (files/find "features/calt" #"features/calt/[^/]+\.fea")
(map slurp)
(map str/trim)
(str/join "\n\n"))]
(println " appending to feature calt" (glyphs/lines features) "lines")
(glyphs/update-code font :features "calt"
#(str % "\n\n" features))))
(defn fill-feature [font file]
(let [[_ name] (re-matches #"([^.]+)\.fea" (.getName file))
code (slurp file)
[_ notes code'] (re-matches #"(?s)#([^\n]+)\n(.*)" code)
feature (cond-> {:code (str/trim (or code' code))
:name name}
notes
(assoc :notes (str/trim notes)))]
(glyphs/set-feature font name feature)))
(defn fill-features [font]
(reduce fill-feature font (files/find "features" #"features/[^/]+\.fea")))
(defn fill-all [font]
(-> font
(append-calt)
(fill-features)))

View file

@ -0,0 +1,12 @@
(ns fira-code.files
(:refer-clojure :exclude [find])
(:require
[clojure.java.io :as io]
[clojure.string :as str]))
(defn find [path re]
(->> (file-seq (io/file path))
(next) ;; skip directory itself
(filter #(re-matches re (.getPath %)))
(sort-by #(.getPath %))))

View file

@ -154,18 +154,51 @@
(defn update-code [font key name f & args]
(let [idx (coll/index-of #(= (:name %) name) (get font key))]
(assert (>= idx 0) (str "Cant find " key "[name=\"" name "\"], got " (str/join ", " (map :name (get font key)))))
(apply update-in font [key idx :code] f args)))
(defn lines [s]
(inc (count (re-seq #"\n" s))))
(defn words [s]
(count (re-seq #"[^\s]+" s)))
(defn set-feature [font name feature]
(let [idx (coll/index-of #(= (:name %) name) (:features font))]
(if (pos? idx)
(do
(println " replacing feature" name "with" (lines (:code feature)) "lines")
(assoc-in font [:features idx] feature))
(do
(println " appending to feature" name (lines (:code feature)) "lines")
(update font :features conj feature)))))
(defn set-class [font name class]
(let [idx (coll/index-of #(= (:name %) name) (:classes font))]
(if (pos? idx)
(do
(println " replacing class" name "with" (words (:code class)) "entries")
(assoc-in font [:classes idx] class))
(do
(println " appending to class" name (words (:code class)) "entries")
(update font :classes conj class)))))
(def weights
{:Light "B67F0F2D-EC95-4CB8-966E-23AE86958A69"
:Regular "UUID0"
:Bold "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"})
(defn layer [l]
{ :id (case (:layerId l)
((:Regular weights)) "Regular"
((:Bold weights)) "Bold"
{ :id (condp = (:layerId l)
(:Light weights) "Light"
(:Regular weights) "Regular"
(:Bold weights) "Bold"
(:layerId l))
:width (:width l) })

View file

@ -3,6 +3,9 @@
[clojure.string :as str]
[fira-code.calt :as calt]
[fira-code.coll :as coll]
[fira-code.checks :as checks]
[fira-code.classes :as classes]
[fira-code.features :as features]
[fira-code.glyphs :as glyphs]
[fira-code.not-space :as not-space]
[fira-code.spacers :as spacers]
@ -21,7 +24,10 @@
(str/split liga #"_")) ;; [ ["dash" "greater" "greater"] ... ]
font' (-> font
(calt/replace-calt ligas)
(classes/fill-all)
(features/fill-all)
(spacers/add-spacers ligas)
(not-space/regen-not-space))]
(not-space/regen-not-space)
(checks/widths))]
(glyphs/save! path font')
(println)))

72
clojure/user.clj Normal file
View file

@ -0,0 +1,72 @@
(ns user
(:require
[clojure.core.server :as server]
[clojure.java.io :as io]
[clojure.tools.namespace.repl :as ns]
[clojure.tools.namespace.track :as track]))
(ns/disable-reload!)
(ns/set-refresh-dirs "clojure")
(def *reloaded
(atom nil))
(add-watch #'ns/refresh-tracker ::watch
(fn [_ _ old new]
(when (empty? (::track/load new))
(reset! *reloaded (::track/load old)))))
(defn after-reload []
(let [cnt (count @*reloaded)]
(str "Reloaded " cnt " namespace" (when (> cnt 1) "s"))))
(defn reload []
(set! *warn-on-reflection* true)
; (set! *unchecked-math* :warn-on-boxed)
(let [res (ns/refresh :after 'user/after-reload)]
(if (instance? Throwable res)
(throw res)
res)))
(def p-lock
(Object.))
(defn p-pos []
(let [trace (->> (Thread/currentThread)
(.getStackTrace)
(seq))
el ^StackTraceElement (nth trace 4)]
(str "[" (clojure.lang.Compiler/demunge (.getClassName el)) " " (.getFileName el) ":" (.getLineNumber el) "]")))
(defn p-impl [position form res]
(let [form (clojure.walk/postwalk
(fn [form]
(if (and
(list? form)
(= 'user/p-impl (first form)))
(clojure.lang.TaggedLiteral/create 'p (nth form 3))
form))
form)]
(locking p-lock
(println (str position " #p " form " => " (pr-str res))))
res))
(defn p [form]
`(p-impl (p-pos) '~form ~form))
(defn -main [& args]
;; setup repl
(let [args (apply array-map args)
port (or
(some-> (get args "--port") parse-long)
(+ 1024 (rand-int 64512)))
file (io/file ".repl-port")]
(println "Started Server Socket REPL on port" port)
(spit file port)
(.deleteOnExit file)
(server/start-server
{:name "repl"
:port port
:accept 'clojure.core.server/repl
:server-daemon false})))

View file

@ -1,4 +1,5 @@
{:paths ["clojure"]
:deps {org.clojure/clojure {:mvn/version "1.10.1"}
org.flatland/ordered {:mvn/version "1.5.7"}
fipp/fipp {:mvn/version "0.6.18"}}}
:deps {org.clojure/clojure {:mvn/version "1.11.1"}
org.flatland/ordered {:mvn/version "1.5.7"}
fipp/fipp {:mvn/version "0.6.18"}
org.clojure/tools.namespace {:mvn/version "1.3.0"}}}

View file

@ -27,7 +27,7 @@ OR
Use http://brew.sh:
`brew tap homebrew/cask-fonts`
`brew cask install font-fira-code`
`brew install font-fira-code`
Ubuntu Zesty (17.04), Debian Stretch (9) or newer
@ -40,7 +40,7 @@ Ubuntu Zesty (17.04), Debian Stretch (9) or newer
Arch Linux
----------
Fira Code package is available in the official repository: https://www.archlinux.org/packages/community/any/otf-fira-code/.
Fira Code package is available in the official repository: https://www.archlinux.org/packages/community/any/ttf-fira-code/.
Variant of Fira Code package is available in the AUR: https://aur.archlinux.org/packages/otf-fira-code-git/.
@ -54,11 +54,8 @@ Gentoo
Fedora
------
A Fedora copr repository is available: https://copr.fedorainfracloud.org/coprs/evana/fira-code-fonts/. Package sources https://gitlab.com/evana11/fira-code-fonts-fedora.
To install, perform the following commands:
dnf copr enable evana/fira-code-fonts
dnf install fira-code-fonts
@ -158,21 +155,18 @@ Additionally, if a Color Scheme is selected:
4. Select Fira Code as "Primary font" under Settings → Editor → Color Scheme → Color Scheme Font
BBEdit, TextWrangler
--------------------
BBEdit
------
Run in your terminal:
defaults write com.barebones.bbedit "EnableFontLigatures_Fira Code" -bool YES
Source: https://www.barebones.com/support/bbedit/ExpertPreferences.html
1. Install FiraCode as per the [macOS installation instructions](https://github.com/tonsky/FiraCode/wiki/Installing#macos)
2. Open BBEdit preferences, Editor Defaults, assign Fira Code as the Default font
Brackets
--------
1. From the `View` menu choose `Themes....`
2. Paste `'Fira Code'`, at the begining of `Font Family`
2. Paste `'Fira Code'`, at the beginning of `Font Family`
Emacs
@ -479,7 +473,7 @@ In a workspace:
font-family: 'Fira Code';
}
4. Click Aplly or OK
4. Click Apply or OK
5. Happy coding!

View file

@ -1,7 +1,7 @@
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Light.woff2') format('woff2'),
url("woff/FiraCode-Light.woff") format("woff");
url('woff/FiraCode-Light.woff') format('woff');
font-weight: 300;
font-style: normal;
}
@ -9,7 +9,7 @@
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Regular.woff2') format('woff2'),
url("woff/FiraCode-Regular.woff") format("woff");
url('woff/FiraCode-Regular.woff') format('woff');
font-weight: 400;
font-style: normal;
}
@ -17,7 +17,7 @@
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Medium.woff2') format('woff2'),
url("woff/FiraCode-Medium.woff") format("woff");
url('woff/FiraCode-Medium.woff') format('woff');
font-weight: 500;
font-style: normal;
}
@ -25,7 +25,7 @@
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-SemiBold.woff2') format('woff2'),
url("woff/FiraCode-SemiBold.woff") format("woff");
url('woff/FiraCode-SemiBold.woff') format('woff');
font-weight: 600;
font-style: normal;
}
@ -33,7 +33,7 @@
@font-face {
font-family: 'Fira Code';
src: url('woff2/FiraCode-Bold.woff2') format('woff2'),
url("woff/FiraCode-Bold.woff") format("woff");
url('woff/FiraCode-Bold.woff') format('woff');
font-weight: 700;
font-style: normal;
}
@ -41,8 +41,8 @@
@font-face {
font-family: 'Fira Code VF';
src: url('woff2/FiraCode-VF.woff2') format('woff2-variations'),
url('woff/FiraCode-VF.woff') format('woff-variations');
url('woff/FiraCode-VF.woff') format('woff-variations');
/* font-weight requires a range: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide#Using_a_variable_font_font-face_changes */
font-weight: 300 700;
font-style: normal;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
@ -36,60 +36,60 @@
<div class="code light"><b># Fira Code Light</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
take = (n, [x, <i>...</i>xs]:list) <i>--&gt;</i>
| n <i>&lt;=</i> 0 <i>=&gt;</i> []
| empty list <i>=&gt;</i> []
| otherwise <i>=&gt;</i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
last3 = reverse <i>&gt;&gt;</i> take 3 <i>&gt;&gt;</i> reverse</div>
<div class="code regular"><b># Fira Code Regular</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
| n <i>&lt;=</i> 0 <i>=&gt;</i> []
| empty list <i>=&gt;</i> []
| otherwise <i>=&gt;</i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
last3 = reverse <i>&gt;&gt;</i> take 3 <i>&gt;&gt;</i> reverse</div>
<div class="code medium"><b># Fira Code Medium</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
take = (n, [x, <i>...</i>xs]:list) <i>--&gt;</i>
| n <i>&lt;=</i> 0 <i>=&gt;</i> []
| empty list <i>=&gt;</i> []
| otherwise <i>=&gt;</i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
last3 = reverse <i>&gt;&gt;</i> take 3 <i>&gt;&gt;</i> reverse</div>
<div class="code semibold"><b># Fira Code SemiBold</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
take = (n, [x, <i>...</i>xs]:list) <i>--&gt;</i>
| n <i>&lt;=</i> 0 <i>=&gt;</i> []
| empty list <i>=&gt;</i> []
| otherwise <i>=&gt;</i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
last3 = reverse <i>&gt;&gt;</i> take 3 <i>&gt;&gt;</i> reverse</div>
<div class="code bold"><b># Fira Code Bold</b>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
take = (n, [x, <i>...</i>xs]:list) <i>--&gt;</i>
| n <i>&lt;=</i> 0 <i>=&gt;</i> []
| empty list <i>=&gt;</i> []
| otherwise <i>=&gt;</i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
last3 = reverse <i>&gt;&gt;</i> take 3 <i>&gt;&gt;</i> reverse</div>
<div id="code_variable" class="code variable"><b># Fira Code Variable</b>
<input type="range" min="300" max="700" value="400" step="10" style="width: 300px;" oninput="onWeightChange(this.value)" onchange="onWeightChange(this.value)"> <span id="span_wght">400</span>
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
| n <i><=</i> 0 <i>=></i> []
| empty list <i>=></i> []
| otherwise <i>=></i> [x] <i>++</i> take n-1, xs
take = (n, [x, <i>...</i>xs]:list) <i>--&gt;</i>
| n <i>&lt;=</i> 0 <i>=&gt;</i> []
| empty list <i>=&gt;</i> []
| otherwise <i>=&gt;</i> [x] <i>++</i> take n-1, xs
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
last3 = reverse <i>&gt;&gt;</i> take 3 <i>&gt;&gt;</i> reverse</div>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
extras/arrows.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
extras/arrows_es.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
extras/console.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
extras/console_es.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
extras/download.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
extras/download_es.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
extras/ligatures.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
extras/ligatures_es.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

BIN
extras/math.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
extras/math_es.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
extras/progress.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
extras/progress.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
extras/progress_es.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
extras/samples.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
extras/samples2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

376
extras/showcases.txt Normal file
View file

@ -0,0 +1,376 @@
.= ..= := ::= =:= __
== != === !== =/= =!=
<-< <<- <-- <- <-> -> --> ->> >->
<=< <== <<->> <=> => ==> =>> >=>
>>- >- <~> -< -<< =<<
<-| <=| /\ \/ |-> |=>
<~~ <~ ~~ ~> ~~>
<<< << <= <> >= >> >>>
{. {| [| |] |} .}
<:> >:< >:> <:< :>: :<: :> :< >: <:
<||| <|| <| <|> |> ||> |||>
<$ <$> $>
<+ <+> +>
<* <*> *>
\n \\ /* */ /// //
</ <!-- </> --> />
0xF www Fl Tl Il fi fj
;; :: ::: !! ?? %% &&
|| .. ... ..< .? ?.
-- --- ++ +++ ** ***
=~ !~ ~- -~ ~@
^= ?= /= /==
-| _|_ |- ||-
#! #= ## ### ####
#{ #[ ]# #( #? #_ #_(
# Context-aware alignment
fii fjj
a*b a*A B*b A*B *a *A a* A*
a-b a-A B-b A-B -a -A a- A-
a+b a+A B+b A+B +a +A a+ A+
a:b a:A B:b A:B :a :A a: A:
# Powerline
      
# Stylistic sets
r 0 123456789 & && $ <$ <$> $> @ <= >=
# Unicode
      
⌀ ⌃ ⌄ ⌅ ⌆ ⌘ ⌤ ⌥ ⎇ ⎋ ⏏ ⎈ ✓ ⌂ ⇪ ⌧ ⌫ ⌦ ⌨ ⏎ <20>
☐ ☑ ☒ ■ □ ▢ ▣ ▤ ▦ ▧ ▨ ▩ ◧ ◨ ◩ ◪ ◫ ◰ ◱ ◲ ◳
⊜ 🄍 🄎 🄏 🅭 🅮 🅯 🆭
⟲ ⟳ ⟰ ⟱ ⟴ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟻ ⟼ ⟽ ⟾ ⟿ ↩ ↪ ⇞ ⇟ ⇤ ⇥ ↰ ↱ ↲ ↳ ❰ ❱
           
≢ ẞ ᐅ ᐊ ∴ ∵ ⎈ ‖ ∧ ⊢ ⊣ ⊥ ⊦ ⊧ ⊨ ⊩ ⊪ ⊫ ⊬ ⊭ ⊮ ⊯
⟲ ⟳ ⟰ ⟱ ⟴ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟻ ⟼ ⟽ ⟾ ⟿
↩ ⇞ ⇟ ⇤ ⇥ ⌀ ⌃ ⌄ ⌅ ⌆ ⌘ ⌤ ⌥ ⎇ ⎋ ⏏ ✓ ☐ ☑ ☒ ▤ ▦ ▧ ▨ ▩
␆ ␈ ␇ ␣ ␢ ␘ ␍ ␐ ␡ ␥ ␔ ␑ ␓ ␒ ␙ ␃ ␄ ␗ ␅ ␛ ␜ ␌ ␝ ␉ ␊ ␕ ␤ ␀ ␞ ␏ ␎ ␠ ␁ ␂ ␚ ␦ ␖ ␟ ␋
𝔹 ∀ ∃ ∄ ∅ ⊂ ⊃ ⊄ ⊅ ⊆ ⊇ ⊈ ⊉ ⊊ ⊋ ∈ ∉ ∊ ∋ ∌ ∍
☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ 「a」 「a」
# Box drawing
╭╌╌╌╌╮ ╭┄┄┄┄╮ ╭┈┈┈┈╮
╎ ╏ ┆ ┇ ┊ ┋
╎ ╏ ┆ ┇ ┊ ┋
╰╍╍╍╍╯ ╰┅┅┅┅╯ ╰┉┉┉┉╯
┌─┬─┐ ╔╦═╗ ┏━┳┓ ╒═╤═╗ ╭─┰─╮ ○ ○ ◆ ◆
├─┼─┤ ╠╬═╣ ┣━╋┫ ├─┼─╢ ┝━╋━┥ ╲
└─┴─┘ ╚╩═╝ ┗━┻┛ ╘═╧═╝ ╰─┸─╯ ■ ◆ ◆
# Blocks
|███ | 50%
▖ ▗ ▙ ▚ ▛ ▜ ▞ ▟
▁▂▃▄▅▆▇█▀▔
# Multi-line brackets
⎛ 1 ⎞ ⎡ a ⎤ ⎧ x ⎫
⎜ 2 ⎟ ⎢ b ⎥ ⎪ y ⎪
⎜ 3 ⎟ ⎢ c ⎥ ⎨ z ⎬
⎜ 4 ⎟ ⎢ d ⎥ ⎪ y ⎪
⎝ 5 ⎠ ⎣ e ⎦ ⎩ x ⎭
# Stylistic sets
cv01 a
cv02 g
cv03..06 i
cv07..10 l
ss01 r
zero, cv11..13 0
cv14 3
onum 0123456789
cv17 ~
ss05 @
ss04 $
cv18 %
ss03 &
cv15..16 *
cv31 ()
cv29 {}
cv30 |
ss02 <= >=
cv19..20 <=
cv23 >=
cv21..22 =<
ss08 == === != !==
cv24 /=
ss09 >>= <<= ||= |=
cv25 .-
cv26 :-
cv32 .=
cv27 []
cv28 {. .}
ss06 \\
ss07 =~ !~
ss10 Fl Tl fi fj fl ft
# Arbitrary-length arrows #346
<---------------------------------------------<<
<- <-- <--- <---- ----> ---> --> ->
>- >-- >--- >---- ----< ---< --< -<
|- |-- |--- |---- ----| ---| --| -|
<<- <<-- <<--- <<---- ---->> --->> -->> ->>
>>- >>-- >>--- >>---- ----<< ---<< --<< -<<
||- ||-- ||--- ||---- ----|| ---|| --|| -||
----- ----< ---<< ----> --->> ----| ---||
<---- <---< <--<< <---> <-->> <---| <--|| --<--
<<--- <<--< <<-<< <<--> <<->> <<--| <<-|| -<<-
>---- >---< >--<< >---> >-->> >---| >--|| -->--
>>--- >>--< >>-<< >>--> >>->> >>--| >>-|| ->>-
|---- |---< |--<< |---> |-->> |---| |--|| --|--
||--- ||--< ||-<< ||--> ||->> ||--| ||-|| -||-
|-<-<<->>->-|-||-|
|--<--<<-->>-->--|--||--|
|---<---<<--->>--->---|---||---|
< -< --< ---< ----<
<- -<- --<- ---<- ----<-
<-- -<-- --<-- ---<-- ----<--
<--- -<--- --<--- ---<--- ----<---
<---- -<---- --<---- ---<---- ----<----
> -> --> ---> ---->
>- ->- -->- --->- ---->-
>-- ->-- -->-- --->-- ---->--
>--- ->--- -->--- --->--- ---->---
>---- ->---- -->---- --->---- ---->----
| -| --| ---| ----|
|- -|- --|- ---|- ----|-
|-- -|-- --|-- ---|-- ----|--
|--- -|--- --|--- ---|--- ----|---
|---- -|---- --|---- ---|---- ----|----
<< -<< --<< ---<< ----<<
<<- -<<- --<<- ---<<- ----<<-
<<-- -<<-- --<<-- ---<<-- ----<<--
<<--- -<<--- --<<--- ---<<--- ----<<---
<<---- -<<---- --<<---- ---<<---- ----<<----
>> ->> -->> --->> ---->>
>>- ->>- -->>- --->>- ---->>-
>>-- ->>-- -->>-- --->>-- ---->>--
>>--- ->>--- -->>--- --->>--- ---->>---
>>---- ->>---- -->>---- --->>---- ---->>----
|| -|| --|| ---|| ----||
||- -||- --||- ---||- ----||-
||-- -||-- --||-- ---||-- ----||--
||--- -||--- --||--- ---||--- ----||---
||---- -||---- --||---- ---||---- ----||----
<<< -<<< --<<< ---<<< ----<<<
<<<- -<<<- --<<<- ---<<<- ----<<<-
<<<-- -<<<-- --<<<-- ---<<<-- ----<<<--
<<<--- -<<<--- --<<<--- ---<<<--- ----<<<---
<<<---- -<<<---- --<<<---- ---<<<---- ----<<<----
>>> ->>> -->>> --->>> ---->>>
>>>- ->>>- -->>>- --->>>- ---->>>-
>>>-- ->>>-- -->>>-- --->>>-- ---->>>--
>>>--- ->>>--- -->>>--- --->>>--- ---->>>---
>>>---- ->>>---- -->>>---- --->>>---- ---->>>----
||| -||| --||| ---||| ----|||
|||- -|||- --|||- ---|||- ----|||-
|||-- -|||-- --|||-- ---|||-- ----|||--
|||--- -|||--- --|||--- ---|||--- ----|||---
|||---- -|||---- --|||---- ---|||---- ----|||----
# Equal-based arrows
<====================================================<<
<= <== <=== <==== ====> ===> ==> =>
>= >== >=== >==== ====< ===< ==< =<
|= |== |=== |==== ====| ===| ==| =|
<<= <<== <<=== <<==== ====>> ===>> ==>> =>>
>>= >>== >>=== >>==== ====<< ===<< ==<< =<<
||= ||== ||=== ||==== ====|| ===|| ==|| =||
===== ====< ===<< ====> ===>> ====| ===|| ====/
<==== <===< <==<< <===> <==>> <===| <==|| <===/ ==<==
<<=== <<==< <<=<< <<==> <<=>> <<==| <<=|| <<==/ =<<=
>==== >===< >==<< >===> >==>> >===| >==|| >===/ ==>==
>>=== >>==< >>=<< >>==> >>=>> >>==| >>=|| >>==/ =>>=
|==== |===< |==<< |===> |==>> |===| |==|| |===/ ==|==
||=== ||==< ||=<< ||==> ||=>> ||==| ||=|| ||==/ =||=
/==== /===< /==<< /===> /==>> /===| /==|| /===/ ==/==
|=<=<<=>>=>=|=||=/=:=!=|
|==<==<<==>>==>==|==||==/==:==!==|
|===<===<<===>>===>===|===||===/===:===!===|
< =< ==< ===< ====<
<= =<= ==<= ===<= ====<=
<== =<== ==<== ===<== ====<==
<=== =<=== ==<=== ===<=== ====<===
<==== =<==== ==<==== ===<==== ====<====
> => ==> ===> ====>
>= =>= ==>= ===>= ====>=
>== =>== ==>== ===>== ====>==
>=== =>=== ==>=== ===>=== ====>===
>==== =>==== ==>==== ===>==== ====>====
| =| ==| ===| ====|
|= =|= ==|= ===|= ====|=
|== =|== ==|== ===|== ====|==
|=== =|=== ==|=== ===|=== ====|===
|==== =|==== ==|==== ===|==== ====|====
/ =/ ==/ ===/ ====/
/= =/= ==/= ===/= ====/=
/== =/== ==/== ===/== ====/==
/=== =/=== ==/=== ===/=== ====/===
/==== =/==== ==/==== ===/==== ====/====
: =: ==: ===: ====:
:= =:= ==:= ===:= ====:=
:== =:== ==:== ===:== ====:==
:=== =:=== ==:=== ===:=== ====:===
:==== =:==== ==:==== ===:==== ====:====
! =! ==! ===! ====!
!= =!= ==!= ===!= ====!=
!== =!== ==!== ===!== ====!==
!=== =!=== ==!=== ===!=== ====!===
!==== =!==== ==!==== ===!==== ====!====
<< =<< ==<< ===<< ====<<
<<= =<<= ==<<= ===<<= ====<<=
<<== =<<== ==<<== ===<<== ====<<==
<<=== =<<=== ==<<=== ===<<=== ====<<===
<<==== =<<==== ==<<==== ===<<==== ====<<====
>> =>> ==>> ===>> ====>>
>>= =>>= ==>>= ===>>= ====>>=
>>== =>>== ==>>== ===>>== ====>>==
>>=== =>>=== ==>>=== ===>>=== ====>>===
>>==== =>>==== ==>>==== ===>>==== ====>>====
|| =|| ==|| ===|| ====||
||= =||= ==||= ===||= ====||=
||== =||== ==||== ===||== ====||==
||=== =||=== ==||=== ===||=== ====||===
||==== =||==== ==||==== ===||==== ====||====
// =// ==// ===// ====//
//= =//= ==//= ===//= ====//=
//== =//== ==//== ===//== ====//==
//=== =//=== ==//=== ===//=== ====//===
//==== =//==== ==//==== ===//==== ====//====
:: =:: ==:: ===:: ====::
::= =::= ==::= ===::= ====::=
::== =::== ==::== ===::== ====::==
::=== =::=== ==::=== ===::=== ====::===
::==== =::==== ==::==== ===::==== ====::====
!! =!! ==!! ===!! ====!!
!!= =!!= ==!!= ===!!= ====!!=
!!== =!!== ==!!== ===!!== ====!!==
!!=== =!!=== ==!!=== ===!!=== ====!!===
!!==== =!!==== ==!!==== ===!!==== ====!!====
<<< =<<< ==<<< ===<<< ====<<<
<<<= =<<<= ==<<<= ===<<<= ====<<<=
<<<== =<<<== ==<<<== ===<<<== ====<<<==
<<<=== =<<<=== ==<<<=== ===<<<=== ====<<<===
<<<==== =<<<==== ==<<<==== ===<<<==== ====<<<====
>>> =>>> ==>>> ===>>> ====>>>
>>>= =>>>= ==>>>= ===>>>= ====>>>=
>>>== =>>>== ==>>>== ===>>>== ====>>>==
>>>=== =>>>=== ==>>>=== ===>>>=== ====>>>===
>>>==== =>>>==== ==>>>==== ===>>>==== ====>>>====
||| =||| ==||| ===||| ====|||
|||= =|||= ==|||= ===|||= ====|||=
|||== =|||== ==|||== ===|||== ====|||==
|||=== =|||=== ==|||=== ===|||=== ====|||===
|||==== =|||==== ==|||==== ===|||==== ====|||====
/// =/// ==/// ===/// ====///
///= =///= ==///= ===///= ====///=
///== =///== ==///== ===///== ====///==
///=== =///=== ==///=== ===///=== ====///===
///==== =///==== ==///==== ===///==== ====///====
::: =::: ==::: ===::: ====:::
:::= =:::= ==:::= ===:::= ====:::=
:::== =:::== ==:::== ===:::== ====:::==
:::=== =:::=== ==:::=== ===:::=== ====:::===
:::==== =:::==== ==:::==== ===:::==== ====:::====
!!! =!!! ==!!! ===!!! ====!!!
!!!= =!!!= ==!!!= ===!!!= ====!!!=
!!!== =!!!== ==!!!== ===!!!== ====!!!==
!!!=== =!!!=== ==!!!=== ===!!!=== ====!!!===
!!!==== =!!!==== ==!!!==== ===!!!==== ====!!!====
# Underscore lines
_ __ ___ ____
_|_ __|_ _|__ __|__
_| |_ _||_ __| ___| |__ |___
# Numbersign lines
# ## ### #### ##### ######
# Progress bars
[...........] [-----------] 
[#..........] [>----------] 
[##.........] [=>---------] 
[###........] [==>--------] 
[####.......] [===>-------] 
[#####......] [====>------] 
[######.....] [=====>-----] 
[#######....] [======>----] 
[########...] [=======>---] 
[#########..] [========>--] 
[##########.] [=========>-] 
[###########] [==========>] 
# Sanity check
- -- --- |> <| ||> <|| |||> <||| <!-- -~ .- ~-
= == === .= ..= := ::= != !== ?= #= ^=
<= <=< <=> <=|
>=
#548 >=< >=> >=| >=<< >>=<
#479 #468 #424 #406 #355 #305 =< ==< =<< |=<
#574 :>=
#621 <||>
#1056 =/

BIN
extras/sponsor_es.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
extras/typographics.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
extras/typographics_es.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

25
features/calt/center.fea Normal file
View file

@ -0,0 +1,25 @@
### Vertical-align colon/greater/less
# :> :< >: <:
# :>: :<:
# <:> >:< <:< >:>
# <::> <::< >::< >::>
# <:::> <:::< >:::< >:::>
# <::::> <::::< >::::< >::::>
lookup center {
#574 :>= :<=
ignore sub colon' [less greater] [equal hyphen];
#1145 ::< ::> <:: >::
ignore sub colon colon' [less greater];
ignore sub [less greater]' colon colon;
# middles & ends
sub [less.center greater.center colon.center] colon' by colon.center;
sub colon.center [less greater]' by [less.center greater.center];
# starts
sub [less greater]' colon by [less.center greater.center];
sub colon' [less greater] by colon.center;
} center;

View file

@ -0,0 +1,15 @@
### Logical conjunction/disjunction #738
lookup slash_backslash {
ignore sub @NotSpace slash' backslash;
ignore sub slash' backslash @NotSpace;
sub slash.spacer backslash' by slash_backslash.liga;
sub slash' backslash by slash.spacer;
} slash_backslash;
lookup backslash_slash {
ignore sub @NotSpace backslash' slash;
ignore sub backslash' slash @NotSpace;
sub backslash.spacer slash' by backslash_slash.liga;
sub backslash' slash by backslash.spacer;
} backslash_slash;

9
features/calt/cross.fea Normal file
View file

@ -0,0 +1,9 @@
lookup hexadecimal_x {
### 0xFF
sub [zero zero.zero] x' [@Digit @HexDigit] by x.multiply;
sub [zero.tosf zero.zero.tosf zero.tosf.zero] x' [@DigitTosf @HexDigit] by x.multiply.tosf;
### 800x600
sub @Digit x' @Digit by x.multiply;
sub @DigitTosf x' @DigitTosf by x.multiply.tosf;
} hexadecimal_x;

4
features/calt/dashes.fea Normal file
View file

@ -0,0 +1,4 @@
### Long dashes
sub twoemdash by hyphen_start.seq hyphen_end.seq;
sub threeemdash by hyphen_start.seq hyphen_middle.seq hyphen_end.seq;

View file

@ -0,0 +1,73 @@
lookup equal_arrows {
# Disable |||
ignore sub bar bar' bar equal;
ignore sub bar bar' equal;
ignore sub [equal_start.seq equal_middle.seq] bar' bar bar;
# equal middle & end
sub [less_equal_start.seq less_less_equal_start.seq less_equal_middle.seq less_less_equal_middle.seq greater_equal_start.seq greater_greater_equal_start.seq greater_equal_middle.seq greater_greater_equal_middle.seq bar_equal_start.seq bar_bar_equal_start.seq bar_equal_middle.seq bar_bar_equal_middle.seq slash_equal_start.seq slash_slash_equal_start.seq slash_equal_middle.seq slash_slash_equal_middle.seq colon_equal_middle.seq exclam_equal_middle.seq equal_start.seq equal_middle.seq] equal' [equal less greater bar slash colon exclam] by equal_middle.seq;
sub [less_equal_start.seq less_less_equal_start.seq less_equal_middle.seq less_less_equal_middle.seq greater_equal_start.seq greater_greater_equal_start.seq greater_equal_middle.seq greater_greater_equal_middle.seq bar_equal_start.seq bar_bar_equal_start.seq bar_equal_middle.seq bar_bar_equal_middle.seq slash_equal_start.seq slash_slash_equal_start.seq slash_equal_middle.seq slash_slash_equal_middle.seq colon_equal_middle.seq exclam_equal_middle.seq equal_start.seq equal_middle.seq] equal' by equal_end.seq;
# double middles
sub [equal_start.seq equal_middle.seq] less.spacer less' equal by less_less_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] less' less equal by less.spacer;
sub [equal_start.seq equal_middle.seq] greater.spacer greater' equal by greater_greater_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] greater' greater equal by greater.spacer;
sub [equal_start.seq equal_middle.seq] bar.spacer bar' equal by bar_bar_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] bar' bar equal by bar.spacer;
sub [equal_start.seq equal_middle.seq] slash.spacer slash' equal by slash_slash_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] slash' slash equal by slash.spacer;
# single middles
sub [equal_start.seq equal_middle.seq] less' equal by less_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] greater' equal by greater_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] bar' equal by bar_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] slash' equal by slash_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] colon' equal by colon_equal_middle.seq;
sub [equal_start.seq equal_middle.seq] exclam' equal by exclam_equal_middle.seq;
# double ends
sub [equal_start.seq equal_middle.seq] less.spacer less' by less_less_equal_end.seq;
sub [equal_start.seq equal_middle.seq] less' less by less.spacer;
sub [equal_start.seq equal_middle.seq] greater.spacer greater' by greater_greater_equal_end.seq;
sub [equal_start.seq equal_middle.seq] greater' greater by greater.spacer;
sub [equal_start.seq equal_middle.seq] bar.spacer bar' by bar_bar_equal_end.seq;
sub [equal_start.seq equal_middle.seq] bar' bar by bar.spacer;
sub [equal_start.seq equal_middle.seq] slash.spacer slash' by slash_slash_equal_end.seq;
sub [equal_start.seq equal_middle.seq] slash' slash by slash.spacer;
# single ends
sub [equal_start.seq equal_middle.seq] less' by less_equal_end.seq;
sub [equal_start.seq equal_middle.seq] greater' by greater_equal_end.seq;
sub [equal_start.seq equal_middle.seq] bar' by bar_equal_end.seq;
sub [equal_start.seq equal_middle.seq] slash' by slash_equal_end.seq;
# double beginnings
sub less.spacer less' equal by less_less_equal_start.seq;
sub less' less equal by less.spacer;
sub greater.spacer greater' equal by greater_greater_equal_start.seq;
sub greater' greater equal by greater.spacer;
sub bar.spacer bar' equal by bar_bar_equal_start.seq;
sub bar' bar equal by bar.spacer;
sub slash.spacer slash' equal by slash_slash_equal_start.seq;
sub slash' slash equal by slash.spacer;
# Disable >=< #548
sub greater' equal less [equal less] by greater_equal_start.seq;
ignore sub greater' equal less;
# Disable =< #479 #468 #424 #406 #355 #305
sub equal' less [equal less] by equal_start.seq;
# Disable =/ #1056
sub equal' slash [equal slash] by equal_start.seq;
# single beginnings
sub less' equal by less_equal_start.seq;
sub greater' equal by greater_equal_start.seq;
sub bar' equal [equal less greater bar colon exclam slash] by bar_equal_start.seq; # disable |=
sub slash' equal by slash_equal_start.seq;
sub equal' [equal greater bar colon exclam] by equal_start.seq;
} equal_arrows;

4
features/calt/fi_fl.fea Normal file
View file

@ -0,0 +1,4 @@
### fi/fl #795
sub [f i.salt_low j.salt_low] [i j]' by [i.salt_low j.salt_low];
sub [F T I l.salt_low] l' by l.salt_low;

13
features/calt/greek.fea Normal file
View file

@ -0,0 +1,13 @@
### Greek
lookup caltGreekUCdiph {
sub @GreekUCdiphIOTA Iota' by Iotadieresis;
sub @GreekUCdiphUPSILON Upsilon' by Upsilondieresis;
} caltGreekUCdiph;
lookup caltGreekUC {
sub @GreekUCAcc' @GreekUC by @GreekUCcalt;
sub @GreekUC @GreekUCAcc' by @GreekUCcalt;
sub @GreekUCAcc' space @GreekUC by @GreekUCcalt;
sub @GreekUC space @GreekUCAcc' by @GreekUCcalt;
} caltGreekUC;

View file

@ -0,0 +1,53 @@
### Arbitrary-length arrows #346
lookup hyphen_arrows {
# Disable |||
ignore sub bar bar' bar hyphen;
ignore sub bar bar' hyphen;
ignore sub [hyphen_start.seq hyphen_middle.seq] bar' bar bar;
# hyphen middle & end
sub [less_hyphen_start.seq less_less_hyphen_start.seq less_hyphen_middle.seq less_less_hyphen_middle.seq greater_hyphen_start.seq greater_greater_hyphen_start.seq greater_hyphen_middle.seq greater_greater_hyphen_middle.seq bar_hyphen_start.seq bar_bar_hyphen_start.seq bar_hyphen_middle.seq bar_bar_hyphen_middle.seq hyphen_start.seq hyphen_middle.seq] hyphen' [hyphen less greater bar] by hyphen_middle.seq;
sub [less_hyphen_start.seq less_less_hyphen_start.seq less_hyphen_middle.seq less_less_hyphen_middle.seq greater_hyphen_start.seq greater_greater_hyphen_start.seq greater_hyphen_middle.seq greater_greater_hyphen_middle.seq bar_hyphen_start.seq bar_bar_hyphen_start.seq bar_hyphen_middle.seq bar_bar_hyphen_middle.seq hyphen_start.seq hyphen_middle.seq] hyphen' by hyphen_end.seq;
# double middles
sub [hyphen_start.seq hyphen_middle.seq] less.spacer less' hyphen by less_less_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] less' less hyphen by less.spacer;
sub [hyphen_start.seq hyphen_middle.seq] greater.spacer greater' hyphen by greater_greater_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' greater hyphen by greater.spacer;
sub [hyphen_start.seq hyphen_middle.seq] bar.spacer bar' hyphen by bar_bar_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' bar hyphen by bar.spacer;
# single middles
sub [hyphen_start.seq hyphen_middle.seq] less' hyphen by less_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' hyphen by greater_hyphen_middle.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' hyphen by bar_hyphen_middle.seq;
# double ends
sub [hyphen_start.seq hyphen_middle.seq] less.spacer less' by less_less_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] less' less by less.spacer;
sub [hyphen_start.seq hyphen_middle.seq] greater.spacer greater' by greater_greater_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' greater by greater.spacer;
sub [hyphen_start.seq hyphen_middle.seq] bar.spacer bar' by bar_bar_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' bar by bar.spacer;
# single ends
sub [hyphen_start.seq hyphen_middle.seq] less' by less_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] greater' by greater_hyphen_end.seq;
sub [hyphen_start.seq hyphen_middle.seq] bar' by bar_hyphen_end.seq;
# double beginnings
sub less.spacer less' hyphen by less_less_hyphen_start.seq;
sub less' less hyphen by less.spacer;
sub greater.spacer greater' hyphen by greater_greater_hyphen_start.seq;
sub greater' greater hyphen by greater.spacer;
sub bar.spacer bar' hyphen by bar_bar_hyphen_start.seq;
sub bar' bar hyphen by bar.spacer;
# single beginnings
sub less' hyphen by less_hyphen_start.seq;
sub greater' hyphen by greater_hyphen_start.seq;
sub bar' hyphen by bar_hyphen_start.seq;
sub hyphen' [hyphen less greater bar] by hyphen_start.seq;
} hyphen_arrows;

View file

@ -0,0 +1,40 @@
### Lowercase/uppercase operators
# Must go after hyphen_arrows.fea
lookup lowercase_hyphen {
ignore sub @Tall \hyphen' @Lowercase;
ignore sub @Lowercase \hyphen' @Tall;
sub \hyphen' @Lowercase by \hyphen.lc;
sub @Lowercase \hyphen' by \hyphen.lc;
} lowercase_hyphen;
lookup lowercase_plus {
ignore sub @Tall \plus' @Lowercase;
ignore sub @Lowercase \plus' @Tall;
sub \plus' @Lowercase by \plus.lc;
sub @Lowercase \plus' by \plus.lc;
} lowercase_plus;
lookup lowercase_asterisk {
ignore sub @Tall \asterisk' @Lowercase;
ignore sub @Lowercase \asterisk' @Tall;
sub \asterisk' @Lowercase by \asterisk.lc;
sub @Lowercase \asterisk' by \asterisk.lc;
} lowercase_asterisk;
lookup lowercase_asteriskmath {
ignore sub @Tall \asteriskmath' @Lowercase;
ignore sub @Lowercase \asteriskmath' @Tall;
sub \asteriskmath' @Lowercase by \asteriskmath.lc;
sub @Lowercase \asteriskmath' by \asteriskmath.lc;
} lowercase_asteriskmath;
lookup uppercase_colon {
ignore sub @Tall \colon' @Lowercase;
ignore sub @Lowercase \colon' @Tall;
sub @Tall \colon' by \colon.uc;
sub \colon' @Tall by \colon.uc;
# pos @Tall \colon' <0 160 0 0>;
# pos \colon' @Tall <0 160 0 0>;
} uppercase_colon;

View file

@ -0,0 +1,10 @@
lookup numbersigns {
# middle parts
sub [numbersign_start.seq numbersign_middle.seq] numbersign' numbersign by numbersign_middle.seq;
# ends
sub [numbersign_start.seq numbersign_middle.seq] numbersign' by numbersign_end.seq;
# beginnings
sub numbersign' numbersign by numbersign_start.seq;
} numbersigns;

View file

@ -0,0 +1,14 @@
lookup underscores {
# middle parts
sub [underscore_start.seq underscore_middle.seq] bar' underscore by bar_underscore_middle.seq;
sub [underscore_start.seq underscore_middle.seq bar_underscore_middle.seq] underscore' bar underscore by underscore_middle.seq;
sub [underscore_start.seq underscore_middle.seq bar_underscore_middle.seq] underscore' underscore by underscore_middle.seq;
# ends
sub [underscore_start.seq underscore_middle.seq bar_underscore_middle.seq] underscore' by underscore_end.seq;
# beginnings
sub underscore' bar underscore by underscore_start.seq;
sub underscore' underscore by underscore_start.seq;
} underscores;

12
features/cv01.fea Normal file
View file

@ -0,0 +1,12 @@
# alternate lowercase a
sub a by a.cv01;
sub aacute by aacute.cv01;
sub abreve by abreve.cv01;
sub acircumflex by acircumflex.cv01;
sub adieresis by adieresis.cv01;
sub agrave by agrave.cv01;
sub amacron by amacron.cv01;
sub aogonek by aogonek.cv01;
sub aring by aring.cv01;
sub atilde by atilde.cv01;

7
features/cv02.fea Normal file
View file

@ -0,0 +1,7 @@
# single storey lowercase g
sub g by g.cv02;
sub gbreve by gbreve.cv02;
sub gcircumflex by gcircumflex.cv02;
sub gcommaaccent by gcommaaccent.cv02;
sub gdotaccent by gdotaccent.cv02;

13
features/cv03.fea Normal file
View file

@ -0,0 +1,13 @@
# lowercase I without any horizontal decorations
sub i by i.cv03;
sub idotless by idotless.cv03;
sub iacute by iacute.cv03;
sub ibreve by ibreve.cv03;
sub icircumflex by icircumflex.cv03;
sub idieresis by idieresis.cv03;
sub idotaccent by idotaccent.cv03;
sub igrave by igrave.cv03;
sub imacron by imacron.cv03;
sub iogonek by iogonek.cv03;
sub itilde by itilde.cv03;

13
features/cv04.fea Normal file
View file

@ -0,0 +1,13 @@
# lowercase I with horizontal left line at the top
sub i by i.cv04;
sub idotless by idotless.cv04;
sub iacute by iacute.cv04;
sub ibreve by ibreve.cv04;
sub icircumflex by icircumflex.cv04;
sub idieresis by idieresis.cv04;
sub idotaccent by idotaccent.cv04;
sub igrave by igrave.cv04;
sub imacron by imacron.cv04;
sub iogonek by iogonek.cv04;
sub itilde by itilde.cv04;

13
features/cv05.fea Normal file
View file

@ -0,0 +1,13 @@
# lowercase I with horizontal left line at the top and right line at the bottom
sub i by i.cv05;
sub idotless by idotless.cv05;
sub iacute by iacute.cv05;
sub ibreve by ibreve.cv05;
sub icircumflex by icircumflex.cv05;
sub idieresis by idieresis.cv05;
sub idotaccent by idotaccent.cv05;
sub igrave by igrave.cv05;
sub imacron by imacron.cv05;
sub iogonek by iogonek.cv05;
sub itilde by itilde.cv05;

13
features/cv06.fea Normal file
View file

@ -0,0 +1,13 @@
# lowercase I with horizontal left line at the top and curved right hook at the bottom
sub i by i.cv06;
sub idotless by idotless.cv06;
sub iacute by iacute.cv06;
sub ibreve by ibreve.cv06;
sub icircumflex by icircumflex.cv06;
sub idieresis by idieresis.cv06;
sub idotaccent by idotaccent.cv06;
sub igrave by igrave.cv06;
sub imacron by imacron.cv06;
sub iogonek by iogonek.cv06;
sub itilde by itilde.cv06;

8
features/cv07.fea Normal file
View file

@ -0,0 +1,8 @@
# lowercase L without any horizontal decorations
sub l by l.cv07;
sub lacute by lacute.cv07;
sub lcaron by lcaron.cv07;
sub lcommaaccent by lcommaaccent.cv07;
sub ldot by ldot.cv07;
sub lslash by lslash.cv07;

8
features/cv08.fea Normal file
View file

@ -0,0 +1,8 @@
# lowercase L with horizontal left line at the top
sub l by l.cv08;
sub lacute by lacute.cv08;
sub lcaron by lcaron.cv08;
sub lcommaaccent by lcommaaccent.cv08;
sub ldot by ldot.cv08;
sub lslash by lslash.cv08;

8
features/cv09.fea Normal file
View file

@ -0,0 +1,8 @@
# lowercase L with horizontal left line at the top and right line at the bottom
sub l by l.cv09;
sub lacute by lacute.cv09;
sub lcaron by lcaron.cv09;
sub lcommaaccent by lcommaaccent.cv09;
sub ldot by ldot.cv09;
sub lslash by lslash.cv09;

Some files were not shown because too many files have changed in this diff Show more