Samples
The left image is the "sample" section exactly as drawn in Figma. The right panel sets the same words in the font, at 2× so the pixels line up. Its spacing isn't used for kerning, so the two can differ.

Contrary to the popular
beliefs, DOSAGE is not an
easy game to play?!
Abide GOING
hedge fade hijac
{DOSAGE}
Proofs
Words and pairs where spacing usually goes wrong, plus every kind of glyph in context. Turn kerning off to see what it fixes. Edit src/proofs.txt to change the text.
Capitals that overhang
AVATAR WAVY TAVERN VOYAGE YAWL LAYOUT
To Ta Te Tr Ty Tu Tw Va Ve Vo Wa We Wo Ya Ye Yo
LT LV LW LY L' P. P, F. F, T. T, V. V, W. Y. Y,
Fjord, Type, Victory, Wolf, Yacht, Panama, Taiwan.
I beside round and open letters
It Io Iu Iv Iy Id Ig Is If Ij · oI eI cI rI sI vI bI pI gI
IO IC IG IQ IJ I0 I3 · OI CI DI BI GI LI 0I 9I · In IH aI HI
Italy Iowa Ictus Ibis Iguana Ivy Iceland Idaho · LIGO OIL DOIT BIG LION COIN
Lowercase pairs
ry ra re ro rv rw r. r, rt rf
la lc ld lg lq ls lu lv · lo le lt ly lf · ln lh ll · lO l0 l9
cf rf sf tf zf · fm fn fp fr fu fv fw fx fy fz · Ct St Lt Vt · tf tg tv
bx cx ex ox px sx · xa xc xd xe xg xo xs · surf outfit refund defy next box taxes exceed Street
ta te to tu tr th · of ef bf pf Of · patent toast stand · roof chief golf
St Ct Bt Et Rt · Sf Cf Ef Gf Rf Of · Street Stuart Ethan Brittany Schiff Golf Effect Offer Rolf
LO LC LG LQ Lg Lv Ly Lz Lj Fl · LOVE LOCAL GLOW Lyon Lvov Florida Flight
aT oT eT nT · To Ta Te · aY oY nY Ya Yo · dY gY · Fa Fo Fn Fy FO FC FQ EO EC EQ · L“ L‘ L” L'
Oj Bj Cj Dj Gj Sj Jj Vj Wj Yj bj pj · TJ FJ YJ PJ VJ fJ rJ · rX rY rZ · Kv Xv vX
Fanny Forum FOCUS ECHO EQUAL Bjørn Oja Sjögren hijab objet TJ FJORD PJ Kvass Xvid
ky kv yy vv ww vw wv xy yx
ff fi fl ft fj ffi tt ij jj gj
fly by sky wavy rarely every type jargon gyroscope
Punctuation next to letters
"Quoted," 'single', "T" 'A' "y" 'f'
f) f] j) y, y. r. r, F. T, Y. L'eau
(parens) [brackets] {braces} <angles>
don't it's I'll we've rock'n'roll
¡Hola! ¿Qué tal? Wait... What?! Yes; no: maybe.
“Curly quotes,” ‘single ones’, «guillemets» and ‹these›.
long—dash, 10–20 range, soft-hyphen, under_score, a/b\c|d
Brackets around caps, ascenders and descenders
{DOSAGE} (DOSAGE) [DOSAGE] {dog} (dog) [dog]
(Type) {Jazz} [Fjord] (gypsy) {quip} [jolly] (1984) {2026}
f(x) = {a, b}; g(y) = [0, 9]; h(z) = (k + 1)
((nested)) {[mixed]} ([{all three}]) (a) {b} [c]
Inverted marks
¡Vamos! ¿Por qué? ¡¿Qué?! ¿¡En serio!?
«¿Dónde está?» ¡Olé! ¿Y tú? ¡Ya! ¿Jugamos?
¡Hola, Íñigo! ¿Qué pasó, José? ¡Tú también, Ángel!
Quotes, dashes and dots
“Double,” ‘single,’ „low-double“ and ‚low-single‘
‹one› «two» ’90s rock’n’roll ‘Twas the night
Wait — no — yes. Pages 10–20. Re-enter, co-op, x-ray.
Loading… Tick… tock… Ready? Go!
file_name_v2 · a/b · C:\path\to · x|y · x¦y · • item
Math
2 + 2 = 4 · 9 − 5 = 4 · 3 × 3 = 9 · 8 ÷ 2 = 4
1 < 2 · 3 > 0 · ±0.5 · −12 · ¬true · a^2 · ~5
x² + y² = z² · E = mc² · 10³ m · x¹ y² z³
90° angle · 21°C outside · 37.5° · 360°
Currency, marks and ordinals
£12.50 · ¥3,000 · €9.99 · ¤ generic · −€5 refund
© 2026 MEK.txt · Dosage® · ¶ 4 · 1ª edición · 2º piso
` grave · ´ acute · ˆ circumflex · ˜ tilde · ¨ dieresis · ¯ macron · ˚ ring · ¸ cedilla
Figures
0123456789 1111 1010 7171 4747
10:45 3.14 1,250 0.5 -12 +7 = 19
$40 £12 €9 ¥300 ¢5 100% #7 21st 2nd 3rd 4th
2026-10-27 020 7946 0018 (555) 010-1001
½ ¼ ¾ x² y³ 1° 5×3 9÷3 ±2 µs
Symbols
@handle hello@mek.txt #tag & * + - = < > ^ ~ ` |
© 2026 MEK.txt ® ™ § ¶ † ‡ • · ¬ ¦
Accented
Àà Áá Ââ Ãã Ää Åå Çç Èè Éé Êê Ëë Ìì Íí Îî Ïï Ññ Òò Óó Ôô Õõ Öö Ùù Úú Ûû Üü Ýý ÿ
café façade naïve señor Zürich Málaga Ångström Größe Øresund Æsop œuvre þorn
Western European extras (Windows-1252)
French: Œuvre, cœur, sœur, bœuf, œil, Œdipe. ŒUVRE COMPLÈTE
Finnish & Estonian: šokolaad, žurnaal, Šiauliai, Žalgiris, ŠAMPANJA
Notes: † 1890, ‡ see below, 20‰ of sales, ƒ(x) = 2x + 1
Prices: 5 € · £12 · 99¢ · 2,5 ‰ · Š-Ž-š-ž
Central European (Latin Extended-A)
Polish: Zażółć gęślą jaźń. Łódź, Kraków, Gdańsk, Wrocław, Poznań
Czech: Příliš žluťoučký kůň úpěl ďábelské ódy. Brno, Plzeň, Ústí
Slovak: Kŕdeľ ďatľov učí koňa žrať kôru. Ľubochňa, Ťahanovce
Hungarian: Árvíztűrő tükörfúrógép. ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
Croatian & Slovene: Đakovo, Šibenik, Čakovec, Žumberak, Ćuprija, Šoštanj
Turkish: Pijamalı hasta yağız şoföre çabucak güvendi. İstanbul, Iğdır
Baltic, Maltese and more
Latvian: Glāžšķūņa rūķīši dzērumā ciepj Baha koncertflīģeļu vākus
Latvian: Ģirts, Ķegums, Ļaudona, Ņukši, Rīga, Jūrmala, Ēvele, Ūsiņš
Lithuanian: Įlinkdama fechtuotojo špaga sublykčiojusi pragręžė apvalų arbūzą
Maltese: Ħamrun, Għawdex, Żebbuġ, Ċirkewwa, ħobż
Esperanto: Eĥoŝanĝo ĉiuĵaŭde. Ĉu ĝi ŝanĝiĝis?
Welsh & Dutch: Ŵyl, ŷd, ŴŶ · IJsselmeer, ijs, IJ
Sami & historic: Ŋ ŋ ĸ · Congreſs · ʼn Boer · coŀlecció, COĿLECCIÓ
Romanian (comma below)
Romanian: Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila.
București, Timișoara, Constanța, Brăila, Iași, Târgu Mureș, Țara Românească
ȘȚ șț ȘTIINȚĂ · Ţa Ța Ță Ţă · ŢȚ ţț ŞȘ şș (cedilla vs comma)
Accents stacked on capitals
ŐŰ ĂĞŠŽČĚŘ İŞĖĮŲŪ ĀĒĪŌ ĆĹŃŔŚŹ ĈĜĤĴŜŴŶ ĊĠŻ ŮŨĨ ĎĽŤ ĢĶĻŅŖ
ő ű ă ğ š ž č ě ř ş ė į ų ū ā ē ī ō ć ĺ ń ŕ ś ź ĉ ĝ ĥ ĵ ŝ ŵ ŷ ċ ġ ż ů ũ ĩ ď ľ ť ģ ķ ļ ņ ŗ
Pangrams
The quick brown fox jumps over the lazy dog.
SPHINX OF BLACK QUARTZ, JUDGE MY VOW!
Pack my box with five dozen liquor jugs (12 of them, $3.50 each).
What's missing
No stand-ins left: every glyph is drawn. The accented letters, open questions and next character sets are below.
Accented letters 163
Built automatically from your letters plus accent marks, so they follow every redraw. Draw an accented letter yourself only if the automatic one looks wrong.
- uni00AD
- ÀAgrave
- ÁAacute
- ÂAcircumflex
- ÃAtilde
- ÄAdieresis
- ÅAring
- ÇCcedilla
- ÈEgrave
- ÉEacute
- ÊEcircumflex
- ËEdieresis
- ÌIgrave
- ÍIacute
- ÎIcircumflex
- ÏIdieresis
- ÑNtilde
- ÒOgrave
- ÓOacute
- ÔOcircumflex
- ÕOtilde
- ÖOdieresis
- ÙUgrave
- ÚUacute
- ÛUcircumflex
- ÜUdieresis
- ÝYacute
- àagrave
- áaacute
- âacircumflex
- ãatilde
- äadieresis
- åaring
- çccedilla
- èegrave
- éeacute
- êecircumflex
- ëedieresis
- ìigrave
- íiacute
- îicircumflex
- ïidieresis
- ñntilde
- òograve
- óoacute
- ôocircumflex
- õotilde
- öodieresis
- ùugrave
- úuacute
- ûucircumflex
- üudieresis
- ýyacute
- ÿydieresis
- ĀAmacron
- āamacron
- ĂAbreve
- ăabreve
- ĄAogonek
- ąaogonek
- ĆCacute
- ćcacute
- ĈCcircumflex
- ĉccircumflex
- ĊCdotaccent
- ċcdotaccent
- ČCcaron
- čccaron
- ĎDcaron
- ĐDcroat
- ĒEmacron
- ēemacron
- ĔEbreve
- ĕebreve
- ĖEdotaccent
- ėedotaccent
- ĘEogonek
- ęeogonek
- ĚEcaron
- ěecaron
- ĜGcircumflex
- ĝgcircumflex
- ĞGbreve
- ğgbreve
- ĠGdotaccent
- ġgdotaccent
- Ģuni0122
- ģuni0123
- ĤHcircumflex
- ĥhcircumflex
- ĨItilde
- ĩitilde
- ĪImacron
- īimacron
- ĬIbreve
- ĭibreve
- ĮIogonek
- įiogonek
- İIdotaccent
- ĴJcircumflex
- ĵjcircumflex
- Ķuni0136
- ķuni0137
- ĹLacute
- ĺlacute
- Ļuni013B
- ļuni013C
- ŃNacute
- ńnacute
- Ņuni0145
- ņuni0146
- ŇNcaron
- ňncaron
- ŌOmacron
- ōomacron
- ŎObreve
- ŏobreve
- ŐOhungarumlaut
- őohungarumlaut
- ŔRacute
- ŕracute
- Ŗuni0156
- ŗuni0157
- ŘRcaron
- řrcaron
- ŚSacute
- śsacute
- ŜScircumflex
- ŝscircumflex
- ŞScedilla
- şscedilla
- ŠScaron
- šscaron
- Ţuni0162
- ţuni0163
- ŤTcaron
- ŨUtilde
- ũutilde
- ŪUmacron
- ūumacron
- ŬUbreve
- ŭubreve
- ŮUring
- ůuring
- ŰUhungarumlaut
- űuhungarumlaut
- ŲUogonek
- ųuogonek
- ŴWcircumflex
- ŵwcircumflex
- ŶYcircumflex
- ŷycircumflex
- ŸYdieresis
- ŹZacute
- źzacute
- ŻZdotaccent
- żzdotaccent
- ŽZcaron
- žzcaron
- Șuni0218
- șuni0219
- Țuni021A
- țuni021B
Open questions
- Write the commercial EULA (desktop, web and app licences) before the font goes on sale.
Not covered yet
Latin-1, Windows-1252, Latin Extended-A and Romanian Ș ș Ț ț are all covered. Next could be another script such as Cyrillic or Greek.
All glyphs
352 glyphs. Hover over one to see its name and code point.
- !exclam
- "quotedbl
- #numbersign
- $dollar
- %percent
- &ersand
- 'quotesingle
- (parenleft
- )parenright
- *asterisk
- +plus
- ,comma
- -hyphen
- .period
- /slash
- 0zero
- 1one
- 2two
- 3three
- 4four
- 5five
- 6six
- 7seven
- 8eight
- 9nine
- :colon
- ;semicolon
- <less
- =equal
- >greater
- ?question
- @at
- AA
- BB
- CC
- DD
- EE
- FF
- GG
- HH
- II
- JJ
- KK
- LL
- MM
- NN
- OO
- PP
- RR
- SS
- TT
- UU
- VV
- WW
- XX
- YY
- ZZ
- [bracketleft
- \backslash
- ]bracketright
- ^asciicircum
- _underscore
- `grave
- aa
- bb
- cc
- dd
- ee
- ff
- gg
- hh
- ii
- jj
- kk
- ll
- mm
- nn
- oo
- pp
- rr
- ss
- tt
- uu
- vv
- ww
- xx
- yy
- zz
- {braceleft
- |bar
- }braceright
- ~asciitilde
- ¡exclamdown
- ¢cent
- £sterling
- ¤currency
- ¥yen
- ¦brokenbar
- §section
- ¨dieresis
- ©copyright
- ªordfeminine
- «guillemotleft
- ¬logicalnot
- uni00AD
- ®registered
- ¯macron
- °degree
- ±plusminus
- ²twosuperior
- ³threesuperior
- ´acute
- µmu
- ¶paragraph
- ·periodcentered
- ¸cedilla
- ¹onesuperior
- ºordmasculine
- »guillemotright
- ¼onequarter
- ½onehalf
- ¾threequarters
- ¿questiondown
- ÀAgrave
- ÁAacute
- ÂAcircumflex
- ÃAtilde
- ÄAdieresis
- ÅAring
- ÆAE
- ÇCcedilla
- ÈEgrave
- ÉEacute
- ÊEcircumflex
- ËEdieresis
- ÌIgrave
- ÍIacute
- ÎIcircumflex
- ÏIdieresis
- ÐEth
- ÑNtilde
- ÒOgrave
- ÓOacute
- ÔOcircumflex
- ÕOtilde
- ÖOdieresis
- ×multiply
- ØOslash
- ÙUgrave
- ÚUacute
- ÛUcircumflex
- ÜUdieresis
- ÝYacute
- ÞThorn
- ßgermandbls
- àagrave
- áaacute
- âacircumflex
- ãatilde
- äadieresis
- åaring
- æae
- çccedilla
- èegrave
- éeacute
- êecircumflex
- ëedieresis
- ìigrave
- íiacute
- îicircumflex
- ïidieresis
- ðeth
- ñntilde
- òograve
- óoacute
- ôocircumflex
- õotilde
- öodieresis
- ÷divide
- øoslash
- ùugrave
- úuacute
- ûucircumflex
- üudieresis
- ýyacute
- þthorn
- ÿydieresis
- ĀAmacron
- āamacron
- ĂAbreve
- ăabreve
- ĄAogonek
- ąaogonek
- ĆCacute
- ćcacute
- ĈCcircumflex
- ĉccircumflex
- ĊCdotaccent
- ċcdotaccent
- ČCcaron
- čccaron
- ĎDcaron
- ďdcaron
- ĐDcroat
- đdcroat
- ĒEmacron
- ēemacron
- ĔEbreve
- ĕebreve
- ĖEdotaccent
- ėedotaccent
- ĘEogonek
- ęeogonek
- ĚEcaron
- ěecaron
- ĜGcircumflex
- ĝgcircumflex
- ĞGbreve
- ğgbreve
- ĠGdotaccent
- ġgdotaccent
- Ģuni0122
- ģuni0123
- ĤHcircumflex
- ĥhcircumflex
- ĦHbar
- ħhbar
- ĨItilde
- ĩitilde
- ĪImacron
- īimacron
- ĬIbreve
- ĭibreve
- ĮIogonek
- įiogonek
- İIdotaccent
- ıdotlessi
- IJIJ
- ijij
- ĴJcircumflex
- ĵjcircumflex
- Ķuni0136
- ķuni0137
- ĸkgreenlandic
- ĹLacute
- ĺlacute
- Ļuni013B
- ļuni013C
- ĽLcaron
- ľlcaron
- ĿLdot
- ŀldot
- ŁLslash
- łlslash
- ŃNacute
- ńnacute
- Ņuni0145
- ņuni0146
- ŇNcaron
- ňncaron
- ʼnnapostrophe
- ŊEng
- ŋeng
- ŌOmacron
- ōomacron
- ŎObreve
- ŏobreve
- ŐOhungarumlaut
- őohungarumlaut
- ŒOE
- œoe
- ŔRacute
- ŕracute
- Ŗuni0156
- ŗuni0157
- ŘRcaron
- řrcaron
- ŚSacute
- śsacute
- ŜScircumflex
- ŝscircumflex
- ŞScedilla
- şscedilla
- ŠScaron
- šscaron
- Ţuni0162
- ţuni0163
- ŤTcaron
- ťtcaron
- ŦTbar
- ŧtbar
- ŨUtilde
- ũutilde
- ŪUmacron
- ūumacron
- ŬUbreve
- ŭubreve
- ŮUring
- ůuring
- ŰUhungarumlaut
- űuhungarumlaut
- ŲUogonek
- ųuogonek
- ŴWcircumflex
- ŵwcircumflex
- ŶYcircumflex
- ŷycircumflex
- ŸYdieresis
- ŹZacute
- źzacute
- ŻZdotaccent
- żzdotaccent
- ŽZcaron
- žzcaron
- ſlongs
- ƒflorin
- Șuni0218
- șuni0219
- Țuni021A
- țuni021B
- ȷuni0237
- ˆcircumflex
- ˇcaron
- ˘breve
- ˙dotaccent
- ˚ring
- ˛ogonek
- ˜tilde
- ˝hungarumlaut
- –endash
- —emdash
- ‘quoteleft
- ’quoteright
- ‚quotesinglbase
- “quotedblleft
- ”quotedblright
- „quotedblbase
- †dagger
- ‡daggerdbl
- •bullet
- …ellipsis
- ‰perthousand
- ‹guilsinglleft
- ›guilsinglright
- €Euro
- ™trademark
- −minus
- fifi
- flfl
Kerning
Each pair is shown without kerning (grey), then with it.
Rules 164
Each rule covers a whole class (hover over a class name to see its letters), and accented letters use the same kerning as their base letter. Single pairs listed lower in src/kerning.txt override the classes above them.
| natnnatn | @lc_right_xh t | -1 | n t, o t: t's crossbar is the only ink on its left |
| nrannran | r @lc_round_l | -1 | r a: the arm leaves an open bowl under it |
| nrvnnrvn | r @lc_diag | -1 | r y |
| nfannfan | @fs @lc_round_l | -1 | f s, f a |
| najnnajn | @lc_nodesc @js | -1 | i j: j's hook tucks under the left neighbour |
| nr.nnr.n | r @dots | -2 | |
| nf.nnf.n | @fs @dots | -1 | |
| HTaHHTaH | T @lc | -1 | T + any letter; the tighter T rules below win |
| HTAHHTAH | T @uc | -1 | |
| HaTHHaTH | @lc T | -1 | any letter + T |
| HATHHATH | @uc T | -1 | |
| HTaHHTaH | T @lc_xh | -2 | T's arms overhang its stem by 3px |
| HT.HHT.H | T @dots | -2 | |
| HVaHHVaH | @VWY @lc_xh | -1 | |
| HV.HHV.H | @VWY @dots | -2 | |
| HVAHHVAH | @VWY A | -1 | |
| HAVHHAVH | A @VWY | -1 | |
| HLTHHLTH | L T | -2 | |
| HLVHHLVH | L @VWY | -1 | |
| HL'HHL'H | L @quotes | -2 | |
| HLCHHLCH | L C | -1 | L's foot leaves round and slanted letters 3px off |
| HLGHHLGH | L G | -1 | |
| HLOHHLOH | L O | -1 | |
| HLQHHLQH | L Q | -1 | |
| HLgHHLgH | L g | -1 | |
| HLjHHLjH | L j | -1 | |
| HLvHHLvH | L v | -1 | |
| HLyHHLyH | L y | -1 | |
| HLzHHLzH | L z | -1 | |
| HFlHHFlH | F l | -1 | Fl: F's open right side |
| HP.HHP.H | P @dots | -2 | |
| HF.HHF.H | F @dots | -2 | |
| HFAHHFAH | F A | -1 | |
| HFjHHFjH | F @js | -2 | Fj: the j's hook tucks under F's open right side |
| nv.nnv.n | v @dots | -1 | |
| H'AHH'AH | @quotes A | -1 | |
| HA'HHA'H | A @quotes | -1 | |
| HICHHICH | I @I_r | -1 | |
| HBIHHBIH | @I_l I | -1 | |
| HlCHHlCH | l @I_r | -1 | l's foot sits out like I's serif, so the same letters come in |
| ncfnncfn | @f_l @fs | -1 | rf sf tf |
| nfmnnfmn | @fs @f_r | -1 | fn fr fu fy |
| HFtHHFtH | @t_l t | -1 | Lt Vt Yt. Round and flat capitals (St Ct Bt Et Rt, Sf Cf Of) |
| ntfnntfn | t @t_r | -1 | tf tv |
| nbxnnbxn | @x_l x | -1 | ex ox |
| ntanntan | t @lc | -1 | ta te to: t's foot curls out 2px past its stem |
| HtAHHtAH | t @uc | -1 | |
| nbfnnbfn | @lc_round_r @fs | -1 | of ef: round bowls before f's stem |
| nxannxan | x @x_r | -1 | xa xe xo |
| nyannyan | y @lc | -1 | ya yb yc ...: y's open right side (was "y p -1" for Type) |
| HyAHHyAH | y @uc | -1 | yA yB ... |
| ny.nny.n | y @punct | -1 | y. y, y) y" ... |
| njannjan | @js @lc | -1 | ja jb jc ...: same as y |
| HjAHHjAH | @js @uc | -1 | |
| nj.nnj.n | @js @punct | -1 | |
| njjnnjjn | @js @js | -2 | jj |
| nlfnnlfn | l @fs | -1 | lf |
| nffnnffn | @fs @fs | -1 | ff |
| nfinnfin | @fs i | -1 | fi |
| nftnnftn | @fs t | -1 | ft |
| nfjnnfjn | @fs @js | -2 | fj |
| nttnnttn | t t | -1 | tt |
| ngjnngjn | @gs @js | -1 | gj |
| nlynnlyn | l y | -1 | ly |
| ntynntyn | t y | -1 | ty |
| nlonnlon | l o | -1 | lo |
| nlennlen | l e | -1 | le |
| nltnnltn | l t | -1 | lt |
| HAWHHAWH | A W | +0 | YAWL (undoes A @VWY) |
| HYOHHYOH | Y O | -1 | LAYOUT |
| HWoHHWoH | W o | +0 | Wolf (undoes @VWY @lc_xh) |
| HWœHHWœH | W oe | +0 | like W o |
| HWøHHWøH | W oslash | +0 | |
| HPaHHPaH | P @lc | -1 | Pa Pe Po ... (was "P a -1" for Panama) |
| HPAHHPAH | P @uc | -1 | PA PO PH ... |
| nďannďan | @dl @lc | -2 | ď ľ: the caron leaves room on the right; letters that rise to it |
| nď.nnď.n | @dl @punct | -2 | (capitals, ascenders, tall accents, quotes) are eased to -1 |
| HďAHHďAH | @dl @uc | -1 | |
| HÆaHHÆaH | AE @lc | -1 | Æ and æ: -1 to the right |
| HÆAHHÆAH | AE @uc | -1 | |
| HÆ.HHÆ.H | AE @punct | -1 | |
| næannæan | ae @lc | -1 | |
| HæAHHæAH | ae @uc | -1 | |
| næ.nnæ.n | ae @punct | -1 | |
| HW.HHW.H | W period | -1 | W's foot meets the dot at -2 |
| HW,HHW,H | W comma | -1 | |
| HW…HHW…H | W ellipsis | -1 | |
| HTãHHTãH | T atilde | -1 | accents meet T's arms |
| HTñHHTñH | T ntilde | -1 | |
| HTõHHTõH | T otilde | -1 | |
| HTăHHTăH | T abreve | -1 | |
| HTĕHHTĕH | T ebreve | -1 | |
| HTğHHTğH | T gbreve | -1 | |
| HTŏHHTŏH | T obreve | -1 | |
| HTőHHTőH | T ohungarumlaut | -1 | |
| HTřHHTřH | T rcaron | -1 | |
| HTŭHHTŭH | T ubreve | -1 | |
| HTűHHTűH | T uhungarumlaut | -1 | |
| HTũHHTũH | T utilde | -1 | |
| HŤăHHŤăH | Tcaron abreve | -1 | |
| HŤĕHHŤĕH | Tcaron ebreve | -1 | |
| HŤğHHŤğH | Tcaron gbreve | -1 | |
| HŤŏHHŤŏH | Tcaron obreve | -1 | |
| HŤőHHŤőH | Tcaron ohungarumlaut | -1 | |
| HŤřHHŤřH | Tcaron rcaron | -1 | |
| HŤŭHHŤŭH | Tcaron ubreve | -1 | |
| HŤűHHŤűH | Tcaron uhungarumlaut | -1 | |
| HŤũHHŤũH | Tcaron utilde | -1 | |
| HŢăHHŢăH | uni0162 abreve | -1 | |
| HŢĕHHŢĕH | uni0162 ebreve | -1 | |
| HŢğHHŢğH | uni0162 gbreve | -1 | |
| HŢŏHHŢŏH | uni0162 obreve | -1 | |
| HŢőHHŢőH | uni0162 ohungarumlaut | -1 | |
| HŢřHHŢřH | uni0162 rcaron | -1 | |
| HŢŭHHŢŭH | uni0162 ubreve | -1 | |
| HŢűHHŢűH | uni0162 uhungarumlaut | -1 | |
| HŢũHHŢũH | uni0162 utilde | -1 | |
| HȚăHHȚăH | uni021A abreve | -1 | |
| HȚĕHHȚĕH | uni021A ebreve | -1 | |
| HȚğHHȚğH | uni021A gbreve | -1 | |
| HȚŏHHȚŏH | uni021A obreve | -1 | |
| HȚőHHȚőH | uni021A ohungarumlaut | -1 | |
| HȚřHHȚřH | uni021A rcaron | -1 | |
| HȚŭHHȚŭH | uni021A ubreve | -1 | |
| HȚűHHȚűH | uni021A uhungarumlaut | -1 | |
| HȚũHHȚũH | uni021A utilde | -1 | |
| HFĵHHFĵH | F jcircumflex | -1 | |
| HĽTHHĽTH | Lcaron T | -1 | |
| HĽŦHHĽŦH | Lcaron Tbar | -1 | |
| HĽŤHHĽŤH | Lcaron Tcaron | -1 | |
| HĽʼnHHĽʼnH | Lcaron napostrophe | -1 | |
| HĽ"HHĽ"H | Lcaron quotedbl | -1 | |
| HĽ”HHĽ”H | Lcaron quotedblright | -1 | |
| HĽ’HHĽ’H | Lcaron quoteright | -1 | |
| HĽ'HHĽ'H | Lcaron quotesingle | -1 | |
| HĽŢHHĽŢH | Lcaron uni0162 | -1 | |
| HĽȚHHĽȚH | Lcaron uni021A | -1 | |
| nfĵnnfĵn | f jcircumflex | -1 | |
| nƒĵnnƒĵn | florin jcircumflex | -1 | |
| nſĵnnſĵn | longs jcircumflex | -1 | |
| HaTHHaTH | @lc_xh T | -2 | oT aT eT: matches To Ta, T's arms overhang its stem by 3px |
| HaYHHaYH | @lc_xh Y | -1 | aY oY: matches Ya Yo |
| HdYHHdYH | d Y | +0 | d's ascender and g's ear would sit 1px from Y's arms |
| HgYHHgYH | g Y | +0 | |
| HL‘HHL‘H | L quoteleft | -2 | L“ L‘ like L” L' |
| HL“HHL“H | L quotedblleft | -2 | |
| HFaHHFaH | F @lc_xh | -1 | Fa Fo Fn: F's open right side, like P @lc |
| HFCHHFCH | F @EF_r | -1 | FO EO: the top arm leaves round capitals 3px off |
| HECHHECH | E @EF_r | -1 | |
| HBjHHBjH | @j_l @js | -1 | Oj Bj bj: j's hook tucks under, like @lc_nodesc @js |
| HYjHHYjH | Y j | -2 | Yj sat 4px off |
| HTJHHTJH | T J | -2 | TJ FJ YJ: J's top bar leaves its left side open |
| HFJHHFJH | F J | -2 | |
| HYJHHYJH | Y J | -2 | |
| HPJHHPJH | P J | -2 | |
| HfJHHfJH | f J | -2 | |
| HVJHHVJH | V J | -1 | |
| HrJHHrJH | r J | -2 | rJ sat 5px off |
| HrXHHrXH | r X | -1 | rX rY rZ: r's arm |
| HrYHHrYH | r Y | -1 | |
| HrZHHrZH | r Z | -1 | |
| HKvHHKvH | K v | -1 | Kv Xv vX: diagonals |
| HXvHHXvH | X v | -1 | |
| HvXHHvXH | v X | -1 |
How it's made
Figma (mek-system / dosage-humanist)
└─ tools/figma_extract.js ─▶ figma/extract.json
└─ tools/import_figma.py ─▶ src/drawn.txt + figma/sample_text.json
└─ tools/build.py ─▶ fonts/Dosage-Humanist.otf · .ttf · .woff2 + this page
Glyphs are stored as plain-text pixel grids, so every change shows up in a diff. The grid is 1 pixel = 100 units on a 1200-unit em: caps 9px, x-height 6px, descenders 3px, 1px sidebearings and a 4px space.