HexaPDF v0.5.0 Release Notes
Release Date: 2017-06-24 // almost 7 years ago-
➕ Added
- HexaPDF::Layout::TextBox for easy positioning and layouting of text
- HexaPDF::Layout::LineFragment for single text line layout calculations
- [HexaPDF::Layout::TextShaper] for text shaping functionality
- [HexaPDF::Layout::TextFragment] for basic text metrics calculations
- 🛠 [HexaPDF::Layout::InlineBox] for fixed size inline graphics
- 💅 [HexaPDF::Layout::Style] as container for text and graphics styling properties
- 👌 Support for kerning of TrueType fonts via the 'kern' table
- 👌 Support for determining the features provided by a font
🔄 Changed
- Handling of invalid glyphs is done using the special [HexaPDF::Font::InvalidGlyph] class
- Configuration option 'font.on_missing_glyph'; returns an invalid glyph instead of raising an error
- Bounding box of TrueType glyphs without contours is set to
[0, 0, 0, 0]
- Ligature pairs for AFM fonts are stored like kerning pairs
- Use TrueType configuration option 'font.true_type.unknown_format' in all places where applicable
- 👍 Allow passing a font object to [HexaPDF::Content::Canvas#font]
- 🖐 Handle invalid entry in TrueType format 4 cmap subtable encountered in the wild gracefully
- Invalid positive descent values in font descriptors are now changed into negative ones by the validation feature
- 👍 Allow specifying the page media box or a page format when adding a new page through [HexaPDF::Document::Pages#add]
🛠 Fixed
- [HexaPDF::Task::Dereference] to work correctly when encountering invalid references
- 📜 [HexaPDF::Tokenizer] and HexaPDF::Content::Tokenizer to parse a solitary plus sign
- Usage of Strings instead of Symbols for AFM font kerning and ligature pairs
- 🖨 Processing the contents of form XObjects in case they don't have a resources dictionary
- ⚡️ Deletion of valid page node when optimizing page trees with the
hexapdf optimize
command - [HexaPDF::Type::FontType0] to always wrap the descendant font even if it is a direct object