GithubHelp home page GithubHelp logo

ctrlcctrlv / kernagic Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hodefoting/kernagic

1.0 3.0 0.0 1.72 MB

Semi-automatic font spacing tool

License: GNU General Public License v3.0

Makefile 1.77% C 98.17% Shell 0.06%

kernagic's Introduction

Kernagic

Kernagic is a semi-automatic tool for spacing fonts. It provides ways to interactively preview global and local changes to the glyphs in a UFO font - these changes can act as a starting point for further manual fine tuning.

The development began in Madrid at the Libre Graphics Meeting 2013, when Øyvind 'Pippin' Kolås (github.com/hodefoting [email protected] pippin.gimp.org) decided to hack around the automatic font spacing challenge. There, Dave Crossland introduced him to Frank Blokland's PhD research, published on the Letter Model website. The initial 'averaging' approach that Pippin explored (described in the Interactivos 13 Book) was later discarded, in favour of an approach of stem rhythm placement that deviates from Frank Blokland's theories.

To fit into a diverse set of workflows, Kernagic uses UFO fonts for input. UFO can act as a superset of other formats, and tools like Fontforge can be used for converting to and from it.

The snap gap method relies on automatically detected rhythm points, if the rhythm point detection works poorly with your font, or you want to override spacing decisions, you can insert your own rhythm points by clicking within the x-height of the glyph to change in the preview; rhythm point overrides are saved in the individual glyph files. Clicking below the x-height of a glyph removes custom overrides; clicking above it inserts a single rhythm point to be used for both left and right sides of the glyphs.

If metrics are determined, they can be saved back into the UFO (shifting the x co-ordinates of all points in all glyphs to change the left bearings, and setting a new advance width to set the right bearings.)

For help about the command line interface, kernagic --help provides further documentation.

Spacing Methods

For visualizing the effect of applied spacing, kernagic allow switch the rendering from showing original/none/applied metrics.

Original

Show the original font, (included to be able to quickly switch between the original font and the resulting spacing, pressing F1, F2, F3, .. switches between the different methods.)

An additional option is available here to proportionally scale the existing bearings.

Snap gap

This methods permits specifying a desired gap between left and right rhythm points of glyphs. The bearings indicated by the gap is also snapped to grid in such a manner that the advance of the glyphs is a multiple of the snap value.

Installation

From Source

Windows

It is possible to compile Kernagic for Windows. TODO: Complete this

Mac OS X

  1. Install XCode. Either with the App Store, or by registering as an Apple Developer and installing the appropriate XCode version from the Developer website (Select 'Developer Tools' and type 'Xcode' in the search box.)

  2. Install Homebrew

  3. Run Terminal and then type brew install kernagic --HEAD; and hit enter

  4. Run Terminal and then type kernagic and hit enter

Usage

A video on how to use the program is at: TODO

Running kernagic --ipsumat is a way to run the ipsum generator stand-alone as a command line utility. Run kernagic --ipsumat --help for more information.

Suggested workflow for snap gap method

  1. set the snap to 0
  2. adjust the gap until the type is as loose/tight as you want it
  3. adjust snap, so that it is at a high value; where the type hasn't fallen totally apart
  4. manually adjust remaining glyphs still in need of tuning.

Found a crash?

A shell script, kernagic-debug-osx.sh, is included that allows you to produce backtraces conveniently on Mac OS X.

kernagic's People

Contributors

davelab6 avatar hodefoting avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.