i have been living with my mock up of a monospaced Atkinson Hyperlegible font now for some weeks. First, by simply substituting the Iosevka character variants that most closely matched their Hyperlegible counterparts, then a much lengthier concerted effort to tailor their individual shapes as closely as possible – the ascenders and descenders, their heights and roundness.
The end result has been quite satisfying and has exceeded all my expectations and, until an official monospaced font variant is released, if ever, will remain the default font for my development and writing environment for the foreseeable future. It’s that delicious – okay, i am a font nutter.
But it did not remain solely on my Linux desktops for long..
i had tried previous versions of Iosevka on my Kindle Oasis but found the half cell width of my coding oriented fonts.. well, flatly technical looking and not engaging for immersive reading. What a change this font presents with its extended width!
Tiempos Text and the Atkinson Hyperlegible fonts still remain my all time favourite serif and sans serif fonts on the Kindle. But these past weeks i have found myself continually returning to this monospaced font.
There is no doubt the Atkinson font is the easiest on the eyes. It imparts the sensation that it is making one read faster (whether you intend to or not!), like running down an incline effortlessly. But this monospaced variant has a charm that is very visually pleasing to my eyes – the fixed cell width giving the letters a uniform geometric presentation.
With a monospaced font one would expect to lose significant word density on the page but this is easily rectified with its incredible legibility at even the smallest font sizes, a trait it holds in common with the Atkinson font. Of course, if you prefer your reading material fully justified, then proportional fonts are the way to go.
But if you have a fondness for typewriters and old manuscripts – i am dating myself here – and left justification, or simply are drawn to fonts that breathe on a page with a subtle airiness around the characters and words, then this may be right up your alley. And with the right line spacing and margins, it feels very much like reading the “draft” of a novel – part of the allure, no doubt, that keeps me returning to it.
after some time with “Monolegible” on the Kindle, i decided i preferred the “book” weight of the font. It was possible to more closely match the contrast level of the Atkinson Hyperlegible font, the original “regular” font being either a shade lighter or darker on my Oasis – yes, i am that anal, but it also just felt a touch better which should be no surprise from its heritage. Unfortunately there is no means to customize the boldness increments as there is the font sizes to get a match.
Copying over the “book” weights of the font are easy enough, however, their font names effectively disable the “bold” fonts – their being associated with the “regular” and “italic” font names. Enter ttx to convert fonts to XML and back..
fonts='*-book *-bookitalic *-bold *-bolditalic'
for i in $fonts ;do
sed -i -e 's/iosevka Book Version/iosevka Regular Version/' \
-e 's/iosevka[ -]Book/iosevka/' \
-e 's/Book/Regular/' \
sed -i -e 's/iosevka Book Italic Version/iosevka Italic Version/' \
-e 's/iosevka[ -]Book/iosevka/' \
-e 's/Book Italic/Italic/' \
for i in $fonts ;do
and rename the “book” fonts as “regular” and “italic” to inherit the “bold” font references.
the capital M of the book weight appears heavier (to my eyes at least) than the remaining character set – this is purely an optical illusion particular to the flat-bottom M and its narrow spacing between the vertical and angled strokes, despite having the same stroke width as the other characters.
Replacing the book weighted character with its “regular” weighted version – and its ever so slightly thinner stroke width – gives its strokes more breathing room to create the balanced contrast (illusion) on the e-ink page..
for i in *book*#1.ttf ;do
ditto M $i
case $i in
*italic*) file=*-italic.ttf ;;
* ) file=*regular.ttf ;;
fontforge --script /tmp/fontforge.script $i $file
Did i mention anal somewhere?
The final adjustment replaces the standard Em dash which closely resembles the Dash due to the fixed width constraint of the monospaced font with the broken or (single character faux) 2 Em dash..
for i in *#1.ttf ;do
ditto emdash $i
fontforge --script /tmp/fontforge.script $i
And voila! A font i find myself reading with more and more.
During the hunt for a matching lower case tailed q to match the Atkinson Hyperlegible font, the author of Iosevka stated that “Iosevka is NOT a typeface targeting dyslexia, low-vision legibility, or anti-tampering”. Despite that claim and Iosevka’s focus as perhaps the most powerful coding font platform there is, i think Iosevka manages to address those issues as well as any monospaced font can with the character variants it provides..
Producing IMO a most beautiful monospaced font for both coding, writing and.. reading.
waiting on 15g springs for the Splitography, porting the chorded home row layout to it was inevitable as i further explore this minimal finger travel layout approach and the power of DennyTom’s chording engine.
While my own QMK libraries have been refactored over time to facilitate usage across the several keyboard types i use, i can say unequivocally that the json file parsing approach taken by DennyTom is vastly preferred with its table driven specification eliminating almost all of the keyboard layer and custom keycode C language code whilst improving the readability of the layout design and rendering much easier maintenance. Simply brilliant.
In this particular configuration, the Splitography’s steno number row has been relegated to just that function – those keys are available for a myriad of applications, i just don’t have a use case need for them outside of steno. So the bottom two rows, just like in steno (and the Georgi), it is.
The primary difference lies in the four steno thumb keys (to the Georgi’s six), requiring chording of the keys to allow the same number of thumb layers – a minor change that retains the overall BEAKL Wi layout of the Georgi and is a snap to define in the json file for the parser to do the rest! The other difference is the assignment of the inner (versus outer) columns for the toggle layer keys – this is a function of the keyboard’s different physical design, and thumb and at rest finger key positions..
|: Y||“ :: ”|
|Shift Backspace||Backspace (autorepeat)|
|: Space||“: ” + one_shot_shift|
|, Space||“, ” + one_shot_shift|
|. Space||“. ” + one_shot_shift|
|Shift : Space||“; ” + one_shot_shift|
|Shift , Space||“? ” + one_shot_shift|
|Shift . Space||“! ” + one_shot_shift|
|Shift Space||“ ” + one_shot_shift|
|: Space Backspace||: <enter> + one_shot_shift|
|, Space Backspace||, <enter> + one_shot_shift|
|. Space Backspace||. <enter> + one_shot_shift|
|Shift : Space Backspace||; <enter> + one_shot_shift|
|Shift , Space Backspace||? <enter> + one_shot_shift|
|Shift . Space Backspace||! <enter> + one_shot_shift|
|Shift Space Backspace||<enter> + one_shot_shift|
symbols and regex
|J <||” <- “|
|> %||” -> “|
numbers and fn keys
|Postfix||G or “ “|
|Postfix||G -> “ “|
|Caps||Upper case HEX (retoggle to disable CapsLock on exiting layer)|
|Brkt||Square -> Round -> Curly brackets|
shortcuts and cursor
|XPaste Private||Compile time string|
|Paste Public||Compile time stringString|
the only gotchas during this port were the NKRO and mouse key configuration options. While enabled for the non-chorded Splitography configuration, these needed to be disabled with the chording engine – at present**.
Not doing so causes a dfu-programmer “Bootloader and code overlap” error. This is a good reminder to always initially turn off ALL configuration options when configuring new keyboards.
Other than that, configuring the Splitography with the DennyTom chording engine could not have been simpler.
**Memory requirements are dependent on the keyboard and its MCU. Future chording engine code optimizations may free up the necessary memory. This use case has no need for these options, the parsing/chording paradigm far outweighing any negatives AFAIAC.