All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project aims to follow Semantic Versioning.
0.15.0 - 2024-06-06
- Support for instancing variable fonts and reading variable font
related tables such as
fvar
,gvar
,avar
. - Support for CFF2: Reading, instancing, subsetting to CFF, and extracting outlines.
- Refactor Glyph types to be more compact and track phantom points.
- Ability to generate a HTML font specimen. Gated behind off-by-default
specimen
feature.
- Use default feature mask when shaping Thai and Lao text.
pathfinder_geometry
is no longer optional as it's used for variable fonts.- Apply
rvrn
early in shaping. - Use bitflags for
macStyle
andfsSelection
. - Introduce
RawGlyphFlags
for tracking glyph flags. - Add
ParseError::UnsuitableCmap
and changeFont::new
to returnResult<Font, _>
instead ofResult<Option<Font>, _>
.
- Fix registry and ordering when converting CFF Type 1 to CID.
- Recognise Apple's
true
magic for TrueType fonts.
0.14.2 - 2024-05-29
- Fix issue where some mark-to-mark positioning was incorrect. #107
0.14.1 - 2023-08-15
- Provide access to value held by
cff::Real
. #93
- Bump ouroboros dependency. https://rustsec.org/advisories/RUSTSEC-2023-0042.html
0.14.0 - 2023-03-02
- Global and local subroutines in CFF fonts are now subset as part of subsetting.
- Introduce
SubsetError
as error type for subsetting. - Upgrade dependencies
- Bump MSRV to 1.66.0.
- Fix glyf loca null transform parsing in WOFF2 #88
- Prevent possible panic in
offset_length
.
0.13.0 - 2022-11-14
- Reserve sufficient capacity for
Vec<SimpleGlyphFlag>
. - Read unused
ValueRecord
fields asu16
s. Clarify that they are offsets.
- Bump MSRV to 1.63.0.
0.12.1 - 2022-10-18
- Suppress a dead code warning.
0.12.0 - 2022-10-18
- Add a few accessors (for use in
allsorts-tools
). - Upgrade tables and dependencies to use Unicode 15.0 data.
0.11.0 - 2022-08-10
- Failure to shape some Indic syllables that begin with a number.
- Make
Font
only depend on lifetime ofReadScope
. #76
0.10.0 - 2022-06-14
- Derive common traits on more types.
0.9.2 - 2022-06-09
- Work around libz-sys MSRV change.
0.9.1 - 2022-06-09
- Bump regex dev dependency.
0.9.0 - 2022-03-25
- Subsetting now produces a valid standalone font for use outside PDF. #27
- Workaround fonts that contain invalid final
cmap
format 4 segment. b6a9fd6
0.8.0 - 2022-03-01
- Upgrade tables and dependencies to use Unicode 14.0 data.
- Allow the tables to consult for images to be specified. #57
- Reorganise subsetting code in preparation for future changes.
0.7.1 - 2022-01-18
- Emit error if neither of the features for selecting a flate2 backend are provided.
0.7.0 - 2022-01-14
- Cargo features to allow selecting different backends of the flate2 crate. #50
0.6.0 - 2021-07-20
- Support for shaping Khmer, Lao, Sinhala, and Thai text.
- Support for laying out glyphs and obtaining their positions.
- Support for accessing glyph contours.
- Allow extra OpenType features to be supplied to
Font::shape
. - Provide
offset_table
accessor onOpenTypeFont
.
- Combine
gpos::Info
andgpos::Attachment
intogpos::Placement
. GPOS
performance improvements.- Optimised handling of CFF fonts with custom characters sets.
- Always apply default shaping for complex scripts.
- Apply Unicode mark reordering to more scripts, not just Arabic and Indic scripts.
- Bump MSRV to 1.51.0.
- Handle
post
tables that map more than one glyph to the same name index. - Handle non-adjacent cursive connections in
GPOS
. - Support version 1.1
GPOS
/GSUB
tables. - Fixed a mistake that resulted in
vmtx
table being repeatedly cloned inFont
. - Avoid some allocations when working with glyphs.
0.5.1 - 2020-12-18
- Updated README to reflect current feature set.
0.5.0 - 2020-12-18
- Simplified shaping API on
Font
. - Unified API for accessing images in
CBLC
/sbix
/SVG
tables. - Language specific shaping rules via
locl
- Support for shaping Syriac.
- Export
tag!
macro. - GSUB caching in Arabic, Syriac, and Indic.
- Support fonts with Big5 encoded cmap subtables.
- Rename some types and methods to better reflect their function.
0.4.0 - 2020-06-17
- Support for deriving glyph names from post and cmap.
- Support for more OpenType features in gsub: common_ligatures, discretionary_ligatures, historical_ligatures, contextual_ligatures, small_caps, all_small_caps, lining_nums, oldstyle_nums, proportional_nums, tabular_nums, diagonal_fractions, stacked_fractions, ordinal, and slashed_zero.
- Consideration of variation selector when looking up glyph index.
- Support for shaping Arabic text.
- Depend on just
num-traits
instead ofnum
. - Store RawVec unicodes in a TinyVec
- Recover from incorrect
loca
offset beyond end ofglyf
when glyph is valid. - Ensure instruction length is written for composite glyph with empty instructions but the WE_HAVE_INSTRUCTIONS flag bit set.
0.3.0 - 2020-02-11
- Support for GSUB Lookup Type 8 (Reverse Chaining Contextual Single Substitution).
- Lookup function to retrieve metrics and bitmap data from
EBDT
/CBDT
tables.- This constitutes initial, low-level support for bitmap fonts and emoji.
0.2.0 - 2020-01-30
CBLC
colour bitmap locator table parsing.- Tests for black & white emoji.
GlyfRecord::parse
takes&mut self
instead ofself
.
- Rejection of simple glyphs with zero contours.
- Incorrect reading of glyphs from
glyf
table whenloca
offsets didn't start at zero. - Issue where a prebase matra would "connect" to a preceding punctuation mark, due to the punctuation mark being considered part of the word.
0.1.0 - 2019-11-20
- Initial release