Merge branch 'master' of github.com:tonsky/FiraCode into qa
This commit is contained in:
commit
5bddb98dd2
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -7,4 +7,5 @@ FiraCode\ (Autosaved).glyphs
|
|||
.cpcache
|
||||
master_ufo
|
||||
instance_ufo
|
||||
venv
|
||||
venv
|
||||
.DS_Store
|
|
@ -2,6 +2,12 @@
|
|||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
#### 1.207 (WIP)
|
||||
|
||||
- Variable TTF, cleaned up [many small Light weight errors](https://github.com/thundernixon/FiraCode/blob/qa/googlefonts-qa/notes/outline-checks.md) (done by @thundernixon, PR #735)
|
||||
- Dropped EOF/WOFF which were only useful for IE 6-11
|
||||
- Fixed different vertical position of `<=` `>=` in Light and Bold caused during [#483]
|
||||
|
||||
#### 1.206 (September 30, 2018)
|
||||
|
||||
- Added `<==>` ([#392]), `#:` ([#642]), `!!.` ([#618]), `>:` `:<` ([#605]), U+0305 Combining overline ([#608]), U+2610 Ballot box, U+2611 Ballot box with check, U+2612 Ballot box with x ([#384])
|
||||
|
|
354
FiraCode.glyphs
354
FiraCode.glyphs
File diff suppressed because it is too large
Load diff
17
README.md
17
README.md
|
@ -180,6 +180,23 @@ Other monospaced fonts with ligatures:
|
|||
- [Iosevka](https://be5invis.github.io/Iosevka/) (free)
|
||||
- [DejaVu Sans Code](https://github.com/SSNikolaevich/DejaVuSansCode) (free)
|
||||
|
||||
### Building
|
||||
|
||||
On macOS:
|
||||
|
||||
```
|
||||
sudo easy_install pip
|
||||
pip install virtualenv --user
|
||||
python -m virtualenv venv
|
||||
source venv/bin/activate
|
||||
pip install gftools
|
||||
pip install fontmake
|
||||
brew install ttfautohint
|
||||
brew install woff2
|
||||
```
|
||||
|
||||
Run `./build.sh`
|
||||
|
||||
### Credits
|
||||
|
||||
- Author: Nikita Prokopov [@nikitonsky](https://twitter.com/nikitonsky)
|
||||
|
|
45
build.sh
Executable file
45
build.sh
Executable file
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
|
||||
source venv/bin/activate
|
||||
|
||||
# variable font
|
||||
fontmake -g FiraCode.glyphs -o variable --output-dir distr/variable_ttf
|
||||
|
||||
# statics
|
||||
fontmake -g FiraCode.glyphs -o ttf --output-dir distr/ttf
|
||||
fontmake -g FiraCode.glyphs -o otf --output-dir distr/otf
|
||||
|
||||
# ============================================================================
|
||||
# Autohinting ================================================================
|
||||
|
||||
statics=$(ls distr/ttf/*.ttf)
|
||||
for file in $statics; do
|
||||
echo "fix DSIG in " ${file}
|
||||
gftools fix-dsig --autofix ${file}
|
||||
|
||||
echo "TTFautohint " ${file}
|
||||
# autohint with detailed info
|
||||
hintedFile=${file/".ttf"/"-hinted.ttf"}
|
||||
ttfautohint -I ${file} ${hintedFile} --stem-width-mode nnn
|
||||
cp ${hintedFile} ${file}
|
||||
rm -rf ${hintedFile}
|
||||
done
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# Build woff2 fonts ==========================================================
|
||||
|
||||
# requires https://github.com/google/woff2
|
||||
|
||||
rm -rf distr/woff2
|
||||
|
||||
ttfs=$(ls distr/*/*.ttf)
|
||||
for ttf in $ttfs; do
|
||||
woff2_compress $ttf
|
||||
done
|
||||
|
||||
mkdir -p distr/woff2
|
||||
woff2s=$(ls distr/*/*.woff2)
|
||||
for woff2 in $woff2s; do
|
||||
mv $woff2 distr/woff2/$(basename $woff2)
|
||||
done
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,43 +1,32 @@
|
|||
@font-face{
|
||||
font-family: 'Fira Code';
|
||||
src: url('eot/FiraCode-Light.eot');
|
||||
src: url('eot/FiraCode-Light.eot') format('embedded-opentype'),
|
||||
url('woff2/FiraCode-Light.woff2') format('woff2'),
|
||||
url('woff/FiraCode-Light.woff') format('woff'),
|
||||
url('ttf/FiraCode-Light.ttf') format('truetype');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
@font-face {
|
||||
font-family: 'Fira Code';
|
||||
src: url('woff2/FiraCode-Light.woff2') format('woff2');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family: 'Fira Code';
|
||||
src: url('eot/FiraCode-Regular.eot');
|
||||
src: url('eot/FiraCode-Regular.eot') format('embedded-opentype'),
|
||||
url('woff2/FiraCode-Regular.woff2') format('woff2'),
|
||||
url('woff/FiraCode-Regular.woff') format('woff'),
|
||||
url('ttf/FiraCode-Regular.ttf') format('truetype');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
@font-face {
|
||||
font-family: 'Fira Code';
|
||||
src: url('woff2/FiraCode-Regular.woff2') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family: 'Fira Code';
|
||||
src: url('eot/FiraCode-Medium.eot');
|
||||
src: url('eot/FiraCode-Medium.eot') format('embedded-opentype'),
|
||||
url('woff2/FiraCode-Medium.woff2') format('woff2'),
|
||||
url('woff/FiraCode-Medium.woff') format('woff'),
|
||||
url('ttf/FiraCode-Medium.ttf') format('truetype');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
@font-face {
|
||||
font-family: 'Fira Code';
|
||||
src: url('woff2/FiraCode-Medium.woff2') format('woff2');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face{
|
||||
font-family: 'Fira Code';
|
||||
src: url('eot/FiraCode-Bold.eot');
|
||||
src: url('eot/FiraCode-Bold.eot') format('embedded-opentype'),
|
||||
url('woff2/FiraCode-Bold.woff2') format('woff2'),
|
||||
url('woff/FiraCode-Bold.woff') format('woff'),
|
||||
url('ttf/FiraCode-Bold.ttf') format('truetype');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
@font-face {
|
||||
font-family: 'Fira Code';
|
||||
src: url('woff2/FiraCode-Bold.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Fira Code VF';
|
||||
src: url('woff2/FiraCode-VF.woff2') format('woff2-variations');
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -20,9 +20,17 @@
|
|||
.regular { font-weight: 400; }
|
||||
.medium { font-weight: 500; }
|
||||
.bold { font-weight: 700; }
|
||||
.variable { font-family: 'Fira Code VF'; font-variation-settings: 'wght' 400; }
|
||||
i { font-style: normal; color: #c33; }
|
||||
b { font-weight: inherit; color: #c33; }
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
function onWeightChange(weight) {
|
||||
// code_variable.style['font-weight'] = weight;
|
||||
code_variable.style['font-variation-settings'] = "'wght' " + weight;
|
||||
span_wght.innerText = weight;
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
|
||||
<div class="code light"><b># Fira Code Light</b>
|
||||
|
@ -35,7 +43,7 @@ take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
|||
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
|
||||
|
||||
|
||||
<div class="code regular"><b># Fira Code Regular</b>
|
||||
<div class="code regular"><b># Fira Code Regular</b>
|
||||
|
||||
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
||||
| n <i><=</i> 0 <i>=></i> []
|
||||
|
@ -45,7 +53,7 @@ take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
|||
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
|
||||
|
||||
|
||||
<div class="code medium"><b># Fira Code Medium</b>
|
||||
<div class="code medium"><b># Fira Code Medium</b>
|
||||
|
||||
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
||||
| n <i><=</i> 0 <i>=></i> []
|
||||
|
@ -55,7 +63,18 @@ take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
|||
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
|
||||
|
||||
|
||||
<div class="code bold"><b># Fira Code Bold</b>
|
||||
<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
|
||||
|
||||
last3 = reverse <i>>></i> take 3 <i>>></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> []
|
||||
|
|
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.
Loading…
Reference in a new issue