benoitkugler / textlayout

Fonts and text layout for Golang
MIT License
47 stars 7 forks source link
fonts golang text-layout

Text layout library for Golang Go Reference

This module provides a chain of tools to layout text. It is mainly a port of the C libraries harfbuzz and graphite.

Project superseded

This project has been merged into go-text/typesetting and this repository will not be maintained anymore : developpement will happen in the go-text repo. All users should use go-text instead, unless if they require support for old Type1 or Linux Bitmap fonts.

Project structure update

As of v0.1.0, the content of this repository has been split, with higher level, more experimental packages moved to textprocessing. The remaining packages are the more stable, low level logic used by go-text.

As of v0.1.1, the font files only used for internal tests have been moved in a separate module, so that regular builds do not have to download these large files (this requires go1.17 for module lazy loading).

Overview

The package fonts provides the low level primitives to load and read font files. Once a font is selected, harfbuzz is responsible for laying out a line of text, that is transforming a sequence of unicode points (runes) to a sequence of positionned glyphs. Graphite fonts are supported via the graphite package. Some higher level library may wrap these tools to provide an interface capable of laying out an entire text.

Status of the project

This project is a work in progress. Some parts of it are already usable : fonts/truetype, harfbuzz and graphite, but breaking changes may be committed on the fly.

Licensing

This module is provided under the MIT license.