• Artwork@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      4 months ago

      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/customizer

      Let’s customize some characters. I based on the Default set, 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::IosevkaCustom for TTF and content::IosevkaCustom for 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