I’m not sure what you mean, but there are a lot of variable fonts where you have multiple axes by which you can customize a character. If you wanted to use CSS, you could modify each individual character in a text along an indefinite number of axes. E.g. see https://v-fonts.com/
Wonderful day!
There’s likely some misunderstanding. In magnificent Iosevka, you can build your own font, with all or only selected characters, or with particular glyph variations only!
For example, let’s create an example, together!
First, we may check the supportive tool mentioned by the @TheTwelveYearOld@lemmy.world:
- https://typeof.net/Iosevka/customizerLet’s customize some characters. I based on the
Defaultset, and defined 7 variants in total:4RTYfgx.Customizer preview

Then, let’s clone the official repository, and create the “build plan” by exporting the file from the customizer, or using the sample
private-build-plans.sample.toml.The ready
private-build-plans.toml[buildPlans.IosevkaCustom] family = "Iosevka Custom" spacing = "normal" serifs = "sans" noCvSs = true exportGlyphNames = false noLigation = true [buildPlans.IosevkaCustom.variants.design] four = "open-non-crossing-serifed" capital-r = "curly-top-left-and-bottom-right-serifed" capital-t = "motion-serifed" capital-y = "curly-base-serifed" f = "serifed-crossbar-at-half-ascender-height" g = "double-storey" x = "cursive" [buildPlans.IosevkaCustom.weights.Regular] shape = 400 menu = 400 css = 400 [buildPlans.IosevkaCustom.weights.Bold] shape = 700 menu = 700 css = 700 [buildPlans.IosevkaCustom.slopes.Upright] angle = 0 shape = "upright" menu = "upright" css = "normal" [buildPlans.IosevkaCustom.slopes.Italic] angle = 9.4 shape = "italic" menu = "italic" css = "italic"Let’s execute the build!
Build script output
[21-14-06] u@h$ npm run build -- 'ttf::IosevkaCustom'; > @iosevka/monorepo@34.3.0 build > verda -f verdafile.mjs ttf::IosevkaCustom ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-ExtendedItalic.ttf ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Bold.ttf ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-ExtendedBold.ttf ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-BoldItalic.ttf ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-ExtendedBoldItalic.ttf ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Regular.ttf ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Extended.ttf ♦ Create TTF dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Italic.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-Regular.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Regular.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-Italic.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Italic.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-ExtendedBold.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-ExtendedBold.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-Extended.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Extended.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-Bold.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-Bold.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-ExtendedItalic.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-ExtendedItalic.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-ExtendedBoldItalic.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-ExtendedBoldItalic.ttf ♦ Hint TTF dist/IosevkaCustom/TTF/IosevkaCustom-BoldItalic.ttf <- dist/IosevkaCustom/TTF-Unhinted/IosevkaCustom-BoldItalic.ttf [21-17-56] u@h$It’s a relatively heavy task, considering the 11,360 characters I selected in the customizer * 8 font styles = 90,880 glyphs to render.
It required ~4 minutes on the i5-10500 and 32 GB RAM of common office-like timings, a machine I had access to at the time of this experiment.In the result, we just copied the Toml file from the customizer page, and ran the command to build the family stated in the file (e.g.
ttf::FamilyName;ttf::IosevkaCustomfor TTF andcontent::IosevkaCustomfor all formats).At voila! ✨
The result previews (including FontForge)


It’s worth to mention that building consumes all CPU cores, but it’s possible to limit it:
- https://github.com/be5invis/Iosevka/issues/936
- https://github.com/be5invis/Iosevka/issues/2881#issuecomment-3354463261

