# skrifa
[![Crates.io](https://img.shields.io/crates/v/skrifa.svg)](https://crates.io/crates/skrifa)
[![Docs](https://docs.rs/skrifa/badge.svg)](https://docs.rs/skrifa)
[![MIT/Apache 2.0](https://img.shields.io/badge/license-MIT%2FApache-blue.svg)](#license)
This crate aims to be a robust, ergonomic, high performance library for reading
OpenType fonts. It is built on top of the
[read-fonts](https://github.com/googlefonts/fontations/tree/main/read-fonts)
low level parsing library and is also part of the
[oxidize](https://github.com/googlefonts/oxidize) project.
## Features
### Metadata
The following information is currently exposed:
* Global font metrics with variation support (units per em, ascender,
descender, etc)
* Glyph metrics with variation support (advance width, left side-bearing, etc)
* Codepoint to nominal glyph identifier mapping
* Unicode variation sequences
* Localized strings
* Attributes (stretch, style and weight)
* Variation axes and named instances
* Conversion from user coordinates to normalized design coordinates
Future goals include:
* Color palettes
* Embedded bitmap strikes
### Glyph formats
| glyf | ✔️ | ✔️ | ✔️ |
| CFF | ✔️ | - | ✔️ |
| CFF2 | ✔️ | ✔️ | ✔️ |
| COLRv0 | ✔️ | - | - |
| COLRv1 | ✔️ | ✔️ | - |
| EBDT | ✔️* | - | - |
| CBDT | ✔️* | - | - |
| sbix | ✔️* | - | - |
\* Raw support available through the `read-fonts` crate.
## Panicking
This library should not panic regardless of API misuse or use of
corrupted/malicious font files. Please file an issue if this occurs.
## The name?
Following along with our theme, *skrifa* is Old Norse for "write" or "it is
written." And so it is named.
## Safety
Unsafe code is forbidden by a `#![forbid(unsafe_code)]` attribute in the root
of the library.