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.
- 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
- 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
- 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
- Fix glyph start and end when using
shape-run-cache
- Add
shape-run-cache
feature, that can significantly improve shaping performance
- Remove editor-libcosmic, see cosmic-edit instead
- 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
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
- Update terminal example using
colored
- Significant improvements for
Editor
,SyntaxEditor
, andViEditor
- Require default Attrs to be specified in
Buffer::set_rich_text
- Bump
fontdb
to0.16
- Allow Clone of layout structs
- Move cursor motions to new
Motion
enum, move handling toBuffer
- Ensure that all shaping and layout uses scratch buffer
BufferLine
: userlayout_in_buffer
to implement layoutBufferLine
: remove wrap from struct, as wrap is passed to layout- Refactor of scroll and shaping
- Move
color
andx_opt
out of Cursor - Add size limit to
font_matches_cache
and clear it when it is reached - Update
swash
to0.1.12
- Set default buffer wrap to
WordOrGlyph
- Remove patch to load Redox system fonts, as fontdb does it now
- 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
forAttrsList
- Add feature to allow
fontdb
to getfontconfig
information - Add benchmarks to accurately gauge improvements
- Add image render tests
- Allow BSD-2-Clause and BSD-3-Clause licneses in cargo-deny
- 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 inEditor::insert_string
- Fix
NextWord
action inEditor
when line ends with word boundaries - Fix building
editor-libcosmic
withvi
feature - Respect
fontconfig
font aliases when enabled - Fix rendering of RTL words
- Unify
no_std
andstd
impls ofFontSystem
- Move
hashbrown
behindno_std
feature - Require either
std
orno_std
feature to be specified - Use a scratch buffer to reduce allocations
- Enable
std
feature withfontconfig
feature - Enable
fontconfig
feature by default - Refactor code in
ShapeLine::layout
- Set MSRV to
1.65
- Make
Edit::copy_selection
immutable - Rewrite
PreviousWord
logic inEditor
with iterators - Use attributes at cursor position for insertions in
Editor
- Update all dependencies
- Use
self_cell
for creating self-referential struct
- Add
Shaping
enum to allow selecting the shaping strategy - Add
Buffer::new_empty
to createBuffer
withoutFontSystem
- Add
BidiParagraphs
iterator - Allow setting
Cursor
color - Allow setting
Editor
cursor - Add
PhysicalGlyph
that allows computingCacheKey
after layout - Add light syntax highlighter to
libcosmic
example
- 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
- Update
fontdb
to 0.14.1 - Replace ouroboros with aliasable
- Use
BidiParagraphs
iterator instead ofstr::Lines
- Update
libcosmic
version
LayoutGlyph
no longer hasx_int
andy_int
, usePhysicalGlyph
instead
FontSystem::new_with_fonts
helper- Alignment and justification
FontSystem::db_mut
provides mutable access tofontdb
databaserustybuzz
is re-exported
- 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
- Use
f32
instead ofi32
for lengths FontSystem
no longer self-referencingSwashCash
no longer keeps reference toFontSystem
Attrs::monospaced
is removed, useFamily::Monospace
instead