PackageTrack
Sign in Get early access

cosmic-text

Pure Rust multi-line text handling

0.19.0 7.5M downloads/mo #3642 most downloaded on crates.io pop-os/cosmic-text

What this package is like to depend on

Last release 4 months ago

22 Apr 2026

Release timing varies

gaps range from 2 weeks to 7 months

Some releases are documented

notes for 23 of 42 stable releases

1 version withdrawn

withdrawn after publishing

4 years old

43 releases · first in 2022

9 releases in the last 12 months

see the full history below

Release timeline

43 releases · Oct 2022 to Apr 2026
2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 43
  1. 0.19.0 22 Apr 2026
    Release notes

    Links

    Fixed

    • Empty lines use span metrics: #479
    • Match variable fonts using wght axis: #486
    • Used normalized_coords for swash scaler: #488
    • Fix highlight for editor: #491
    • Optimize shape_until_scroll with large line count: #490
    • Fix shape_until_scroll if a buffer_line is modified: #494
    • Remove 1px horizontal offset on pixel fonts: #495
    • Make the swash feature compile with no_std: #492
    • Fallback to a default font in basic shaping mode: #498
    • Clamp scroll.line to a valid range: #501

    Added

    • Text decoration: #480
    • Implement layout_runs for BufferLine: #484
    • Add cursor_position and is_rtl methods to buffer: #496

    Changed

    • Buffer setter methods are now lazy: #483
    • Update hashbrown: #502
    Open source →
    Release notes

    Fixed

    • Empty lines use span metrics: https://github.com/pop-os/cosmic-text/pull/479
    • Match variable fonts using wght axis: https://github.com/pop-os/cosmic-text/pull/486
    • Used normalized_coords for swash scaler: https://github.com/pop-os/cosmic-text/pull/488
    • Fix highlight for editor: https://github.com/pop-os/cosmic-text/pull/491
    • Optimize shape_until_scroll with large line count: https://github.com/pop-os/cosmic-text/pull/490
    • Fix shape_until_scroll if a buffer_line is modified: https://github.com/pop-os/cosmic-text/pull/494
    • Remove 1px horizontal offset on pixel fonts: https://github.com/pop-os/cosmic-text/pull/495
    • Make the swash feature compile with no_std: https://github.com/pop-os/cosmic-text/pull/492
    • Fallback to a default font in basic shaping mode: https://github.com/pop-os/cosmic-text/pull/498
    • Clamp scroll.line to a valid range: https://github.com/pop-os/cosmic-text/pull/501

    Added

    • Text decoration: https://github.com/pop-os/cosmic-text/pull/480
    • Implement layout_runs for BufferLine: https://github.com/pop-os/cosmic-text/pull/484
    • Add cursor_position and is_rtl methods to buffer: https://github.com/pop-os/cosmic-text/pull/496

    Changed

    • Buffer setter methods are now lazy: https://github.com/pop-os/cosmic-text/pull/483
    • Update hashbrown: https://github.com/pop-os/cosmic-text/pull/502
    Open source →
  2. 0.18.2 20 Feb 2026
    Release notes

    Links

    Fixed

    • Fixes for ellipsize
    Open source →
    Release notes

    Fixed

    • Fixes for ellipsize
    Open source →
  3. 0.18.1 20 Feb 2026
    Release notes

    Links

    Fixed

    • Fix aggressive ellipsizing
    Open source →
    Release notes

    Fixed

    • Fix aggressive ellipsizing
    Open source →
  4. 0.18.0 19 Feb 2026
    Release notes

    Links

    Added

    • Support for ellipsizing at the start, middle, and end of a line
    Open source →
    Release notes

    Added

    • Support for ellipsizing at the start, middle, and end of a line
    Open source →
  5. 0.17.2 18 Feb 2026
    Release notes

    Links

    Fixed

    • Motion::Home and Motion::End operate on unwrapped lines
    Open source →
    Release notes

    Fixed

    • Motion::Home and Motion::End operate on unwrapped lines
    Open source →
  6. 0.17.1 30 Jan 2026
    Release notes

    Links

    Fixed

    • Set correct rust-version to 1.89

    Changed

    • Update all dependencies to latest versions
    Open source →
    Release notes

    Fixed

    • Set correct rust-version to 1.89

    Changed

    • Update all dependencies to latest versions
    Open source →
  7. 0.17.0 29 Jan 2026
    Release notes

    Links

    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
    Open source →
    Release notes

    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
    Open source →
  8. 0.16.0 29 Dec 2025
    Release notes

    Links

    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
    Open source →
    Release notes

    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
    Open source →
  9. 0.15.0 30 Oct 2025
    Release notes

    Links

    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
    Open source →
    Release notes

    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
    Open source →
  10. 0.14.2 14 Apr 2025
    Release notes

    Links

    Fixed

    • Ensure MSRV of 1.75.0
    Open source →
    Release notes

    Fixed

    • Ensure MSRV of 1.75.0
    Open source →
  11. 0.14.1 04 Apr 2025
    Release notes

    Added

    • Allow font to be stored as peniko::Font with peniko feature
    Open source →
  12. 0.14.0 31 Mar 2025
    Release notes

    Added

    • Add configurable font fallback lists using Fallback trait
    • Add letter spacing support in Attrs
    • Add arbitrary variable font features in Attrs
    Open source →
  13. 0.13.2 11 Mar 2025
    Release notes

    Fixed

    • Fix build for Android targets
    Open source →
  14. 0.13.1 10 Mar 2025
    Release notes

    Fixed

    • Fix glyph start+end indices in Basic shaping
    Open source →
  15. 0.13.0 10 Mar 2025
    Release notes

    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
    Open source →
  16. 0.12.1 31 Jul 2024
    Release notes

    Changed

    • Make collection of monospace fallback information optional
    Open source →
  17. 0.12.0 18 Jun 2024
    Release notes

    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
    Open source →
  18. 0.11.2 09 Feb 2024
    Release notes

    Fixed

    • Fix glyph start and end when using shape-run-cache
    Open source →
  19. 0.11.1 08 Feb 2024
    Release notes

    Added

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

    Removed

    • Remove editor-libcosmic, see cosmic-edit instead
    Open source →
  20. 0.11.0 07 Feb 2024
    Release notes

    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
    Open source →
  21. 0.10.0 19 Oct 2023
    Release notes

    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
    Open source →
  22. 0.9.0 06 Jul 2023
    Release notes

    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
    Open source →
  23. 0.8.0 03 Apr 2023
    Release notes

    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
    Open source →
  24. 0.7.0 07 Feb 2023

    Nothing published for this version

  25. 0.6.0 20 Dec 2022

    Nothing published for this version

  26. 0.5.6 20 Dec 2022 withdrawn

    Nothing published for this version

  27. 0.5.5 16 Dec 2022

    Nothing published for this version

  28. 0.5.4 14 Dec 2022

    Nothing published for this version

  29. 0.5.3 13 Dec 2022

    Nothing published for this version

  30. 0.5.2 08 Dec 2022

    Nothing published for this version

  31. 0.5.1 08 Dec 2022

    Nothing published for this version

  32. 0.5.0 15 Nov 2022

    Nothing published for this version

  33. 0.4.1 08 Nov 2022

    Nothing published for this version

  34. 0.4.0 04 Nov 2022

    Nothing published for this version

  35. 0.3.0 31 Oct 2022

    Nothing published for this version

  36. 0.2.2 28 Oct 2022

    Nothing published for this version

  37. 0.2.1 27 Oct 2022

    Nothing published for this version

  38. 0.2.0 27 Oct 2022

    Nothing published for this version

  39. 0.1.5 27 Oct 2022

    Nothing published for this version

  40. 0.1.4 26 Oct 2022

    Nothing published for this version

  41. 0.1.3 26 Oct 2022

    Nothing published for this version

  42. 0.1.1 26 Oct 2022

    Nothing published for this version

  43. 0.1.0 25 Oct 2022

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive