Freeze variations and features in font.

Overview

FontFreeze

GitHub package.json version GitHub Repo stars

FontFreeze - Freeze variations and features in font | Product Hunt

Freeze variations and features in font.

Introduction

Modern OpenType fonts support variations and features that allow customizable fonts. The problem is that not all environments support these mechanisms. IDEs such as Visual Studio only support choosing font family and font size, without any options to select variants or toggle features. FontFreeze is a tool that allows you to create a customized instance of a given font, so that you may use exactly the font you want in those environments.

  • Purely front-end, no uploading delay for large font files.
  • Instantly preview results in your browser.
  • Exports to TTF or WOFF2 formats.
  • Supports freezing ligature features.
  • Supports most legacy fonts.

How to use it

Simply visit https://mutsuntsai.github.io/fontfreeze to launch the app, no installation required!

As you open a .ttf file, it will show you the font info and the available options. You can then select a particular variant (for variable fonts) by selecting one of the predefined instances, or customize each variable axis. You can also select features you want to activate (or deactivate) from the feature list:

  • For the meaning of each feature, look up the user manual of your font. In most cases, the feature you are looking for will be among cv01-cv99, ss01-ss20, zero, onum, etc.
  • Most coding fonts have their coding ligatures defined in the calt feature. If you want to completely disable ligatures, deactivating calt will usually do the trick.
  • Leaving a feature blank means keeping its default behavior (which may or may not be activated depending on the environment).

You can also remove some of the glyphs by entering those characters in the Remove glyphs. This is useful when you want those characters to fallback to other fonts.

Finally, click Generate font! to generate your font. It's that simple!

Tips:

  • Whenever possible, use a non-variable version of the font as starting point, as it will likely give better hinting than the variable one.
  • The preview text is editable. You can put any sample source code in it to preview the result.
  • If you have multiple screens with different DPIs, preview on each of them to make sure the result is perfect.

How it works

FontFreeze uses fonttools, a Python library for manipulating fonts. In then utilizes Pyodide to run Python code directly in your browser through WebAssembly, so it's purely front-end and nothing is stored in the back-end. The UI part is built with petite-vue and Bootstrap.

The way FontFreeze deactivates a feature is by removing all lookups inside it, and it activates a feature by moving all lookups in it into calt, which is usually activated by default in most environments. If this doesn't work for a particular environment, you may also try changing the "Target feature for activation" setting to rvrn (which is more forced than calt by the OpenType specification; note that in this case, you might also need to activate calt as well for some other features to function).

Since version 1.3, in addition to the said approach, there is also an option to apply actual glyph substitution for single-glyph features (which is on by default) for maximal compatibility across different environments.

Acknowledgment

FontFreeze is especially inspired by the project vfit, and I used many parts of the source code from it. Other projects that inspired FontFreeze include:

The "FontFreeze" banner is generated using Text Generator.

You might also like...

Multi-chain sniper bot to buy and sell tokens on ETH compatible chains. Features include instant or mempool sniping, rug protection, and sell management.

Multi-chain sniper bot to buy and sell tokens on ETH compatible chains. Features include instant or mempool sniping, rug protection, and sell management.

An open-source defi sniper. defi-sniper is free to download. NEW Community telegram group: https://t.me/+aBLUmP1UnypiNTVh Premium Services Now Availab

May 3, 2022

A javascript based whatsapp bot for downloading and sending media from youtube and facebook in different formats alongwith couple of other features.

Whatsmazan Available Features Downlaod youtube mp4 Video and send Downlaod youtube mp3 audio and send Search something from youtube Downlaod facebook

Oct 30, 2022

This is the Microverse Leaderboard project that uses gitflow and features html, CSS, Javascript, ES 6 modules and Webpack

Leaderboard project This is the Microverse Leaderboard project using Gitflow, html + css + modular javascript, ES6 syntax, and Webpack. Built With Htm

Sep 9, 2022

A customizable lightweight Alert Library with Material UI and awesome features.

A customizable lightweight Alert Library with Material UI and awesome features.

SoloAlert A customizable lightweight Alert Library with Material UI and awesome features. view soloalert on npm : https://www.npmjs.com/soloalert Inst

Nov 30, 2022

Functions Recipes is a library of examples to help you getting started with Salesforce Functions and get used to their main features.

Functions Recipes is a library of examples to help you getting started with Salesforce Functions and get used to their main features.

Functions Recipes Introduction Salesforce Functions lets you use the Salesforce Platform for building event-driven, elastically scalable apps and expe

Dec 29, 2022

VanillaSelectBox - A dropdown menu with lots of features that takes a select tag and transforms it into a single or multi-select menu with 1 or 2 levels

VanillaSelectBox - A dropdown menu with lots of features that takes a select tag and transforms it into a single or multi-select menu with 1 or 2 levels

vanillaSelectBox v1.0.0 vanillaSelectBox : v1.00 : Adding a package.json file New : Possibility to change the dropdown tree and change the remote sear

Dec 16, 2022
Comments
  • Does not work as expected

    Does not work as expected

    I tried freezing couple of features (use alternate variant of @ and &) of fira font, but in the generated ttf file both the glyps are still same as the default variant.

    bug 
    opened by w0am1 8
  • [Feature] Actual glyph substitution

    [Feature] Actual glyph substitution

    This is related to issue #1 that OpenType features are not natively supported in some environments such as Notepad++. For maximal compatibility, we should substitute the actual glyph if the feature being activated involves just a single character. I guess I will make that as an option which is on by default.

    enhancement 
    opened by MuTsunTsai 1
  • font subfamily support

    font subfamily support

    Hello,

    I used the tool to generate a full set of variations and it worked as expected, except for the subfamily and/or style setting.

    For instance I'm unable to set the following subfamilies:

    • light
    • retina
    • medium
    opened by tommychat 3
Owner
Mu-Tsun Tsai
Full stack developer, Origami scientist/artist
Mu-Tsun Tsai
Smoothly interpolate between variations of SVG paths.

svg-path-morph A simple library for morphing between variations of SVG paths. Use svg-path-morph to smoothly morph between X variations of the same SV

Anders Brams 649 Jan 3, 2023
一个运行在浏览器内的提词器,可翻页,可变速,可自定义字体、大小、颜色等多种选项 A teleprompter in web browser, page down, speed up , custom font family/size/color and more.

Introduction 一个运行在浏览器内的提词器,可翻页,可变速,可自定义字体、大小、颜色等多种选项 A teleprompter in web browser, page down, speed up , custom font family/size/color and more. inst

Daniel Liu 19 Aug 17, 2021
The iconic SVG, font, and CSS toolkit

Version 6 Font Awesome is the Internet's icon library and toolkit, used by millions of designers, developers, and content creators. Documentation Lear

Font Awesome 70.7k Jan 3, 2023
Change font for your notes and code.

Google fonts for Logseq A Logseq plugin to use Google Fonts for rendering. Google fonts have more than 1400+ fonts which can be used in Logseq now. Yo

Richard Yu 9 Dec 12, 2022
An Awesome Toggle Menu created with HTML,CSS,JQuery,font-awesome and line by line comment.

Demo : https://blackx-732.github.io/AwesomeMenu/ Under open source license No ©copyright issues Anyone can be modify this code as well Specifically we

BlackX-Lolipop 2 Feb 9, 2021
Font-end app to test the transformer model translation from Cape Verdian Creole to English

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Roberto Carlos 5 Sep 28, 2022
This Application provides basic authentication features like you can register and create account and then login and access your profile.

Authentication API This Application provides basic authentication features like you can register and create account and then login and access your pro

Rohan Kulkarni 1 Jan 17, 2022
JavaScript project for the Leaderboard list app, using Webpack and ES6 features, notably modules. this app consume the Leaderboard API using JavaScript async and await and add some styling.

Leaderboard Project JavaScript project for the Leaderboard list app, using Webpack and ES6 features, notably modules. this app consume the Leaderboard

bizimungu pascal 4 May 20, 2022
Weather app created using vanilla JavaScript and APIs. You can search cities worldwide and get current and forecast weather features.

Weather App Live Demo About the Project Weather app created using vanilla JavaScript and APIs. You can search cities worldwide and get current and for

Lua 22 Dec 28, 2022