A programming typeface generated by a program - Iosevka
Belleve Invis
Posts: 269
Preview: http://be5invis.github.io/Iosevka/
Source: https://github.com/be5invis/Iosevka
First of all I would like to say that I'm very happy to have found this forum! I am a Node developer living in China and I am interested in font technologies. As I maintaining node-sfnt, a low-level library used to parse and generate TTFs in Node.JS, I decided to make a programming font using it. Iosevka is generated from a program written by me, as well as a set of parameters, pretty like Computer Modern, but in a more modern way. Because I and many of my friends live in China and Japan, I decided to make my font exactly half-width, to be compatible with Han Characters (exactly 1em wide). After a three-month development Iosevka become a typeface with over 2000 glyphs, covering most Latin, Greek and Cyrillic characters, as well as IPA symbols. However I am not a pro about typeface making, I would really like to hear your opinions about it.
Source: https://github.com/be5invis/Iosevka
First of all I would like to say that I'm very happy to have found this forum! I am a Node developer living in China and I am interested in font technologies. As I maintaining node-sfnt, a low-level library used to parse and generate TTFs in Node.JS, I decided to make a programming font using it. Iosevka is generated from a program written by me, as well as a set of parameters, pretty like Computer Modern, but in a more modern way. Because I and many of my friends live in China and Japan, I decided to make my font exactly half-width, to be compatible with Han Characters (exactly 1em wide). After a three-month development Iosevka become a typeface with over 2000 glyphs, covering most Latin, Greek and Cyrillic characters, as well as IPA symbols. However I am not a pro about typeface making, I would really like to hear your opinions about it.
1
Comments
-
The skeleton of the shapes is generally quite good but corrections of strokes are lackluster. Overshoots are highly inconsistent (e.g. why does o have overshoot but not a?), strokes tend to modulate a bit artificially e.g. bottom-right of t and stem relationships are wrong (why are horizontal segments as thick as vertical ones?) also in some letters – u being one of the most jarring – curvature lacks a smooth transition from the straight which makes the strokes turn too abruptly/suddenly.
Also some letters like b, d, e are very strict about their DIN-like geometricness while others like a not so much, this creates some inconsistency imho. The same can be seen in the numerals.
Why is top-left stroke of 4 so thick? 6 and 9 are too thick at stem joints (generally, characters should always thin out at least a little at stem joints to look the same thickness, as you did with bottom-right part of a). Numerals are hard. They need some more work here imho.1 -
Adrien Tétar said:The skeleton of the shapes is generally quite good but corrections of strokes are lackluster. Overshoots are highly inconsistent (e.g. why does o have overshoot but not a?), strokes tend to modulate a bit artificially e.g. bottom-right of t and stem relationships are wrong (why are horizontal segments as thick as vertical ones?) also in some letters – u being one of the most jarring – curvature lacks a smooth transition from the straight which makes the strokes turn too abruptly/suddenly.
Also some letters like b, d, e are very strict about their DIN-like geometricness while others like a not so much, this creates some inconsistency imho. The same can be seen in the numerals.
Why is top-left stroke of 4 so thick? 6 and 9 are too thick at stem joints (generally, characters should always thin out at least a little at stem joints to look the same thickness, as you did with bottom-right part of a). Numerals are hard. They need some more work here imho.
/a's overshoot lackage is a bug, and it is fixed in the recent commit.
The numbers will be remade in the next commits.
0 -
@Adrien Tétar
I have an update with horizontal strokes thinner. The overshoot of /a is fixed either. Fixing or re-styling is pretty simple by changing the code.0 -
0
-
- Stroke widths of curly tails are fixed
- Fixed punctuation stroke width inconsistancy
0 -
The /four, /nine and /j are remade in this pre-release: https://github.com/be5invis/Iosevka/releases/tag/v0.1.16-p2
0 -
In http://typedrawers.com/discussion/comment/15616/#Comment_15616 you mentioned,
You might like to replace node-sfnt with a python microservice that uses https://github.com/behdad/fonttools/ and https://github.com/jamesgk/ufo2ft (or port them to js)- node-sfnt, a low-level font parsing and generation library
0 -
Dave Crossland said:In http://typedrawers.com/discussion/comment/15616/#Comment_15616 you mentioned,
You might like to replace node-sfnt with a python microservice that uses https://github.com/behdad/fonttools/ and https://github.com/jamesgk/ufo2ft (or port them to js)- node-sfnt, a low-level font parsing and generation library
0 -
Hi Belleve, this is really impressive.
Is this the only method for designing an entire font's set of glyphs using spiro curves? Or do you know of others? How likely is the PatEL syntax to change; it's a recent project of yours so it would be reasonable to not expect it to be stable? Is there documentation anywhere(beyond the `README.md` file)? Have you seen any other implementations of spiro curve specification? I'm interested in doing the opposite of what Dave suggested and figuring out a way to work directly with multi-glyph files like your `.patel`s rather than the `.plate`s available for Levein's Inconsolata in Python. When I search for spiro in fonttools, nothing comes up, and when I search google, all that comes up are fontforge's C based tools.
To be honest, I think julia might be even more appropriate than python since it can represent dual numbers (and therefore gets derivatives for free for abstract functions, making the integration step much easier)…but I don't know julia and I do know Python. I'm pretty sure there are many more efficient scientific/numeric computing libraries in Python than in js.
I'm looking forward to seeing more of your work. This is a cool set of tools you've developed. The typeface is nice too, but a bit narrow for my tastes (which really isn't avoidable since you went with half-width characters, which is totally reasonable given your orthographic considerations).
1 -
Michael Pacer said:Hi Belleve, this is really impressive.
Is this the only method for designing an entire font's set of glyphs using spiro curves? Or do you know of others? How likely is the PatEL syntax to change; it's a recent project of yours so it would be reasonable to not expect it to be stable? Is there documentation anywhere(beyond the `README.md` file)? Have you seen any other implementations of spiro curve specification? I'm interested in doing the opposite of what Dave suggested and figuring out a way to work directly with multi-glyph files like your `.patel`s rather than the `.plate`s available for Levein's Inconsolata in Python. When I search for spiro in fonttools, nothing comes up, and when I search google, all that comes up are fontforge's C based tools.
To be honest, I think julia might be even more appropriate than python since it can represent dual numbers (and therefore gets derivatives for free for abstract functions, making the integration step much easier)…but I don't know julia and I do know Python. I'm pretty sure there are many more efficient scientific/numeric computing libraries in Python than in js.
I'm looking forward to seeing more of your work. This is a cool set of tools you've developed. The typeface is nice too, but a bit narrow for my tastes (which really isn't avoidable since you went with half-width characters, which is totally reasonable given your orthographic considerations).
The `spiro` is actually Raph's `libspiro`, though I augmented it with the "af" mechanism: this mechanism makes me able to generate the BOTH side of a stroke within one `spiro` call.0 -
In the recent days I've made a lot of refactors, including rewritten of some glyphs. It's 1.0-beta6 now.
New homepage: http://be5invis.github.io/Iosevka/
Online specimen: http://be5invis.github.io/Iosevka/specimen.html0
Categories
- All Categories
- 43 Introductions
- 3.7K Typeface Design
- 803 Font Technology
- 1K Technique and Theory
- 622 Type Business
- 444 Type Design Critiques
- 542 Type Design Software
- 30 Punchcutting
- 136 Lettering and Calligraphy
- 83 Technique and Theory
- 53 Lettering Critiques
- 485 Typography
- 303 History of Typography
- 114 Education
- 68 Resources
- 499 Announcements
- 80 Events
- 105 Job Postings
- 148 Type Releases
- 165 Miscellaneous News
- 270 About TypeDrawers
- 53 TypeDrawers Announcements
- 116 Suggestions and Bug Reports