A Sass and Stylus Toolkit for Setting Type Set your type in Ems with modular scale, vertical rhythm, and responsive ratio based headlines using Sass or Stylus. Why create another type toolkit? I wanted to and I couldn’t find exactly what I was looking for. Typesettings uses techniques from many different amazing tools while trying to keep it simple. Its only dependency is Sass or Stylus

It uses Ems for type not REMs or pixels

It handles all the math for Ems including the compounding

It maintains vertical rhythm with pixel based borders using padding set in Ems

It comes with a default 6px baseline to maintain rhythm on all block elements

It relies more on using functions combined with vanilla CSS rules rather than mixins to style

It uses modular scale values to set font-size

It has optional default type styles that includes settings for adjusting headlines based on screen width

How to setup You can either use the Sass versison or the Stylus version. There are three ways you can download both versions of Typesettings. Download the latest release

Clone the repo: git clone https://github.com/ianrose/typesettings.git

Install with Bower: bower install typesettings --save-dev Setup Sass To start using Typesettings @import the _typesettings.scss partial into your Sass project after your CSS reset. Setup Stylus To start using Typesettings @import the _typesettings.styl partial into your Stylus project after your CSS reset.

How to use After Typesettings is setup in your project the default type styles should be looking good. However I bet you want to use modular scale and vertical rhythm in the rest of your project. Here is an example of how to do that: The SCSS: The Stylus: The generated CSS: You can also look at the source code of this site to see how it was made using Typesettings.

Requirements Sass or Stylus, that’s it.

Functions Internally Typesettings uses some utility functions, which if you have a need use them. It also contains functions that can and should be used for setting type. Typesettings will warn you if a value will not result in a rhythm friendly value. If you would like to silence the warning you can pass the argument $silent: true . The Sass function emRhythm returns an EM value that is a multiple of our defined base vertical unit. For example 3 becomes 1.125em The Sass function unitlessRhythm returns a unitless number that is a multiple of our defined base vertical unit. For example 3 becomes 1.125

Mixins Typesettings provides a number of helpful typesetting and vertical spacing mixins. Typesettings will warn you if a value will not result in a rhythm friendly value. If you would like to “silent” the warning you can pass the argument $silent: true The mixin setType sets the type in EMs and makes a vertical rhythm unitless line-height that is based on context. The mixin setLeading creates a vertical rhythm unitless line-height that is based on context. The mixin rhythmBorderTop creates a pixel width border top with padding that is a multiple of the base vertical grid unit. You will need to set border style and color rules. The mixin rhythmBorderBottom creates a pixel width border bottom with padding that is a multiple of the base vertical grid unit. You will need to set border style and color rules. The mixin rhythmBorder creates a pixel width border with padding that is a multiple of the base vertical grid unit. You will need to set border style and color rules The mixin debug-vertical-alignment creates base type baseline overlay and vertical unit overlay. To use on the body tag for example: body { @include debug-vertical-alignment(); } and add class va-debug to the body tag