diff --git a/img/block-code-points.png b/img/block-code-points.png index 5eff1b2..842a712 100644 Binary files a/img/block-code-points.png and b/img/block-code-points.png differ diff --git a/img/block.png b/img/block.png index c31cb24..bfa2e08 100644 Binary files a/img/block.png and b/img/block.png differ diff --git a/img/code-points.png b/img/code-points.png index ecc5d24..6dc9921 100644 Binary files a/img/code-points.png and b/img/code-points.png differ diff --git a/img/demo-sequence.gif b/img/demo-sequence.gif index 75bf7e3..8501928 100644 Binary files a/img/demo-sequence.gif and b/img/demo-sequence.gif differ diff --git a/img/demo-social.gif b/img/demo-social.gif index 0aff4ab..7fa35fb 100644 Binary files a/img/demo-social.gif and b/img/demo-social.gif differ diff --git a/img/demo.gif b/img/demo.gif index ab30715..ee8b68b 100644 Binary files a/img/demo.gif and b/img/demo.gif differ diff --git a/img/filter.png b/img/filter.png index 8509dc6..fca8d9d 100644 Binary files a/img/filter.png and b/img/filter.png differ diff --git a/img/inspector.png b/img/inspector.png index 50e7799..43c85df 100644 Binary files a/img/inspector.png and b/img/inspector.png differ diff --git a/img/plane.png b/img/plane.png index 6cf0a1f..16c68e1 100644 Binary files a/img/plane.png and b/img/plane.png differ diff --git a/img/range.png b/img/range.png index d1f17c7..1dc3e84 100644 Binary files a/img/range.png and b/img/range.png differ diff --git a/img/sequence-inspector.png b/img/sequence-inspector.png index 50e2ddc..5b4ba40 100644 Binary files a/img/sequence-inspector.png and b/img/sequence-inspector.png differ diff --git a/img/sequence-normalization-result.png b/img/sequence-normalization-result.png index db8abcc..a606b18 100644 Binary files a/img/sequence-normalization-result.png and b/img/sequence-normalization-result.png differ diff --git a/img/sequence-normalization.png b/img/sequence-normalization.png index f88e0a1..01455f5 100644 Binary files a/img/sequence-normalization.png and b/img/sequence-normalization.png differ diff --git a/img/sequence.png b/img/sequence.png index 8b8882b..5c394c4 100644 Binary files a/img/sequence.png and b/img/sequence.png differ diff --git a/src/ui.rs b/src/ui.rs index 10e233a..90063bd 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -17,6 +17,7 @@ mod workspace; use ratatui::layout::Rect; use ratatui::text::{Line, Span}; +use unicode_segmentation::UnicodeSegmentation; use crate::{ app::{AppState, View}, @@ -68,18 +69,49 @@ pub fn glyph_preview_request(area: Rect, state: &AppState) -> Option, + line: Line<'static>, selected: bool, content_width: u16, colors: SelectionColors, ) -> Line<'static> { - if !selected { - return line; + let line = padded_line(line, usize::from(content_width)); + if selected { + line.style(colors.style()) + } else { + line } +} + +fn padded_line_content_width(width: usize) -> usize { + width.saturating_sub(2) +} - let padding = usize::from(content_width).saturating_sub(line.width()); - line.push_span(Span::raw(" ".repeat(padding))); - line.style(colors.style()) +fn padded_line(mut line: Line<'static>, width: usize) -> Line<'static> { + let mut remaining = padded_line_content_width(width); + let mut spans = vec![Span::raw(" ".repeat(width.min(1)))]; + for mut span in line.spans { + let mut end = 0; + let mut clipped = false; + for (index, grapheme) in span.content.grapheme_indices(true) { + let grapheme_width = Span::raw(grapheme).width(); + if grapheme_width > remaining { + clipped = true; + break; + } + remaining -= grapheme_width; + end = index + grapheme.len(); + } + if end < span.content.len() { + span.content = span.content[..end].to_owned().into(); + } + spans.push(span); + if clipped { + break; + } + } + spans.push(Span::raw(" ".repeat(remaining + usize::from(width >= 2)))); + line.spans = spans; + line } #[cfg(test)] @@ -87,6 +119,51 @@ mod tests { use super::*; use crate::fixtures; + #[test] + fn list_padding_survives_clipping_wide_and_combining_graphemes() { + use ratatui::{buffer::Buffer, style::Modifier, widgets::Widget}; + + let theme = crate::ui::theme::ColorTheme::default(); + for selected in [false, true] { + let line = Line::from(vec![ + Span::styled( + "AB", + ratatui::style::Style::new().add_modifier(Modifier::BOLD), + ), + Span::raw("ใ‚e\u{0301}๐Ÿ‘ฉโ€๐Ÿ’ปTAIL"), + ]); + let line = selectable_list_line(line, selected, 8, theme.selection); + assert_eq!(line.to_string(), " ABใ‚e\u{0301} "); + assert_eq!(line.width(), 8); + + let area = Rect::new(0, 0, 8, 1); + let mut buffer = Buffer::empty(area); + line.render(area, &mut buffer); + assert_eq!(buffer[(0, 0)].symbol(), " "); + assert_eq!(buffer[(7, 0)].symbol(), " "); + assert!(buffer[(1, 0)].modifier.contains(Modifier::BOLD)); + assert_eq!(buffer[(5, 0)].symbol(), "e\u{0301}"); + if selected { + for x in [0, 1, 2, 3, 5, 6, 7] { + assert_eq!(buffer[(x, 0)].bg, theme.selection.bg); + } + } + } + } + + #[test] + fn list_padding_fits_areas_narrower_than_the_padding() { + for width in 0..=2 { + let line = selectable_list_line( + Line::from("ใ‚ABC"), + true, + width, + crate::ui::theme::ColorTheme::default().selection, + ); + assert_eq!(line.to_string(), " ".repeat(usize::from(width))); + } + } + #[test] fn normalization_result_uses_the_reference_pane_instead_of_a_glyph_preview() { use crate::app::{Action, update}; diff --git a/src/ui/inspector.rs b/src/ui/inspector.rs index cccd9e1..93b7eab 100644 --- a/src/ui/inspector.rs +++ b/src/ui/inspector.rs @@ -9,7 +9,7 @@ use ratatui::{ use crate::app::AppState; use crate::inspector::InspectorField; use crate::ui::{ - key_value, layout, + key_value, layout, padded_line, padded_line_content_width, scrollbar::{self, ViewportScrollbar}, theme::ColorTheme, workspace, @@ -113,7 +113,7 @@ struct DocumentBuilder { impl DocumentBuilder { fn new(width: usize, color_theme: &ColorTheme) -> Self { - let label_width = LABEL_WIDTH.min(width.saturating_sub(1)); + let label_width = LABEL_WIDTH.min(padded_line_content_width(width).saturating_sub(1)); Self { lines: Vec::new(), width, @@ -136,15 +136,24 @@ impl DocumentBuilder { } fn fields(&mut self, label: &str, values: impl IntoIterator, selected: bool) { - self.lines.extend(key_value::property_lines( + let selected_style = selected.then(|| self.color_theme.selection.style()); + let lines = key_value::property_lines( label, values, - self.width, + padded_line_content_width(self.width), self.label_width, Style::new().fg(self.color_theme.muted), Style::new(), - selected.then(|| self.color_theme.selection.style()), - )); + selected_style, + ); + self.lines.extend(lines.into_iter().map(|line| { + let line = padded_line(line, self.width); + if let Some(style) = selected_style { + line.style(style) + } else { + line + } + })); } } @@ -187,7 +196,7 @@ mod tests { assert!(text.iter().any(|line| line.contains("Na โ€” Narrow"))); assert!(text.iter().any(|line| line.contains("L โ€” Left To Right"))); assert!(text.iter().any(|line| line.contains("\\u0041"))); - assert!(text.iter().any(|line| line.ends_with("None"))); + assert!(text.iter().any(|line| line.trim_end().ends_with("None"))); } #[test] @@ -207,7 +216,7 @@ mod tests { assert!( aliases .iter() - .any(|line| line.trim_start() == "NUL โ€” abbreviation") + .any(|line| line.trim() == "NUL โ€” abbreviation") ); assert!( decomposition @@ -220,6 +229,35 @@ mod tests { })); } + #[test] + fn wrapped_properties_keep_padding_and_the_complete_value() { + use ratatui::{buffer::Buffer, widgets::Widget}; + + let theme = ColorTheme::default(); + let value = "ABCDEFGHIใ‚e\u{0301}JKLMNOPQRST"; + for selected in [false, true] { + let mut builder = DocumentBuilder::new(12, &theme); + builder.fields("Value", [value.to_owned()], selected); + let text = builder.lines[1..] + .iter() + .map(|line| line.to_string().trim().to_owned()) + .collect::(); + assert_eq!(text, value); + + for line in builder.lines { + let area = Rect::new(0, 0, 12, 1); + let mut buffer = Buffer::empty(area); + line.render(area, &mut buffer); + for x in [0, 11] { + assert_eq!(buffer[(x, 0)].symbol(), " "); + if selected { + assert_eq!(buffer[(x, 0)].bg, theme.selection.bg); + } + } + } + } + } + #[test] fn wraps_values_before_the_viewport_is_applied() { let wide = InspectorDocument::for_code_point(CodePoint::new(0xd800).unwrap(), 96); diff --git a/src/ui/normalization.rs b/src/ui/normalization.rs index a7c9db8..6deb11d 100644 --- a/src/ui/normalization.rs +++ b/src/ui/normalization.rs @@ -11,7 +11,7 @@ use ratatui::{ use crate::{ app::AppState, normalization::TextMetrics, - ui::{selectable_list_line, theme::ColorTheme}, + ui::{padded_line, padded_line_content_width, selectable_list_line, theme::ColorTheme}, unicode::{ CodePoint, GeneralCategory, UnicodeDatabase, text::{NormalizationForm, TextAnalysis}, @@ -79,14 +79,18 @@ pub fn render(frame: &mut Frame, area: Rect, state: &AppState, theme: &ColorThem .max() .unwrap() .max(2); - lines.push(table_row( - "Form vs Original", - &format!( - "{:>cp_width$} {:>byte_width$} {:>gc_width$}", - "CP", "Bytes", "GC" + let table_width = padded_line_content_width(width); + lines.push(padded_line( + table_row( + "Form vs Original", + &format!( + "{:>cp_width$} {:>byte_width$} {:>gc_width$}", + "CP", "Bytes", "GC" + ), + table_width, + Style::new().fg(theme.muted), ), width, - Style::new().fg(theme.muted), )); for (index, form) in NormalizationForm::ALL.into_iter().enumerate() { let selected = normalization.form() == form; @@ -102,7 +106,7 @@ pub fn render(frame: &mut Frame, area: Rect, state: &AppState, theme: &ColorThem metrics.code_points, metrics.bytes, metrics.graphemes ); lines.push(selectable_list_line( - table_row(&left, &right, width, Style::default()), + table_row(&left, &right, table_width, Style::default()), selected, canvas.width, theme.selection, diff --git a/src/ui/normalization_result.rs b/src/ui/normalization_result.rs index 5608490..d241401 100644 --- a/src/ui/normalization_result.rs +++ b/src/ui/normalization_result.rs @@ -14,7 +14,7 @@ use crate::{ fn original_width(original: &TextAnalysis) -> u16 { // Padding, boundary gutter, CP position, spacing and the longest U+XXXXXX. - (17 + original.code_points().len().to_string().len() + (19 + original.code_points().len().to_string().len() + original.graphemes().len().to_string().len()) .max(24) as u16 } @@ -113,16 +113,27 @@ mod tests { #[test] fn original_columns_fit_all_positions_and_scalar_notations() { - for source in ["A\u{0301}".to_owned(), "โ‘ ".repeat(10_000)] { + for (source, expected_width, result_height) in [ + ("A\u{0301}".to_owned(), 24, 13), + ("\u{10ffff}".repeat(10_000), 29, 8), + ] { let original = TextAnalysis::new(source); let width = original_width(&original); - let required = 17 - + original.code_points().len().to_string().len() - + original.graphemes().len().to_string().len(); - assert!(usize::from(width) >= required); + assert_eq!(width, expected_width); let panes = layout::normalization_result(Rect::new(0, 2, 60, 13), width); - assert_eq!(panes.result.height, 13); + assert_eq!(panes.result.height, result_height); assert!(panes.result.width >= 32); + let content = workspace::primary_section(panes.original).content; + let gutter_width = original.graphemes().len().to_string().len() as u16 + 3; + let row = selectable_list_line( + Line::from(format!("{} U+10FFFF", original.code_points().len())), + true, + content.width.saturating_sub(gutter_width), + ColorTheme::default().selection, + ); + assert!(row.to_string().contains("U+10FFFF")); + assert!(row.to_string().starts_with(' ')); + assert!(row.to_string().ends_with(' ')); } } } diff --git a/src/ui/render.rs b/src/ui/render.rs index c25ba9a..ef12f6d 100644 --- a/src/ui/render.rs +++ b/src/ui/render.rs @@ -500,7 +500,54 @@ mod tests { } #[test] - fn inspector_selection_fills_the_content_width_without_coloring_the_padding() { + fn pane_dividers_leave_the_bottom_padding_empty() { + let color_theme = test_color_theme(); + for (width, height) in [STANDARD_SIZE, WIDE_SIZE] { + for state in [ + fixtures::startup(), + fixtures::browse_planes(), + fixtures::browse_ranges(), + fixtures::browse_blocks(), + fixtures::browse_code_points(), + fixtures::search_name_results(), + fixtures::search_empty(), + fixtures::sequence(), + ] { + let buffer = render_to_buffer(&state, width, height, &color_theme); + let divider_x = if state.browse().is_some_and(|browse| { + browse.level() == crate::browser::BrowseLevel::CodePointTable + }) { + 60 + } else { + width - 40 + }; + assert!(matches!( + buffer.cell((divider_x, height - 3)).unwrap().symbol(), + "โ”‚" | "โ”ƒ" + )); + assert_eq!(buffer.cell((divider_x, height - 2)).unwrap().symbol(), " "); + } + } + } + + #[test] + fn search_divider_leaves_one_cell_at_the_right_edge() { + let color_theme = test_color_theme(); + for (width, height) in [MINIMUM_SIZE, STANDARD_SIZE, WIDE_SIZE] { + let buffer = render_to_buffer(&fixtures::search_empty(), width, height, &color_theme); + let primary_width = if width >= 100 { width - 40 } else { width }; + for x in 0..primary_width - 1 { + assert_eq!(buffer.cell((x, 3)).unwrap().symbol(), "โ”€"); + } + assert_eq!(buffer.cell((primary_width - 1, 3)).unwrap().symbol(), " "); + if primary_width < width { + assert_eq!(buffer.cell((primary_width, 3)).unwrap().symbol(), "โ”‚"); + } + } + } + + #[test] + fn inspector_selection_keeps_inner_padding_and_leaves_outer_padding_uncolored() { let color_theme = test_color_theme(); let (width, height) = STANDARD_SIZE; let buffer = render_to_buffer(&fixtures::startup(), width, height, &color_theme); @@ -510,6 +557,11 @@ mod tests { assert_eq!(cell.bg, color_theme.selection.bg); } assert_eq!(buffer.cell((1, 3)).unwrap().fg, color_theme.selection.fg); + assert_eq!(buffer.cell((1, 3)).unwrap().symbol(), " "); + assert_eq!(buffer.cell((2, 3)).unwrap().symbol(), "C"); + assert_eq!(buffer.cell((57, 3)).unwrap().symbol(), " "); + assert_eq!(buffer.cell((1, 4)).unwrap().symbol(), " "); + assert_eq!(buffer.cell((2, 4)).unwrap().symbol(), "C"); assert_eq!(buffer.cell((0, 3)).unwrap().bg, color_theme.bg); assert_eq!(buffer.cell((58, 3)).unwrap().bg, color_theme.bg); @@ -575,27 +627,32 @@ mod tests { } #[test] - fn list_selection_fills_the_content_width_without_coloring_the_padding() { + fn list_selection_keeps_inner_padding_and_leaves_outer_padding_uncolored() { let color_theme = test_color_theme(); - let (width, height) = STANDARD_SIZE; - - for (state, selected_y) in [ - (fixtures::search_name_results(), 5), - (fixtures::browse_planes(), 3), - (fixtures::browse_ranges(), 3), - ] { - let buffer = render_to_buffer(&state, width, height, &color_theme); - - for x in 2..58 { - let cell = buffer.cell((x, selected_y)).unwrap(); - assert_eq!(cell.bg, color_theme.selection.bg); + for (width, height) in [MINIMUM_SIZE, STANDARD_SIZE, WIDE_SIZE] { + let right = if width >= 100 { width - 42 } else { width - 2 }; + for (state, selected_y) in [ + (fixtures::search_name_results(), 5), + (fixtures::browse_planes(), 3), + (fixtures::browse_ranges(), 3), + (fixtures::browse_blocks(), 3), + ] { + let buffer = render_to_buffer(&state, width, height, &color_theme); + for x in 2..right { + let cell = buffer.cell((x, selected_y)).unwrap(); + assert_eq!(cell.bg, color_theme.selection.bg); + } + assert_eq!(buffer.cell((2, selected_y)).unwrap().symbol(), " "); + assert_eq!(buffer.cell((right - 1, selected_y)).unwrap().symbol(), " "); + assert_ne!(buffer.cell((3, selected_y)).unwrap().symbol(), " "); + assert_eq!(buffer.cell((2, selected_y + 1)).unwrap().symbol(), " "); + assert_eq!( + buffer.cell((2, selected_y)).unwrap().fg, + color_theme.selection.fg + ); + assert_eq!(buffer.cell((1, selected_y)).unwrap().bg, color_theme.bg); + assert_eq!(buffer.cell((right, selected_y)).unwrap().bg, color_theme.bg); } - assert_eq!( - buffer.cell((2, selected_y)).unwrap().fg, - color_theme.selection.fg - ); - assert_eq!(buffer.cell((1, selected_y)).unwrap().bg, color_theme.bg); - assert_eq!(buffer.cell((58, selected_y)).unwrap().bg, color_theme.bg); } } @@ -850,6 +907,8 @@ mod tests { for x in 1..58 { assert_eq!(buffer.cell((x, 7)).unwrap().bg, theme.selection.bg); } + assert_eq!(buffer.cell((1, 7)).unwrap().symbol(), " "); + assert_eq!(buffer.cell((57, 7)).unwrap().symbol(), " "); assert_eq!(buffer.cell((16, 4)).unwrap().bg, theme.bg); } diff --git a/src/ui/search.rs b/src/ui/search.rs index 16bf83f..8990718 100644 --- a/src/ui/search.rs +++ b/src/ui/search.rs @@ -10,7 +10,7 @@ use crate::{ app::AppState, search::{SearchDirectMatchKind, SearchOutcome, SearchResult}, ui::{ - layout, + layout, padded_line_content_width, scrollbar::{self, ViewportScrollbar}, selectable_list_line, selection_preview, settings::{InputCursor, UiSettings}, @@ -122,7 +122,12 @@ fn render_input( ); workspace::render_divider( frame, - Rect::new(area.x, area.bottom().saturating_sub(1), area.width, 1), + Rect::new( + area.x, + area.bottom().saturating_sub(1), + area.width.saturating_sub(1), + 1, + ), color_theme, ); @@ -159,7 +164,7 @@ fn render_results( let line = result_line( results[index], outcome.name_query(), - content.width, + padded_line_content_width(usize::from(content.width)) as u16, selected, color_theme, ); @@ -472,6 +477,38 @@ mod tests { assert_eq!(highlighted, ["FACE", "FACE"]); } + #[test] + fn alias_annotations_fit_inside_the_result_padding() { + let color_theme = ColorTheme::default(); + let outcome = crate::search::search("latin capital letter gha"); + let full_width = result_line( + outcome.results()[0], + outcome.name_query(), + u16::MAX, + true, + &color_theme, + ) + .width() as u16; + + for (width, annotation_visible) in [(full_width + 5, false), (full_width + 6, true)] { + let mut terminal = Terminal::new(TestBackend::new(width, 3)).unwrap(); + terminal + .draw(|frame| { + render_results(frame, frame.area(), &outcome, Some(0), 0..1, &color_theme); + }) + .unwrap(); + let buffer = terminal.backend().buffer(); + let text = (0..width) + .map(|x| buffer[(x, 1)].symbol()) + .collect::(); + assert!(text.contains("LATIN CAPITAL LETTER GHA")); + assert_eq!(text.contains("correction alias"), annotation_visible); + assert_eq!(text.contains(" ยท "), annotation_visible); + assert_eq!(buffer[(2, 1)].symbol(), " "); + assert_eq!(buffer[(width - 3, 1)].symbol(), " "); + } + } + #[test] fn shows_the_matched_alias_before_its_type() { let SearchOutcome::Results { diff --git a/src/ui/sequence.rs b/src/ui/sequence.rs index 6fcee67..e718a3b 100644 --- a/src/ui/sequence.rs +++ b/src/ui/sequence.rs @@ -239,12 +239,12 @@ mod tests { let heading = row_text(&buffer, 0, 0, 60); assert!(heading.contains("6 code points ยท 3 graphemes")); for (row, prefix) in [ - "1 โ”Œ 1 U+0041", - " โ”” 2 U+0301", - "2 โ€ข 3 U+0020", - "3 โ”Œ 4 U+1F469", - " โ”‚ 5 U+200D", - " โ”” 6 U+1F4BB", + "1 โ”Œ 1 U+0041", + " โ”” 2 U+0301", + "2 โ€ข 3 U+0020", + "3 โ”Œ 4 U+1F469", + " โ”‚ 5 U+200D", + " โ”” 6 U+1F4BB", ] .into_iter() .enumerate() @@ -292,7 +292,9 @@ mod tests { assert_eq!(cell.modifier.contains(Modifier::BOLD), grapheme_selected); assert_eq!(cell.bg, theme.bg); } - assert_eq!(buffer.cell((6, y)).unwrap().symbol(), (row + 1).to_string()); + assert_eq!(buffer.cell((6, y)).unwrap().symbol(), " "); + assert_eq!(buffer.cell((7, y)).unwrap().symbol(), (row + 1).to_string()); + assert_eq!(buffer.cell((57, y)).unwrap().symbol(), " "); let mut x = 6; while x < 58 { let cell = buffer.cell((x, y)).unwrap(); @@ -330,7 +332,7 @@ mod tests { assert_eq!(row_text(&buffer, 2, 11, 5), "11 โ€ข "); for (row, position) in (1..=11).enumerate() { assert_eq!( - row_text(&buffer, 7, row as u16 + 1, 2), + row_text(&buffer, 8, row as u16 + 1, 2), format!("{position:>2}") ); } diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_block_code_points_long_end_wide.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_block_code_points_long_end_wide.snap index 1c5dd59..b1172fe 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_block_code_points_long_end_wide.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_block_code_points_long_end_wide.snap @@ -40,5 +40,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + h/l/k/j Move C-u/C-d Jump g/G Ends Enter Inspect BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_from_gap_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_from_gap_minimum.snap index bb9b759..08dd9fa 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_from_gap_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_from_gap_minimum.snap @@ -5,16 +5,16 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Blocks U+2FF0 Blocks - 002C00โ€“002C5F Glagolitic - 002C60โ€“002C7F Latin Extended-C - 002C80โ€“002CFF Coptic โ”ƒ - 002D00โ€“002D2F Georgian Supplement - 002D30โ€“002D7F Tifinagh - 002D80โ€“002DDF Ethiopic Extended - 002DE0โ€“002DFF Cyrillic Extended-A - 002E00โ€“002E7F Supplemental Punctuation - 002E80โ€“002EFF CJK Radicals Supplement - 002F00โ€“002FDF Kangxi Radicals - 002FF0โ€“002FFF Ideographic Description Characters + 002C00โ€“002C5F Glagolitic + 002C60โ€“002C7F Latin Extended-C + 002C80โ€“002CFF Coptic โ”ƒ + 002D00โ€“002D2F Georgian Supplement + 002D30โ€“002D7F Tifinagh + 002D80โ€“002DDF Ethiopic Extended + 002DE0โ€“002DFF Cyrillic Extended-A + 002E00โ€“002E7F Supplemental Punctuation + 002E80โ€“002EFF CJK Radicals Supplement + 002F00โ€“002FDF Kangxi Radicals + 002FF0โ€“002FFF Ideographic Description Characters k/j Move Enter Points BS Back Esc Close F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_standard.snap index cf2ba08..e47c689 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_blocks_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Blocks U+0041 Blocks โ”‚ Selection - 000000โ€“00007F Basic Latin โ”ƒ Name Basic Latin - 000080โ€“0000FF Latin-1 Supplement โ”‚ Plane 0 - 000100โ€“00017F Latin Extended-A โ”‚ Start U+0000 - 000180โ€“00024F Latin Extended-B โ”‚ End U+007F - 000250โ€“0002AF IPA Extensions โ”‚ Size 128 - 0002B0โ€“0002FF Spacing Modifier Letters โ”‚ - 000300โ€“00036F Combining Diacritical Marks โ”‚ - 000370โ€“0003FF Greek and Coptic โ”‚ - 000400โ€“0004FF Cyrillic โ”‚ - 000500โ€“00052F Cyrillic Supplement โ”‚ - 000530โ€“00058F Armenian โ”‚ - 000590โ€“0005FF Hebrew โ”‚ - 000600โ€“0006FF Arabic โ”‚ - 000700โ€“00074F Syriac โ”‚ - 000750โ€“00077F Arabic Supplement โ”‚ - 000780โ€“0007BF Thaana โ”‚ - 0007C0โ€“0007FF NKo โ”‚ - 000800โ€“00083F Samaritan โ”‚ - 000840โ€“00085F Mandaic โ”‚ - 000860โ€“00086F Syriac Supplement โ”‚ - 000870โ€“00089F Arabic Extended-B โ”‚ - 0008A0โ€“0008FF Arabic Extended-A โ”‚ - 000900โ€“00097F Devanagari โ”‚ - 000980โ€“0009FF Bengali โ”‚ - 000A00โ€“000A7F Gurmukhi โ”‚ - โ”‚ + 000000โ€“00007F Basic Latin โ”ƒ Name Basic Latin + 000080โ€“0000FF Latin-1 Supplement โ”‚ Plane 0 + 000100โ€“00017F Latin Extended-A โ”‚ Start U+0000 + 000180โ€“00024F Latin Extended-B โ”‚ End U+007F + 000250โ€“0002AF IPA Extensions โ”‚ Size 128 + 0002B0โ€“0002FF Spacing Modifier Letters โ”‚ + 000300โ€“00036F Combining Diacritical Marks โ”‚ + 000370โ€“0003FF Greek and Coptic โ”‚ + 000400โ€“0004FF Cyrillic โ”‚ + 000500โ€“00052F Cyrillic Supplement โ”‚ + 000530โ€“00058F Armenian โ”‚ + 000590โ€“0005FF Hebrew โ”‚ + 000600โ€“0006FF Arabic โ”‚ + 000700โ€“00074F Syriac โ”‚ + 000750โ€“00077F Arabic Supplement โ”‚ + 000780โ€“0007BF Thaana โ”‚ + 0007C0โ€“0007FF NKo โ”‚ + 000800โ€“00083F Samaritan โ”‚ + 000840โ€“00085F Mandaic โ”‚ + 000860โ€“00086F Syriac Supplement โ”‚ + 000870โ€“00089F Arabic Extended-B โ”‚ + 0008A0โ€“0008FF Arabic Extended-A โ”‚ + 000900โ€“00097F Devanagari โ”‚ + 000980โ€“0009FF Bengali โ”‚ + 000A00โ€“000A7F Gurmukhi โ”‚ + k/j Move C-u/C-d Jump g/G Ends Enter Points BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_special_values.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_special_values.snap index de3024f..35e29ee 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_special_values.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_special_values.snap @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + h/l/k/j Move C-u/C-d Jump g/G Ends Enter Inspect BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_standard.snap index 0debaaa..7aa0d0c 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_standard.snap @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + h/l/k/j Move C-u/C-d Jump g/G Ends Enter Inspect BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_wide_at_plane_16_end.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_wide_at_plane_16_end.snap index ac5b5b7..55f7608 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_wide_at_plane_16_end.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_code_points_wide_at_plane_16_end.snap @@ -40,5 +40,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + h/l/k/j Move C-u/C-d Jump g/G Ends Enter Inspect BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_planes_minimum_at_last_plane.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_planes_minimum_at_last_plane.snap index ac71f7d..b8eee82 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_planes_minimum_at_last_plane.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_planes_minimum_at_last_plane.snap @@ -5,16 +5,16 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Planes U+10FFFF Planes - Plane 6 Reserved - Plane 7 Reserved - Plane 8 Reserved - Plane 9 Reserved - Plane 10 Reserved โ”ƒ - Plane 11 Reserved โ”ƒ - Plane 12 Reserved โ”ƒ - Plane 13 Reserved โ”ƒ - Plane 14 Supplementary Special-purpose Plane โ”ƒ - Plane 15 Supplementary Private Use Area-A โ”ƒ - Plane 16 Supplementary Private Use Area-B โ”ƒ + Plane 6 Reserved + Plane 7 Reserved + Plane 8 Reserved + Plane 9 Reserved + Plane 10 Reserved โ”ƒ + Plane 11 Reserved โ”ƒ + Plane 12 Reserved โ”ƒ + Plane 13 Reserved โ”ƒ + Plane 14 Supplementary Special-purpose Plane โ”ƒ + Plane 15 Supplementary Private Use Area-A โ”ƒ + Plane 16 Supplementary Private Use Area-B โ”ƒ k/j Move Enter Ranges BS Back Esc Close F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_planes_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_planes_standard.snap index 5827b91..3de8bc2 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_planes_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_planes_standard.snap @@ -5,24 +5,23 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Planes U+0041 Planes โ”‚ Selection - Plane 0 Basic Multilingual Plane โ”‚ Plane 0 - Plane 1 Supplementary Multilingual Plane โ”‚ Name Basic Multilingual Plane - Plane 2 Supplementary Ideographic Plane โ”‚ Start U+0000 - Plane 3 Tertiary Ideographic Plane โ”‚ End U+FFFF - Plane 4 Reserved โ”‚ - Plane 5 Reserved โ”‚ - Plane 6 Reserved โ”‚ - Plane 7 Reserved โ”‚ - Plane 8 Reserved โ”‚ - Plane 9 Reserved โ”‚ - Plane 10 Reserved โ”‚ - Plane 11 Reserved โ”‚ - Plane 12 Reserved โ”‚ - Plane 13 Reserved โ”‚ - Plane 14 Supplementary Special-purpose Plane โ”‚ - Plane 15 Supplementary Private Use Area-A โ”‚ - Plane 16 Supplementary Private Use Area-B โ”‚ - โ”‚ + Plane 0 Basic Multilingual Plane โ”‚ Plane 0 + Plane 1 Supplementary Multilingual Plane โ”‚ Name Basic Multilingual Plane + Plane 2 Supplementary Ideographic Plane โ”‚ Start U+0000 + Plane 3 Tertiary Ideographic Plane โ”‚ End U+FFFF + Plane 4 Reserved โ”‚ + Plane 5 Reserved โ”‚ + Plane 6 Reserved โ”‚ + Plane 7 Reserved โ”‚ + Plane 8 Reserved โ”‚ + Plane 9 Reserved โ”‚ + Plane 10 Reserved โ”‚ + Plane 11 Reserved โ”‚ + Plane 12 Reserved โ”‚ + Plane 13 Reserved โ”‚ + Plane 14 Supplementary Special-purpose Plane โ”‚ + Plane 15 Supplementary Private Use Area-A โ”‚ + Plane 16 Supplementary Private Use Area-B โ”‚ โ”‚ โ”‚ โ”‚ @@ -31,4 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ + k/j Move g/G Ends Enter Ranges BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_planes_wide_at_middle_plane.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_planes_wide_at_middle_plane.snap index 80b71e0..5e77de9 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_planes_wide_at_middle_plane.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_planes_wide_at_middle_plane.snap @@ -5,24 +5,23 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Planes U+80041 Planes โ”‚ Selection - Plane 0 Basic Multilingual Plane โ”‚ Plane 8 - Plane 1 Supplementary Multilingual Plane โ”‚ Name Reserved - Plane 2 Supplementary Ideographic Plane โ”‚ Start U+80000 - Plane 3 Tertiary Ideographic Plane โ”‚ End U+8FFFF - Plane 4 Reserved โ”‚ - Plane 5 Reserved โ”‚ - Plane 6 Reserved โ”‚ - Plane 7 Reserved โ”‚ - Plane 8 Reserved โ”‚ - Plane 9 Reserved โ”‚ - Plane 10 Reserved โ”‚ - Plane 11 Reserved โ”‚ - Plane 12 Reserved โ”‚ - Plane 13 Reserved โ”‚ - Plane 14 Supplementary Special-purpose Plane โ”‚ - Plane 15 Supplementary Private Use Area-A โ”‚ - Plane 16 Supplementary Private Use Area-B โ”‚ - โ”‚ + Plane 0 Basic Multilingual Plane โ”‚ Plane 8 + Plane 1 Supplementary Multilingual Plane โ”‚ Name Reserved + Plane 2 Supplementary Ideographic Plane โ”‚ Start U+80000 + Plane 3 Tertiary Ideographic Plane โ”‚ End U+8FFFF + Plane 4 Reserved โ”‚ + Plane 5 Reserved โ”‚ + Plane 6 Reserved โ”‚ + Plane 7 Reserved โ”‚ + Plane 8 Reserved โ”‚ + Plane 9 Reserved โ”‚ + Plane 10 Reserved โ”‚ + Plane 11 Reserved โ”‚ + Plane 12 Reserved โ”‚ + Plane 13 Reserved โ”‚ + Plane 14 Supplementary Special-purpose Plane โ”‚ + Plane 15 Supplementary Private Use Area-A โ”‚ + Plane 16 Supplementary Private Use Area-B โ”‚ โ”‚ โ”‚ โ”‚ @@ -41,4 +40,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ + k/j Move g/G Ends Enter Ranges BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_after_reversing_at_the_bottom_edge.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_after_reversing_at_the_bottom_edge.snap index 34cb6dd..c10566a 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_after_reversing_at_the_bottom_edge.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_after_reversing_at_the_bottom_edge.snap @@ -5,16 +5,16 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Ranges U+0941 Ranges Plane 0 - U+0100โ€“U+01FF โ”ƒ - U+0200โ€“U+02FF - U+0300โ€“U+03FF - U+0400โ€“U+04FF - U+0500โ€“U+05FF - U+0600โ€“U+06FF - U+0700โ€“U+07FF - U+0800โ€“U+08FF - U+0900โ€“U+09FF - U+0A00โ€“U+0AFF - U+0B00โ€“U+0BFF + U+0100โ€“U+01FF โ”ƒ + U+0200โ€“U+02FF + U+0300โ€“U+03FF + U+0400โ€“U+04FF + U+0500โ€“U+05FF + U+0600โ€“U+06FF + U+0700โ€“U+07FF + U+0800โ€“U+08FF + U+0900โ€“U+09FF + U+0A00โ€“U+0AFF + U+0B00โ€“U+0BFF k/j Move Enter Points BS Back Esc Close F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_at_middle_range.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_at_middle_range.snap index e20dd28..fca4fe0 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_at_middle_range.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_minimum_at_middle_range.snap @@ -5,16 +5,16 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Ranges U+8041 Ranges Plane 0 - U+7600โ€“U+76FF - U+7700โ€“U+77FF - U+7800โ€“U+78FF - U+7900โ€“U+79FF - U+7A00โ€“U+7AFF โ”ƒ - U+7B00โ€“U+7BFF - U+7C00โ€“U+7CFF - U+7D00โ€“U+7DFF - U+7E00โ€“U+7EFF - U+7F00โ€“U+7FFF - U+8000โ€“U+80FF + U+7600โ€“U+76FF + U+7700โ€“U+77FF + U+7800โ€“U+78FF + U+7900โ€“U+79FF + U+7A00โ€“U+7AFF โ”ƒ + U+7B00โ€“U+7BFF + U+7C00โ€“U+7CFF + U+7D00โ€“U+7DFF + U+7E00โ€“U+7EFF + U+7F00โ€“U+7FFF + U+8000โ€“U+80FF k/j Move Enter Points BS Back Esc Close F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_standard.snap index 539b3ca..300fe69 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Ranges U+0041 Ranges Plane 0 โ”‚ Selection - U+0000โ€“U+00FF โ”ƒ Plane 0 - U+0100โ€“U+01FF โ”ƒ Name Basic Multilingual Plane - U+0200โ€“U+02FF โ”‚ Range 0 of 255 - U+0300โ€“U+03FF โ”‚ Start U+0000 - U+0400โ€“U+04FF โ”‚ End U+00FF - U+0500โ€“U+05FF โ”‚ Blocks - U+0600โ€“U+06FF โ”‚ Basic Latin - U+0700โ€“U+07FF โ”‚ Latin-1 Supplement - U+0800โ€“U+08FF โ”‚ - U+0900โ€“U+09FF โ”‚ - U+0A00โ€“U+0AFF โ”‚ - U+0B00โ€“U+0BFF โ”‚ - U+0C00โ€“U+0CFF โ”‚ - U+0D00โ€“U+0DFF โ”‚ - U+0E00โ€“U+0EFF โ”‚ - U+0F00โ€“U+0FFF โ”‚ - U+1000โ€“U+10FF โ”‚ - U+1100โ€“U+11FF โ”‚ - U+1200โ€“U+12FF โ”‚ - U+1300โ€“U+13FF โ”‚ - U+1400โ€“U+14FF โ”‚ - U+1500โ€“U+15FF โ”‚ - U+1600โ€“U+16FF โ”‚ - U+1700โ€“U+17FF โ”‚ - U+1800โ€“U+18FF โ”‚ - โ”‚ + U+0000โ€“U+00FF โ”ƒ Plane 0 + U+0100โ€“U+01FF โ”ƒ Name Basic Multilingual Plane + U+0200โ€“U+02FF โ”‚ Range 0 of 255 + U+0300โ€“U+03FF โ”‚ Start U+0000 + U+0400โ€“U+04FF โ”‚ End U+00FF + U+0500โ€“U+05FF โ”‚ Blocks + U+0600โ€“U+06FF โ”‚ Basic Latin + U+0700โ€“U+07FF โ”‚ Latin-1 Supplement + U+0800โ€“U+08FF โ”‚ + U+0900โ€“U+09FF โ”‚ + U+0A00โ€“U+0AFF โ”‚ + U+0B00โ€“U+0BFF โ”‚ + U+0C00โ€“U+0CFF โ”‚ + U+0D00โ€“U+0DFF โ”‚ + U+0E00โ€“U+0EFF โ”‚ + U+0F00โ€“U+0FFF โ”‚ + U+1000โ€“U+10FF โ”‚ + U+1100โ€“U+11FF โ”‚ + U+1200โ€“U+12FF โ”‚ + U+1300โ€“U+13FF โ”‚ + U+1400โ€“U+14FF โ”‚ + U+1500โ€“U+15FF โ”‚ + U+1600โ€“U+16FF โ”‚ + U+1700โ€“U+17FF โ”‚ + U+1800โ€“U+18FF โ”‚ + k/j Move C-u/C-d Jump g/G Ends Enter Points BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_wide_at_last_range.snap b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_wide_at_last_range.snap index 7c060a3..68c0a86 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_wide_at_last_range.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__browse_ranges_wide_at_last_range.snap @@ -5,40 +5,40 @@ expression: "render_to_text(&state, width, height)" sauva / Browse / Ranges U+FF41 Ranges Plane 0 โ”‚ Selection - U+DD00โ€“U+DDFF โ”‚ Plane 0 - U+DE00โ€“U+DEFF โ”‚ Name Basic Multilingual Plane - U+DF00โ€“U+DFFF โ”‚ Range 255 of 255 - U+E000โ€“U+E0FF โ”‚ Start U+FF00 - U+E100โ€“U+E1FF โ”‚ End U+FFFF - U+E200โ€“U+E2FF โ”‚ Blocks - U+E300โ€“U+E3FF โ”‚ Halfwidth and Fullwidth Forms - U+E400โ€“U+E4FF โ”‚ Specials - U+E500โ€“U+E5FF โ”‚ - U+E600โ€“U+E6FF โ”‚ - U+E700โ€“U+E7FF โ”‚ - U+E800โ€“U+E8FF โ”‚ - U+E900โ€“U+E9FF โ”‚ - U+EA00โ€“U+EAFF โ”‚ - U+EB00โ€“U+EBFF โ”‚ - U+EC00โ€“U+ECFF โ”‚ - U+ED00โ€“U+EDFF โ”‚ - U+EE00โ€“U+EEFF โ”‚ - U+EF00โ€“U+EFFF โ”‚ - U+F000โ€“U+F0FF โ”‚ - U+F100โ€“U+F1FF โ”‚ - U+F200โ€“U+F2FF โ”‚ - U+F300โ€“U+F3FF โ”‚ - U+F400โ€“U+F4FF โ”‚ - U+F500โ€“U+F5FF โ”‚ - U+F600โ€“U+F6FF โ”‚ - U+F700โ€“U+F7FF โ”‚ - U+F800โ€“U+F8FF โ”‚ - U+F900โ€“U+F9FF โ”‚ - U+FA00โ€“U+FAFF โ”‚ - U+FB00โ€“U+FBFF โ”‚ - U+FC00โ€“U+FCFF โ”ƒ - U+FD00โ€“U+FDFF โ”ƒ - U+FE00โ€“U+FEFF โ”ƒ - U+FF00โ€“U+FFFF โ”ƒ - โ”‚ + U+DD00โ€“U+DDFF โ”‚ Plane 0 + U+DE00โ€“U+DEFF โ”‚ Name Basic Multilingual Plane + U+DF00โ€“U+DFFF โ”‚ Range 255 of 255 + U+E000โ€“U+E0FF โ”‚ Start U+FF00 + U+E100โ€“U+E1FF โ”‚ End U+FFFF + U+E200โ€“U+E2FF โ”‚ Blocks + U+E300โ€“U+E3FF โ”‚ Halfwidth and Fullwidth Forms + U+E400โ€“U+E4FF โ”‚ Specials + U+E500โ€“U+E5FF โ”‚ + U+E600โ€“U+E6FF โ”‚ + U+E700โ€“U+E7FF โ”‚ + U+E800โ€“U+E8FF โ”‚ + U+E900โ€“U+E9FF โ”‚ + U+EA00โ€“U+EAFF โ”‚ + U+EB00โ€“U+EBFF โ”‚ + U+EC00โ€“U+ECFF โ”‚ + U+ED00โ€“U+EDFF โ”‚ + U+EE00โ€“U+EEFF โ”‚ + U+EF00โ€“U+EFFF โ”‚ + U+F000โ€“U+F0FF โ”‚ + U+F100โ€“U+F1FF โ”‚ + U+F200โ€“U+F2FF โ”‚ + U+F300โ€“U+F3FF โ”‚ + U+F400โ€“U+F4FF โ”‚ + U+F500โ€“U+F5FF โ”‚ + U+F600โ€“U+F6FF โ”‚ + U+F700โ€“U+F7FF โ”‚ + U+F800โ€“U+F8FF โ”‚ + U+F900โ€“U+F9FF โ”‚ + U+FA00โ€“U+FAFF โ”‚ + U+FB00โ€“U+FBFF โ”‚ + U+FC00โ€“U+FCFF โ”ƒ + U+FD00โ€“U+FDFF โ”ƒ + U+FE00โ€“U+FEFF โ”ƒ + U+FF00โ€“U+FFFF โ”ƒ + k/j Move C-u/C-d Jump g/G Ends Enter Points BS Back Esc Close q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__details_aliases_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__details_aliases_standard.snap index 7c12ffb..2d7100f 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__details_aliases_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__details_aliases_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Inspector U+0000 Identity โ”ƒ Glyph - Character โ”ƒ Font โ€” - Code Point U+0000 โ”ƒ Version โ€” - Primary Name No Primary Name โ”ƒ - Aliases NULL โ€” control โ”ƒ - NUL โ€” abbreviation โ”ƒ - Plane 0 โ€” Basic Multilingual Plane โ”ƒ - Block Basic Latin โ”ƒ + Character โ”ƒ Font โ€” + Code Point U+0000 โ”ƒ Version โ€” + Primary Name No Primary Name โ”ƒ + Aliases NULL โ€” control โ”ƒ + NUL โ€” abbreviation โ”ƒ + Plane 0 โ€” Basic Multilingual Plane โ”ƒ + Block Basic Latin โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Classification โ”ƒ - General Category Cc โ€” Control โ”ƒ - Script Common โ”ƒ - Age 1.1 โ”ƒ - East Asian Width N โ€” Neutral โ”ƒ Graphics unavailable - Canonical Combining Class 0 โ€” Not Reordered โ”ƒ Use --graphics force to try anyway. - Bidi Class BN โ€” Boundary Neutral โ”ƒ - Default Ignorable No โ”ƒ + General Category Cc โ€” Control โ”ƒ + Script Common โ”ƒ + Age 1.1 โ”ƒ + East Asian Width N โ€” Neutral โ”ƒ Graphics unavailable + Canonical Combining Class 0 โ€” Not Reordered โ”ƒ Use --graphics force to try anyway. + Bidi Class BN โ€” Boundary Neutral โ”ƒ + Default Ignorable No โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Encoding โ”ƒ - UTF-8 00 โ”ƒ - UTF-16 0000 โ”ƒ - HTML Decimal � โ”‚ - HTML Hex � โ”‚ - Rust char '\u{0}' โ”‚ - Unicode Escape \u0000 โ”‚ + UTF-8 00 โ”ƒ + UTF-16 0000 โ”ƒ + HTML Decimal � โ”‚ + HTML Hex � โ”‚ + Rust char '\u{0}' โ”‚ + Unicode Escape \u0000 โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ - โ”‚ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_end.snap b/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_end.snap index 7deeaa7..709fa42 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_end.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_end.snap @@ -4,17 +4,17 @@ expression: "render_to_text(&state, width, height)" --- sauva / Inspector U+00E9 - HTML Decimal é - HTML Hex é - Rust char '\u{E9}' - Unicode Escape \u00E9 + HTML Hex é + Rust char '\u{E9}' + Unicode Escape \u00E9 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Normalization - Decomposition Type Canonical - Decomposition U+0065 LATIN SMALL LETTER E - U+0301 COMBINING ACUTE ACCENT โ”ƒ + Decomposition Type Canonical + Decomposition + U+0065 LATIN SMALL LETTER E + U+0301 COMBINING ACUTE ACCENT โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ƒ Data โ”ƒ - Unicode Version 17.0.0 โ”ƒ + Unicode Version 17.0.0 โ”ƒ h/l Point k/j Field y Copy / Search q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_middle.snap b/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_middle.snap index 4bbeec6..f5fe28e 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_middle.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_minimum_at_middle.snap @@ -4,17 +4,17 @@ expression: "render_after_inspector_move(&state, width, height,\nInspectorMove:: --- sauva / Inspector U+00E9 - Code Point U+00E9 โ”ƒ - Primary Name โ”ƒ - LATIN SMALL LETTER E WITH ACUTE โ”ƒ - Aliases None โ”ƒ - Plane 0 โ€” Basic Multilingual Plane - Block Latin-1 Supplement + Code Point U+00E9 โ”ƒ + Primary Name โ”ƒ + LATIN SMALL LETTER E WITH ACUTE โ”ƒ + Aliases None โ”ƒ + Plane 0 โ€” Basic Multilingual Plane + Block Latin-1 Supplement โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Classification - General Category Ll โ€” Lowercase Letter - Script Latin - Age 1.1 - East Asian Width A โ€” Ambiguous + General Category Ll โ€” Lowercase Letter + Script Latin + Age 1.1 + East Asian Width A โ€” Ambiguous h/l Point k/j Field y Copy / Search q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_standard_at_normalization.snap b/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_standard_at_normalization.snap index 21efead..e6e783c 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_standard_at_normalization.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__details_canonical_decomposition_standard_at_normalization.snap @@ -4,31 +4,31 @@ expression: "render_after_inspector_move(&state, width, height, InspectorMove::L --- sauva / Inspector U+00E9 - Block Latin-1 Supplement โ”‚ Glyph - โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Font โ€” - Classification โ”‚ Version โ€” - General Category Ll โ€” Lowercase Letter โ”‚ - Script Latin โ”‚ - Age 1.1 โ”‚ - East Asian Width A โ€” Ambiguous โ”ƒ - Canonical Combining Class 0 โ€” Not Reordered โ”ƒ - Bidi Class L โ€” Left To Right โ”ƒ - Default Ignorable No โ”ƒ + โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Glyph + Classification โ”‚ Font โ€” + General Category Ll โ€” Lowercase Letter โ”‚ Version โ€” + Script Latin โ”‚ + Age 1.1 โ”‚ + East Asian Width A โ€” Ambiguous โ”‚ + Canonical Combining Class 0 โ€” Not Reordered โ”‚ + Bidi Class L โ€” Left To Right โ”ƒ + Default Ignorable No โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Encoding โ”ƒ - UTF-8 C3 A9 โ”ƒ - UTF-16 00E9 โ”ƒ Graphics unavailable - HTML Decimal é โ”ƒ Use --graphics force to try anyway. - HTML Hex é โ”ƒ - Rust char '\u{E9}' โ”ƒ - Unicode Escape \u00E9 โ”ƒ + UTF-8 C3 A9 โ”ƒ + UTF-16 00E9 โ”ƒ + HTML Decimal é โ”ƒ Graphics unavailable + HTML Hex é โ”ƒ Use --graphics force to try anyway. + Rust char '\u{E9}' โ”ƒ + Unicode Escape \u00E9 โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Normalization โ”ƒ - Decomposition Type Canonical โ”ƒ - Decomposition U+0065 LATIN SMALL LETTER E โ”ƒ - U+0301 COMBINING ACUTE ACCENT โ”ƒ + Decomposition Type Canonical โ”ƒ + Decomposition โ”ƒ + U+0065 LATIN SMALL LETTER E โ”ƒ + U+0301 COMBINING ACUTE ACCENT โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Data โ”ƒ - Unicode Version 17.0.0 โ”ƒ - โ”‚ + Unicode Version 17.0.0 โ”ƒ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__details_compatibility_decomposition_wide.snap b/src/ui/snapshots/sauva__ui__render__tests__details_compatibility_decomposition_wide.snap index 5f5ae90..759ff14 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__details_compatibility_decomposition_wide.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__details_compatibility_decomposition_wide.snap @@ -5,40 +5,40 @@ expression: "render_to_text(&state, width, height)" sauva / Inspector U+FB01 Identity โ”‚ Glyph - Character ๏ฌ โ”‚ Font โ€” - Code Point U+FB01 โ”‚ Version โ€” - Primary Name LATIN SMALL LIGATURE FI โ”‚ - Aliases None โ”‚ - Plane 0 โ€” Basic Multilingual Plane โ”‚ - Block Alphabetic Presentation Forms โ”‚ + Character ๏ฌ โ”‚ Font โ€” + Code Point U+FB01 โ”‚ Version โ€” + Primary Name LATIN SMALL LIGATURE FI โ”‚ + Aliases None โ”‚ + Plane 0 โ€” Basic Multilingual Plane โ”‚ + Block Alphabetic Presentation Forms โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Classification โ”‚ - General Category Ll โ€” Lowercase Letter โ”‚ - Script Latin โ”‚ - Age 1.1 โ”‚ - East Asian Width N โ€” Neutral โ”‚ - Canonical Combining Class 0 โ€” Not Reordered โ”‚ - Bidi Class L โ€” Left To Right โ”‚ - Default Ignorable No โ”‚ + General Category Ll โ€” Lowercase Letter โ”‚ + Script Latin โ”‚ + Age 1.1 โ”‚ + East Asian Width N โ€” Neutral โ”‚ + Canonical Combining Class 0 โ€” Not Reordered โ”‚ + Bidi Class L โ€” Left To Right โ”‚ + Default Ignorable No โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Encoding โ”‚ - UTF-8 EF AC 81 โ”‚ Graphics unavailable - UTF-16 FB01 โ”‚ Use --graphics force to try anyway. - HTML Decimal fi โ”‚ - HTML Hex fi โ”‚ - Rust char '\u{FB01}' โ”‚ - Unicode Escape \uFB01 โ”‚ + UTF-8 EF AC 81 โ”‚ Graphics unavailable + UTF-16 FB01 โ”‚ Use --graphics force to try anyway. + HTML Decimal fi โ”‚ + HTML Hex fi โ”‚ + Rust char '\u{FB01}' โ”‚ + Unicode Escape \uFB01 โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Normalization โ”‚ - Decomposition Type Compatibility โ€” compat โ”‚ - Decomposition U+0066 LATIN SMALL LETTER F โ”‚ - U+0069 LATIN SMALL LETTER I โ”‚ + Decomposition Type Compatibility โ€” compat โ”‚ + Decomposition U+0066 LATIN SMALL LETTER F โ”‚ + U+0069 LATIN SMALL LETTER I โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Data โ”‚ - Unicode Version 17.0.0 โ”‚ - โ”‚ + Unicode Version 17.0.0 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__glyph_combining_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__glyph_combining_standard.snap index f0555b4..fd6bdef 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__glyph_combining_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__glyph_combining_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Inspector U+0301 Identity โ”ƒ Glyph - Character โ—Œฬ โ”ƒ Font Test Font Regular - Code Point U+0301 โ”ƒ Version โ€” - Primary Name COMBINING ACUTE ACCENT โ”ƒ - Aliases None โ”ƒ - Plane 0 โ€” Basic Multilingual Plane โ”ƒ - Block Combining Diacritical Marks โ”ƒ + Character โ—Œฬ โ”ƒ Font Test Font Regular + Code Point U+0301 โ”ƒ Version โ€” + Primary Name COMBINING ACUTE ACCENT โ”ƒ + Aliases None โ”ƒ + Plane 0 โ€” Basic Multilingual Plane โ”ƒ + Block Combining Diacritical Marks โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Classification โ”ƒ - General Category Mn โ€” Nonspacing Mark โ”ƒ - Script Inherited โ”ƒ - Age 1.1 โ”ƒ - East Asian Width A โ€” Ambiguous โ”ƒ - Canonical Combining Class 230 โ€” Above โ”ƒ Preparing glyph preview - Bidi Class NSM โ€” Nonspacing Mark โ”ƒ - Default Ignorable No โ”ƒ + General Category Mn โ€” Nonspacing Mark โ”ƒ + Script Inherited โ”ƒ + Age 1.1 โ”ƒ + East Asian Width A โ€” Ambiguous โ”ƒ + Canonical Combining Class 230 โ€” Above โ”ƒ Preparing glyph preview + Bidi Class NSM โ€” Nonspacing Mark โ”ƒ + Default Ignorable No โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Encoding โ”ƒ - UTF-8 CC 81 โ”ƒ - UTF-16 0301 โ”ƒ - HTML Decimal ́ โ”ƒ - HTML Hex ́ โ”‚ - Rust char '\u{301}' โ”‚ - Unicode Escape \u0301 โ”‚ + UTF-8 CC 81 โ”ƒ + UTF-16 0301 โ”ƒ + HTML Decimal ́ โ”ƒ + HTML Hex ́ โ”‚ + Rust char '\u{301}' โ”‚ + Unicode Escape \u0301 โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Normalization โ”‚ - โ”‚ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__glyph_missing_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__glyph_missing_standard.snap index 20fa0bc..ec405ba 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__glyph_missing_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__glyph_missing_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Inspector U+10FFFF Identity โ”ƒ Glyph - Character โ”ƒ Font โ€” - Code Point U+10FFFF โ”ƒ Version โ€” - Primary Name Unassigned โ”ƒ - Aliases None โ”ƒ - Plane โ”ƒ - 16 โ€” Supplementary Private Use Area-B โ”ƒ - Block โ”ƒ - Supplementary Private Use Area-B โ”ƒ + Character โ”ƒ Font โ€” + Code Point U+10FFFF โ”ƒ Version โ€” + Primary Name Unassigned โ”ƒ + Aliases None โ”ƒ + Plane โ”ƒ + 16 โ€” Supplementary Private Use Area-B โ”ƒ + Block โ”ƒ + Supplementary Private Use Area-B โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Classification โ”ƒ - General Category Cn โ€” Unassigned โ”ƒ - Script Unknown โ”ƒ - Age 2.0 โ”ƒ Glyph unavailable - East Asian Width N โ€” Neutral โ”ƒ No configured font contains it. - Canonical Combining Class 0 โ€” Not Reordered โ”ƒ - Bidi Class BN โ€” Boundary Neutral โ”ƒ - Default Ignorable No โ”ƒ + General Category Cn โ€” Unassigned โ”ƒ + Script Unknown โ”ƒ + Age 2.0 โ”ƒ Glyph unavailable + East Asian Width N โ€” Neutral โ”ƒ No configured font contains it. + Canonical Combining Class 0 โ€” Not Reordered โ”ƒ + Bidi Class BN โ€” Boundary Neutral โ”ƒ + Default Ignorable No โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Encoding โ”ƒ - UTF-8 F4 8F BF BF โ”‚ - UTF-16 DBFF DFFF โ”‚ - HTML Decimal 􏿿 โ”‚ - HTML Hex 􏿿 โ”‚ - Rust char '\u{10FFFF}' โ”‚ - Unicode Escape \U0010FFFF โ”‚ - โ”‚ + UTF-8 F4 8F BF BF โ”‚ + UTF-16 DBFF DFFF โ”‚ + HTML Decimal 􏿿 โ”‚ + HTML Hex 􏿿 โ”‚ + Rust char '\u{10FFFF}' โ”‚ + Unicode Escape \U0010FFFF โ”‚ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__glyph_wide.snap b/src/ui/snapshots/sauva__ui__render__tests__glyph_wide.snap index ca3ef70..3a8c40e 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__glyph_wide.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__glyph_wide.snap @@ -5,40 +5,40 @@ expression: "render_to_text(&state, width, height)" sauva / Inspector U+3042 Identity โ”‚ Glyph - Character ใ‚ โ”‚ Font Test Font Regular - Code Point U+3042 โ”‚ Version โ€” - Primary Name HIRAGANA LETTER A โ”‚ - Aliases None โ”‚ - Plane 0 โ€” Basic Multilingual Plane โ”‚ - Block Hiragana โ”‚ + Character ใ‚ โ”‚ Font Test Font Regular + Code Point U+3042 โ”‚ Version โ€” + Primary Name HIRAGANA LETTER A โ”‚ + Aliases None โ”‚ + Plane 0 โ€” Basic Multilingual Plane โ”‚ + Block Hiragana โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Classification โ”‚ - General Category Lo โ€” Other Letter โ”‚ - Script Hiragana โ”‚ - Age 1.1 โ”‚ - East Asian Width W โ€” Wide โ”‚ - Canonical Combining Class 0 โ€” Not Reordered โ”‚ - Bidi Class L โ€” Left To Right โ”‚ - Default Ignorable No โ”‚ + General Category Lo โ€” Other Letter โ”‚ + Script Hiragana โ”‚ + Age 1.1 โ”‚ + East Asian Width W โ€” Wide โ”‚ + Canonical Combining Class 0 โ€” Not Reordered โ”‚ + Bidi Class L โ€” Left To Right โ”‚ + Default Ignorable No โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Encoding โ”‚ - UTF-8 E3 81 82 โ”‚ Preparing glyph preview - UTF-16 3042 โ”‚ - HTML Decimal あ โ”‚ - HTML Hex あ โ”‚ - Rust char '\u{3042}' โ”‚ - Unicode Escape \u3042 โ”‚ + UTF-8 E3 81 82 โ”‚ Preparing glyph preview + UTF-16 3042 โ”‚ + HTML Decimal あ โ”‚ + HTML Hex あ โ”‚ + Rust char '\u{3042}' โ”‚ + Unicode Escape \u3042 โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Normalization โ”‚ - Decomposition Type None โ”‚ - Decomposition None โ”‚ + Decomposition Type None โ”‚ + Decomposition None โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Data โ”‚ - Unicode Version 17.0.0 โ”‚ - โ”‚ + Unicode Version 17.0.0 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__inspector_minimum_width_wraps_values_in_the_value_column.snap b/src/ui/snapshots/sauva__ui__render__tests__inspector_minimum_width_wraps_values_in_the_value_column.snap index 0cfcc4b..f4aca1d 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__inspector_minimum_width_wraps_values_in_the_value_column.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__inspector_minimum_width_wraps_values_in_the_value_column.snap @@ -5,17 +5,17 @@ expression: "render_to_text(&state, MINIMUM_SIZE.0, MINIMUM_SIZE.1 + 1)" sauva / Inspector U+10FFFF Identity โ”ƒ - Character โ”ƒ - Code Point U+10FFFF โ”ƒ - Primary Name Unassigned โ”ƒ - Aliases None โ”ƒ - Plane - 16 โ€” Supplementary Private Use Area-B - Block - Supplementary Private Use Area-B + Character โ”ƒ + Code Point U+10FFFF โ”ƒ + Primary Name Unassigned โ”ƒ + Aliases None โ”ƒ + Plane + 16 โ€” Supplementary Private Use Area-B + Block + Supplementary Private Use Area-B โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Classification - General Category Cn โ€” Unassigned - Script Unknown + General Category Cn โ€” Unassigned + Script Unknown h/l Point k/j Field y Copy / Search q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__normalization_long_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__normalization_long_minimum.snap index 1a53961..8772ecc 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__normalization_long_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__normalization_long_minimum.snap @@ -8,11 +8,11 @@ expression: "render_to_text(&state, MINIMUM_SIZE.0, MINIMUM_SIZE.1)" โ€ฆ Iโ Aฬโ โ‘ โ tailโ tailโ tailโ tailโ tailโ tailโ tailโ tailโ tailโ t โ€ฆ โ€ฆ U+0049 U+0020 U+0041 U+0301 U+0020 U+2460 U+0020 โ€ฆ - Form vs Original CP Bytes GC - NFC Changed 1103 1106 1103 - NFD Unchanged 1104 1107 1103 - NFKC Changed 1103 1104 1103 - NFKD Changed 1104 1105 1103 + Form vs Original CP Bytes GC + NFC Changed 1103 1106 1103 + NFD Unchanged 1104 1107 1103 + NFKC Changed 1103 1104 1103 + NFKD Changed 1104 1105 1103 NFC Result 1 changed region โ€ฆ Iโ รโ โ‘ โ tailโ tailโ tailโ tailโ tailโ tailโ tailโ tailโ tailโ t โ€ฆ diff --git a/src/ui/snapshots/sauva__ui__render__tests__normalization_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__normalization_minimum.snap index 2596b45..89e5c1a 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__normalization_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__normalization_minimum.snap @@ -8,11 +8,11 @@ expression: "render_to_text(&state, MINIMUM_SIZE.0, MINIMUM_SIZE.1)" Aฬโ โ‘ ๐Ÿ‘ฉโ€๐Ÿ’ป U+0041 U+0301 U+0020 U+2460 U+1F469 U+200D U+1F4BB - Form vs Original CP Bytes GC - NFC Changed 6 17 4 - NFD Unchanged 7 18 4 - NFKC Changed 6 15 4 - NFKD Changed 7 16 4 + Form vs Original CP Bytes GC + NFC Changed 6 17 4 + NFD Unchanged 7 18 4 + NFKC Changed 6 15 4 + NFKD Changed 7 16 4 NFC Result 1 changed region รโ โ‘ ๐Ÿ‘ฉโ€๐Ÿ’ป diff --git a/src/ui/snapshots/sauva__ui__render__tests__normalization_result_decomposed_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__normalization_result_decomposed_minimum.snap index 0f8a59b..182eb80 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__normalization_result_decomposed_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__normalization_result_decomposed_minimum.snap @@ -5,10 +5,10 @@ expression: "render_to_text(&state, 60, 16)" sauva / Sequence / NFD Result 2/4 ยท U+0301 Original 2 CP NFD Result 4 CP ยท 2 GC - 1 โ€ข 1 U+00E9 1 โ”Œ 1 U+0065 e โ€” LATIN SMALL - 2 โ€ข 2 U+00E9 โ”” 2 U+0301 โ—Œฬ โ€” COMBINING A - 2 โ”Œ 3 U+0065 e โ€” LATIN SMALL - โ”” 4 U+0301 โ—Œฬ โ€” COMBINING A + 1 โ€ข 1 U+00E9 1 โ”Œ 1 U+0065 e โ€” LATIN SMA + 2 โ€ข 2 U+00E9 โ”” 2 U+0301 โ—Œฬ โ€” COMBINING + 2 โ”Œ 3 U+0065 e โ€” LATIN SMA + โ”” 4 U+0301 โ—Œฬ โ€” COMBINING diff --git a/src/ui/snapshots/sauva__ui__render__tests__normalization_result_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__normalization_result_minimum.snap index b2f9374..29bbdd0 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__normalization_result_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__normalization_result_minimum.snap @@ -5,10 +5,10 @@ expression: "render_to_text(&state, 60, 16)" sauva / Sequence / NFKC Result 1/4 ยท U+0066 Original 2 CP NFKC Result 4 CP ยท 4 GC - 1 โ€ข 1 U+FB03 1 โ€ข 1 U+0066 f โ€” LATIN SMALL - 2 โ€ข 2 U+2460 2 โ€ข 2 U+0066 f โ€” LATIN SMALL - 3 โ€ข 3 U+0069 i โ€” LATIN SMALL - 4 โ€ข 4 U+0031 1 โ€” DIGIT ONE + 1 โ€ข 1 U+FB03 1 โ€ข 1 U+0066 f โ€” LATIN SMA + 2 โ€ข 2 U+2460 2 โ€ข 2 U+0066 f โ€” LATIN SMA + 3 โ€ข 3 U+0069 i โ€” LATIN SMA + 4 โ€ข 4 U+0031 1 โ€” DIGIT ONE diff --git a/src/ui/snapshots/sauva__ui__render__tests__normalization_result_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__normalization_result_standard.snap index 3fe9c13..1c5b3b1 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__normalization_result_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__normalization_result_standard.snap @@ -5,15 +5,15 @@ expression: "render_to_text(&state, 100, 30)" sauva / Sequence / NFKC Result 3/9 ยท U+0066 Original 8 CP NFKC Result 9 code points ยท 7 graphemes - 1 โ”Œ 1 U+0041 1 โ€ข 1 U+00C1 ร โ€” LATIN CAPITAL LETTER A WITH ACUTE - โ”” 2 U+0301 2 โ€ข 2 U+0020 โ€” SPACE - 2 โ€ข 3 U+0020 3 โ€ข 3 U+0066 f โ€” LATIN SMALL LETTER F - 3 โ€ข 4 U+FB03 4 โ€ข 4 U+0066 f โ€” LATIN SMALL LETTER F - 4 โ€ข 5 U+2460 5 โ€ข 5 U+0069 i โ€” LATIN SMALL LETTER I - 5 โ”Œ 6 U+1F469 6 โ€ข 6 U+0031 1 โ€” DIGIT ONE - โ”‚ 7 U+200D 7 โ”Œ 7 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN - โ”” 8 U+1F4BB โ”‚ 8 U+200D โ€” ZERO WIDTH JOINER - โ”” 9 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER + 1 โ”Œ 1 U+0041 1 โ€ข 1 U+00C1 ร โ€” LATIN CAPITAL LETTER A WITH ACUTE + โ”” 2 U+0301 2 โ€ข 2 U+0020 โ€” SPACE + 2 โ€ข 3 U+0020 3 โ€ข 3 U+0066 f โ€” LATIN SMALL LETTER F + 3 โ€ข 4 U+FB03 4 โ€ข 4 U+0066 f โ€” LATIN SMALL LETTER F + 4 โ€ข 5 U+2460 5 โ€ข 5 U+0069 i โ€” LATIN SMALL LETTER I + 5 โ”Œ 6 U+1F469 6 โ€ข 6 U+0031 1 โ€” DIGIT ONE + โ”‚ 7 U+200D 7 โ”Œ 7 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN + โ”” 8 U+1F4BB โ”‚ 8 U+200D โ€” ZERO WIDTH JOINER + โ”” 9 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER diff --git a/src/ui/snapshots/sauva__ui__render__tests__normalization_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__normalization_standard.snap index 3627fe3..08258f9 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__normalization_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__normalization_standard.snap @@ -8,11 +8,11 @@ expression: "render_to_text(&state, STANDARD_SIZE.0, STANDARD_SIZE.1)" Aฬโ โ‘ ๐Ÿ‘ฉโ€๐Ÿ’ป U+0041 U+0301 U+0020 U+2460 U+1F469 U+200D U+1F4BB - Form vs Original CP Bytes GC - NFC Changed 6 17 4 - NFD Unchanged 7 18 4 - NFKC Changed 6 15 4 - NFKD Changed 7 16 4 + Form vs Original CP Bytes GC + NFC Changed 6 17 4 + NFD Unchanged 7 18 4 + NFKC Changed 6 15 4 + NFKD Changed 7 16 4 NFKC Result 2 changed regions รโ 1๐Ÿ‘ฉโ€๐Ÿ’ป diff --git a/src/ui/snapshots/sauva__ui__render__tests__normalization_unchanged_controls_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__normalization_unchanged_controls_minimum.snap index 2d93f3e..7d54471 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__normalization_unchanged_controls_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__normalization_unchanged_controls_minimum.snap @@ -8,11 +8,11 @@ expression: "render_to_text(&state, MINIMUM_SIZE.0, MINIMUM_SIZE.1)" รฉ U+00E9 U+0009 U+000D U+000A U+001B U+202E U+FE0F - Form vs Original CP Bytes GC - NFC Unchanged 7 12 6 - NFD Changed 8 13 6 - NFKC Unchanged 7 12 6 - NFKD Changed 8 13 6 + Form vs Original CP Bytes GC + NFC Unchanged 7 12 6 + NFD Changed 8 13 6 + NFKC Unchanged 7 12 6 + NFKD Changed 8 13 6 NFC Result Same as Original Same text and code points as Original diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_standard.snap index de3c70c..0a9af8d 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_standard.snap @@ -5,9 +5,9 @@ expression: "render_to_text(&state, width, height)" sauva / Search 1 result ยท U+01A2 Search latin capital letter gha โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ Character ฦข +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Character ฦข Results 1 result โ”‚ Code Point U+01A2 - ฦข U+01A2 LATIN CAPITAL LETTER GHA โ”‚ Primary Name + ฦข U+01A2 LATIN CAPITAL LETTER GHA โ”‚ Primary Name โ”‚ LATIN CAPITAL LETTER OI โ”‚ Matched Alias โ”‚ LATIN CAPITAL LETTER GHA @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_wide.snap b/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_wide.snap index 9500fe9..f19d906 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_wide.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_alias_results_wide.snap @@ -5,9 +5,9 @@ expression: "render_to_text(&state, width, height)" sauva / Search 1 result ยท U+01A2 Search latin capital letter gha โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ Character ฦข +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Character ฦข Results 1 result โ”‚ Code Point U+01A2 - ฦข U+01A2 LATIN CAPITAL LETTER GHA ยท correction alias โ”‚ Primary Name + ฦข U+01A2 LATIN CAPITAL LETTER GHA ยท correction alias โ”‚ Primary Name โ”‚ LATIN CAPITAL LETTER OI โ”‚ Matched Alias โ”‚ LATIN CAPITAL LETTER GHA @@ -40,5 +40,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_combined_results_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__search_combined_results_standard.snap index 258fdbe..a2aa624 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_combined_results_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_combined_results_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Search 198 results ยท U+FACE Search face โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ Character ๏ซŽ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Character ๏ซŽ Results 198 results โ”‚ Code Point U+FACE - ๏ซŽ U+FACE CJK COMPATIBILITY IDEOGRAPH-FACE โ”ƒ Primary Name - ๐Ÿ’† U+1F486 FACE MASSAGE โ”ƒ CJK COMPATIBILITY IDEOGRAPH-FACE - ๐Ÿ˜‚ U+1F602 FACE WITH TEARS OF JOY โ”‚ Block - ๐Ÿ˜‹ U+1F60B FACE SAVOURING DELICIOUS FOOD โ”‚ CJK Compatibility Ideographs - ๐Ÿ˜“ U+1F613 FACE WITH COLD SWEAT โ”‚ General Category Lo โ€” Other Letter - ๐Ÿ˜˜ U+1F618 FACE THROWING A KISS โ”‚ - ๐Ÿ˜› U+1F61B FACE WITH STUCK-OUT TONGUE โ”‚ - ๐Ÿ˜œ U+1F61C FACE WITH STUCK-OUT TONGUE AND WINKING EYE โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - ๐Ÿ˜ U+1F61D FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLO โ”‚ Glyph - ๐Ÿ˜ค U+1F624 FACE WITH LOOK OF TRIUMPH โ”‚ - ๐Ÿ˜ฎ U+1F62E FACE WITH OPEN MOUTH โ”‚ - ๐Ÿ˜ฐ U+1F630 FACE WITH OPEN MOUTH AND COLD SWEAT โ”‚ - ๐Ÿ˜ฑ U+1F631 FACE SCREAMING IN FEAR โ”‚ - ๐Ÿ˜ถ U+1F636 FACE WITHOUT MOUTH โ”‚ - ๐Ÿ˜ท U+1F637 FACE WITH MEDICAL MASK โ”‚ - ๐Ÿ™„ U+1F644 FACE WITH ROLLING EYES โ”‚ - ๐Ÿ™… U+1F645 FACE WITH NO GOOD GESTURE โ”‚ - ๐Ÿ™† U+1F646 FACE WITH OK GESTURE โ”‚ - ๐Ÿค’ U+1F912 FACE WITH THERMOMETER โ”‚ - ๐Ÿค• U+1F915 FACE WITH HEAD-BANDAGE โ”‚ - ๐Ÿค  U+1F920 FACE WITH COWBOY HAT โ”‚ - ๐Ÿคฆ U+1F926 FACE PALM โ”‚ - ๐Ÿคจ U+1F928 FACE WITH ONE EYEBROW RAISED โ”‚ - โ”‚ + ๏ซŽ U+FACE CJK COMPATIBILITY IDEOGRAPH-FACE โ”ƒ Primary Name + ๐Ÿ’† U+1F486 FACE MASSAGE โ”ƒ CJK COMPATIBILITY IDEOGRAPH-FACE + ๐Ÿ˜‚ U+1F602 FACE WITH TEARS OF JOY โ”‚ Block + ๐Ÿ˜‹ U+1F60B FACE SAVOURING DELICIOUS FOOD โ”‚ CJK Compatibility Ideographs + ๐Ÿ˜“ U+1F613 FACE WITH COLD SWEAT โ”‚ General Category Lo โ€” Other Letter + ๐Ÿ˜˜ U+1F618 FACE THROWING A KISS โ”‚ + ๐Ÿ˜› U+1F61B FACE WITH STUCK-OUT TONGUE โ”‚ + ๐Ÿ˜œ U+1F61C FACE WITH STUCK-OUT TONGUE AND WINKING E โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + ๐Ÿ˜ U+1F61D FACE WITH STUCK-OUT TONGUE AND TIGHTLY-C โ”‚ Glyph + ๐Ÿ˜ค U+1F624 FACE WITH LOOK OF TRIUMPH โ”‚ + ๐Ÿ˜ฎ U+1F62E FACE WITH OPEN MOUTH โ”‚ + ๐Ÿ˜ฐ U+1F630 FACE WITH OPEN MOUTH AND COLD SWEAT โ”‚ + ๐Ÿ˜ฑ U+1F631 FACE SCREAMING IN FEAR โ”‚ + ๐Ÿ˜ถ U+1F636 FACE WITHOUT MOUTH โ”‚ + ๐Ÿ˜ท U+1F637 FACE WITH MEDICAL MASK โ”‚ + ๐Ÿ™„ U+1F644 FACE WITH ROLLING EYES โ”‚ + ๐Ÿ™… U+1F645 FACE WITH NO GOOD GESTURE โ”‚ + ๐Ÿ™† U+1F646 FACE WITH OK GESTURE โ”‚ + ๐Ÿค’ U+1F912 FACE WITH THERMOMETER โ”‚ + ๐Ÿค• U+1F915 FACE WITH HEAD-BANDAGE โ”‚ + ๐Ÿค  U+1F920 FACE WITH COWBOY HAT โ”‚ + ๐Ÿคฆ U+1F926 FACE PALM โ”‚ + ๐Ÿคจ U+1F928 FACE WITH ONE EYEBROW RAISED โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_empty_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__search_empty_standard.snap index 40efaf4..42d45bf 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_empty_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_empty_standard.snap @@ -5,7 +5,7 @@ expression: "render_to_text(&state, width, height)" sauva / Search 0 results Search โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Results โ”‚ Search by name or alias, code point, or character โ”‚ Examples rightwards arrow ยท NULL ยท U+2192 ยท โ†’ โ”‚ @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_invalid_notation_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__search_invalid_notation_standard.snap index 44dc985..bbf01ce 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_invalid_notation_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_invalid_notation_standard.snap @@ -5,7 +5,7 @@ expression: "render_to_text(&state, width, height)" sauva / Search 0 results Search U+110000 โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Results โ”‚ Error: code point must be between U+0000 and U+10FFFF โ”‚ โ”‚ @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_name_results_minimum_with_scrolled_viewport.snap b/src/ui/snapshots/sauva__ui__render__tests__search_name_results_minimum_with_scrolled_viewport.snap index 9d692bf..e23816e 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_name_results_minimum_with_scrolled_viewport.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_name_results_minimum_with_scrolled_viewport.snap @@ -5,16 +5,16 @@ expression: "render_to_text(&state, width, height)" sauva / Search 97 results ยท U+21E5 Search rightwards arrow -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Results 97 results - โ†ฃ U+21A3 RIGHTWARDS ARROW WITH TAIL โ”ƒ - โ†ฆ U+21A6 RIGHTWARDS ARROW FROM BAR - โ†ช U+21AA RIGHTWARDS ARROW WITH HOOK - โ†ฌ U+21AC RIGHTWARDS ARROW WITH LOOP - โ†ด U+21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS - โ‡„ U+21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW - โ‡ฅ U+21E5 RIGHTWARDS ARROW TO BAR - โ‡ธ U+21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE - โ‡ป U+21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL STRO + โ†ฃ U+21A3 RIGHTWARDS ARROW WITH TAIL โ”ƒ + โ†ฆ U+21A6 RIGHTWARDS ARROW FROM BAR + โ†ช U+21AA RIGHTWARDS ARROW WITH HOOK + โ†ฌ U+21AC RIGHTWARDS ARROW WITH LOOP + โ†ด U+21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS + โ‡„ U+21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW + โ‡ฅ U+21E5 RIGHTWARDS ARROW TO BAR + โ‡ธ U+21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE + โ‡ป U+21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL ST โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_name_results_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__search_name_results_standard.snap index 65192d5..9bc179c 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_name_results_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_name_results_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Search 97 results ยท U+2192 Search rightwards arrow โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ Character โ†’ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Character โ†’ Results 97 results โ”‚ Code Point U+2192 - โ†’ U+2192 RIGHTWARDS ARROW โ”ƒ Primary Name RIGHTWARDS ARROW - โ†› U+219B RIGHTWARDS ARROW WITH STROKE โ”ƒ Block Arrows - โ†ฃ U+21A3 RIGHTWARDS ARROW WITH TAIL โ”ƒ General Category Sm โ€” Math Symbol - โ†ฆ U+21A6 RIGHTWARDS ARROW FROM BAR โ”ƒ - โ†ช U+21AA RIGHTWARDS ARROW WITH HOOK โ”ƒ - โ†ฌ U+21AC RIGHTWARDS ARROW WITH LOOP โ”‚ - โ†ด U+21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS โ”‚ - โ‡„ U+21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - โ‡ฅ U+21E5 RIGHTWARDS ARROW TO BAR โ”‚ Glyph - โ‡ธ U+21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE โ”‚ - โ‡ป U+21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL STRO โ”‚ - โค‘ U+2911 RIGHTWARDS ARROW WITH DOTTED STEM โ”‚ - โค” U+2914 RIGHTWARDS ARROW WITH TAIL WITH VERTICAL S โ”‚ - โค• U+2915 RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VER โ”‚ - โคš U+291A RIGHTWARDS ARROW-TAIL โ”‚ - โคž U+291E RIGHTWARDS ARROW TO BLACK DIAMOND โ”‚ - โค  U+2920 RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND โ”‚ - โฅ‚ U+2942 RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARR โ”‚ - โฅ… U+2945 RIGHTWARDS ARROW WITH PLUS BELOW โ”‚ - โฅ‡ U+2947 RIGHTWARDS ARROW THROUGH X โ”‚ - โฅด U+2974 RIGHTWARDS ARROW ABOVE TILDE OPERATOR โ”‚ - โฅต U+2975 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO โ”‚ - โฌŽ U+2B0E RIGHTWARDS ARROW WITH TIP DOWNWARDS โ”‚ - โ”‚ + โ†’ U+2192 RIGHTWARDS ARROW โ”ƒ Primary Name RIGHTWARDS ARROW + โ†› U+219B RIGHTWARDS ARROW WITH STROKE โ”ƒ Block Arrows + โ†ฃ U+21A3 RIGHTWARDS ARROW WITH TAIL โ”ƒ General Category Sm โ€” Math Symbol + โ†ฆ U+21A6 RIGHTWARDS ARROW FROM BAR โ”ƒ + โ†ช U+21AA RIGHTWARDS ARROW WITH HOOK โ”ƒ + โ†ฌ U+21AC RIGHTWARDS ARROW WITH LOOP โ”‚ + โ†ด U+21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS โ”‚ + โ‡„ U+21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + โ‡ฅ U+21E5 RIGHTWARDS ARROW TO BAR โ”‚ Glyph + โ‡ธ U+21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE โ”‚ + โ‡ป U+21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL ST โ”‚ + โค‘ U+2911 RIGHTWARDS ARROW WITH DOTTED STEM โ”‚ + โค” U+2914 RIGHTWARDS ARROW WITH TAIL WITH VERTICAL โ”‚ + โค• U+2915 RIGHTWARDS ARROW WITH TAIL WITH DOUBLE V โ”‚ + โคš U+291A RIGHTWARDS ARROW-TAIL โ”‚ + โคž U+291E RIGHTWARDS ARROW TO BLACK DIAMOND โ”‚ + โค  U+2920 RIGHTWARDS ARROW FROM BAR TO BLACK DIAMO โ”‚ + โฅ‚ U+2942 RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS A โ”‚ + โฅ… U+2945 RIGHTWARDS ARROW WITH PLUS BELOW โ”‚ + โฅ‡ U+2947 RIGHTWARDS ARROW THROUGH X โ”‚ + โฅด U+2974 RIGHTWARDS ARROW ABOVE TILDE OPERATOR โ”‚ + โฅต U+2975 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO โ”‚ + โฌŽ U+2B0E RIGHTWARDS ARROW WITH TIP DOWNWARDS โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_no_results_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__search_no_results_standard.snap index 6312734..4cbb98a 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_no_results_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_no_results_standard.snap @@ -5,7 +5,7 @@ expression: "render_to_text(&state, width, height)" sauva / Search 0 results Search not a unicode name โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Results 0 results โ”‚ No matching characters โ”‚ Try another name or alias, code point, or character โ”‚ @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__search_special_wide.snap b/src/ui/snapshots/sauva__ui__render__tests__search_special_wide.snap index e3bf93f..6ed9740 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__search_special_wide.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__search_special_wide.snap @@ -5,9 +5,9 @@ expression: "render_to_text(&state, width, height)" sauva / Search 1 result ยท U+D800 Search U+D800 โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ Character +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Character Results 1 result โ”‚ Code Point U+D800 - ยท U+D800 โ€” No Primary Name โ”‚ Primary Name No Primary Name + ยท U+D800 โ€” No Primary Name โ”‚ Primary Name No Primary Name โ”‚ Block High Surrogates โ”‚ General Category Cs โ€” Surrogate โ”‚ @@ -40,5 +40,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__sequence_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__sequence_minimum.snap index cebf994..33f4d54 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__sequence_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__sequence_minimum.snap @@ -5,12 +5,12 @@ expression: "render_to_text(&state, width, height)" sauva / Sequence 1/6 ยท U+0041 Code Points 6 code points ยท 3 graphemes - 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A - โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT - 2 โ€ข 3 U+0020 โ€” SPACE - 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN - โ”‚ 5 U+200D โ€” ZERO WIDTH JOINER - โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER + 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A + โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT + 2 โ€ข 3 U+0020 โ€” SPACE + 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN + โ”‚ 5 U+200D โ€” ZERO WIDTH JOIN + โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER diff --git a/src/ui/snapshots/sauva__ui__render__tests__sequence_scrolled_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__sequence_scrolled_minimum.snap index 2a5cfa2..1d72d58 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__sequence_scrolled_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__sequence_scrolled_minimum.snap @@ -5,16 +5,16 @@ expression: "render_to_text(&state, width, height)" sauva / Sequence 15/16 ยท U+0301 Code Points 16 code points ยท 2 graphemes - 1 โ”‚ 5 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT - โ”‚ 6 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT - โ”‚ 7 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT - โ”‚ 8 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ - โ”‚ 9 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ - โ”‚ 10 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ - โ”‚ 11 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ - โ”‚ 12 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ - โ”‚ 13 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ - โ”‚ 14 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ - โ”” 15 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT + 1 โ”‚ 5 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT + โ”‚ 6 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT + โ”‚ 7 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT + โ”‚ 8 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ + โ”‚ 9 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ + โ”‚ 10 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ + โ”‚ 11 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ + โ”‚ 12 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ + โ”‚ 13 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ + โ”‚ 14 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”ƒ + โ”” 15 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT k/j Move Enter Inspect n Normalize q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__sequence_selected_combining_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__sequence_selected_combining_standard.snap index a5066fd..3735ce0 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__sequence_selected_combining_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__sequence_selected_combining_standard.snap @@ -5,12 +5,12 @@ expression: "render_to_text(&state, width, height)" sauva / Sequence 2/6 ยท U+0301 Code Points 6 code points ยท 3 graphemes โ”‚ Selection - 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ Character โ—Œฬ - โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Code Point U+0301 - 2 โ€ข 3 U+0020 โ€” SPACE โ”‚ Primary Name - 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN โ”‚ COMBINING ACUTE ACCENT - โ”‚ 5 U+200D โ€” ZERO WIDTH JOINER โ”‚ Grapheme 1/3 ยท member 2/2 - โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER โ”‚ Block + 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ Character โ—Œฬ + โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Code Point U+0301 + 2 โ€ข 3 U+0020 โ€” SPACE โ”‚ Primary Name + 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN โ”‚ COMBINING ACUTE ACCENT + โ”‚ 5 U+200D โ€” ZERO WIDTH JOIN โ”‚ Grapheme 1/3 ยท member 2/2 + โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER โ”‚ Block โ”‚ Combining Diacritical Marks โ”‚ General Category โ”‚ Mn โ€” Nonspacing Mark @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + k/j Move g/G Ends Enter Inspect n Normalize q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__sequence_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__sequence_standard.snap index 4259c4f..b580a84 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__sequence_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__sequence_standard.snap @@ -5,12 +5,12 @@ expression: "render_to_text(&state, width, height)" sauva / Sequence 1/6 ยท U+0041 Code Points 6 code points ยท 3 graphemes โ”‚ Selection - 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ Character A - โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Code Point U+0041 - 2 โ€ข 3 U+0020 โ€” SPACE โ”‚ Primary Name - 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN โ”‚ LATIN CAPITAL LETTER A - โ”‚ 5 U+200D โ€” ZERO WIDTH JOINER โ”‚ Grapheme 1/3 ยท member 1/2 - โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER โ”‚ Block Basic Latin + 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ Character A + โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Code Point U+0041 + 2 โ€ข 3 U+0020 โ€” SPACE โ”‚ Primary Name + 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN โ”‚ LATIN CAPITAL LETTER A + โ”‚ 5 U+200D โ€” ZERO WIDTH JOIN โ”‚ Grapheme 1/3 ยท member 1/2 + โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER โ”‚ Block Basic Latin โ”‚ General Category โ”‚ Lu โ€” Uppercase Letter โ”‚ @@ -30,5 +30,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + k/j Move g/G Ends Enter Inspect n Normalize q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__sequence_wide.snap b/src/ui/snapshots/sauva__ui__render__tests__sequence_wide.snap index 208cdb9..9e3d742 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__sequence_wide.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__sequence_wide.snap @@ -5,12 +5,12 @@ expression: "render_to_text(&state, width, height)" sauva / Sequence 1/6 ยท U+0041 Code Points 6 code points ยท 3 graphemes โ”‚ Selection - 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ Character A - โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Code Point U+0041 - 2 โ€ข 3 U+0020 โ€” SPACE โ”‚ Primary Name - 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN โ”‚ LATIN CAPITAL LETTER A - โ”‚ 5 U+200D โ€” ZERO WIDTH JOINER โ”‚ Grapheme 1/3 ยท member 1/2 - โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER โ”‚ Block Basic Latin + 1 โ”Œ 1 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ Character A + โ”” 2 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Code Point U+0041 + 2 โ€ข 3 U+0020 โ€” SPACE โ”‚ Primary Name + 3 โ”Œ 4 U+1F469 ๐Ÿ‘ฉ โ€” WOMAN โ”‚ LATIN CAPITAL LETTER A + โ”‚ 5 U+200D โ€” ZERO WIDTH JOINER โ”‚ Grapheme 1/3 ยท member 1/2 + โ”” 6 U+1F4BB ๐Ÿ’ป โ€” PERSONAL COMPUTER โ”‚ Block Basic Latin โ”‚ General Category โ”‚ Lu โ€” Uppercase Letter โ”‚ @@ -40,5 +40,5 @@ expression: "render_to_text(&state, width, height)" โ”‚ โ”‚ โ”‚ - โ”‚ + k/j Move g/G Ends Enter Inspect n Normalize q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__sequence_wrapped_coordinate_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__sequence_wrapped_coordinate_standard.snap index 5fcc0ed..b6cb860 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__sequence_wrapped_coordinate_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__sequence_wrapped_coordinate_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Sequence 22/22 ยท U+0301 Code Points 22 code points ยท 11 graphemes โ”‚ Selection - 1 โ€ข 1 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Character โ—Œฬ - 2 โ€ข 2 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Code Point U+0301 - 3 โ€ข 3 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Primary Name - 4 โ€ข 4 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ COMBINING ACUTE ACCENT - 5 โ€ข 5 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Grapheme - 6 โ€ข 6 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ 11/11 ยท member 12/12 - 7 โ€ข 7 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Block - 8 โ€ข 8 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Combining Diacritical Marks - 9 โ€ข 9 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ General Category - 10 โ€ข 10 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Mn โ€” Nonspacing Mark - 11 โ”Œ 11 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - โ”‚ 12 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Glyph - โ”‚ 13 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 14 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 15 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 16 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 17 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 18 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 19 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 20 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ 21 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”” 22 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ - โ”‚ + 1 โ€ข 1 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Character โ—Œฬ + 2 โ€ข 2 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Code Point U+0301 + 3 โ€ข 3 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Primary Name + 4 โ€ข 4 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ COMBINING ACUTE ACCENT + 5 โ€ข 5 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Grapheme + 6 โ€ข 6 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ 11/11 ยท member 12/12 + 7 โ€ข 7 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Block + 8 โ€ข 8 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Combining Diacritical Marks + 9 โ€ข 9 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ General Category + 10 โ€ข 10 U+0058 X โ€” LATIN CAPITAL LETTER X โ”‚ Mn โ€” Nonspacing Mark + 11 โ”Œ 11 U+0041 A โ€” LATIN CAPITAL LETTER A โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + โ”‚ 12 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ Glyph + โ”‚ 13 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 14 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 15 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 16 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 17 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 18 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 19 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 20 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”‚ 21 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ + โ”” 22 U+0301 โ—Œฬ โ€” COMBINING ACUTE ACCENT โ”‚ โ”‚ โ”‚ โ”‚ + k/j Move g/G Ends Enter Inspect n Normalize q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__startup_minimum.snap b/src/ui/snapshots/sauva__ui__render__tests__startup_minimum.snap index cd8ea90..9afdf7b 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__startup_minimum.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__startup_minimum.snap @@ -5,16 +5,16 @@ expression: "render_to_text(&state, width, height)" sauva / Inspector U+0041 Identity โ”ƒ - Character A โ”ƒ - Code Point U+0041 โ”ƒ - Primary Name LATIN CAPITAL LETTER A โ”ƒ - Aliases None - Plane 0 โ€” Basic Multilingual Plane - Block Basic Latin + Character A โ”ƒ + Code Point U+0041 โ”ƒ + Primary Name LATIN CAPITAL LETTER A โ”ƒ + Aliases None + Plane 0 โ€” Basic Multilingual Plane + Block Basic Latin โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Classification - General Category Lu โ€” Uppercase Letter - Script Latin - Age 1.1 + General Category Lu โ€” Uppercase Letter + Script Latin + Age 1.1 h/l Point k/j Field y Copy / Search q Quit F1 Help diff --git a/src/ui/snapshots/sauva__ui__render__tests__startup_standard.snap b/src/ui/snapshots/sauva__ui__render__tests__startup_standard.snap index 68f6fc7..eeb09db 100644 --- a/src/ui/snapshots/sauva__ui__render__tests__startup_standard.snap +++ b/src/ui/snapshots/sauva__ui__render__tests__startup_standard.snap @@ -5,30 +5,30 @@ expression: "render_to_text(&state, width, height)" sauva / Inspector U+0041 Identity โ”ƒ Glyph - Character A โ”ƒ Font Test Font Regular - Code Point U+0041 โ”ƒ Version โ€” - Primary Name LATIN CAPITAL LETTER A โ”ƒ - Aliases None โ”ƒ - Plane 0 โ€” Basic Multilingual Plane โ”ƒ - Block Basic Latin โ”ƒ + Character A โ”ƒ Font Test Font Regular + Code Point U+0041 โ”ƒ Version โ€” + Primary Name LATIN CAPITAL LETTER A โ”ƒ + Aliases None โ”ƒ + Plane 0 โ€” Basic Multilingual Plane โ”ƒ + Block Basic Latin โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Classification โ”ƒ - General Category Lu โ€” Uppercase Letter โ”ƒ - Script Latin โ”ƒ - Age 1.1 โ”ƒ - East Asian Width Na โ€” Narrow โ”ƒ - Canonical Combining Class 0 โ€” Not Reordered โ”ƒ Preparing glyph preview - Bidi Class L โ€” Left To Right โ”ƒ - Default Ignorable No โ”ƒ + General Category Lu โ€” Uppercase Letter โ”ƒ + Script Latin โ”ƒ + Age 1.1 โ”ƒ + East Asian Width Na โ€” Narrow โ”ƒ + Canonical Combining Class 0 โ€” Not Reordered โ”ƒ Preparing glyph preview + Bidi Class L โ€” Left To Right โ”ƒ + Default Ignorable No โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Encoding โ”ƒ - UTF-8 41 โ”ƒ - UTF-16 0041 โ”ƒ - HTML Decimal A โ”ƒ - HTML Hex A โ”‚ - Rust char '\u{41}' โ”‚ - Unicode Escape \u0041 โ”‚ + UTF-8 41 โ”ƒ + UTF-16 0041 โ”ƒ + HTML Decimal A โ”ƒ + HTML Hex A โ”‚ + Rust char '\u{41}' โ”‚ + Unicode Escape \u0041 โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Normalization โ”‚ - โ”‚ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help diff --git a/src/ui/workspace.rs b/src/ui/workspace.rs index 4b861a4..e893b27 100644 --- a/src/ui/workspace.rs +++ b/src/ui/workspace.rs @@ -64,7 +64,12 @@ pub fn render_rail_heading( Block::default() .borders(Borders::LEFT) .border_style(color_theme.border_style()), - area, + Rect::new( + area.x, + area.y, + area.width, + area.height.saturating_sub(BOTTOM_INSET), + ), ); let section = rail_section(area); render_heading(frame, section.heading, title, secondary, color_theme); diff --git a/tests/snapshots/terminal_e2e__browses_through_planes_and_ranges_to_inspect_a_code_point.snap b/tests/snapshots/terminal_e2e__browses_through_planes_and_ranges_to_inspect_a_code_point.snap index deceb68..f56cfcc 100644 --- a/tests/snapshots/terminal_e2e__browses_through_planes_and_ranges_to_inspect_a_code_point.snap +++ b/tests/snapshots/terminal_e2e__browses_through_planes_and_ranges_to_inspect_a_code_point.snap @@ -31,7 +31,7 @@ size: 100x30 cursor: hidden โ”‚ โ”‚ โ”‚ - โ”‚ + h/l/k/j Move C-u/C-d Jump g/G Ends Enter Inspect BS Back Esc Close q Quit F1 Help styles: @@ -62,5 +62,4 @@ styles: 25: 60 fg=8 26: 60 fg=8 27: 60 fg=8 -28: 60 fg=8 29: 1-7 fg=3; 8-12 fg=8; 15-21 fg=3; 22-26 fg=8; 29-31 fg=3; 32-36 fg=8; 39-43 fg=3; 44-51 fg=8; 54-55 fg=3; 56-60 fg=8; 63-65 fg=3; 66-71 fg=8; 74 fg=3; 75-79 fg=8; 92-93 fg=3; 94-98 fg=8 diff --git a/tests/snapshots/terminal_e2e__inspector_after_browse_selection.snap b/tests/snapshots/terminal_e2e__inspector_after_browse_selection.snap index 26c3eb0..75c8724 100644 --- a/tests/snapshots/terminal_e2e__inspector_after_browse_selection.snap +++ b/tests/snapshots/terminal_e2e__inspector_after_browse_selection.snap @@ -6,61 +6,60 @@ size: 100x30 cursor: hidden sauva / Inspector U+0042 Identity โ”ƒ Glyph - Character B โ”ƒ Font โ€” - Code Point U+0042 โ”ƒ Version โ€” - Primary Name LATIN CAPITAL LETTER B โ”ƒ - Aliases None โ”ƒ - Plane 0 โ€” Basic Multilingual Plane โ”ƒ - Block Basic Latin โ”ƒ + Character B โ”ƒ Font โ€” + Code Point U+0042 โ”ƒ Version โ€” + Primary Name LATIN CAPITAL LETTER B โ”ƒ + Aliases None โ”ƒ + Plane 0 โ€” Basic Multilingual Plane โ”ƒ + Block Basic Latin โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Classification โ”ƒ - General Category Lu โ€” Uppercase Letter โ”ƒ - Script Latin โ”ƒ - Age 1.1 โ”ƒ - East Asian Width Na โ€” Narrow โ”ƒ - Canonical Combining Class 0 โ€” Not Reordered โ”ƒ Graphics disabled - Bidi Class L โ€” Left To Right โ”ƒ Enable with --graphics auto/force. - Default Ignorable No โ”ƒ + General Category Lu โ€” Uppercase Letter โ”ƒ + Script Latin โ”ƒ + Age 1.1 โ”ƒ + East Asian Width Na โ€” Narrow โ”ƒ + Canonical Combining Class 0 โ€” Not Reordered โ”ƒ Graphics disabled + Bidi Class L โ€” Left To Right โ”ƒ Enable with --graphics auto/force. + Default Ignorable No โ”ƒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”ƒ Encoding โ”ƒ - UTF-8 42 โ”ƒ - UTF-16 0042 โ”ƒ - HTML Decimal B โ”ƒ - HTML Hex B โ”‚ - Rust char '\u{42}' โ”‚ - Unicode Escape \u0042 โ”‚ + UTF-8 42 โ”ƒ + UTF-16 0042 โ”ƒ + HTML Decimal B โ”ƒ + HTML Hex B โ”‚ + Rust char '\u{42}' โ”‚ + Unicode Escape \u0042 โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Normalization โ”‚ - โ”‚ + h/l Point k/j Field C-u/C-d Page g/G Ends y Copy / Search p/r/b/c Browse q Quit F1 Help styles: 0: 0-5 fg=6 bold; 93-99 fg=8 2: 1-8 fg=4 bold; 60 fg=8; 62-66 fg=4 bold 3: 1-57 fg=0 bg=6; 60 fg=8; 63-71 fg=8 -4: 1-27 fg=8; 60 fg=8; 63-71 fg=8 -5: 1-27 fg=8; 60 fg=8 -6: 1-27 fg=8; 60 fg=8 -7: 1-27 fg=8; 60 fg=8 -8: 1-27 fg=8; 60 fg=8 +4: 2-28 fg=8; 60 fg=8; 63-71 fg=8 +5: 2-28 fg=8; 60 fg=8 +6: 2-28 fg=8; 60 fg=8 +7: 2-28 fg=8; 60 fg=8 +8: 2-28 fg=8; 60 fg=8 9: 1-57 fg=8; 60 fg=8 10: 1-14 fg=4 bold; 60 fg=8 -11: 1-27 fg=8; 60 fg=8 -12: 1-27 fg=8; 60 fg=8 -13: 1-27 fg=8; 60 fg=8 -14: 1-27 fg=8; 60 fg=8 -15: 1-27 fg=8; 60 fg=8; 72-88 fg=3 bold -16: 1-27 fg=8; 60 fg=8; 63-96 fg=8 -17: 1-27 fg=8; 60 fg=8 +11: 2-28 fg=8; 60 fg=8 +12: 2-28 fg=8; 60 fg=8 +13: 2-28 fg=8; 60 fg=8 +14: 2-28 fg=8; 60 fg=8 +15: 2-28 fg=8; 60 fg=8; 72-88 fg=3 bold +16: 2-28 fg=8; 60 fg=8; 63-96 fg=8 +17: 2-28 fg=8; 60 fg=8 18: 1-57 fg=8; 60 fg=8 19: 1-8 fg=4 bold; 60 fg=8 -20: 1-27 fg=8; 60 fg=8 -21: 1-27 fg=8; 60 fg=8 -22: 1-27 fg=8; 60 fg=8 -23: 1-27 fg=8; 60 fg=8 -24: 1-27 fg=8; 60 fg=8 -25: 1-27 fg=8; 60 fg=8 +20: 2-28 fg=8; 60 fg=8 +21: 2-28 fg=8; 60 fg=8 +22: 2-28 fg=8; 60 fg=8 +23: 2-28 fg=8; 60 fg=8 +24: 2-28 fg=8; 60 fg=8 +25: 2-28 fg=8; 60 fg=8 26: 1-57 fg=8; 60 fg=8 27: 1-13 fg=4 bold; 60 fg=8 -28: 60 fg=8 29: 1-3 fg=3; 4-9 fg=8; 12-14 fg=3; 15-20 fg=8; 23-29 fg=3; 30-34 fg=8; 37-39 fg=3; 40-44 fg=8; 47 fg=3; 48-52 fg=8; 55 fg=3; 56-62 fg=8; 65-71 fg=3; 72-78 fg=8; 81 fg=3; 82-86 fg=8; 92-93 fg=3; 94-98 fg=8 diff --git a/tests/snapshots/terminal_e2e__keeps_the_search_result_selected_across_terminal_resizes.snap b/tests/snapshots/terminal_e2e__keeps_the_search_result_selected_across_terminal_resizes.snap index 1e341dd..6c03c09 100644 --- a/tests/snapshots/terminal_e2e__keeps_the_search_result_selected_across_terminal_resizes.snap +++ b/tests/snapshots/terminal_e2e__keeps_the_search_result_selected_across_terminal_resizes.snap @@ -6,9 +6,9 @@ size: 60x16 cursor: 2,15 sauva / Search 1 result ยท U+2192 Search U+2192 -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Results 1 result - โ†’ U+2192 RIGHTWARDS ARROW + โ†’ U+2192 RIGHTWARDS ARROW @@ -23,7 +23,7 @@ size: 60x16 cursor: 2,15 styles: 0: 0-5 fg=6 bold; 42-59 fg=8 2: 1-8 fg=8 -3: 0-59 fg=8 +3: 0-58 fg=8 4: 1-7 fg=4 bold; 50-57 fg=8 -5: 2-5 fg=0 bg=6; 6-11 fg=0 bg=6 bold; 12-57 fg=0 bg=6 +5: 2-6 fg=0 bg=6; 7-12 fg=0 bg=6 bold; 13-57 fg=0 bg=6 15: 1-3 fg=3; 4-8 fg=8; 11-15 fg=3; 16-23 fg=8; 26-28 fg=3; 29-34 fg=8; 37-39 fg=3; 40-44 fg=8; 52-53 fg=3; 54-58 fg=8 diff --git a/tests/snapshots/terminal_e2e__normalization_comparison_highlights_changes_and_preserves_navigation.snap b/tests/snapshots/terminal_e2e__normalization_comparison_highlights_changes_and_preserves_navigation.snap index a799299..5ca74c2 100644 --- a/tests/snapshots/terminal_e2e__normalization_comparison_highlights_changes_and_preserves_navigation.snap +++ b/tests/snapshots/terminal_e2e__normalization_comparison_highlights_changes_and_preserves_navigation.snap @@ -9,11 +9,11 @@ size: 100x30 cursor: hidden Aฬโ โ‘ ๐Ÿ‘ฉโ€๐Ÿ’ป U+0041 U+0301 U+0020 U+2460 U+1F469 U+200D U+1F4BB - Form vs Original CP Bytes GC - NFC Changed 6 17 4 - NFD Unchanged 7 18 4 - NFKC Changed 6 15 4 - NFKD Changed 7 16 4 + Form vs Original CP Bytes GC + NFC Changed 6 17 4 + NFD Unchanged 7 18 4 + NFKC Changed 6 15 4 + NFKD Changed 7 16 4 NFKC Result 2 changed regions รโ 1๐Ÿ‘ฉโ€ @@ -39,7 +39,7 @@ styles: 2: 1-8 fg=4 bold; 9-97 fg=8 3: 2 fg=0 bg=3 underline; 4 fg=0 bg=3 underline 4: 2-14 fg=0 bg=3 underline; 15-22 fg=8; 23-28 fg=0 bg=3 underline; 29-51 fg=8 -6: 1-97 fg=8 +6: 2-96 fg=8 9: 1-97 fg=0 bg=6 12: 1-11 fg=4 bold; 12-97 fg=8 13: 2 fg=0 bg=3 underline; 4 fg=0 bg=3 underline diff --git a/tests/snapshots/terminal_e2e__normalization_fits_the_minimum_terminal_and_opens_single_point_results.snap b/tests/snapshots/terminal_e2e__normalization_fits_the_minimum_terminal_and_opens_single_point_results.snap index 6d8684e..03f110b 100644 --- a/tests/snapshots/terminal_e2e__normalization_fits_the_minimum_terminal_and_opens_single_point_results.snap +++ b/tests/snapshots/terminal_e2e__normalization_fits_the_minimum_terminal_and_opens_single_point_results.snap @@ -9,11 +9,11 @@ size: 60x16 cursor: hidden Aฬ U+0041 U+0301 - Form vs Original CP Bytes GC - NFC Changed 1 2 1 - NFD Unchanged 2 3 1 - NFKC Changed 1 2 1 - NFKD Unchanged 2 3 1 + Form vs Original CP Bytes GC + NFC Changed 1 2 1 + NFD Unchanged 2 3 1 + NFKC Changed 1 2 1 + NFKD Unchanged 2 3 1 NFC Result 1 changed region ร @@ -25,7 +25,7 @@ styles: 2: 1-8 fg=4 bold; 9-57 fg=8 3: 2 fg=0 bg=3 underline 4: 2-14 fg=0 bg=3 underline -6: 1-57 fg=8 +6: 2-56 fg=8 7: 1-57 fg=0 bg=6 12: 1-10 fg=4 bold; 11-57 fg=8 13: 2 fg=0 bg=3 underline diff --git a/tests/snapshots/terminal_e2e__normalization_reference_scrolls_on_jumps_and_resizes_without_moving_the_original_selection.snap b/tests/snapshots/terminal_e2e__normalization_reference_scrolls_on_jumps_and_resizes_without_moving_the_original_selection.snap index e3f06d4..a034aa5 100644 --- a/tests/snapshots/terminal_e2e__normalization_reference_scrolls_on_jumps_and_resizes_without_moving_the_original_selection.snap +++ b/tests/snapshots/terminal_e2e__normalization_reference_scrolls_on_jumps_and_resizes_without_moving_the_original_selection.snap @@ -6,17 +6,17 @@ size: 60x16 cursor: hidden sauva / Sequence / NFKC Result 150/150 ยท U+0069 Original 50 CP NFKC Result 150 CP ยท 150 GC - 40 โ€ข 40 U+FB03 140 โ€ข 140 U+0066 f โ€” LATIN S - 41 โ€ข 41 U+FB03 141 โ€ข 141 U+0069 i โ€” LATIN S - 42 โ€ข 42 U+FB03 142 โ€ข 142 U+0066 f โ€” LATIN S - 43 โ€ข 43 U+FB03 143 โ€ข 143 U+0066 f โ€” LATIN S - 44 โ€ข 44 U+FB03 144 โ€ข 144 U+0069 i โ€” LATIN S - 45 โ€ข 45 U+FB03 145 โ€ข 145 U+0066 f โ€” LATIN S - 46 โ€ข 46 U+FB03 146 โ€ข 146 U+0066 f โ€” LATIN S - 47 โ€ข 47 U+FB03 147 โ€ข 147 U+0069 i โ€” LATIN S - 48 โ€ข 48 U+FB03 148 โ€ข 148 U+0066 f โ€” LATIN S - 49 โ€ข 49 U+FB03 โ”ƒ 149 โ€ข 149 U+0066 f โ€” LATIN S - 50 โ€ข 50 U+FB03 โ”ƒ 150 โ€ข 150 U+0069 i โ€” LATIN Sโ”ƒ + 40 โ€ข 40 U+FB03 140 โ€ข 140 U+0066 f โ€” LATIN + 41 โ€ข 41 U+FB03 141 โ€ข 141 U+0069 i โ€” LATIN + 42 โ€ข 42 U+FB03 142 โ€ข 142 U+0066 f โ€” LATIN + 43 โ€ข 43 U+FB03 143 โ€ข 143 U+0066 f โ€” LATIN + 44 โ€ข 44 U+FB03 144 โ€ข 144 U+0069 i โ€” LATIN + 45 โ€ข 45 U+FB03 145 โ€ข 145 U+0066 f โ€” LATIN + 46 โ€ข 46 U+FB03 146 โ€ข 146 U+0066 f โ€” LATIN + 47 โ€ข 47 U+FB03 147 โ€ข 147 U+0069 i โ€” LATIN + 48 โ€ข 48 U+FB03 148 โ€ข 148 U+0066 f โ€” LATIN + 49 โ€ข 49 U+FB03 โ”ƒ 149 โ€ข 149 U+0066 f โ€” LATIN + 50 โ€ข 50 U+FB03 โ”ƒ 150 โ€ข 150 U+0069 i โ€” LATIN โ”ƒ k/j Move Enter Inspect BS/Esc Back q Quit F1 Help diff --git a/tests/snapshots/terminal_e2e__normalization_result_links_expansions_and_adjacent_changes_to_separate_original_rows.snap b/tests/snapshots/terminal_e2e__normalization_result_links_expansions_and_adjacent_changes_to_separate_original_rows.snap index ce92198..1f8a7b9 100644 --- a/tests/snapshots/terminal_e2e__normalization_result_links_expansions_and_adjacent_changes_to_separate_original_rows.snap +++ b/tests/snapshots/terminal_e2e__normalization_result_links_expansions_and_adjacent_changes_to_separate_original_rows.snap @@ -6,11 +6,11 @@ size: 100x30 cursor: hidden sauva / Sequence / NFKC Result 4/5 ยท U+0031 Original 3 CP NFKC Result 5 code points ยท 5 graphemes - 1 โ€ข 1 U+FB03 1 โ€ข 1 U+0066 f โ€” LATIN SMALL LETTER F - 2 โ€ข 2 U+2460 2 โ€ข 2 U+0066 f โ€” LATIN SMALL LETTER F - 3 โ€ข 3 U+2461 3 โ€ข 3 U+0069 i โ€” LATIN SMALL LETTER I - 4 โ€ข 4 U+0031 1 โ€” DIGIT ONE - 5 โ€ข 5 U+0032 2 โ€” DIGIT TWO + 1 โ€ข 1 U+FB03 1 โ€ข 1 U+0066 f โ€” LATIN SMALL LETTER F + 2 โ€ข 2 U+2460 2 โ€ข 2 U+0066 f โ€” LATIN SMALL LETTER F + 3 โ€ข 3 U+2461 3 โ€ข 3 U+0069 i โ€” LATIN SMALL LETTER I + 4 โ€ข 4 U+0031 1 โ€” DIGIT ONE + 5 โ€ข 5 U+0032 2 โ€” DIGIT TWO diff --git a/tests/snapshots/terminal_e2e__reopens_search_and_corrects_a_query_with_no_results.snap b/tests/snapshots/terminal_e2e__reopens_search_and_corrects_a_query_with_no_results.snap index 1c031fb..8ae5f98 100644 --- a/tests/snapshots/terminal_e2e__reopens_search_and_corrects_a_query_with_no_results.snap +++ b/tests/snapshots/terminal_e2e__reopens_search_and_corrects_a_query_with_no_results.snap @@ -6,7 +6,7 @@ size: 100x30 cursor: 2,25 sauva / Search 0 results Search rightwards arrox โ”‚ Selection -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ Results 0 results โ”‚ No matching characters โ”‚ Try another name or alias, code point, or character โ”‚ @@ -31,13 +31,13 @@ size: 100x30 cursor: 2,25 โ”‚ โ”‚ โ”‚ - โ”‚ + โ†‘/โ†“ Move Enter Inspect Esc Close C-c Quit F1 Help styles: 0: 0-5 fg=6 bold; 90-99 fg=8 2: 1-8 fg=8; 60 fg=8; 62-70 fg=4 bold -3: 0-60 fg=8 +3: 0-58 fg=8; 60 fg=8 4: 1-7 fg=4 bold; 49-57 fg=8; 60 fg=8 5: 2-23 bold; 60 fg=8 6: 2-52 fg=8; 60 fg=8 @@ -62,5 +62,4 @@ styles: 25: 60 fg=8 26: 60 fg=8 27: 60 fg=8 -28: 60 fg=8 29: 1-3 fg=3; 4-8 fg=8; 11-15 fg=3; 16-23 fg=8; 26-28 fg=3; 29-34 fg=8; 37-39 fg=3; 40-44 fg=8; 92-93 fg=3; 94-98 fg=8