All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- (cmap) Incorrectly returning glyph ID
0
instead ofNone
for format 0 - (cmap) Possible invalid glyph mapping for format 2
0.8.1 - 2020-07-29
Face::is_monospaced
Face::italic_angle
Face::typographic_ascender
Face::typographic_descender
Face::typographic_line_gap
Face::captial_height
0.8.0 - 2020-07-21
- Allow
true
magic. FaceParsingError
NormalizedCoordinate
Face::variation_coordinates
Face::has_non_default_variation_coordinates
Face::glyph_name
can lookup CFF names too.Face::table_data
Face::character_mapping_subtables
- (CFF,CFF2) 10% faster parsing.
Face::from_slice
returnsResult
now.Name::platform_id
returnsPlatformId
instead ofOption<PlatformId>
now.- The
cmap
module became public.
Face::width
parsing.- Possible u32 overflow on 32-bit platforms during
Face::from_slice
. - (cmap)
Face::glyph_variation_index
processing when the encoding table has only one glyph.
0.7.0 - 2020-07-16
- (CFF) CID fonts support.
- (CFF)
seac
support. Font::global_bounding_box
- Rename
Font
toFace
, because this is what it actually is. - Rename
Font::from_data
toFont::from_slice
to match serde and other libraries. - Rename
Name::name_utf8
toName::to_string
.
Font::family_name
andFont::post_script_name
. They were a bit confusing. Prefer:face.names().find(|name| name.name_id() == name_id::FULL_NAME).and_then(|name| name.to_string())
0.6.2 - 2020-07-02
Name::is_unicode
Font::family_name
will load names with Windows Symbol encoding now.
Font::glyph_bounding_box
will apply variation in case ofgvar
fonts.
0.6.1 - 2020-05-19
- (
kern
) Support fonts that ignore the subtable size limit.
0.6.0 - 2020-05-18
sbix
,CBLC
,CBDT
andSVG
tables support.Font::glyph_raster_image
andFont::glyph_svg_image
.Font::kerning_subtables
with subtable formats 0..3 support.
- (c-api) The library doesn't allocate
ttfp_font
anymore. All allocations should be handled by the caller from now.
Font::glyphs_kerning
. UseFont::kerning_subtables
instead.- (c-api)
ttfp_create_font
andttfp_destroy_font
. Usettfp_font_size_of
+ttfp_font_init
instead.ttfp_font *font = (ttfp_font*)alloca(ttfp_font_size_of()); ttfp_font_init(font_data, font_data_size, 0, font);
- Logging support. We haven't used it anyway.
- (
gvar
) Integer overflow. - (
cmap
) Integer overflow during subtable format 2 parsing. - (
CFF
,CFF2
) DICT number parsing. Font::glyph_*_advance
will returnNone
when glyph ID is larger than the number of metrics in the table.- Ignore variation offset in
Font::glyph_*_advance
andFont::glyph_*_side_bearing
whenHVAR
/VVAR
tables are missing. Previously returnedNone
which is incorrect.
0.5.0 - 2020-03-19
- Variable fonts support.
- C API.
gvar
,CFF2
,avar
,fvar
,HVAR
,VVAR
andMVAR
tables support.Font::variation_axes
Font::set_variation
Font::is_variable
Tag
type.
- Multiple issues due to arithmetic overflow.
0.4.0 - 2020-02-24
A major rewrite.
Font::glyph_bounding_box
Font::glyph_name
Font::has_glyph_classes
Font::glyph_class
Font::glyph_mark_attachment_class
Font::is_mark_glyph
Font::glyph_y_origin
Font::vertical_ascender
Font::vertical_descender
Font::vertical_height
Font::vertical_line_gap
- Optional
log
dependency.
Font::outline_glyph
now accepts&mut dyn OutlineBuilder
and not&mut impl OutlineBuilder
.Font::ascender
,Font::descender
andFont::line_gap
will checkUSE_TYPO_METRICS
flag in OS/2 table now.glyph_hor_metrics
was split intoglyph_hor_advance
andglyph_hor_side_bearing
.glyph_ver_metrics
was split intoglyph_ver_advance
andglyph_ver_side_bearing
.CFFError
is no longer public.
Error
enum. All methods will returnOption<T>
now.- All
unsafe
.
glyph_hor_side_bearing
parsing when the number of metrics is less than the total number of glyphs.- Multiple CFF parsing fixes. The parser is more strict now.
0.3.0 - 2019-09-26
no_std
compatibility.
- The library has one
unsafe
block now. - 35% faster
family_name()
method. - 25% faster
from_data()
method for TrueType fonts. - The
Name
struct has a new API. Public fields became public functions and data is parsed on demand and not beforehand.
0.2.2 - 2019-08-12
- Allow format 12 subtables with Unicode full repertoire in
cmap
.
0.2.1 - 2019-08-12
- Check that
cmap
subtable encoding is Unicode.
0.2.0 - 2019-07-10
- CFF support.
- Basic kerning support.
- All
cmap
subtable formats except Mixed Coverage (8) are supported. - Vertical metrics querying from the
vmtx
table. - OpenType fonts are allowed now.
- A major rewrite. TrueType tables are no longer public.
- Use
GlyphId
instead ofu16
.
GDEF
table parsing.