diff --git a/advocate.html.pm b/advocate.html.pm
deleted file mode 100644
index 3dea5a5..0000000
--- a/advocate.html.pm
+++ /dev/null
@@ -1,59 +0,0 @@
-#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}
-
-◊link["https://mbtype.com/fonts/advocate/" #:class 'buylink]{Web demo}
-
-}}
-
-
-◊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[#:skus (list
-advocate
-equity-concourse-triplicate-advocate)]
-
-◊(ie-payment-warning)
-
-◊font-details{Advocate includes 270 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)
-× 3 file formats (OpenType, TrueType-compatible OpenType TT, and WOFF)
-
-Read the ◊link["http://mbtype.com/license"]{font license} (it’s short) or the ◊link["http://mbtype.com/faq"]{FAQ}
-For details on character set and OpenType features, visit ◊link["https://mbtype.com/fonts/advocate/"]{MB Type}
-For more than ten people, visit ◊link["https://mbtype.com/fonts/advocate/buy.html"]{MB Type}
-}
-
-
-◊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.
-}
diff --git a/concourse.html.pm b/concourse.html.pm
deleted file mode 100644
index d1b8ce5..0000000
--- a/concourse.html.pm
+++ /dev/null
@@ -1,64 +0,0 @@
-#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["https://mbtype.com/fonts/concourse/" #:class 'buylink]{Web demo}
-}}
-
-
-◊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[#:skus (list
-concourse
-equity-concourse
-equity-concourse-triplicate-advocate)]
-
-◊(ie-payment-warning)
-
-◊font-details{Concourse includes 162 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)
-× 3 file formats (OpenType, TrueType-compatible OpenType TT, and WOFF)
-
-Read the ◊link["https://mbtype.com/license"]{font license} (it’s short) or the ◊link["https://mbtype.com/faq"]{FAQ}
-For details on character set and OpenType features, visit ◊link["https://mbtype.com/fonts/concourse/"]{MB Type}
-For more than ten people, visit ◊link["https://mbtype.com/fonts/concourse/buy.html"]{MB Type}
-}
-
-
-◊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.
-}
-
-
diff --git a/equity.html.pm b/equity.html.pm
deleted file mode 100644
index 11b7eeb..0000000
--- a/equity.html.pm
+++ /dev/null
@@ -1,60 +0,0 @@
-#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}
-
-◊link["https://mbtype.com/fonts/equity/" #:class 'buylink]{Web demo}
-}}
-
-
-◊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[#:skus (list
-equity
-equity-concourse
-equity-concourse-triplicate-advocate)]
-
-◊(ie-payment-warning)
-
-◊font-details{Equity includes 72 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)
-× 3 file formats (OpenType, TrueType-compatible OpenType TT, and WOFF)
-
-Read the ◊link["https://mbtype.com/license"]{font license} (it’s short) or the ◊link["https://mbtype.com/faq"]{FAQ}
-For details on character set and OpenType features, visit ◊link["https://mbtype.com/fonts/equity/"]{MB Type}
-For more than ten people, visit ◊link["https://mbtype.com/fonts/equity/buy.html"]{MB Type}
-}
-
-◊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.
-}
diff --git a/fonts.html.pm b/fonts.html.pm
deleted file mode 100644
index c7a6413..0000000
--- a/fonts.html.pm
+++ /dev/null
@@ -1,23 +0,0 @@
-#lang pollen
-◊(require pollen/template)
-
-◊(define-meta tfl-font-template "true")
-◊(define-meta title "TFL Fonts")
-
-◊margin-note{Equity, seen in a letterpress version of the ◊link["https://www.mozilla.org/en-US/MPL/"]{Mozilla Public License}.}
-
-◊image["equity-sm.jpg"]
-
-When I started the ◊em{Typography for Lawyers} project, I was asked "MB, you've designed fonts before. Will you ever design one for lawyers?"
-
-Of course not, I thought. Lawyers hadn't even scratched the surface of the many excellent professional fonts already available.
-
-But over time, lawyers kept nudging me — "it would be great if a font could do such-and-such …" After all, many of today's fonts — including ◊xref["a-brief-history-of-times-new-roman.html"]{Times New Roman} — were invented to suit the needs of earlier publishers. Why not lawyers?
-
-Like most type designers, I found it impossible to resist an invitation to explore a new realm of typographic geekery. But I'm also happy to share the results with you: the ◊strong{TFL Fonts}, a set of four font families inspired by the needs of legal writers.
-
-The second edition of ◊em{Typography for Lawyers} uses all four: ◊xref{Equity} for ◊xref{body text}, ◊xref{Concourse} for captions and instructions, ◊xref{Triplicate} for typewriter-style samples, and ◊xref{Advocate} for headlines and the front cover. (Of course, you're also reading them right now.)
-
-"Will these fonts comply with my local court rules?" I can't offer legal advice. But I can say that thousands of lawyers have been using the TFL Fonts without incident. In fact, they regularly tell me that judges, clients, and even opposing counsel notice & admire the appearance of their documents.
-
-◊em{Opposing counsel?} So I'm told. Your mileage may vary, however.
\ No newline at end of file
diff --git a/index.html.pm b/index.html.pm
index e4a34e7..20691cc 100644
--- a/index.html.pm
+++ b/index.html.pm
@@ -27,6 +27,4 @@ Refreshed layout, featuring four font families — ◊xref{Equity}, ◊xref{Con
◊home-link["toc.html"]{read excerpts}
-◊home-link[buy-url]{get the book}
-
-◊home-link["fonts.html"]{get the fonts}
\ No newline at end of file
+◊home-link[buy-url]{get the book}
\ No newline at end of file
diff --git a/pricing-table.rkt b/pricing-table.rkt
deleted file mode 100644
index 588ea1f..0000000
--- a/pricing-table.rkt
+++ /dev/null
@@ -1,107 +0,0 @@
-#lang racket/base
-(require racket/dict
- racket/match
- "sku.rkt")
-(provide (all-defined-out)
- (all-from-out "sku.rkt"))
-
-
-(define (round-cents float)
- (/ (floor (* float 100)) 100))
-
-(define (round-up inc x)
- (* (ceiling (/ x inc)) inc))
-
-
-(define (calc-multi-price base-price people)
- (round-cents
- (sub1 (round-up 10 (case people
- [(1 2) base-price]
- [(5) (* base-price 2)]
- [(10) (* base-price 3)]
- [(20) (* base-price 4)]
- [(40) (* base-price 5)]
- [(60) (* base-price 6)]
- [(80) (* base-price 7)]
- [else (error "Too many people")])))))
-
-
-
-(define (calc-multi-license sku people)
- (define base-price (sku-base-price sku))
- (calc-multi-price base-price people))
-
-(define license-increments '(1 2 5 10 20 40 60 80))
-
-(define (make-price-list base-price)
- (map (λ(n) (cons n (calc-multi-license base-price n))) license-increments))
-
-(define (get-price sku [people 1])
- (with-handlers ([exn:fail? (λ(e) (get-price sku (add1 people)))])
- (calc-multi-license sku people)))
-
-(define (get-variant-id sku which)
- (dict-ref (sku-variant-ids sku) which))
-
-(define (bc-url item-number)
- (format "http://typo.la/bc.html?item=~a" item-number))
-
-(define (make-buy-url sku which)
- (bc-url (get-variant-id sku which)))
-
-
-(define (grid->table grid)
- (define (table-row row [cell-tag 'td])
- `(tr (th ((style "width:40%")) ,(car row)) ,@(map (λ(c) `(,cell-tag ,c)) (cdr row))))
- (define (table-header row)
- (table-row row 'th))
-
- `(table ((class "buy-table"))
- ,(table-header (car grid))
- ,@(map table-row (cdr grid))))
-
-(define (people->string p)
- (string-append (match p
- [2 "1–2"]
- [5 "3–5"]
- [10 "6–10"]) " people"))
-
-(require txexpr racket/string)
-(define (textify x)
- (cond
- ;; convert nbsp to string
- [(string? x) (string-replace x #px"[\\s#\u00A0]+" " ")]
- [(eq? 'nbsp x) " "]
- [(list? x) (string-append* (map textify (if (txexpr? x)
- (get-elements x)
- x)))]))
-
-(module+ test
- (require rackunit)
- (check-equal?
- (textify
- '(span (a ((href "equity.html")) "Equity") " + " (a ((href "concourse.html")) "Concourse Standard") " + " (a ((href "triplicate.html")) "Triplicate")))
- "Equity + Concourse Standard + Triplicate"))
-
-(define (buy-link sku people)
- (define price (get-price sku people))
- (define item (textify (sku-name sku)))
- `(a ((class "checkout_clicker")
- (href "#")
- (item ,item)
- (label ,(format "~a (~a-person license)" item people))
- (quantity ,(number->string people))
- (amount ,(number->string price))
- (success "/order-success.html")
- (failure "/order-failure.html"))
- ,(format "$~a" price)))
-
-(define (make-buy-grid #:people people-list #:skus sku-list)
- (cons
- (cons "" (map people->string people-list))
- (map (λ(sku) (cons (sku-name sku)
- (map (λ(p) (buy-link sku p)) people-list))) sku-list)))
-
-
-(define (make-buy-table #:people [people-list '(2 5 10)] #:skus sku-list)
- (grid->table (make-buy-grid #:people people-list #:skus sku-list)))
diff --git a/scribblings/pollen-rkt.scrbl b/scribblings/pollen-rkt.scrbl
index d1ff2e4..6712e5b 100644
--- a/scribblings/pollen-rkt.scrbl
+++ b/scribblings/pollen-rkt.scrbl
@@ -54,7 +54,7 @@ Other libraries we'll be using. @racketmodname[sugar] and @racketmodname[txexpr]
@terminal{> raco pkg install hyphenate}
-@filepath{pricing-table.rkt} is another custom Racket file for this project. It's up to you whether you store all your functions and definitions in @filepath{pollen.rkt}, or spread them over different source files. Regardless of where you store them, @filepath{pollen.rkt} remains the central gathering point for everything you want to propagate to the @|lang| @racketmodname[pollen] source files in your project.
+It's up to you whether you store all your functions and definitions in @filepath{pollen.rkt}, or spread them over different source files. Regardless of where you store them, @filepath{pollen.rkt} remains the central gathering point for everything you want to propagate to the @|lang| @racketmodname[pollen] source files in your project.
@margin-note{If you end up making reusable functions, you can share them between Pollen projects (and with other Racket users, if you want) by moving them into a @italic{package}. For more, see @secref["how-to-create" #:doc '(lib "pkg/scribblings/pkg.scrbl")].}
@@ -66,8 +66,7 @@ Other libraries we'll be using. @racketmodname[sugar] and @racketmodname[txexpr]
sugar
txexpr
hyphenate
- pollen/unstable/typography
- "../pricing-table.rkt")]
+ pollen/unstable/typography)]
@section{Exports}
@@ -76,7 +75,7 @@ Note that @racket[all-defined-out] would only export the definitions that are cr
imported definitions available too, we need to re-export them explicitly with @racket[all-from-out].
@chunk[
- (provide (all-defined-out) (all-from-out "../pricing-table.rkt"))
+ (provide (all-defined-out))
]
diff --git a/sku.rkt b/sku.rkt
deleted file mode 100644
index f8ddf76..0000000
--- a/sku.rkt
+++ /dev/null
@@ -1,34 +0,0 @@
-#lang racket/base
-(provide (all-defined-out))
-
-;; name = xexpr in table
-;; base price = what it sounds like
-;; variant-ids = pairs of (people . big cartel id)
-(struct sku (name base-price variant-ids))
-
-(define concourse (sku "Concourse" 150 '((1 . 25256145) (2 . 25256442) (5 . 25256445))))
-
-(define hermes-maia (sku "Hermes Maia" 150 '((1 . 25256145) (2 . 25256442) (5 . 25256445))))
-
-(define triplicate (sku "Triplicate" 100 '((1 . 64167442) (2 . 64167463) (5 . 64167466))))
-
-(define advocate (sku "Advocate" 100 '((1 . 102904009) (2 . 102904012) (5 . 102904015))))
-
-(define equity (sku "Equity" 120 '((1 . 14855773) (2 . 21635815) (5 . 14855775))))
-(define valkyrie (sku "Valkyrie" 120 '((1 . 14855773) (2 . 21635815) (5 . 14855775))))
-(define century-supra (sku "Century Supra" 120 '((1 . 14855773) (2 . 21635815) (5 . 14855775))))
-
-(define text-font+concourse-discount 30)
-
-(define equity-concourse (sku '(span (a ((href "equity.html")) "Equity") " +" nbsp (a ((href "concourse.html")) "Concourse")) (- (+ (sku-base-price equity) (sku-base-price concourse)) text-font+concourse-discount) '((1 . 25256655) (2 . 25256754) (5 . 25256757))))
-
-(define valkyrie-concourse (sku '(span (a ((href "valkyrie.html")) "Valkyrie") " +" nbsp (a ((href "concourse.html")) "Concourse")) (- (+ (sku-base-price equity) (sku-base-price concourse)) text-font+concourse-discount) '((1 . 25256655) (2 . 25256754) (5 . 25256757))))
-
-(define century-supra-concourse (sku '(span (a ((href "century-supra.html")) "Century Supra") " +" nbsp (a ((href "concourse.html")) "Concourse")) (- (+ (sku-base-price equity) (sku-base-price concourse)) text-font+concourse-discount) '((1 . 25256655) (2 . 25256754) (5 . 25256757))))
-
-(define text-font+3-discount 110)
-(define equity-concourse-triplicate-advocate (sku '(span (a ((href "equity.html")) "Equity") " +" nbsp (a ((href "concourse.html")) "Concourse") " +" nbsp (a ((href "triplicate.html")) "Triplicate") (br) " +" nbsp (a ((href "advocate.html")) "Advocate")) (- (apply + (map sku-base-price (list equity concourse triplicate advocate))) text-font+3-discount) '((1 . 102904795)(2 . 102904798)(5 . 102904801))))
-
-(define century-supra-concourse-triplicate-advocate (sku '(span (a ((href "century-supra.html")) "Century Supra") " +" nbsp (a ((href "concourse.html")) "Concourse") " +" nbsp (a ((href "triplicate.html")) "Triplicate") (br) " +" nbsp (a ((href "advocate.html")) "Advocate")) (- (apply + (map sku-base-price (list equity concourse triplicate advocate))) text-font+3-discount) '((1 . 102904795)(2 . 102904798)(5 . 102904801))))
-
-(define valkyrie-concourse-triplicate-advocate (sku '(span (a ((href "valkyrie.html")) "Valkyrie") " +" nbsp (a ((href "concourse.html")) "Concourse") " +" nbsp (a ((href "triplicate.html")) "Triplicate") (br) " +" nbsp (a ((href "advocate.html")) "Advocate")) (- (apply + (map sku-base-price (list equity concourse triplicate advocate))) text-font+3-discount) '((1 . 102904795)(2 . 102904798)(5 . 102904801))))
\ No newline at end of file
diff --git a/styles.css.pp b/styles.css.pp
index fa6d876..ff3b27e 100644
--- a/styles.css.pp
+++ b/styles.css.pp
@@ -654,6 +654,7 @@ margin-left: ◊(+ single-quote-width)em;
transition: opacity 0.2s;
}
+
#bottom .span {
display: inline-block,
width: 12%;
@@ -665,7 +666,7 @@ margin-left: ◊(+ single-quote-width)em;
#bottom #left,
#bottom #right {
- width: 32%;
+ width: 44%;
}
#bottom a.xref:hover {
diff --git a/template.html.p b/template.html.p
index b24bd93..7e911c5 100644
--- a/template.html.p
+++ b/template.html.p
@@ -90,68 +90,6 @@ if (maybe_ie_ua.indexOf('MSIE ') > 0 || maybe_ie_ua.indexOf('Trident/') > 0) {
◊(define (empty-string) "")
-◊(define (tfl-font-template-body)
- ◊body{
- ◊style[#:type "text/css"]{
- #tfl-fonts-nav {
- top: 0;
- width: 29rem;
- margin-bottom: 2rem;
- font-size: 90%;
- }
-
- #tfl-fonts-nav tr:first-child {
- background: ◊|content-rule-color|;
- ◊make-css-background-gradient[(list ◊|content-rule-color| "#777") '("17%" "100%")]
- color: white;
- }
-
- #tfl-fonts-nav tr:first-child td {
- padding: 0;
- padding-top: 0.3em;
- padding-bottom: 0.5em;
- }
-
- #tfl-fonts-nav tr + tr td {
- padding: 0;
- }
-
- #tfl-fonts-nav tr + tr td .xref {
- display: inline-block;
- height: 100%;
- width: 100%;
- padding-top: 0.3em;
- padding-bottom: 0.3em;
- box-sizing: content-box;
- background: none;
- }
-
- #content {
- padding-top: 0;
- padding-bottom: 2rem;
- border-top: 0;
- }
- }
-
- ◊div[#:id "content"]{
- ◊table[#:id "tfl-fonts-nav"]{
- ◊tr{◊td[#:colspan "4"]{◊xref["fonts.html"]{The TFL fonts — designed by Matthew Butterick}}}
- ◊tr{
- ◊td{◊xref{Equity}}
- ◊td{◊xref{Concourse}}
- ◊td{◊xref{Triplicate}}
- ◊td{◊xref{Advocate}}}}
-
- ◊doc}
-
- ◊if[(not toolbar?) ""]{
- ◊div[#:class "nav-outer" #:id "bottom"]{
- ◊div[#:class "nav-inner"]{
- ◊span[#:style "width:33%"]{◊xref["/index.html"]{TFL home}}
- ◊span[#:style "width:34%"]{◊xref["/toc.html"]{Read excerpts}}
- ◊span[#:style "width:33%"]{◊xref[buy-url]{get the book}}}}}})
-
-
◊(define (default-body)
◊body{ ◊; use this body for all other pages
◊div[#:id "top-stripe"]{}
@@ -172,15 +110,9 @@ if (maybe_ie_ua.indexOf('MSIE ') > 0 || maybe_ie_ua.indexOf('Trident/') > 0) {
◊xref["index.html"]{home}
◊xref{◊(select 'title previous-page)})}
◊span{◊xref["/index.html"]{TFL home}}
- ◊span{◊xref[buy-url]{get the book}}
- ◊span{◊xref["/fonts.html"]{get the fonts}}
◊span[#:id "right"]{◊(if next-page ◊xref{◊(select 'title next-page)} ◊xref["https://www.google.com/search?q=boxer+puppies&safe=off&tbm=isch"]{boxer puppies})}}})})
-◊(->html
- (body
- (if (select-from-metas 'tfl-font-template metas)
- (tfl-font-template-body)
- (default-body))))
+◊(->html (body (default-body)))