modern

Yeats and postmodernism / edited by Leonard Orr

Online Resource




modern

Modernist physics: waves, particles, and relativities in the writings of Virginia Woolf and D. H. Lawrence / Rachel Crossland

Hayden Library - PR149.S4 C76 2018




modern

Frankenstein: or, The modern Prometheus: annotated for scientists, engineers, and creators of all kinds / Mary Shelley ; edited by David H. Guston, Ed Finn, and Jason Scott Robert

Hayden Library - PR5397.F7 2017




modern

The matter of song in early modern England: texts in and of the air / Katherine R. Larson

Barker Library - PR507.L37 2019




modern

Early modern theatricality / edited by Henry S. Turner

Online Resource




modern

Phantasmatic Shakespeare: imagination in the age of early modern science / Suparna Roychoudhury

Dewey Library - PR3047.R69 2018




modern

The Oxford handbook of early modern English literature and religion / edited by Andrew Hiscock and Helen Wilcox

Online Resource




modern

Eastern Mediterranean Port Cities [electronic resource] : A Study of Mersin, Turkey—From Antiquity to Modernity / edited by Filiz Yenişehirlioğlu, Eyüp Özveren, Tülin Selvi Ünlü




modern

Understanding Sociology : From Modernity to Post-Modernity [electronic resource]




modern

Classic Collection : Anthony Giddens: Capitalism and Social Modern Theory [electronic resource]




modern

Anthony Giddens [electronic resource] : the last modernist / Stjepan G. Meštrović

Meštrović, Stjepan Gabriel




modern

Education, modern development, and indigenous knowledge [electronic resource] : an analysis of academic knowledge production / Seana McGovern

McGovern, Seana




modern

Zhongguo jin xian dai zhe xue si lun = Four topics on modern and contemporary Chinese philosophy / Song Zhiming

Song, Zhiming, 1947- author




modern

Tradition und Moderne in der Literatur der Schweiz im 20. Jahrhundert: Beiträge zur Internationalen Konferenz zur Deutschsprachigen Literatur der Schweiz, 26. bis 27. September 2007 / herausgegeben von Eve Pormeister, Hans Graubner

Online Resource




modern

Modern drama and German classicism: renaissance from Lessing to Brecht / Benjamin Bennett

Online Resource




modern

Violent modernists: the aesthetics of destruction in twentieth-century German literature / Kai Evers

Online Resource




modern

The topography of modernity: Karl Philipp Moritz and the space of autonomy / Elliott Schreiber

Online Resource




modern

Science Podcast - The modern hunter-gatherer gut, fast mountain weathering, and a rundown of stories from our daily news site (17 Jan 2014)

Hunter-gatherer gut microbes, fast moving mountains, and a daily news roundup.




modern

Unearthing slavery in the Caribbean, and the Catholic Church’s influence on modern psychology

Most historical accounts of slavery were written by colonists and planters. Researchers are now using the tools of archaeology to learn more about the day-to-day lives of enslaved Africans—how they survived the conditions of slavery, how they participated in local economies, and how they maintained their own agency. Host Sarah Crespi talks with Contributing Correspondent Lizzie Wade about a Caribbean archaeology project based on St. Croix in the U.S. Virgin Islands and launched by the founders of the Society for Black Archaeologists that aims to unearth these details. Watch a related video here. Sarah also talks with Jonathan Schulz, a professor in the Department of Economics at George Mason University in Fairfax, Virginia, about a role for the medieval Roman Catholic Church in so-called WEIRD psychology—western, educated, industrialized, rich, democratic. The bulk of psychology experiments have used participants that could be described as WEIRD, and according to many psychological measures, WEIRD subjects tend to have some extreme traits, like a stronger tendency toward individuality and more friendliness with strangers. Schulz and colleagues used historical maps and measures of kinship structure to tie these traits to strict marriage rules enforced by the medieval Catholic Church in Western Europe. Read related commentary. This week’s episode was edited by Podigy. Ads on this week’s show: Bayer; KiwiCo Download a transcript (PDF) Listen to previous podcasts. About the Science Podcast




modern

Egyptian mummies and modern science [electronic resource] / edited by Rosalie David

Cambridge ; New York : Cambridge University Press, 2008




modern

Recharting the Black Atlantic [electronic resource] : modern cultures, local communities, global connections / edited by Annalisa Oboe and Anna Scacchi

New York : Routledge, 2008




modern

Modern Stochastics and Applications [electronic resource] / edited by Volodymyr Korolyuk, Nikolaos Limnios, Yuliya Mishura, Lyudmyla Sakhno, Georgiy Shevchenko

Cham : Springer International Publishing : Imprint: Springer, 2014




modern

Modern Optimization with R [electronic resource] / by Paulo Cortez

Cham : Springer International Publishing : Imprint: Springer, 2014




modern

Basics of Modern Mathematical Statistics [electronic resource] : Exercises and Solutions / by Wolfgang Karl Härdle, Vladimir Spokoiny, Vladimir Panov, Weining Wang

Berlin, Heidelberg : Springer Berlin Heidelberg : Imprint: Springer, 2014




modern

Upper and Lower Bounds for Stochastic Processes [electronic resource] : Modern Methods and Classical Problems / by Michel Talagrand

Berlin, Heidelberg : Springer Berlin Heidelberg : Imprint: Springer, 2014




modern

Modern digital and analog communication systems / B.P. Lathi (Professor Emeritus, California State University-Sacramento), Zhi Ding (Professor, University of California-Davis)

Lathi, B. P. (Bhagwandas Pannalal), author




modern

Modern principles, practices, and algorithms for cloud security / [edited by] Brij B. Gupta




modern

Technological and modern irrigation environment in Egypt: best management practices & evaluation / El-Sayed E. Omran, Abdelazim M. Negm, editors

Online Resource




modern

Engine of modernity: the omnibus and urban culture in nineteenth-century Paris / Masha Belenky

Dewey Library - HE5668.P3 B454 2019




modern

Modern Japan [electronic resource] : a social and political history / Elise K. Tipton

London ; New York : Routledge, 2008




modern

Modern Japan : a history in documents / James L. Huffman

Huffman, James L., 1941-




modern

Worshipping the great moderniser : King Chulalongkorn, patron saint of the Thai middle class / Irene Stengs

Stengs, Irene




modern

Postcolonial interruptions, unauthorised modernities / Iain Chambers

Chambers, Iain, author




modern

A history of the modern Middle East / William L. Cleveland (late of Simon Fraser University), Martin Bunton (University of Victoria)

Cleveland, William L., author




modern

The coup : 1953, the CIA, and the roots of modern U.S.-Iranian relations / Ervand Abrahamian

Abrahamian, Ervand, 1940-




modern

The shape of the new : four big ideas and how they made the modern world / Scott L. Montgomery and Daniel Chirot

Montgomery, Scott L., author




modern

The making of the modern world : connected histories, divergent paths (1500 to the present) / senior author, Robert W. Strayer ; coauthors, Edwin Hirschmann, Robert B. Marks, Robert J. Smith ; contributing authors, James J. Horn, Lynn H. Parsons

Strayer, Robert W., author




modern

The making of the modern world : encounters / Alan Macfarlane

MacFarlane, Alan, author




modern

Redefining Southern culture : mind and identity in the modern South / James C. Cobb

Cobb, James C. (James Charles), 1947-




modern

Plant breeding: classical to modern / P. M. Priyadarshan

Online Resource




modern

Indigenous, modern and postcolonial relations to nature: negotiating the environment / Angela Roothaan

Online Resource




modern

Forest pest and disease management in Latin America: modern perspectives in natural forests and exotic plantations / Sergio A. Estay, editor

Online Resource




modern

Bringing whales ashore: oceans and the environment of early modern Japan / Jakobina K. Arch

Hayden Library - SH383.5.J5 A73 2018




modern

A Modern Typographic Scale

Rob Weychert reaches for the top notes to sing us a song of typographic scale. A little attention to scale and to the mathematics will help you to hit a high note with your designs this Christmas and beyond.


I’ve been studying music theory this year. While some of its core concepts were already familiar to me, much of their specifics were not. Or so I thought. A funny thing happened when I was learning the major scales.

While playing through a song I had written some years before, I started picking it apart to see how it correlated with the theory I was learning. I had composed the melody without any thought to what the specific notes were, but as I started to transcribe them, a pattern quickly emerged: all the B’s and E’s were flat and the rest of the notes were natural. Lo and behold, long before my music theory studies began, I had written a song in B♭ major. My ears already knew how the major scales worked even if my brain didn’t. (If you know how “do re mi fa so la ti do” is supposed to sound tonally, then your ears know, too.)

When music is composed to a scale, it sounds “right” to us. And just as our ears appreciate harmony and melody with a rational basis, our eyes can appreciate the same concepts applied to spatial relationships.

Have you ever struggled with sizing type in a design project, especially when you need more than just one or two sizes? Have you ever despaired at the number of ad-hoc type sizes on your site spiraling out of control over time? It could be that you’ve been composing the typographic equivalent of a cacophonous symphony. And the first thing any composer will tell you to do is to get that thing on a scale.

Meet the typographic scale

You don’t need to know music theory to work with a typographic scale. You only need to know that a scale is a range of values with an established mathematic relationship. For a typographic scale, that relationship is frequently a steady interval between type sizes. Depending on what you need your type to do, the interval might be fixed (e.g. each size is two pixels bigger than the size before it) or it might be proportional (e.g. each size is twice as big as the size before it). I personally rarely find fixed intervals useful, so I’ll be focusing on proportional intervals.

The most important thing to understand about proportional intervals is thankfully not complicated: The bigger the intervals are, the more drastic the size differences will be in your scale. If your layout calls for contrast, a bigger interval might be the way to go. If you’re aiming for something more nuanced, go smaller. But keep these things in mind:

  • There is such a thing as too much nuance: if a size on your scale is virtually indistinguishable from the sizes adjacent to it, it defeats the purpose of using a scale.
  • On the flip side, too much contrast renders the sizes’ proportional relationship moot. At a certain point, massive display type is arguably more graphic than textual.
  • More is less. The more sizes you use, the less they’ll mean.
A small interval (left, 1.1) offers a smoother range of sizes; a large interval (right, 1.8) offers more contrast.

Setting up the scale variables

The quickest way to get a scale up and running when working on the web is to drop its values into some CSS variables. The naming convention I typically use begins with --scale0, which is the body text size. The size below it is --scale-1 (as in “scale minus one”), the size above it is --scale1, and so on. Keeping the names relative to each other like this helps me move around the scale intuitively as I use it. If, say, --scale4 isn’t big enough for my h1, I can move up to --scale5 or --scale6, and I always know exactly how many steps away from the body text I am. Here’s a first pass at a simple set of scale variables using an interval of 1.5:

:root {
  --scale-2: 7.1px;  /* 10.7 ÷ 1.5 */
  --scale-1: 10.7px; /* 16 ÷ 1.5   */
  --scale0: 16px;    /* body text  */
  --scale1: 24px;    /* 16 × 1.5   */
  --scale2: 36px;    /* 24 × 1.5   */
}

I can use these variables with any CSS property that accepts a numeric value, like so:

p { font-size: var(--scale0); }

Rooting around in rems

I’m off to a good start. However, those px values are a little too absolute for my liking. If I convert them to rems, it’ll give my scale more flexibility. rem stands for “root em.” 1rem is equivalent to the html element’s text size, which in most browsers defaults to 16px. Crucially, though, users can adjust that size in their browser settings, and using rems in my CSS will respect those preferences.

:root {
  --scale-2: 0.4rem;  /* 0.7rem ÷ 1.5 */
  --scale-1: 0.7rem;  /* 1rem ÷ 1.5   */
  --scale0: 1rem;     /* body text    */
  --scale1: 1.5rem;   /* 1rem × 1.5   */
  --scale2: 2.25rem;  /* 1.5rem × 1.5 */
}

Another benefit of the relative nature of rems: I tend to use larger text sizes on large viewports and smaller text sizes on small viewports. Rather than adjusting dozens or hundreds of typographic CSS declarations per breakpoint, I can shift the whole scale up or down merely by adjusting the font-size on the html element:

html { font-size: 100%; }     /* 1rem = 16px */

@media screen and (min-width: 25em) {
  html { font-size: 112.5%; } /* 1rem = 18px */
}

Calculating with calc()

My scale is coming along. Its variables’ intuitive names make it easy for me to use, and its rem values respect the user’s browser preferences and allow me to easily shift the size of the entire scale at different viewport sizes. But my setup still isn’t optimized for one very important adjustment: the interval, which is currently 1.5. If 1.5 isn’t quite working for me and I want to see how an increase or decrease will affect the scale, I need to do the math all over again for every step in the scale every time I adjust the interval. The bigger the scale, the more time that will take. It’s time to put down the abacus and get calc() involved.

:root {
  --int: 1.5;
  --scale0: 1rem;
  --scale-1: calc(var(--scale0) / var(--int));
  --scale-2: calc(var(--scale-1) / var(--int));
  --scale1: calc(var(--scale0) * var(--int));
  --scale2: calc(var(--scale1) * var(--int));
}

My interval now has its very own variable, called --int. calc() determines each scale size by multiplying the preceding size by --int. Now that every size is ultimately dependent on --scale0’s value, --scale0 must appear first in the list. Since the sizes smaller than --scale0 are going down rather than up, their values require division rather than multiplication.

Scaling the scale

I can now quickly and easily tweak my scale’s interval by adjusting --int until the proportions are just right, but if I want to add more sizes to the scale, I need to add more variables and calc() values. This isn’t too big of a deal, but if I want to double or triple the number of sizes, it’s kind of a headache. Luckily, this is the sort of thing Sass is really good at. In the following code, adjusting the first four Sass variables at the top of :root will quickly spin up a set of CSS variables like the scale above, with any interval (proportional or fixed) and any number of scale sizes:

:root {
  $interval: 1.5;    // Unitless for proportional, unit for fixed
  $body-text: 1rem;  // Must have a unit
  $scale-min: -2;    // Unitless negative integer
  $scale-max: 2;     // Unitless positive integer

  --int: #{$interval};
  --scale0: #{$body-text};

  @if $scale-min < 0 {
  // Generate scale variables smaller than the base text size
    @for $i from -1 through $scale-min {
      @if type-of($interval) == number {
        @if unitless($interval) {
          --scale#{$i}: calc(var(--scale#{$i + 1}) / var(--int));
        } @else {
          --scale#{$i}: calc(var(--scale#{$i + 1}) - var(--int));
        }
      }
    }
  }
  @if $scale-max > 0 {
    // Generate scale variables larger than the base text size
    @for $i from 1 through $scale-max {
      @if type-of($interval) == number {
        @if unitless($interval) {
          --scale#{$i}: calc(var(--scale#{$i - 1}) * var(--int));
        } @else {
          --scale#{$i}: calc(var(--scale#{$i - 1}) + var(--int));
        }
      }
    }
  }
}

Go forth and scale

Typographic scales have been an indispensable part of my work for many years, and CSS variables and calc() make setup, adjustments, and experimentation easier than ever. I hope you find these techniques as useful as I do!


About the author

Rob Weychert is a Brooklyn-based designer. He helps shape the reading experience at ProPublica and has previously helped make books at A Book Apart, games at Harmonix, and websites at Happy Cog. In his free time, he obsesses over music and film. Despite all this, he is probably best known as a competitive air guitarist.

More articles by Rob




modern

The modern Republican Party in Florida / Peter Dunbar and Mike Haridopolos

Dewey Library - JK2358.F5 D86 2019




modern

The Oxford handbook of modern British political history, 1800-2000 / edited by David Brown, Gordon Pentland, and Robert Crowcroft

Online Resource




modern

Intelligence and state surveillance in modern societies: an international perspective / by Frederic Lemieux

Dewey Library - JF1525.I6 L46 2019




modern

Security and terror: American culture and the long history of colonial modernity / Eli Jelly-Schapiro

Dewey Library - HV6432.J445 2018




modern

Einfhrung in die moderne matrix-algebra [electronic resource] : mit anwendungen in der statistik / Karsten Schmidt, Götz Trenkler

Berlin : Springer-Verlag, [2006]




modern

Modern physical metallurgy and materials engineering / contributors, William A. Brantley, Satish B. Alapati et al ; [edited and compiled by Auris Reference Editorial Board]