1
1
mirror of https://github.com/rubjo/victor-mono.git synced 2024-08-16 01:40:26 +03:00

🔀 Merge

This commit is contained in:
rubjo 2021-11-17 07:27:02 +01:00
commit fd1e72f63d
32 changed files with 23825 additions and 12955 deletions

View File

@ -3,10 +3,14 @@ module.exports = {
env: {
node: true
},
'extends': [
extends: [
'plugin:vue/recommended',
'@vue/standard'
],
"ignorePatterns": [
'src/components/Sample-desktop.js',
'src/components/Sample-mobile.vue'
],
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'prouduction' ? 'error' : 'off',

View File

@ -1,3 +1,4 @@
github: rubjo
patreon: rune_b
ko_fi: victormono
custom: https://www.paypal.me/runbjo

106
LICENSE
View File

@ -1,19 +1,93 @@
MIT License
Copyright (c) 2021, Rune Bjørnerås (https://github.com/rubjo)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -1,43 +1,42 @@
[<img src="https://github.com/rubjo/victor-mono/raw/master/public/header.png" width="100%" alt="Header">](https://rubjo.github.io/victor-mono)
![GitHub release](https://img.shields.io/github/release/rubjo/victor-mono.svg)
![GitHub Release Date](https://img.shields.io/github/release-date/rubjo/victor-mono.svg)
![Travis (.org)](https://img.shields.io/travis/rubjo/victor-mono.svg?logo=travis)
![GitHub](https://img.shields.io/github/license/rubjo/victor-mono.svg)
![GitHub stars](https://img.shields.io/github/stars/rubjo/victor-mono.svg?style=social)
## A programming font with semi-connected cursive italics and symbol ligatures.
![Intro image](https://github.com/rubjo/victor-mono/raw/master/public/twitter.png)
![carbon (3)](https://user-images.githubusercontent.com/42270947/117447088-53e03300-af3d-11eb-84e2-df1713e77019.png)
#### More information and download: [rubjo.github.io/victor-mono](https://rubjo.github.io/victor-mono). I would be grateful if you point others to the same URL.
### More information and download: [rubjo.github.io/victor-mono](https://rubjo.github.io/victor-mono). If you like it and want to say thanks, [donations](https://www.paypal.me/runbjo) are welcome. ❤️
#### For use in apps, web pages or other projects:
***
### For use in apps, web pages or other projects:
1. `npm i victormono` (installs Regular, Italic, Bold and Bold Italic styles)
2. `import 'victormono'` (in a typical modern setup, eg. webpack)
3. Style classes with `font-family: 'Victor Mono'`, `font-weight` and `font-style`
##### Alternative CDN hosting, best for online editors like [CodePen](https://codepen.io/tomByrer/pen/MWWagVp):
#### Alternative CDN hosting, best for online editors like [CodePen](https://codepen.io/tomByrer/pen/MWWagVp):
1. `<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/victormono@latest/dist/index.min.css">` in `<head>` or top of `<body>`
2. Style classes with `font-family: 'Victor Mono', monospace`
#### If you like it and want to say thanks, [donations](https://www.paypal.me/runbjo) are welcome. ❤️
[<img src="https://github.com/rubjo/victor-mono/raw/master/public/code-sample.png" align="right" width="100%" alt="Code sample">](https://rubjo.github.io/victor-mono)
### &nbsp;
[<img src="https://github.com/rubjo/victor-mono/raw/master/public/powerline-cropped.png" align="right" alt="Powerline">](https://rubjo.github.io/victor-mono)
### &nbsp;
[<img src="https://github.com/rubjo/victor-mono/raw/master/public/specimens-cropped.png" align="right" alt="Specimens">](https://rubjo.github.io/victor-mono)
### &nbsp;
[<img src="https://github.com/rubjo/victor-mono/raw/master/src/assets/img/glyphs-dark.png" align="right" alt="Design">](https://rubjo.github.io/victor-mono)
### &nbsp;
#### Font stylistics
##### Available stylistics
- ss01: https://github.com/rubjo/victor-mono/issues/78 ([#78](https://github.com/rubjo/victor-mono/issues/78))
***
##### Configuration
### Font stylistics
#### Available stylistics
- ss01: Single-storey a
- ss02: Slashed zero, variant 1
- ss03: Slashed zero, variant 2
- ss04: Slashed zero, variant 3
- ss05: Slashed zero, variant 4
- ss06: Slashed seven
#### Configuration
- Sublime:
```json
@ -53,3 +52,20 @@
```
font_features VictorMono-Medium +ss01
```
***
### Example code previews
![carbon](https://user-images.githubusercontent.com/42270947/117446571-8ccbd800-af3c-11eb-8f34-bd8250e1920b.png)
![carbon (1)](https://user-images.githubusercontent.com/42270947/117447058-46c34400-af3d-11eb-8c2d-007ae5d686cb.png)
![carbon (2)](https://user-images.githubusercontent.com/42270947/117447070-4cb92500-af3d-11eb-9254-4ee5628170c6.png)
![carbon (4)](https://user-images.githubusercontent.com/42270947/117447095-56db2380-af3d-11eb-89fe-2bcb873cd112.png)
![carbon (5)](https://user-images.githubusercontent.com/42270947/117447107-5b074100-af3d-11eb-8101-69fb61e6c402.png)
![carbon (6)](https://user-images.githubusercontent.com/42270947/117447119-5f335e80-af3d-11eb-9952-e745a7ddafac.png)
![carbon (7)](https://user-images.githubusercontent.com/42270947/117447143-6490a900-af3d-11eb-87a5-6d1fe2e7a9ca.png)

View File

@ -18,7 +18,11 @@ name = "Use Typo Metrics";
value = 1;
}
);
<<<<<<< HEAD
date = "2021-11-15 07:09:22 +0000";
=======
date = "2021-10-20 11:30:15 +0000";
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
designer = "Rune Bjørnerås";
designerURL = "rubjo.github.io/victor-mono";
familyName = "Victor Mono";
@ -32,7 +36,11 @@ name = Languagesystems;
features = (
{
automatic = 1;
<<<<<<< HEAD
code = "feature locl;\012feature subs;\012feature sinf;\012feature sups;\012feature numr;\012feature dnom;\012feature frac;\012feature ordn;\012feature case;\012feature calt;\012feature salt;\012feature ss01;\012feature ss02;\012feature ss03;\012feature ss04;\012feature ss05;\012feature ss06;\012";
=======
code = "feature locl;\012feature subs;\012feature sinf;\012feature sups;\012feature numr;\012feature dnom;\012feature frac;\012feature ordn;\012feature case;\012feature calt;\012feature salt;\012feature ss01;\012feature ss02;\012feature ss03;\012feature ss04;\012feature ss05;\012";
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
name = aalt;
},
{
@ -123,11 +131,14 @@ name = ss04;
automatic = 1;
code = "sub zero by zero.ss05;\012";
name = ss05;
<<<<<<< HEAD
},
{
automatic = 1;
code = "sub seven by seven.ss06;\012";
name = ss06;
=======
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
}
);
fontMaster = (
@ -1792,7 +1803,11 @@ unicode = 0044;
{
color = 4;
glyphname = Eth;
<<<<<<< HEAD
lastChange = "2021-11-15 07:01:33 +0000";
=======
lastChange = "2021-10-18 17:21:55 +0000";
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
layers = (
{
layerId = "7C079D0C-96CD-4BD8-8800-0621C7635A78";
@ -52579,6 +52594,321 @@ width = 600;
},
{
color = 4;
glyphname = zero.ss03;
lastChange = "2021-10-18 17:21:55 +0000";
layers = (
{
layerId = "7C079D0C-96CD-4BD8-8800-0621C7635A78";
paths = (
{
closed = 1;
nodes = (
"363 -14 OFFCURVE",
"499 150 OFFCURVE",
"552 396 CURVE SMOOTH",
"605 646 OFFCURVE",
"535 814 OFFCURVE",
"403 814 CURVE SMOOTH",
"275 814 OFFCURVE",
"139 650 OFFCURVE",
"87 404 CURVE SMOOTH",
"34 154 OFFCURVE",
"103 -14 OFFCURVE",
"236 -14 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"139 32 OFFCURVE",
"89 177 OFFCURVE",
"136 396 CURVE SMOOTH",
"183 619 OFFCURVE",
"300 768 OFFCURVE",
"402 768 CURVE SMOOTH",
"500 768 OFFCURVE",
"550 623 OFFCURVE",
"503 404 CURVE SMOOTH",
"456 181 OFFCURVE",
"339 32 OFFCURVE",
"237 32 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"635 687 LINE",
"650 765 LINE",
"4 113 LINE",
"-11 35 LINE"
);
}
);
width = 600;
},
{
layerId = "291433DC-531A-45CC-B814-57D397372F12";
paths = (
{
closed = 1;
nodes = (
"382 -14 OFFCURVE",
"526 157 OFFCURVE",
"576 392 CURVE SMOOTH",
"627 635 OFFCURVE",
"549 814 OFFCURVE",
"399 814 CURVE SMOOTH",
"257 814 OFFCURVE",
"113 643 OFFCURVE",
"63 408 CURVE SMOOTH",
"11 165 OFFCURVE",
"90 -14 OFFCURVE",
"240 -14 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"165 78 OFFCURVE",
"121 212 OFFCURVE",
"160 392 CURVE SMOOTH",
"200 580 OFFCURVE",
"310 722 OFFCURVE",
"396 722 CURVE SMOOTH",
"474 722 OFFCURVE",
"517 588 OFFCURVE",
"479 408 CURVE SMOOTH",
"439 220 OFFCURVE",
"329 78 OFFCURVE",
"243 78 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"622 642 LINE",
"653 800 LINE",
"17 161 LINE",
"-14 0 LINE"
);
}
);
width = 600;
}
);
},
{
color = 4;
glyphname = zero.ss04;
lastChange = "2021-10-18 17:21:55 +0000";
layers = (
{
layerId = "7C079D0C-96CD-4BD8-8800-0621C7635A78";
paths = (
{
closed = 1;
nodes = (
"363 -14 OFFCURVE",
"499 150 OFFCURVE",
"552 396 CURVE SMOOTH",
"605 646 OFFCURVE",
"535 814 OFFCURVE",
"403 814 CURVE SMOOTH",
"275 814 OFFCURVE",
"139 650 OFFCURVE",
"87 404 CURVE SMOOTH",
"34 154 OFFCURVE",
"103 -14 OFFCURVE",
"236 -14 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"139 32 OFFCURVE",
"89 177 OFFCURVE",
"136 396 CURVE SMOOTH",
"183 619 OFFCURVE",
"300 768 OFFCURVE",
"402 768 CURVE SMOOTH",
"500 768 OFFCURVE",
"550 623 OFFCURVE",
"503 404 CURVE SMOOTH",
"456 181 OFFCURVE",
"339 32 OFFCURVE",
"237 32 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"302 200 LINE",
"387 600 LINE",
"337 600 LINE",
"252 200 LINE"
);
}
);
width = 600;
},
{
layerId = "291433DC-531A-45CC-B814-57D397372F12";
paths = (
{
closed = 1;
nodes = (
"382 -14 OFFCURVE",
"526 157 OFFCURVE",
"576 392 CURVE SMOOTH",
"627 635 OFFCURVE",
"549 814 OFFCURVE",
"399 814 CURVE SMOOTH",
"257 814 OFFCURVE",
"113 643 OFFCURVE",
"63 408 CURVE SMOOTH",
"11 165 OFFCURVE",
"90 -14 OFFCURVE",
"240 -14 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"165 78 OFFCURVE",
"121 212 OFFCURVE",
"160 392 CURVE SMOOTH",
"200 580 OFFCURVE",
"310 722 OFFCURVE",
"396 722 CURVE SMOOTH",
"474 722 OFFCURVE",
"517 588 OFFCURVE",
"479 408 CURVE SMOOTH",
"439 220 OFFCURVE",
"329 78 OFFCURVE",
"243 78 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"331 220 LINE",
"408 580 LINE",
"308 580 LINE",
"231 220 LINE"
);
}
);
width = 600;
}
);
},
{
color = 4;
glyphname = zero.ss05;
lastChange = "2021-10-18 17:21:55 +0000";
layers = (
{
layerId = "7C079D0C-96CD-4BD8-8800-0621C7635A78";
paths = (
{
closed = 1;
nodes = (
"363 -14 OFFCURVE",
"499 150 OFFCURVE",
"552 396 CURVE SMOOTH",
"605 646 OFFCURVE",
"535 814 OFFCURVE",
"403 814 CURVE SMOOTH",
"275 814 OFFCURVE",
"139 650 OFFCURVE",
"87 404 CURVE SMOOTH",
"34 154 OFFCURVE",
"103 -14 OFFCURVE",
"236 -14 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"139 32 OFFCURVE",
"89 177 OFFCURVE",
"136 396 CURVE SMOOTH",
"183 619 OFFCURVE",
"300 768 OFFCURVE",
"402 768 CURVE SMOOTH",
"500 768 OFFCURVE",
"550 623 OFFCURVE",
"503 404 CURVE SMOOTH",
"456 181 OFFCURVE",
"339 32 OFFCURVE",
"237 32 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"429 479 LINE",
"444 557 LINE",
"210 321 LINE",
"195 243 LINE"
);
}
);
width = 600;
},
{
layerId = "291433DC-531A-45CC-B814-57D397372F12";
paths = (
{
closed = 1;
nodes = (
"382 -14 OFFCURVE",
"526 157 OFFCURVE",
"576 392 CURVE SMOOTH",
"627 635 OFFCURVE",
"549 814 OFFCURVE",
"399 814 CURVE SMOOTH",
"257 814 OFFCURVE",
"113 643 OFFCURVE",
"63 408 CURVE SMOOTH",
"11 165 OFFCURVE",
"90 -14 OFFCURVE",
"240 -14 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"165 78 OFFCURVE",
"121 212 OFFCURVE",
"160 392 CURVE SMOOTH",
"200 580 OFFCURVE",
"310 722 OFFCURVE",
"396 722 CURVE SMOOTH",
"474 722 OFFCURVE",
"517 588 OFFCURVE",
"479 408 CURVE SMOOTH",
"439 220 OFFCURVE",
"329 78 OFFCURVE",
"243 78 CURVE SMOOTH"
);
},
{
closed = 1;
nodes = (
"405 423 LINE",
"435 579 LINE",
"234 377 LINE",
"204 221 LINE"
);
}
);
width = 600;
}
);
},
{
color = 4;
glyphname = zeroinferior;
lastChange = "2021-10-18 17:21:55 +0000";
layers = (
@ -89824,5 +90154,9 @@ HV = "50";
};
};
versionMajor = 1;
<<<<<<< HEAD
versionMinor = 510;
=======
versionMinor = 500;
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
}

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,11 @@ name = "Use Typo Metrics";
value = 1;
}
);
<<<<<<< HEAD
date = "2021-11-15 07:08:57 +0000";
=======
date = "2021-10-20 11:29:46 +0000";
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
designer = "Rune Bjørnerås";
designerURL = "rubjo.github.io/victor-mono";
familyName = "Victor Mono";
@ -37,7 +41,11 @@ name = Languagesystems;
features = (
{
automatic = 1;
<<<<<<< HEAD
code = "feature locl;\012feature subs;\012feature sinf;\012feature sups;\012feature numr;\012feature dnom;\012feature frac;\012feature ordn;\012feature case;\012feature calt;\012feature salt;\012feature ss01;\012feature ss02;\012feature ss03;\012feature ss04;\012feature ss05;\012feature ss06;\012";
=======
code = "feature locl;\012feature subs;\012feature sinf;\012feature sups;\012feature numr;\012feature dnom;\012feature frac;\012feature ordn;\012feature case;\012feature calt;\012feature salt;\012feature ss01;\012feature ss02;\012feature ss03;\012feature ss04;\012feature ss05;\012";
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
name = aalt;
},
{
@ -129,11 +137,14 @@ name = ss04;
automatic = 1;
code = "sub zero by zero.ss05;\012";
name = ss05;
<<<<<<< HEAD
},
{
automatic = 1;
code = "sub seven by seven.ss06;\012";
name = ss06;
=======
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
}
);
fontMaster = (
@ -1792,7 +1803,11 @@ unicode = 0044;
{
color = 4;
glyphname = Eth;
<<<<<<< HEAD
lastChange = "2021-11-15 07:01:07 +0000";
=======
lastChange = "2021-10-18 17:22:14 +0000";
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
layers = (
{
layerId = "7C079D0C-96CD-4BD8-8800-0621C7635A78";
@ -39722,6 +39737,7 @@ width = 600;
},
{
color = 4;
<<<<<<< HEAD
glyphname = seven.ss06;
lastChange = "2021-11-15 07:05:25 +0000";
layers = (
@ -39791,6 +39807,8 @@ width = 600;
},
{
color = 4;
=======
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
glyphname = zeroinferior;
lastChange = "2021-10-18 17:22:14 +0000";
layers = (
@ -76747,5 +76765,9 @@ HV = 50;
};
};
versionMajor = 1;
<<<<<<< HEAD
versionMinor = 510;
=======
versionMinor = 500;
>>>>>>> f20b5e8f85315a21fb2b3909ddf276c24ec65165
}

25270
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "victormono",
"version": "1.4.2",
"version": "1.5.0",
"description": "Victor Mono: a free programming font with semi-connected cursive italics and symbol ligatures",
"files": [
"dist/"
@ -39,9 +39,9 @@
},
"dependencies": {
"animejs": "^3.2.1",
"core-js": "^2.6.5",
"core-js": "^2.6.12",
"dom-confetti": "^0.1.2",
"element-ui": "^2.13.2",
"element-ui": "^2.14.1",
"granim": "^2.0.0",
"typed.js": "^2.0.11",
"vue": "^2.6.12",
@ -49,6 +49,7 @@
"vue-faq-accordion": "^1.6.2",
"vue-scrollTo": "^2.4.1",
"vue-social-sharing": "^2.4.6",
"vue-tweet-embed": "^2.4.0",
"vue-twentytwenty": "^0.6.2"
},
"devDependencies": {
@ -58,14 +59,17 @@
"@vue/eslint-config-standard": "^4.0.0",
"babel-eslint": "^10.1.0",
"babel-plugin-component": "^1.1.1",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0",
"eslint": "^7.0.0",
"eslint-plugin-import": "^2.25.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-standard": "^5.0.0",
"eslint-plugin-vue": "^7.20.0",
"node-sass": "^4.14.1",
"raw-loader": "^2.0.0",
"sass": "^1.27.0",
"sass": "^1.32.0",
"sass-loader": "^7.3.1",
"stylelint": "^10.0.1",
"stylelint-config-recess-order": "^2.1.0",
"stylelint-config-recess-order": "^2.3.0",
"stylelint-config-standard": "^18.3.0",
"vue-cli-plugin-element": "^1.0.1",
"vue-template-compiler": "^2.6.12"

Binary file not shown.

View File

@ -16,13 +16,16 @@
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-PLTRSCB');</script>
<!-- End Google Tag Manager -->
<script data-ad-client="ca-pub-4256332184562317" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>Victor Mono</title>
<meta name="description" content="Victor Mono is a free programming font with semi-connected cursive italics and symbol ligatures." />
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Victor Mono: Free • Ligatures • Cursive italics">
<meta name="twitter:description" content="Victor Mono is a beautiful, open-source programming font with semi-connected cursive italics and symbol ligatures.">
<meta name="twitter:image" content="https://rubjo.github.io/victor-mono/twitter.png">
</head>
<body>
<!-- Google Tag Manager (noscript) -->

BIN
public/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

BIN
public/twitter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 KiB

View File

@ -47,9 +47,10 @@
<em>semi-connected cursive italics</em> and programming
symbol ligatures.
<br><br>
The typeface is clean, crisp and narrow, with a large x-height and clear punctuation,
making it legible and ideal for code. It comes in seven weights and
Roman, <em>Italic</em> and <em class="alt">Oblique</em> styles.
The typeface is slender, crisp and narrow, with a large x-height
and clear punctuation, making it legible and ideal for code.
It comes in seven weights and Roman, <em>Italic</em> and
<em class="alt">Oblique</em> styles.
</p>
</el-col>
</el-row>
@ -175,18 +176,18 @@
:sm="18"
>
<p class="columns">
When it comes to programming fonts, I prefer something thin, crisp
and relatively condensed for the code proper,
complemented with a more <em>informal, flowing and human style</em>
for things like comments and reserved keywords.
When it comes to programming fonts, I prefer something thin and
relatively condensed,
but with a more <em>informal, flowing and human style</em>
for standouts like comments and certain keywords.
<br><br>
In the past, I always ended up looking for something else after
using a font for a while, because something didn't look right to me.
So eventually, I started sketching and designing something myself.
So I started sketching and designing something myself.
I wanted something that:
<ul>
<li>had friendly and distinct italics</li>
<li>a strict, geometric and readable regular style</li>
<li>had a strict, geometric and readable regular style</li>
<li>had programming symbol ligatures</li>
<li>was slender and elegant</li>
<li>narrow enough to fit a lot of text</li>
@ -225,7 +226,7 @@
:sm="18"
>
<div class="right caption">
Two-flavour designs currently being considered by
Designs submitted to
<a
href="http://wasdkeyboards.com"
target="_blank"
@ -258,18 +259,9 @@
:sm="18"
>
<p>
If you try it out and like it, I would be very grateful for any donations
or purchases from the Victor Mono Merch Shop
(<a
href="https://shop.spreadshirt.com/victor-mono/"
target="_blank"
>North America</a>
/
<a
href="https://shop.spreadshirt.net/victor-mono/"
target="_blank"
>Europe</a>).
It means I can cover some costs for software and time spent - and keep refining and extending the font.
If you try it out and like it, I would be very grateful for any
donations. It means I can cover some costs for software and time
spent - and keep refining and extending the font.
</p>
</el-col>
</el-row>
@ -316,7 +308,7 @@
type="info"
>
Download<br>
<em>~5MB ZIP</em>
<em>~8MB ZIP</em>
</el-button>
</a>
</el-col>
@ -341,7 +333,7 @@
</em>
<br>
<code>brew tap homebrew/cask-fonts</code><br>
<code>brew cask install font-victor-mono</code>
<code>brew install --cask font-victor-mono</code>
</p>
</el-col>
<el-col
@ -436,7 +428,14 @@
5) <em>Optional</em> &middot; <a
href="https://www.google.com/search?q=how+to+change+theme+in+VS+Code"
target="_blank"
>Set the code theme</a> to one you like<br>
>Set the code theme</a> to one you like
(try
<a
href="https://marketplace.visualstudio.com/items?itemName=rubjo.ultimate-dark-neo"
target="_blank"
>this one</a>,
for example)
<br>
6) <em>Optional</em> &middot; <a
href="https://www.google.com/search?q=how+to+modify+themes+in+VS+Code"
target="_blank"
@ -530,6 +529,12 @@
<div class="centre">
Thank you to:
</div>
<div class="centre supporter">
Diogo Almeida
</div>
<div class="centre supporter">
Dieter Auracher
</div>
<div class="centre supporter">
Emerson Beltrán
</div>
@ -537,26 +542,61 @@
Colton Borg
</div>
<div class="centre supporter">
Lady Isak Grozny
Dion Bridger
</div>
<div class="centre supporter">
<a
href="https://github.com/datarootsio"
target="_blank"
>
datarootsio
</a>
</div>
<div class="centre supporter">
Julien Durillon
</div>
<div class="centre supporter">
Michael Huggett
</div>
<div class="centre supporter">
Igor Harden
</div>
<div class="centre supporter">
K. Bruce Jones
</div>
<div class="centre supporter">
kmwallio
</div>
<div class="centre supporter">
Josh Kraker
</div>
<div class="centre supporter">
Stuart Morris
</div>
<div class="centre supporter">
RKC
</div>
<div class="centre supporter">
Lars Rönnbäck
</div>
<div class="centre supporter">
Michael Schore
</div>
<div class="centre supporter">
Robert Ruf
</div>
<div class="centre supporter">
Christoph Siedentop
</div>
<div class="centre supporter">
Spiritualminded
</div>
<div class="centre supporter">
thief#0001
</div>
<div class="centre supporter">
Ashley Kaine Towns
</div>
<p />
</el-col>
<el-col
@ -592,6 +632,15 @@
<div class="centre supporter">
April Collier
</div>
<div class="centre supporter">
Matthew A Drover
</div>
<div class="centre supporter">
Élise Duverdier
</div>
<div class="centre supporter">
Lady Isak Grozny
</div>
<div class="centre supporter">
Sven Koschnicke
</div>
@ -601,9 +650,15 @@
<div class="centre supporter">
Matthew O'Gorman
</div>
<div class="centre supporter">
Poudingue
</div>
<div class="centre supporter">
Emily Price
</div>
<div class="centre supporter">
Alex Simons
</div>
<div class="centre supporter">
Justin Slepak
</div>
@ -611,6 +666,9 @@
</el-col>
</el-row>
</div>
<Testimonials :theme="theme" />
<HeroImage
image="specimen"
:theme="theme"
@ -630,6 +688,9 @@ import Header from '@/components/Header'
import lazyLoadComponent from '@/utils/lazy-load-component.js'
import Loader from '@/components/Loader'
import { confetti } from 'dom-confetti'
// Dunno why this is necessary
// eslint-disable-next-line
import Testimonials from '@/components/Testimonials'
import Faq from '@/components/Faq'
import Credits from '@/components/Credits'
@ -641,7 +702,7 @@ export default {
CodeView: lazyLoadComponent({
componentFactory: () => import('@/components/CodeView'),
background: localStorage.getItem('theme') === 'light' ? '#f2f2f2' : '#304148',
height: '80vh',
height: '20vw',
loading: Loader
}),
HeroImage: lazyLoadComponent({
@ -658,6 +719,12 @@ export default {
maxHeight: 'calc(100vw + 48px)',
loading: Loader
}),
Testimonials: lazyLoadComponent({
componentFactory: () => import('@/components/Testimonials'),
background: localStorage.getItem('theme') === 'light' ? '#f5f5f5' : '#515151',
height: '50px',
loading: Loader
}),
Faq,
Credits
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 285 KiB

View File

@ -16,12 +16,16 @@
v-if="theme === 'dark'"
class="right caption"
>
Based on
Ultimate Dark Neo code theme for
<a
target="_blank"
href="https://github.com/voronianski/oceanic-next-color-scheme"
>Oceanic Next</a>
colour scheme by Dmitri Voronianski
href="https://marketplace.visualstudio.com/items?itemName=rubjo.ultimate-dark-neo"
>VS Code</a>
or
<a
target="_blank"
href="https://packagecontrol.io/packages/Ultimate%20Dark%20Neo"
>Sublime Text</a>
</div>
<div
v-else
@ -108,7 +112,6 @@ export default {
.window {
position: relative;
z-index: 0;
height: 80vh;
}
::v-deep .CodeMirror {

View File

@ -37,9 +37,9 @@
<em>Test and compare free programming fonts on
<a
target="_blank"
href="https://app.programmingfonts.org#victor-mono"
href="https://www.programmingfonts.org/#victor-mono"
>
app.programmingfonts.org</a>
programmingfonts.org</a>
</em>
</p>
@ -175,6 +175,10 @@ export default {
transform: scale(1.1);
}
option {
background: var(--background-color-base);
}
// Disable default styling on ff
-moz-appearance: none;

View File

@ -198,6 +198,21 @@
>
Markus Oberlehner</a>
<br><br>
<em>Embed tweets in Vue apps</em>
<br>
<a
target="_blank"
href="https://github.com/tonickkozlov/vue-tweet-embed"
>
vue-tweet-embed</a>
by
<a
target="_blank"
href="https://github.com/tonickkozlov"
>
Anton Kozlov
</a>
<br><br>
<em>The nice JS framework</em>
<br>
<a

View File

@ -1,5 +1,5 @@
<template>
<div class="content alternate-bg">
<div class="content">
<div
id="faq"
class="scroll-head"
@ -82,7 +82,7 @@ export default {
category: 'Other'
}, {
title: 'Why are you giving it away?',
value: 'I originally planned on selling it for some (smaller or much larger) sum, like others do. But I eventually decided against it: I couldnt be bothered to set up hosting, payment, EULAs etc, nor do I have time for the level of support I feel should accompany a commercial product. This typeface isnt meant to be the perfect font for anyone - I just made the one perfect for me. If youre unemployed or struggle to make ends meet, download the font with a clear conscience. If you work in a corporate setting or are relatively well off, consider <a href="https://paypal.me/runbjo" class="donate" target="_blank">supporting</a> the hours spent designing this font. If you want to and are able to donate anything: thank you!',
value: 'I originally planned on selling it for some (smaller or much larger) sum, like others do. But I eventually decided against it: I couldnt be bothered to set up hosting, payment, EULAs etc, nor do I have time for the level of support I feel should accompany a commercial product. This typeface isnt meant to be the perfect font for everyone - I just made the one perfect for me. If youre unemployed or struggle to make ends meet, download the font with a clear conscience. If you work in a corporate setting or are relatively well off, consider <a href="https://paypal.me/runbjo" class="donate" target="_blank">supporting</a> the hours spent designing this font. If you want to and are able to donate anything: thank you!',
category: 'Other'
}, {
title: 'Did you know that the [insert typeface property here] violates some 500-year old font design convention?',
@ -94,7 +94,7 @@ export default {
category: 'Design & features'
}, {
title: 'A programming font with cursive italics and ligatures is the worst idea in the world. This is absolutely horrible. BTW, I am really angry.',
value: 'Not really a question, but anyway: People actually like different things. And it\'s OK. It\'s OK if someone else prefers a different font for code than you do. We don\'t have to use the same one. ❤️',
value: 'Not really a question, but anyway: It\'s OK if someone else prefers a different font for code than you do. We don\'t have to use the same one. ❤️',
category: 'Design & features'
}
]

View File

@ -194,7 +194,7 @@ export default {
const options = {
strings: [
'"#%§§##/&*!',
'(im)peachy',
'peachy',
'<span style="text-decoration: line-through;">modest</span>',
'==>',
'>=<=-><-=>><<=',

View File

@ -46,9 +46,11 @@ export default {
height: 50vw;
max-height: 350px;
overflow: hidden;
opacity: 0.7;
transition: opacity 1s 0.25s;
filter: grayscale(1);
opacity: 0.5;
transition: all 1s 0.1s;
&:hover {
filter: grayscale(0);
opacity: 1;
}
img {

View File

@ -1,5 +1,5 @@
// Ask for a user name until API returns a valid user
async function getUser() {
async function getUser () {
let user
while (true) {
let name = prompt('Enter a user name', 'rubjo')
@ -8,15 +8,11 @@ async function getUser() {
break // No error, exit loop and proceed
} catch (err) {
if (err.response && err.response.status === 404) {
// Loop will continue after the alert
alert(`User "${name} not found, please reenter.`)
alert(`User "${name}" not found, please reenter.`)
} else {
// Unknown error, rethrow it
throw err
throw err // Unknown error, rethrow it
}
}
}
alert(`Full name: ${user.name}.`)
return user
}

View File

@ -17,35 +17,6 @@ const arr = [5, 6, 13, 0, 1, 18, 23]
const sum = arr.reduce((a, b) => a + b)
const even = arr.filter(v => v % 2 === 0)
const double = arr.map(v => v * 2)
// More concise promise chains
func().then(a => {
return new Promise(
(resolve, reject) => {
if (a !== 1) resolve()
else reject(
new Error('This aint right')
)
}
)
}).then(b => {
// ...
}).catch(err => {
handle(err)
})
// Parameterless arrow functions
// that are visually easier to parse
setTimeout(() => {
console.log('I happen sooner')
setTimeout(() => {
// deeper code
console.log('I happen later')
}, 1)
}, 1)
}
}
}
</script>
<style lang="scss" scoped>

View File

@ -0,0 +1,83 @@
<template>
<div class="content">
<div
id="testimonials"
class="scroll-head"
/>
<el-row>
<el-col>
<h1 class="centre">
<em>What people are saying</em>
</h1>
</el-col>
</el-row>
<el-row
justify="center"
:gutter="20"
>
<el-col
v-for="testimonial in selectedTestimonials"
:key="testimonial + theme"
:xs="24"
:lg="6"
>
<Tweet
:id="testimonial"
:options="{ theme, conversation: 'none', align: 'center' }"
/>
</el-col>
</el-row>
</div>
</template>
<script>
import { Tweet } from 'vue-tweet-embed'
export default {
name: 'Testimonials',
components: { Tweet },
props: {
theme: {
type: String,
default: localStorage.getItem('theme') || 'dark'
}
},
data () {
return {
testimonials: [
'1144627524078571521',
'1142187688751071233',
'1395599234531946496',
'1149023631835635713',
'1359508666446094336',
'1438499728937795593',
'1249238897994780672',
'1430565916815855624',
'1340083805370134531',
'1159431742245261313',
'1188221984959676416',
'1201505985984110592',
'1188916442902626304',
'1344488694804201472',
'1178698424109195265'
],
selectedTestimonials: []
}
},
mounted () {
// Shuffle array
const shuffled = this.testimonials.sort(() => 0.5 - Math.random())
// Get sub-array of first n elements after shuffled
this.selectedTestimonials = shuffled.slice(0, 4)
}
}
</script>
<style lang="scss" scoped>
::v-deep .twitter-tweet {
min-height: 1px;
}
::v-deep .twitter-tweet iframe {
min-height: 1px !important;
}
</style>

View File

@ -61,7 +61,7 @@ body {
p {
padding-bottom: 20px;
font-size: calc(1rem + 0.5vw);
font-size: calc(0.9rem + 0.5vw);
line-height: calc(2rem + 1vw);
&.columns {
column-count: 2;
@ -170,7 +170,7 @@ p {
.caption {
margin: 5px 10px;
font-size: 0.75em;
font-size: 0.8em;
font-style: italic;
color: #aaa;
a {
@ -253,6 +253,12 @@ h2 {
}
}
.supporter {
a {
text-decoration: none;
}
}
.gold {
.supporter {
text-shadow:
@ -283,9 +289,7 @@ em.alt {
.styles-image {
float: right;
height: 20vw;
min-height: 300px;
max-height: 325px;
height: 300px;
margin: 0 0 25px 5vw;
}

View File

@ -15,8 +15,7 @@ export default function lazyLoadComponent ({
resolveComponent = resolve
}),
loading: {
mounted () {
console.log(background)
async mounted () {
this.$el.style.backgroundColor = background || '#595959'
this.$el.style.height = height || 0
this.$el.style.maxHeight = maxHeight || 'auto'
@ -26,7 +25,7 @@ export default function lazyLoadComponent ({
componentFactory().then(resolveComponent)
return
}
await new Promise((resolve) => { setTimeout(() => { resolve() }, 1) })
const observer = new IntersectionObserver((entries) => {
// Use `intersectionRatio` because of Edge 15's
// lack of support for `isIntersecting`.

9816
yarn.lock

File diff suppressed because it is too large Load Diff