A book about how to design new typefaces with FontForge
Switch branches/tags
Clone or download
Latest commit 3bc5a05 Mar 26, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
_includes Update html-start.html Apr 26, 2017
_layouts Initial structure in place for French site Jan 29, 2017
assets Match Source Serif x-height with Heuristica Italic Feb 7, 2016
ebook Cleanup ebook Summaries Dec 7, 2017
en-US Merge pull request #173 from fontforge/davelab6-fix-78 Mar 25, 2018
fr-FR Update Roboto comparison image link (#175) Dec 27, 2017
zh-CN Update Roboto comparison image link (#175) Dec 27, 2017
zh-TW Use consistent and escaped dashes Oct 22, 2017
.gitignore Resolving conflicts Apr 19, 2017
AUTHORS.txt Create AUTHORS.txt Dec 9, 2014
CNAME Create CNAME Dec 11, 2013
CONTRIBUTING.md Updated CONTRIBUTING.md Jun 24, 2015
CONTRIBUTORS.txt Update CONTRIBUTORS.txt Dec 9, 2014
Gruntfile.js Completed chapters 28 through to 31 and moved the French images to US… Feb 25, 2017
README.md Fixed typo in book creation command Apr 19, 2017
_config.yml Fixed non-typographic quotes getting converted by kramdown Apr 16, 2017
decoration-1.jpg Add raw decoration images Oct 30, 2017
decoration-2.jpg Add raw decoration images Oct 30, 2017
decoration-3.jpg Add raw decoration images Oct 30, 2017
en-US-weightlist.md Typo Oct 22, 2017
fr-FR-weightlist.md Enhanced ebook creation scripts + cleanup of files showing in the index Apr 19, 2017
index.html Cleanups May 25, 2014
package.json Completed chapters 9 through to 18 Feb 11, 2017
params.json Create gh-pages branch via GitHub Jan 17, 2013
zh-CN-weightlist.md Enhanced ebook creation scripts + cleanup of files showing in the index Apr 19, 2017
zh-TW-weightlist.md Enhanced ebook creation scripts + cleanup of files showing in the index Apr 19, 2017



This is a book project, about how to design new typefaces with FontForge.

How To Contribute

If you wish to contribute to this website, you are very welcome to! Here are a few ways you can do so:

  1. Report an issue for someone else to resolve, by clicking the ‘Issues’ button at the top of this page, in the main navigation bar.

  2. Contribute a change directly, by forking it on GitHub and editing the plain text files, then send a pull request. (If that sounds unfamiliar, learn how with GitHub’s excellent interactive introduction).

  3. Discuss general topics on the fontforge-devel email discussion list


The book and this site is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.

How This Site Is Made

This site is made with the Jekyll content management system, and hosted on GitHub pages.

If you’re not familiar with GitHub, they have excellent help pages.

Directory Layout

  • _layouts/*.html: HTML template files
  • _includes/*.html: snippets of HTML that are included in pages and templates
  • assets/: CSS, JS and image files
  • _config.yml: Configuration for Jekyll (ignore this file)
  • en-US/: the site’s contents, in US English
  • en-US/images/precompressed/: Directory of the original, pre-compressed content images

File Formats

Each page is in Markdown format, with a .md file extension. These files are converted into corresponding .html files by Jekyll when they start with these lines:

  • published: if the page should not be published, set this to false
  • layout: bookpage is the default
  • weight: an integer value starts from 1 that effects the ordering of the page in the sidebar and homepage lists
  • category: the category the page belongs in
  • title: the page title used in the title tag and h1 of the page


    published: true
    layout: bookpage
    category: Workflow
    weight: 3
    title: Page Title

Weight list

Weight lists are used to help contributors determine and document the weight of all pages. Please follow the following rules:

  1. Please update the according list if any chapter/page is added or removed.
  2. If the new chapter is in between existing chapters, Just add a weight between existing weights.
  3. If the new chapter is after any exising chapters, Add the weight number by 3.
  4. If no more full numbers can be add between the exising weights, start using decimals.
  5. Only edit the weight list for your chapter's language.


Weight Page
0 Index
1 Introduction
3 What Is a Font

How to build the site

For Linux, ensure that ruby-dev is installed on your system: e.g. for Ubuntu 14.04:

sudo apt-get install ruby-dev

First install Jekyll, with gem:

sudo gem install jekyll

To see the site as it will appear after processing by Jekyll and review your edits live in a browser layout, run:

jekyll serve --watch

Now browse http://localhost:4000/.

How to compress images with Grunt

Put all the raw images inside en-US/images/precompressed/

Make sure npm is already installed in your computer, then install all the dependencies with:

npm install

Once the installations are done, you can go ahead to minify all the images with this Grunt command:


Wait for Grunt to notify you, and all the compressed images will be inside en-US/images/

How to create ebooks

sudo apt-get install calibre ghostscript
sudo npm install gitbook-cli svgexport -g
cd ebook
./create_books.sh en-US fr-FR zh-CN