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