Skip to content


Repository files navigation

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
cd ebook
npm install