✒️ Font loading and layout library.
See the codeSixLabors.Fonts is a cross-platform library for loading, measuring, and laying out fonts and text. It supports TrueType and OpenType fonts (including CFF1 and CFF2 outlines), WOFF/WOFF2 web fonts, variable fonts, color fonts (COLR v0/v1 and SVG), and TrueType hinting. The library provides a full OpenType layout engine with GSUB/GPOS support, advanced text shaping for complex scripts, and bidirectional text rendering.
Fonts also exposes high-level text layout primitives for applications that need more than a single bounding box. Callers can measure advance, ink bounds, renderable bounds, lines, words, graphemes, and glyphs; reuse prepared text across multiple wrapping widths; inspect the resolved font used to shape and render fallback glyphs; and use built-in hit testing, caret placement, and selection geometry.
Support the efforts of the development of the Six Labors projects.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.
Install stable releases via Nuget; development releases are available via Feedz.io.
If you prefer, you can compile Fonts yourself (please do and help!)
Alternatively, you can work from command line and/or with a lightweight editor on both Linux/Unix and Windows:
To clone Fonts locally, click the "Clone in [YOUR_OS]" button above or run the following git commands:
git clone https://github.com/SixLabors/Fonts
If working with Windows please ensure that you have enabled log file paths in git (run as Administrator).
git config --system core.longpaths true
This repository contains git submodules. To add the submodules to the project, navigate to the repository root and type:
git submodule update --init --recursive
This repository uses LFS Large File Storage. To configure it for the project, navigate to the repository root and type:
git lfs install
git lfs pull
TextBlock.FontDescription description = null;
using(var fs = File.OpenRead("Font.ttf")){
description = FontDescription.Load(fs); // once it has loaded the data the stream is no longer required and can be disposed of
}
string name = description.FontName(CultureInfo.InvariantCulture);
FontCollection fonts = new FontCollection();
FontFamily font1 = fonts.Add("./path/to/font1.ttf");
FontFamily font2 = fonts.Add("./path/to/font2.woff");
Please... Spread the word, contribute algorithms, submit performance improvements, unit tests.
379 followers · starred Feb 2024
198 followers · starred Sep 2020
780 followers · starred Feb 2024
456 followers · starred Feb 2024
✒️ Font loading and layout library.
See the codeSixLabors.Fonts is a cross-platform library for loading, measuring, and laying out fonts and text. It supports TrueType and OpenType fonts (including CFF1 and CFF2 outlines), WOFF/WOFF2 web fonts, variable fonts, color fonts (COLR v0/v1 and SVG), and TrueType hinting. The library provides a full OpenType layout engine with GSUB/GPOS support, advanced text shaping for complex scripts, and bidirectional text rendering.
Fonts also exposes high-level text layout primitives for applications that need more than a single bounding box. Callers can measure advance, ink bounds, renderable bounds, lines, words, graphemes, and glyphs; reuse prepared text across multiple wrapping widths; inspect the resolved font used to shape and render fallback glyphs; and use built-in hit testing, caret placement, and selection geometry.
Support the efforts of the development of the Six Labors projects.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.
Install stable releases via Nuget; development releases are available via Feedz.io.
If you prefer, you can compile Fonts yourself (please do and help!)
Alternatively, you can work from command line and/or with a lightweight editor on both Linux/Unix and Windows:
To clone Fonts locally, click the "Clone in [YOUR_OS]" button above or run the following git commands:
git clone https://github.com/SixLabors/Fonts
If working with Windows please ensure that you have enabled log file paths in git (run as Administrator).
git config --system core.longpaths true
This repository contains git submodules. To add the submodules to the project, navigate to the repository root and type:
git submodule update --init --recursive
This repository uses LFS Large File Storage. To configure it for the project, navigate to the repository root and type:
git lfs install
git lfs pull
TextBlock.FontDescription description = null;
using(var fs = File.OpenRead("Font.ttf")){
description = FontDescription.Load(fs); // once it has loaded the data the stream is no longer required and can be disposed of
}
string name = description.FontName(CultureInfo.InvariantCulture);
FontCollection fonts = new FontCollection();
FontFamily font1 = fonts.Add("./path/to/font1.ttf");
FontFamily font2 = fonts.Add("./path/to/font2.woff");
Please... Spread the word, contribute algorithms, submit performance improvements, unit tests.
379 followers · starred Feb 2024
198 followers · starred Sep 2020
780 followers · starred Feb 2024
456 followers · starred Feb 2024