This, like many fonts, fails to handle vertical arrows:
| ^
v |
Note that the raised appearance of `^` exists for compatibility with typewriters that use the backspace key to use it as a circumflex accent over lowercase letters. This is doubly obsolete today (we have real combined characters and can use them on uppercase). This is one of those cases where the name originally used for the character in various standards is in conflict with the way people actually have come to use it.
The bottom of the independent caret should be lower, roughly symmetrical to the letter `v` (this is not traditionally a goal). The top should still reach the height of a capital letter, but the bottom should descend into the lowercase letter area - for many fonts, perhaps to the level of the horizontal part of a lowercase `e` (is there a typographical term for this?)? For fonts where the x-height is half of the cap-height, there might be no overlap with the lowercase letter, though it still doesn't need to worry about leaving space.
The bottom of the caret is, however, higher than the mathematical "and" sign ∧, which rests on the baseline (and usually does not reach full height) or the Greek capital lambda `Λ` which is full height.
I have never seen anyone use it as part of an up arrow spread across two lines in the way that you’re suggesting. So I don’t really understand your point.
Ok it’s not symmetrical, but I don’t buy your argument that it _should_ be (or that it’s a reasonable complaint to make about a font).
Your point about the caret is interesting, but I'm a bit dubious about using them for vertical arrows. I don't think it would be practical to type this combination in one go, since the two symbols would be on two separate lines. For the upward arrow, are you suggesting caret-return-space-space-space-...-vertical bar?
Are there any programming languages that use vertical arrows? Do they appear on one line or two?
thanks for pointing it out. as i mention below in a comment, there are bound to be many combinations which don't align (especially vertical ones). i would ideally tell you to invoke a feature request but i am not sure this esoteric combination could even be detected in a contextual alternate rule (which Myna doesn't support anyways for now).
beside if i may say so in my defense, the comparison is a bit unfair as a V (a full letter) is being compared to a caret (almost a superscript symbol). i have broken many typographical conventions but it won't make sense to break programmatic convention of the caret operator just for the alignment of the vertical arrows.
I don't see such a niche use case as a design failure.
By your logic, the lowercase "v" should extend even higher to meet the pipe. The caret has conventionally been higher for a long time, and IMO would look out of place making it the inverse "v".
Not trying to be negative, just confused: I don't really see how this font is "designed for symbol-heavy languages". The symbols look normal to me. Maybe the letters are a little more spaced? I'd love to be enlightened.
there are bounds to be many many operators and glyph combinations where things don't match properly. an example is the variable declaration and initialisation symbol in Go which combines colon and equal sign. if you use Myna and come across any such examples, please raise a feature request. i only focused on glyphs for languages i use personally. but if there is interest i am open to adding contextual alternates to give some alignment in cases where changing one glyph would disturb other combinations. of course you can always point out any rendering or design issues with singular glyphs too.
designer here. by symbol-heavy languages i mean languages like Perl and Haskell which make heavy use of symbols (sigils in Perl and operators in Haskell). Myna was designed after my frustration with other monospace fonts combined with my (self-imposed) inability to use ligatures.
i know the title can be a bit misleading but Myna is primarily ASCII.
languages which insist on using full Unicode like APL and Agda have bigger problems (availability of uniform glyphs and inconsistency with monospace design) on their plates. which imo is one reason why full Unicode editing hasn't really caught up.
Myna doesn't use any ligatures though. it would run on almost all terminals and editors.
Yeah, I realize that I was wrong about ligatures afterwards. The two plusses next to each other looked as if they are a single combined glyph, but they are in fact separate. I think this is the effect you were trying to reach, and it looks very slick.
J mostly looks good but [) looks almost like a fancy capital D which can be distracting and =# run together at smaller font sizes which is a little weird. Those are the only things that jump out at me but I did not look hard, overall I would say it is one of the better fonts I have tried for J.
The big problem that I am having with this font is that its narrowness makes it difficult to find a fallback font for APL/BQN that plays well.
The kerning in the "Lorem" at the top drives me batty. It nearly looks like 2 words to my eye. I know that's super subjective and it probably doesn't bother anyone else at all. It's kind of a deal breaker for me, though.
i use this font basically everywhere and have become kinda blind to the defects. for me it looked best when glyphs are mostly centered (which makes them "genuinely monospace" if you catch my drift).
but you raise a valid point. it is not entirely subjective. some obviously grotesque (no pun) kerning would need to be changed in the next version. if you can point out some obvious ones i would urge you to create an issue.
I don't know why "->" should render as an arrow when we could just use an actual Unicode arrow. If need be, have macros for your editors that allow you to convert the "->" into an actual arrow.
it is partially a matter of design and code philosophy. many like the simplicity of ASCII and consider ligatures distracting.
but more than preference there is matter of availability and consistency. Unicode is not available for all possible glyph combinations and many times what we see in Unicode looks quite ugly in monospace because of the width constraint.
ligatures are also not supported everywhere. that is one of the reason i designed this.
Not all code editing sessions are created equal. I dare you to deal with Unicode symbols in a vim session over SSH with a 1 second RTT, for example :).
I appreciate the effort, but the result kind of shows why usually symbols are aligned as they are. Dashes, colons, angle brackets — all look way too high next to lowercase letter. I assume this stems from trying to align everything with brackets, and those are aligned with uppercase letters kind of naturally. But I don't think the tradeoff is worth it.
i understand the point you raise. but i believe symbols are generally aligned as they are because most fonts are designed for text and many monospace fonts respect those typographic traditions.
but i think code is not text and breaking some tradition improves readability.
the dash (hyphen) is actually supposed to align with the greater than symbol to resemble the arrow (extremely common symbol in C and many functional languages).
Genuine question: is everyone coding on such high resolution displays and/or with font sizes so big nowadays? For me, the example screenshots are useless to see how the font would actually look like in my editor.
Hard to talk about "everyone" since I'm not aware of any large polls around this point. On a personal note, yes, considering that I'm 44, I tend to always increase font size everywhere: the code editor, the terminal, the browser, the OS itself and mobile phone.
It's unavoidable for me. I was making fun of those people with huge font sizes on phones 10 years ago. I'm almost one of them now.
As a counter example, I always decrease the font-size everywhere. The annoying trend of bloating everything with whitespace, means that less and less stuff fits on the screen. But even HN is on 80% right now.
I definitely increase my font size, so I'm not straining my eyes. Any monitor with a lower than about 120 PPI causes me strain, unless I really boost the size. For example I read HN at anywhere from 150-200%.
I personally love Jetbrains Mono; it's been one of a kind for me and my tastes. I like it over Consolas (although this is one is pretty good on Windows), Fira Mono, Inconsolata, Plex Mono. But I can see the effort here and I'm definitely going to give this one a try! I've found that typefaces can change a lot depending on pixel alignment and rendering engines (i.e. ClearType, GDI, FreeType, Quartz... let pixel grid decide or not, or by how much...). So it's hard to tell if this is going to win me over without actually trying!
if you try it please feel free to create an issue if you find some rendering bug in your system. i have tested and used it extensively on Linux but not Windows or MacOS as much as i should.
thanks for pointing it out. i would need to consider that idea.
the symbols are all pure ASCII and are supposed to look normal. it is not a ligature font and neither focusses on Unicode symbols. the symbols are just more evenly adjusted with the letters and with each other.
That's something I actually really like about this. I'm not a huge fan of ligatures and think they're counter productive. Makes it a bit harder to see the differences though, even if it does make a big difference subconsciously and whatnot, so I think a comparison would be great.
I like that it's relatively compact horizontally. If I had to nitpick, the curly braces look a bit too "wavy" for my taste, which doesn't quite match the hard angles on some other glyphs.
My favorite monospace font for the past 10+ years has been Iosevka Term ss08. I've tried many others over the years, and Iosevka is just perfect IMO.
Out of curiosity: what are the tools and the process to create a font today? It would be interesting to read a bit about that.
thanks for the feedback. about the braces please see another comment below. the issue of needlessly complicated braces has been raised quite a few times now. a variant could be considered if there is more interest.
this particular font is quite simple and doesn't contain any ligatures, etc. so most of the design is in Fontforge.
i didn't start from scratch. it started out as a customised version of Source Code Pro (released as Hera and currently archived in my profile) but i borrowed many glyphs from other fonts and modified many others to the point it became a different font. you can open the .sfd file directly in Fontforge to edit and modify it yourself.
a few others have raised the same point. in my defense i can only say that i adore that particular style because it looks more like what i draw by hand.
The curly braces are the one thing that really "pop out" from the font the moment I look at it. Even if I can agree they are pretty amd even adorable, also visually noisy, distracting, and something that makes me not want to try the font out.
I guess it depends on what you are used to. I draw them like “ʃ” by hand, and find the more squiggly style unnecessarily noisy visually. It makes the brace direction a little less obvious to see at first glance.
surprisingly enough for me, the exact same point was raised by others too. meanwhile, i was totally unaware that many would find it hard to read it as i never ever had any difficulty telling them apart even with the (admittedly baroque) design of the braces. if that is the only feature stopping you from trying this, please make a feature request. maybe i could issue a "disambiguous braces" variant.
I'm gonna raise another point, however. I think Myna's braces are easier to distinguish from each other: "(" and "{". After spending all day coding, they start to look very similar. I agree it might not be super beautiful, but for me, Myna has this advantage.
This, like many fonts, fails to handle vertical arrows:
Note that the raised appearance of `^` exists for compatibility with typewriters that use the backspace key to use it as a circumflex accent over lowercase letters. This is doubly obsolete today (we have real combined characters and can use them on uppercase). This is one of those cases where the name originally used for the character in various standards is in conflict with the way people actually have come to use it.The bottom of the independent caret should be lower, roughly symmetrical to the letter `v` (this is not traditionally a goal). The top should still reach the height of a capital letter, but the bottom should descend into the lowercase letter area - for many fonts, perhaps to the level of the horizontal part of a lowercase `e` (is there a typographical term for this?)? For fonts where the x-height is half of the cap-height, there might be no overlap with the lowercase letter, though it still doesn't need to worry about leaving space.
The bottom of the caret is, however, higher than the mathematical "and" sign ∧, which rests on the baseline (and usually does not reach full height) or the Greek capital lambda `Λ` which is full height.
> the way people actually have come to use it
I have never seen anyone use it as part of an up arrow spread across two lines in the way that you’re suggesting. So I don’t really understand your point.
Ok it’s not symmetrical, but I don’t buy your argument that it _should_ be (or that it’s a reasonable complaint to make about a font).
Your point about the caret is interesting, but I'm a bit dubious about using them for vertical arrows. I don't think it would be practical to type this combination in one go, since the two symbols would be on two separate lines. For the upward arrow, are you suggesting caret-return-space-space-space-...-vertical bar?
Are there any programming languages that use vertical arrows? Do they appear on one line or two?
> Are there any programming languages that use vertical arrows? Do they appear on one line or two?
Befunge (1993; many later languages were inspired by it) uses just the ASCII arrowheads. The arrow tail is more likely to exist in doc comments.
APL
Are you trying to get a ligature that crosses lines?
You could maybe try U+2303 (⌃) for the up arrowhead, but why not just use U+2191 (↑) for the standard arrow?
The crossbar height of lowercase letters is not a common typographical reference point...
I don't care about ligatures, just symmetry.
thanks for pointing it out. as i mention below in a comment, there are bound to be many combinations which don't align (especially vertical ones). i would ideally tell you to invoke a feature request but i am not sure this esoteric combination could even be detected in a contextual alternate rule (which Myna doesn't support anyways for now).
beside if i may say so in my defense, the comparison is a bit unfair as a V (a full letter) is being compared to a caret (almost a superscript symbol). i have broken many typographical conventions but it won't make sense to break programmatic convention of the caret operator just for the alignment of the vertical arrows.
I don't see such a niche use case as a design failure.
By your logic, the lowercase "v" should extend even higher to meet the pipe. The caret has conventionally been higher for a long time, and IMO would look out of place making it the inverse "v".
If you want arrows, just use U+2191 and U+2193.
Very nice and condensed. The same reason I switched to Iosevka (Joseph), recently:
https://github.com/be5invis/Iosevka
The fun thing with Iosevka is that one stands a reasonable chance of reading the source code (as opposed to just random numbers in SplineSets etc.)
My favorite monospaced font, on Windows and Mac.
I switched to codenewroman mono with a nerd font.
Makes my terminal look amazing as well.
Especially since I've been working on a color scripts compilation that relies heavily on font being accurate
Not trying to be negative, just confused: I don't really see how this font is "designed for symbol-heavy languages". The symbols look normal to me. Maybe the letters are a little more spaced? I'd love to be enlightened.
>Near-Perfect Alignment: multi-character symbols like ->, >>=, =~, :: align seamlessly
The GitHub page has a list with 5 items of what was the focus, this is the first (and I think the most easily noticeable) area
I wonder why only near-perfect.
there are bounds to be many many operators and glyph combinations where things don't match properly. an example is the variable declaration and initialisation symbol in Go which combines colon and equal sign. if you use Myna and come across any such examples, please raise a feature request. i only focused on glyphs for languages i use personally. but if there is interest i am open to adding contextual alternates to give some alignment in cases where changing one glyph would disturb other combinations. of course you can always point out any rendering or design issues with singular glyphs too.
designer here. by symbol-heavy languages i mean languages like Perl and Haskell which make heavy use of symbols (sigils in Perl and operators in Haskell). Myna was designed after my frustration with other monospace fonts combined with my (self-imposed) inability to use ligatures.
Apl, BQN and Oiua would like to talk to you.
And some proof assistant languages and frameworks. For a second I was really excited there, but this is another font with “programming ligatures”.
i know the title can be a bit misleading but Myna is primarily ASCII.
languages which insist on using full Unicode like APL and Agda have bigger problems (availability of uniform glyphs and inconsistency with monospace design) on their plates. which imo is one reason why full Unicode editing hasn't really caught up.
Myna doesn't use any ligatures though. it would run on almost all terminals and editors.
Yeah, I realize that I was wrong about ligatures afterwards. The two plusses next to each other looked as if they are a single combined glyph, but they are in fact separate. I think this is the effect you were trying to reach, and it looks very slick.
What about a J example? https://code.jsoftware.com/wiki/NuVoc
J mostly looks good but [) looks almost like a fancy capital D which can be distracting and =# run together at smaller font sizes which is a little weird. Those are the only things that jump out at me but I did not look hard, overall I would say it is one of the better fonts I have tried for J.
The big problem that I am having with this font is that its narrowness makes it difficult to find a fallback font for APL/BQN that plays well.
This is very pretty, but...
The kerning in the "Lorem" at the top drives me batty. It nearly looks like 2 words to my eye. I know that's super subjective and it probably doesn't bother anyone else at all. It's kind of a deal breaker for me, though.
i use this font basically everywhere and have become kinda blind to the defects. for me it looked best when glyphs are mostly centered (which makes them "genuinely monospace" if you catch my drift).
but you raise a valid point. it is not entirely subjective. some obviously grotesque (no pun) kerning would need to be changed in the next version. if you can point out some obvious ones i would urge you to create an issue.
Looks beautiful! Have you done any focus on Typescript by chance?
I will test it out and report any abnormalities I see!
Also see the JuliaMono typeface: https://juliamono.netlify.app
It was designed to be a comprehensive monocode typeface to support Julia's full Unicode support.
There is already a relatively well-known icon font called Myna UI: https://mynaui.com/icons
Just a heads-up.
thanks for pointing it out. shouldn't be that confusing, i guess.
I don't know why "->" should render as an arrow when we could just use an actual Unicode arrow. If need be, have macros for your editors that allow you to convert the "->" into an actual arrow.
Because there are programming languages where "->" and "=>" have semantic meaning, but the unicode arrows don't.
it is partially a matter of design and code philosophy. many like the simplicity of ASCII and consider ligatures distracting.
but more than preference there is matter of availability and consistency. Unicode is not available for all possible glyph combinations and many times what we see in Unicode looks quite ugly in monospace because of the width constraint.
ligatures are also not supported everywhere. that is one of the reason i designed this.
Not all code editing sessions are created equal. I dare you to deal with Unicode symbols in a vim session over SSH with a 1 second RTT, for example :).
I appreciate the effort, but the result kind of shows why usually symbols are aligned as they are. Dashes, colons, angle brackets — all look way too high next to lowercase letter. I assume this stems from trying to align everything with brackets, and those are aligned with uppercase letters kind of naturally. But I don't think the tradeoff is worth it.
i understand the point you raise. but i believe symbols are generally aligned as they are because most fonts are designed for text and many monospace fonts respect those typographic traditions.
but i think code is not text and breaking some tradition improves readability.
the dash (hyphen) is actually supposed to align with the greater than symbol to resemble the arrow (extremely common symbol in C and many functional languages).
The greater/less-than symbols look too high to me as well, also when used as angle brackets like in HTML/XML/C++/Java/TypeScript/….
After testing it for an hour I concluded that for me, Cascadia Code is a lot more legible.
Very similar to Intel One Mono which is a font I love to use.
- https://www.intel.com/content/www/us/en/company-overview/one...
The Latex example should include at least a math formula.
And the Haskell example doesn't even include common operators like <$> or <*> or <>. I would've also expected some fancier arrows like =<< or >>>.
Genuine question: is everyone coding on such high resolution displays and/or with font sizes so big nowadays? For me, the example screenshots are useless to see how the font would actually look like in my editor.
Hard to talk about "everyone" since I'm not aware of any large polls around this point. On a personal note, yes, considering that I'm 44, I tend to always increase font size everywhere: the code editor, the terminal, the browser, the OS itself and mobile phone.
It's unavoidable for me. I was making fun of those people with huge font sizes on phones 10 years ago. I'm almost one of them now.
As a counter example, I always decrease the font-size everywhere. The annoying trend of bloating everything with whitespace, means that less and less stuff fits on the screen. But even HN is on 80% right now.
I definitely increase my font size, so I'm not straining my eyes. Any monitor with a lower than about 120 PPI causes me strain, unless I really boost the size. For example I read HN at anywhere from 150-200%.
Yes, the bigger fonts are easier to read.
Reminds me of the beautiful M+ fonts.
https://mplusfonts.github.io/
My programming font in Vim for the last 10 years!
I personally love Jetbrains Mono; it's been one of a kind for me and my tastes. I like it over Consolas (although this is one is pretty good on Windows), Fira Mono, Inconsolata, Plex Mono. But I can see the effort here and I'm definitely going to give this one a try! I've found that typefaces can change a lot depending on pixel alignment and rendering engines (i.e. ClearType, GDI, FreeType, Quartz... let pixel grid decide or not, or by how much...). So it's hard to tell if this is going to win me over without actually trying!
if you try it please feel free to create an issue if you find some rendering bug in your system. i have tested and used it extensively on Linux but not Windows or MacOS as much as i should.
It would be nice to see some comparison with other fonts on the GitHub page; the symbols look normal to me, at least. It looks very pretty regardless!
thanks for pointing it out. i would need to consider that idea.
the symbols are all pure ASCII and are supposed to look normal. it is not a ligature font and neither focusses on Unicode symbols. the symbols are just more evenly adjusted with the letters and with each other.
That's something I actually really like about this. I'm not a huge fan of ligatures and think they're counter productive. Makes it a bit harder to see the differences though, even if it does make a big difference subconsciously and whatnot, so I think a comparison would be great.
Looks pretty good, but I often need to read Japanese characters so I'm gonna stick to IBM Plex, which has both Monospace and CJK variants.
> IBM Plex
I found what while it's not the best for me - it is suprisingly good for a PowerPoint-like presentations, #specially the condensced vars.
I wouldn’t program with it but I find it extremely aesthetic.
Looks great except for l looking like 1
It's gorgeous. Thank you.
It's perfect. Please don't change anything about it.
How do you feel about 'l' and '1' looking so similar in Myna?
Don't care even a 1ittle
I like it, it's very clean. Nice work!
I like that it's relatively compact horizontally. If I had to nitpick, the curly braces look a bit too "wavy" for my taste, which doesn't quite match the hard angles on some other glyphs.
My favorite monospace font for the past 10+ years has been Iosevka Term ss08. I've tried many others over the years, and Iosevka is just perfect IMO.
Out of curiosity: what are the tools and the process to create a font today? It would be interesting to read a bit about that.
thanks for the feedback. about the braces please see another comment below. the issue of needlessly complicated braces has been raised quite a few times now. a variant could be considered if there is more interest.
this particular font is quite simple and doesn't contain any ligatures, etc. so most of the design is in Fontforge. i didn't start from scratch. it started out as a customised version of Source Code Pro (released as Hera and currently archived in my profile) but i borrowed many glyphs from other fonts and modified many others to the point it became a different font. you can open the .sfd file directly in Fontforge to edit and modify it yourself.
I despise this style of curly braces where the arms look more like “S” than like “ʃ”. Don’t go backwards! :)
a few others have raised the same point. in my defense i can only say that i adore that particular style because it looks more like what i draw by hand.
The curly braces are the one thing that really "pop out" from the font the moment I look at it. Even if I can agree they are pretty amd even adorable, also visually noisy, distracting, and something that makes me not want to try the font out.
Otherwise very attractive font.
I guess it depends on what you are used to. I draw them like “ʃ” by hand, and find the more squiggly style unnecessarily noisy visually. It makes the brace direction a little less obvious to see at first glance.
surprisingly enough for me, the exact same point was raised by others too. meanwhile, i was totally unaware that many would find it hard to read it as i never ever had any difficulty telling them apart even with the (admittedly baroque) design of the braces. if that is the only feature stopping you from trying this, please make a feature request. maybe i could issue a "disambiguous braces" variant.
I'm gonna raise another point, however. I think Myna's braces are easier to distinguish from each other: "(" and "{". After spending all day coding, they start to look very similar. I agree it might not be super beautiful, but for me, Myna has this advantage.
A rust example is conspicuously missing from the README.
And JS and PHP, etc… some people have other language priorities and thats fine
please check the illustrations below.