Compare commits

..

17 Commits

18
.gitignore vendored

@ -18,14 +18,10 @@ Icon
# Files that might appear on external disk
.Spotlight-V100
.Trashes
# generated documentation
scribblings/*.js
scribblings/*.css
!scribblings/mb.css
scribblings/*.html
fontrec/*.gif
styles.css
pdf/*.gif
fonts/*.css
ie.css
manual-fonts.css
manual-racket.css
manual-racket.js
manual-style.css
racket.css
scribble-common.js
scribble.css

@ -1,17 +0,0 @@
export POLLEN := BUILD
.PHONY: build go build-helper quick test
build: test build-helper go
go:
raco pollen render -p
raco pollen publish
build-helper:
raco pollen reset
raco pollen setup -p
quick: go
test:
echo $${POLLEN}

@ -1,12 +1,12 @@
## © 200819 Matthew Butterick
## © 200815 Matthew Butterick
This is the source code for an earlier version of the Typography for Lawyers [web-based book](http://typographyforlawyers.com), which is an abbreviated version of the [paperback](http://typo.la/oc).
This is the source code for the Typography for Lawyers [web-based book](http://typographyforlawyers.com), which is an abbreviated version of the [paperback](http://typo.la/oc).
The website is built with [Pollen](http://pollenpub.com). Im sharing this code as a Pollen sample project. Because when Im trying to learn a new programming tool, I prefer to study real projects rather than synthetic examples.
To run this project, you need to first install [Racket](https://github.com/racket/racket) and [Pollen](https://git.matthewbutterick.com/mbutterick/pollen).
To run this project, you need to first install [Racket](https://github.com/racket/racket) and [Pollen](https://github.com/mbutterick/pollen).
## Installation
## Optional installation
Using Racket 6.0+, install from the command line:
@ -15,32 +15,22 @@ Using Racket 6.0+, install from the command line:
And update like so:
raco pkg update --update-deps pollen-tfl
## Documentation
Scribble documentation is provided for the main `pollen.rkt` file. (Search for the `pollen-tfl` module in the Racket docs.)
Other source files contain comments.
You can also read the docs [online, right now.](http://docs.racket-lang.org/pollen-tfl/)
Installation is optional because you can also clone the repo in the usual ways and run it with Pollen.
## But this repo is not open source
This repo contains fonts licensed under the OFL (= Source Serif 4, Fira Sans, Fira Mono, and Cooper Hewitt).
Everything else in this repository belongs to me and not you.
Everything in this repository belongs to me and not you.
I give you permission to use this repo to learn about Pollen, including running and modifying the files.
I also give you permission to reuse or adapt any of the Racket & Pollen source code, or JavaScript / CSS / HTML, for your own Racket & Pollen projects.
I do **NOT** give you permission to reuse any of the content of this web-based book (including text, images, and PDFs). Why not? Because thats the stuff I sell for money so that I can keep [Pollen](http://pollenpub.com) itself free. Lets not mess with a good thing.
I do **NOT** give you permission to reuse any of the content of this web-based book (including text, images, and PDFs), nor the fonts that are embedded in the CSS. Why not? Because thats the stuff I sell for money so that I can keep [Pollen](http://pollenpub.com) itself under the LGPL. Lets not mess with a good thing.
If you have questions not covered here, please post them in the Pollen forum: https://forums.matthewbutterick.com/c/pollen/
If you have questions not covered here, please post them on the Pollen mailing list: http://groups.google.com/forum/#!forum/pollenpub
## Project status
## Which files are commented?
Complete. Maintained but no further updates planned.
[`pollen.rkt`](https://github.com/mbutterick/pollen-tfl/blob/master/pollen.rkt)

@ -15,7 +15,7 @@ I live in Los Angeles with my wife Jessica and Roxy the boxer.
You can reach me at link["mailto:mb@typographyforlawyers.com"]{mb@typographyforlawyers.com}. I welcome comments and corrections. I do not, however, dispense individualized critiques or recommendations. Nor do I have Word templates to give away. After all, the point of the book is for you to learn how to do these things yourself.
em{Typography for Lawyers} is © 200817 Matthew Butterick. All rights reserved.
em{Typography for Lawyers} is © 201015 Matthew Butterick. All rights reserved.
gap[5]

@ -0,0 +1,55 @@
#lang pollen
(require pollen/template)
(define-meta tfl-font-template "true")
(define-meta title "Advocate")
margin-note{
div[#:style "text-align:center"]{
link["http://typo.la/ats" #:class 'pdf]{◊image{advocate-type-specimen.png}}
link["http://typo.la/ats" #:class 'buylink]{PDF specimen}
}}
mb-font-specimen{div[#:style "line-height:1.1;margin-top:-0.5rem"]{◊span[#:style "font-family:'advocate-c43';font-size:115%"]{THE SENATORS AND REPRESENTATIVES
shall receive a Compensation for their
Services, to be ascertained by Law, and
strong{paid out of the Treasury of the United
States. They shall in all Cases, except}
span[#:style "font-family:'advocate-slab-c43'"]{Felony, be privileged from Arrest.}
span[#:style "font-family:'advocate-c45'"]{You can edit this paragraph.}}}}
make-buy-table[#:people '(1 2 5) #:skus (list
advocate
equity-concourse-triplicate-advocate)]
font-details{Advocate includes 180 font files:
= 3 weights (regular, medium, bold)
× 3 widths (narrow, regular, wide)
× 2 series (sans, slab)
+ 12 cloned styles
× 3 stylistic variants (normal, tab, mid)
× 2 file formats (OpenType, and TrueType-compatible OpenType TT)
Read the link["http://mbtype.com/license"]{font license} (its short) or the link["http://mbtype.com/faq"]{FAQ}
For more than five people, email link["mailto:mb@mbtype.com"]{mb@mbtype.com}}
numbered-list{
An assertive display face for xref{letterhead}, logos, and titles.
Three widths and three weights, with sans and slab serif versions.
Short, plain-English license.
30-day return option.
}

@ -7,7 +7,7 @@ If this book were a law-school class, reformatting a ◊em{caption page} could b
(omission)
Recall the second xref["maxims-of-page-layout.html"]{maxim of page layout} em{divide the page into foreground and background}. The vertical rules on a caption page should seem like part of the backgroundthey should not be darker or more prominent than the body text in the foreground. Removing unnecessary rules will make the body text area feel less cramped. Use as few as possible. In this revised version, I removed the vertical rule on the right and one on the left. I made the remaining rule thinner and moved it away from the text.
Recall the second xref{maxim of page layout} em{divide the page into foreground and background}. The vertical rules on a caption page should seem like part of the backgroundthey should not be darker or more prominent than the body text in the foreground. Removing unnecessary rules will make the body text area feel less cramped. Use as few as possible. In this revised version, I removed the vertical rule on the right and one on the left. I made the remaining rule thinner and moved it away from the text.
Court filings have ugly typography as a matter of habit, not requirement. Court rules can be strict, but theres still plenty of room for good typography (see xref{how to interpret court rules}).

@ -0,0 +1,73 @@
#lang pollen
(require pollen/template)
(define-meta tfl-font-template "true")
(define-meta title "Concourse")
margin-note{
div[#:style "text-align:center"]{
link["http://typo.la/cots" #:class 'pdf]{◊image{concourse-type-specimen.png}}
link["http://typo.la/cots" #:class 'buylink]{PDF specimen}
link["http://concoursefont.com" #:class 'buylink]{web specimen}
}}
mb-font-specimen{div[#:style "font-family:'concourse-t3';font-size:108%;position:relative;top:-.5rem;"]{◊span[#:style "text-transform:lowercase;font-family:concourse-c4;font-size:110tripl%"]{THE CONGRESS SHALL HAVE POWER}
to lay and collect Taxes, Duties, Imposts and
Excises, to pay the Debts and provide for the
em{common Defense and general Welfare of the}
strong{United States; but all Duties, Imposts and}
em{strong{Excises shall be uniform throughout.}}
If you like, you can edit this paragraph.}}
make-buy-table[#:people '(1 2 5) #:skus (list
concourse-basic
concourse-standard
equity-concourse-basic
equity-concourse-standard
equity-concourse-triplicate
equity-concourse-triplicate-advocate)]
font-details{Concourse Standard includes 108 font files:
= 6 weights (light, book, medium, semibold, bold, black)
× 3 series (roman, italic, and caps)
+ 9 cloned styles
× 2 variants (regular and Tab, with tabular figures as the defaults)
× 2 file formats (OpenType, and TrueType-compatible OpenType TT)
Concourse Basic includes 48 font files:
= 3 weights (book, semibold, and bold)
× 3 series (roman, italic, and caps)
+ 3 cloned styles
× 2 variants (regular and Tab)
× 2 file formats (OpenType and OpenType TT)
Read the link["http://mbtype.com/license"]{font license} (its short) or the link["http://mbtype.com/faq"]{FAQ}
For details on character set and OpenType features, see the link["http://typo.la/cots"]{PDF specimen}
For more than five people, email link["mailto:mb@mbtype.com"]{mb@mbtype.com}}
numbered-list{
A sans serif companion for xref{Equity} suitable for text and display uses.
Six weights in the Standard package, with real italics and small caps for every weight. It includes oldstyle and tabular xref{alternate figures}.
The Basic package includes the three weights most useful for legal drafting.
Separate caps fonts, which contain real xref{small caps} and already include my recommended xref{letterspacing}.
Short, plain-English license.
30-day return option.
}

@ -0,0 +1,59 @@
#lang pollen
(require pollen/template)
(define-meta tfl-font-template "true")
(define-meta title "Equity")
margin-note{
div[#:style "text-align:center"]{
link["http://typo.la/eqts" #:class 'pdf]{◊image{equity-type-specimen.png}}
link["http://typo.la/eqts" #:class 'buylink]{PDF specimen}
}}
mb-font-specimen{span[#:style "font-family:equity-caps"]{WE THE PEOPLE OF THE UNITED}
States, in Order to form a more perfect Union,
establish Justice, insure domestic Tranquility,
provide for the common Defense, promote the
em{general Welfare, and secure the Blessings of}
strong{Liberty to ourselves and our Posterity.}
If you like, you can edit this paragraph.}
make-buy-table[#:people '(1 2 5) #:skus (list
equity
equity-concourse-basic
equity-concourse-standard
equity-concourse-triplicate
equity-concourse-triplicate-advocate)]
font-details{Equity includes 48 font files:
= 6 styles (regular, italic, bold, bold italic, regular caps, bold caps)
× 2 weight grades (A and B)
× 2 variants (regular and Tab, with tabular figures as the defaults)
× 2 file formats (OpenType, and TrueType-compatible OpenType TT)
Read the link["http://mbtype.com/license"]{font license} (its short) or the link["http://mbtype.com/faq"]{FAQ}
For details on character set and OpenType features, see the link["http://typo.la/eqts"]{PDF specimen}
For more than five people, email link["mailto:mb@mbtype.com"]{mb@mbtype.com}}
numbered-list{
A workhorse serif font for xref{body text}.
Fits as many words on the page as xref{Times New Roman}, and stays legible down to small xref{point sizes}.
Designed to perform well on both high-end output devices and office printers.
Comes with a separate set of caps fonts, which contain real xref{small caps} and already include my recommended xref{letterspacing}.
Short, plain-English license.
30-day return option.
}

@ -23,7 +23,7 @@ Professional fonts are also a great value. Yes, they cost money. But you can get
btw{
Most professional fonts are delivered in OpenType format (.otf extension). Some are offered in the older TrueType format (.ttf ). OpenType and TrueType files can be used on either Windows or Mac OS, so the technological distinctions are largely moot. One notable exception: Microsoft Office on Windows, for various historical reasons, still does better with TrueType fonts. So if youre getting a professional font to use with Office, be sure to get the TrueType versions.
Most professional fonts are delivered in OpenType format (.otf extension). Some are offered in the older TrueType format (.ttf ). OpenType and TrueType files can be used on either Windows or OS X, so the technological distinctions are largely moot. One notable exception: Microsoft Office on Windows, for various historical reasons, still does better with TrueType fonts. So if youre getting a professional font to use with Office, be sure to get the TrueType versions.
Whats the difference between a font and a typeface? Historically, em{typeface} referred to the overall family (e.g., Baskerville) and em{font} referred to a specific instance of the family (e.g., 10-point Baskerville bold italic). This distinction made sense in the letterpress age, when each font corresponded to a case of metal type. But as Bryan Garner has pointed out, [t]echnology has changed the meaning of this term ... font most often denotes a whole family of styles that can be printed at almost any size. (em{Garners Modern American Usage}, 3rd ed., page 364.) Internet pedants may carp, but its fine to use em{font} to mean both the family and a specific style. I do.

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Amira")
(pdf-thumbnail-link-from-metas metas)
buylink["https://store.typenetwork.com/foundry/occupant/fonts/amira"]{TypeNetwork}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Amplitude")
(pdf-thumbnail-link-from-metas metas)
buylink["https://store.typenetwork.com/foundry/fontbureau/fonts/amplitude"]{TypeNetwork}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Arno")
(pdf-thumbnail-link-from-metas metas)
buylink["https://typekit.com/fonts/arno"]{Adobe Typekit}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Bembo Book")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/mti/bembo-book/"]{MyFonts}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Brioni")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.typotheque.com/fonts/brioni"]{Typetheque}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,9 +0,0 @@
#lang pollen
(define-meta title "Century Supra")
(pdf-thumbnail-link "century-supra-t3.pdf")
(pdf-thumbnail-link "century-supra-t4.pdf")
buylink["//mbtype.com/fonts/century-supra"]{MB Type}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Courier 10 Pitch")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/bitstream/courier-10-pitch/"]{MyFonts}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@ -2,8 +2,6 @@
(define-meta title "Equity")
(pdf-thumbnail-link "equity-a.pdf")
(pdf-thumbnail-link "equity-b.pdf")
(pdf-thumbnail-link-from-metas metas)
buylink["/equity.html"]{the TFL website}

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "FF Meta")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.fontshop.com/families/ff-meta"]{FontShop}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "FF Quadraat Sans")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.fontshop.com/families/ff-quadraat-sans"]{FontShop}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "FF Quadraat")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.fontshop.com/families/ff-quadraat"]{FontShop}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "FF Scala Sans")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.fontshop.com/families/ff-scala-sans"]{FontShop}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "FF Tisa")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.fontshop.com/families/ff-tisa"]{FontShop}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Frutiger")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/linotype/frutiger/"]{MyFonts}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Gotham")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.typography.com/fonts/gotham/"]{Hoefler & Co.}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Helvetica Neue")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/linotype/neue-helvetica/"]{MyFonts}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -4,4 +4,4 @@
(pdf-thumbnail-link-from-metas metas)
buylink["http://www.identifont.com/find?font=iowan+old+style"]{Font information}
buylink["https://www.myfonts.com/fonts/bitstream/iowan-old-style/"]{MyFonts}

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "ITC Franklin Gothic")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/itc/franklin-gothic/"]{MyFonts}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Janson Text")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/linotype/janson-text/"]{MyFonts}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Magma")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/stone/magma-ii/"]{MyFonts}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Mercury")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.typography.com/fonts/mercury/"]{Hoefler & Co.}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -4,4 +4,4 @@
(pdf-thumbnail-link-from-metas metas)
buylink["https://store.typenetwork.com/foundry/cartercone/series/miller?family=miller-text"]{Font Bureau}
buylink["https://www.myfonts.com/fonts/fontbureau/miller/"]{MyFonts}

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Minion")
(pdf-thumbnail-link-from-metas metas)
buylink["https://typekit.com/fonts/minion"]{Adobe Typekit}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Mr Eaves")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.emigre.com/Fonts/Mr-Eaves-Sans-and-Modern"]{Emigre}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Mrs Eaves")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.emigre.com/Fonts/Mrs-Eaves"]{Emigre}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Myriad")
(pdf-thumbnail-link-from-metas metas)
buylink["https://typekit.com/fonts/myriad"]{Adobe Typekit}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@ -4,4 +4,4 @@
(pdf-thumbnail-link-from-metas metas)
buylink["https://store.typenetwork.com/foundry/fontbureau/series/neue-haas-grotesk?family=neue-haas-grotesk-text"]{Font Bureau}
buylink["https://www.myfonts.com/fonts/linotype/neue-haas-grotesk/"]{MyFonts}

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "News Gothic")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/mti/news-gothic-mt/"]{MyFonts}

Binary file not shown.

@ -1,7 +0,0 @@
#lang pollen
(define-meta title "Optima Nova")
(pdf-thumbnail-link-from-metas metas)
buylink["https://www.myfonts.com/fonts/linotype/optima-nova/"]{MyFonts}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -4,4 +4,4 @@
(pdf-thumbnail-link-from-metas metas)
buylink["http://www.identifont.com/find?font=palatino+nova"]{Font information}
buylink["https://www.myfonts.com/fonts/linotype/palatino-nova/"]{MyFonts}

Some files were not shown because too many files have changed in this diff Show More