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::Subtable::codepoints0 instead of None for format 0Face::is_monospacedFace::italic_angleFace::typographic_ascenderFace::typographic_descenderFace::typographic_line_gapFace::capital_heighttrue magic.FaceParsingErrorNormalizedCoordinateFace::variation_coordinatesFace::has_non_default_variation_coordinatesFace::glyph_name can lookup CFF names too.Face::table_dataFace::character_mapping_subtablesFace::from_slice returns Result now.Name::platform_id returns PlatformId instead of Option<PlatformId> now.cmap module became public.Face::width parsing.Face::from_slice.Face::glyph_variation_index processing when the encoding table has only one glyph.seac support.Font::global_bounding_boxFont to Face, because this is what it actually is.Font::from_data to Font::from_slice to match serde and other libraries.Name::name_utf8 to Name::to_string.Font::family_name and Font::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())
Name::is_unicodeFont::family_name will load names with Windows Symbol encoding now.Font::glyph_bounding_box will apply variation in case of gvar fonts.kern) Support fonts that ignore the subtable size limit.sbix, CBLC, CBDT and SVG tables support.Font::glyph_raster_image and Font::glyph_svg_image.Font::kerning_subtables with subtable formats 0..3 support.ttfp_font anymore. All allocations should be handled by the caller from now.Font::glyphs_kerning. Use Font::kerning_subtables instead.ttfp_create_font and ttfp_destroy_font. Use ttfp_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);
gvar) Integer overflow.cmap) Integer overflow during subtable format 2 parsing.CFF, CFF2) DICT number parsing.Font::glyph_*_advance will return None when glyph ID is larger than the number of metrics in the table.Font::glyph_*_advance and Font::glyph_*_side_bearing when HVAR/VVAR tables are missing. Previously returned None which is incorrect.gvar, CFF2, avar, fvar, HVAR, VVAR and MVAR tables support.Font::variation_axesFont::set_variationFont::is_variableTag type.A major rewrite.
Font::glyph_bounding_boxFont::glyph_nameFont::has_glyph_classesFont::glyph_classFont::glyph_mark_attachment_classFont::is_mark_glyphFont::glyph_y_originFont::vertical_ascenderFont::vertical_descenderFont::vertical_heightFont::vertical_line_gaplog dependency.Font::outline_glyph now accepts &mut dyn OutlineBuilder and not &mut impl OutlineBuilder.Font::ascender, Font::descender and Font::line_gap will check USE_TYPO_METRICS flag in OS/2 table now.glyph_hor_metrics was split into glyph_hor_advance and glyph_hor_side_bearing.glyph_ver_metrics was split into glyph_ver_advance and glyph_ver_side_bearing.CFFError is no longer public.Error enum. All methods will return Option<T> now.unsafe.glyph_hor_side_bearing parsing when the number of metrics is less than the total number of glyphs.no_std compatibility.unsafe block now.family_name() method.from_data() method for TrueType fonts.Name struct has a new API. Public fields became public functions and data is parsed on demand and not beforehand.cmap.cmap subtable encoding is Unicode.cmap subtable formats except Mixed Coverage (8) are supported.vmtx table.GlyphId instead of u16.GDEF table parsing.