cosmic-text/CHANGELOG.md
Jeremy Soller bdd6657fd7
0.17.0
2026-01-29 09:48:18 -07:00

9.5 KiB

Changelog

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.

[0.17.0] - 2026-01-29

Fixed

  • Fix variable font weight for SwashCache::get_outline_commands()
  • Allow fallback to fonts with mismatched stretch or style
  • Shape as fake italic if no matching italic font exists
  • Prevent line break opportunities from splitting ligatures

Changed

  • Update all dependencies to latest versions

Removed

  • Attrs::matches was removed as it is not compatible with new fallback logic

[0.16.0] - 2025-12-29

Added

  • Add Renderer trait for more flexible rendering of buffers and editors
  • Make hinting configurable with Hinting enum

Fixed

  • Fix bench compilation
  • Round x_advance to nearest monospace width when requested
  • Do not use ASCII fast path when a word has incompatible spans

Changed

  • Update harfrust to 0.4.1
  • Update skrifa to 0.39.0

[0.15.0] - 2025-10-30

Added

  • Add DISABLE_HINTING cache flag
  • Variable font support
  • Add pixel font flag
  • Add ASCII fast path optimization to ShapeWord::build
  • Optimize BidiParagraphs with ASCII fast path
  • Add explicit lifetimes to borrowed return types
  • Implement pixel-based scrolling for the Editor
  • Add alignment paramater to set_text

Fixed

  • Clip based on ascent and descent, not baseline
  • Fix scroll when vertical offset is exactly layout_height
  • Do not ignore font family
  • Transform outline if fake italic provided
  • Fixed Tab indenting the line instead of adding Tab or spaces
  • Update and fix cargo-deny
  • Fix UDHR link
  • If buffer is empty, do not set line ending
  • Better handling of newlines in editor insert and delete
  • Improve handling of non-existant files in load_text
  • Fix delete ranges removing interior newlines

Changed

  • fontdb updated to 0.23
  • Replace rustybuzz with HarfRust
  • Use linebender_resource_handle instead of peniko
  • Upgrade skrifa to 0.37

[0.14.2] - 2025-04-14

Fixed

  • Ensure MSRV of 1.75.0

[0.14.1] - 2025-04-04

Added

  • Allow font to be stored as peniko::Font with peniko feature

[0.14.0] - 2025-03-31

Added

  • Add configurable font fallback lists using Fallback trait
  • Add letter spacing support in Attrs
  • Add arbitrary variable font features in Attrs

[0.13.2] - 2025-03-11

Fixed

  • Fix build for Android targets

[0.13.1] - 2025-03-10

Fixed

  • Fix glyph start+end indices in Basic shaping

[0.13.0] - 2025-03-10

Added

  • Add Buffer::set_tab_width function
  • Add AttrsList::spans_iter and use it in Buffer::append
  • Add alignment option to Buffer::set_rich_text
  • Add SwashCache::get_outline_commands_uncached

Fixed

  • Fix typo in fallback font name Noto Sans CJK JP
  • Fix the character index used for getting a glyph attribute in basic shaping
  • Avoid debug assertion when handling Motion::BufferEnd
  • Handle single wrapped line scrolling
  • Reduce memory usage and loading time of FontSystem
  • Resolve lints
  • Use FreeMono as Braille script fallback
  • Load fonts prior to setting defaults

Changed

  • Use smol_str for family name in FamilyOwned
  • Optimize Buffer::set_rich_text for when the buffer is reconstructed
  • Move ShapeBuffer to FontSystem
  • Cache the monospace fallbacks buffer in FontSystem
  • Apply fallback font to more Unix-like operating systems
  • Use hinting for swash_outline_commands
  • Update swash to 0.2.0 and hook up std feature
  • Update minimum supported Rust version to 1.75
  • Update default fonts (for COSMIC, users should set their own as desired)

Removed

  • Drop ShapePlanCache

[0.12.1] - 2024-06-31

Changed

  • Make collection of monospace fallback information optional

[0.12.0] - 2024-06-18

Added

  • Cache codepoint support info for monospace fonts
  • Store a sorted list of monospace font ids in font system
  • Add line ending abstraction
  • Horizontal scroll support in Buffer
  • Concurrently load and parse fonts
  • Add metrics to attributes
  • Support expanding tabs
  • Add an option to set selected text color
  • Add Edit::cursor_position
  • Allow layout to be calculated without specifying width
  • Allow for undefined buffer width and/or height
  • Add method to set syntax highlighting by file extension

Fixed

  • Fix no_std build
  • Handle inverted Ranges in add_span
  • Fix undo and redo updating editor modified status
  • Ensure at least one line is in Buffer

Changed

  • Enable vi feature for docs.rs build
  • Convert editor example to winit
  • Refactor scrollbar width handling for editor example
  • Convert rich-text example to winit
  • Only try monospace fonts that support at least one requested script
  • Skip trying monospace fallbacks if default font supports all codepoints
  • Make vertical scroll by pixels instead of layout lines
  • Upgrade dependencies and re-export ttf-parser

[0.11.2] - 2024-02-08

Fixed

  • Fix glyph start and end when using shape-run-cache

[0.11.1] - 2024-02-08

Added

  • Add shape-run-cache feature, that can significantly improve shaping performance

Removed

  • Remove editor-libcosmic, see cosmic-edit instead

[0.11.0] - 2024-02-07

Added

  • Add function to set metrics and size simultaneously
  • Cache rustybuzz shape plans
  • Add capability to synthesize italic
  • New wrapping option WordOrGlyph to allow word to glyph fallback

Fixed

  • Buffer::set_rich_text: Only add attrs if they do not match the defaults
  • Do not use Emoji fonts as monospace fallback
  • Refresh the attrs more often in basic shaping
  • Buffer: fix max scroll going one line beyond end
  • Improve reliability of layout_cursor
  • Handle multiple BiDi paragraphs in ShapeLine gracefully
  • Improved monospace font fallback
  • Only commit a previous word range if we had an existing visual line

Changed

  • Update terminal example using colored
  • Significant improvements for Editor, SyntaxEditor, and ViEditor
  • Require default Attrs to be specified in Buffer::set_rich_text
  • Bump fontdb to 0.16
  • Allow Clone of layout structs
  • Move cursor motions to new Motion enum, move handling to Buffer
  • Ensure that all shaping and layout uses scratch buffer
  • BufferLine: user layout_in_buffer to implement layout
  • BufferLine: remove wrap from struct, as wrap is passed to layout
  • Refactor of scroll and shaping
  • Move color and x_opt out of Cursor
  • Add size limit to font_matches_cache and clear it when it is reached
  • Update swash to 0.1.12
  • Set default buffer wrap to WordOrGlyph

Removed

  • Remove patch to load Redox system fonts, as fontdb does it now

[0.10.0] - 2023-10-19

Added

  • Added Buffer::set_rich_text method
  • Add Align::End for end-based alignment
  • Add more Debug implementations
  • Add feature to warn on missing glyphs
  • Add easy conversions for tuples/arrays for Color
  • Derive Clone for AttrsList
  • Add feature to allow fontdb to get fontconfig information
  • Add benchmarks to accurately gauge improvements
  • Add image render tests
  • Allow BSD-2-Clause and BSD-3-Clause licneses in cargo-deny

Fixed

  • Fix no_std build
  • Fix BufferLine::set_align docs to not mention shape reset is performed
  • Fix width computed during unconstrained layout and add test for it
  • Set cursor_moved to true in Editor::insert_string
  • Fix NextWord action in Editor when line ends with word boundaries
  • Fix building editor-libcosmic with vi feature
  • Respect fontconfig font aliases when enabled
  • Fix rendering of RTL words

Changed

  • Unify no_std and std impls of FontSystem
  • Move hashbrown behind no_std feature
  • Require either std or no_std feature to be specified
  • Use a scratch buffer to reduce allocations
  • Enable std feature with fontconfig feature
  • Enable fontconfig feature by default
  • Refactor code in ShapeLine::layout
  • Set MSRV to 1.65
  • Make Edit::copy_selection immutable
  • Rewrite PreviousWord logic in Editor with iterators
  • Use attributes at cursor position for insertions in Editor
  • Update all dependencies
  • Use self_cell for creating self-referential struct

[0.9.0] - 2023-07-06

Added

  • Add Shaping enum to allow selecting the shaping strategy
  • Add Buffer::new_empty to create Buffer without FontSystem
  • Add BidiParagraphs iterator
  • Allow setting Cursor color
  • Allow setting Editor cursor
  • Add PhysicalGlyph that allows computing CacheKey after layout
  • Add light syntax highlighter to libcosmic example

Fixed

  • Fix WebAssembly support
  • Fix alignment when not wrapping
  • Fallback to monospaced font if Monospace family is not found
  • Align glyphs in a LayoutRun to baseline

Changed

  • Update fontdb to 0.14.1
  • Replace ouroboros with aliasable
  • Use BidiParagraphs iterator instead of str::Lines
  • Update libcosmic version

Removed

  • LayoutGlyph no longer has x_int and y_int, use PhysicalGlyph instead

[0.8.0] - 2023-04-03

Added

  • FontSystem::new_with_fonts helper
  • Alignment and justification
  • FontSystem::db_mut provides mutable access to fontdb database
  • rustybuzz is re-exported

Fixed

  • Fix some divide by zero panics
  • Redox now uses std FontSystem
  • Layout system improvements
  • BufferLinke::set_text has been made more efficient
  • Fix potential panic on window resize

Changed

  • Use f32 instead of i32 for lengths
  • FontSystem no longer self-referencing
  • SwashCash no longer keeps reference to FontSystem

Removed

  • Attrs::monospaced is removed, use Family::Monospace instead