Releases: usadson/retina
Releases · usadson/retina
v0.2.0
This is the first official release!
General Information
Version 0.1.0 was before the project was restructured to which it is today. In this version, there are a couple notable features:
- HTML is parsed into a reference-counted DOM
- Basic CSS parser
- Simple CSS selector matcher, only
<simple selector> - Style collection & cascading
@mediaquery support forscreenandalltypes- Text & whitespace transformations
- User Agent style sheet
- Internal Fetch API implementation
- Remote & local document & resource fetch
- Window resize is acted upon
- Logging using the
logcrate - Window title is based upon the
<title>element or the URL - A simple DOM inspector with F12
- Basic CSS box-model
- Shortcuts like Ctrl+W, F5, F12
- Extensive Font API
- Text hints (e.g. ligatures, CJK character forms)
- Text shaping using harfbuzz
- Still bitmap image support (JPG, PNG, BMP, WebP, etc.)
- Animated GIF support
- HTML
<img>element support - CSS
background-imagesupport (non-gradients) - Basic compositor with parallel tiles of 256x256
- Ctrl+V to paste a URL to open
- Scrolling support
- Parallelized glyph rasterization
- Improved text anti-aliasing
- Non-colored emoji support
text-decorationsupport- And a lot of performance improvements!
Changes
[deps]Update dependencies[page]Accept continuous task messages when no timeout expired[page]Document the DirtyState mechanism[gfx+page]Remove redundant debug messages[app]Count FPS for paint-heavy scenario's[page]Time scroll responsiveness[app]Fix incorrectAppcreation[page]Animate through each frame of GIFs[dom+gfx+page]Generate textures from GIF frames[dom]Special support for decoding GIF animated images[ci]Add GitHub Pages link for Rustdoc[app+page]Show backtrace of page crash in Window[app]Show a crash screen when the pages crashes, instead of halting[compositor]Ensure bottommost text fragments are continued on a vertical tile boundary[layout]Support emoji text fragments[font]Debug FontDescriptor with FontHandle[font]AddFamilyName::Emoji[layout]Remove fast path of anonymous layout algorithm[page]Reduce maximum delay between paints[compositor]Recall staging belt after awaiting SubmissionFuture[compositor]Enablewgputracing/profiling[compositor]Ensure composition of the last tiles are submitted correctly[font]Improve glyph rendering by eliminating double AA[compositor]Remove dependency on retina-gfx-font-backend-font-kit[gfx+font]Move font descriptors and hints back to retina-gfx-font![font]Move the font rendering code to a separate crate[gfx]Decouplefont-kitbackend from the main crate[layout]Hot fix crash in subtendril'ing[font]Reduce locking overhead for FontKitFont and GlyphAtlas[font]Add instrumentation to backend font implementation[compositor]Allow tracing of composition cycles[gfx]Cull textured rects outside the viewport[compositor]Cull out tile-non-intersecting text fragments[compositor]Fix some clippy hints[compositor]Use stdlib's thread scope instead of crossbeam's[compositor]Hide most messages behindtracelog level[compositor]Re-enable background color filling[compositor]Clear the tile's background a normal color[compositor]Document the publicly accessible API[compositor]Don't request a composition cycle when the tile was cached[compositor]Delay waiting on submit until next composite cycle[compositor]Keep bottom tiles in cache when scrolling up[page]Don't resubmit the composited page[compositor]Mergepaintandcompositeinto one[gfx]Rename common log message to clear up confusion[compositor]Composite tiles in parallel[compositor]Composite immediately when a tile is ready[compositor]Debug the times taken per tile[compositor]Only paint tiles that intersect the viewport[compositor]Paint tiles according to the viewport's vertical position[compositor]Use a tile-based system for rendering the screen[font]Prepare basic latin by also including the U+0020 SPACE glyph[ua]Update test according to the CSS parsing improvements![gfx]Trace bind & draw commands[gfx]Create a sampler once per texture renderer[gfx-font]Prepare renderer once per text run[gfx]Instrument more functions[style]Support compoundp.blue#mainselectors![style]Move simple selector matching to a separate function[style+page]Load correct fonts using the givenfont-weight[font]Better propagate succes status for font loading[gfx+style]Supportfont-variant-position[gfx]Support East Asian glyph substitution[style]Supportfont-variant-east-asian[dom+i18n+layout]Supporttext-transformCSS property[style]Supporttext-transform[compositor]Supporttext-decoration: line-through and overline[style-parser]Supportfont-weight[compositor]Support basictext-decorationproperties[font]Add accessors for baseline, underline offset+thickness[style]Addtext-decorationproperties[layout]Remove old debug logging[common+layout]Fix crash for multi-byte character index[woff]Start working on an WOFF(2) decompressor[layout]Translatefont-variant-capstogfx-fontformat[gfx-font]Support capital letter font hints[style]Supportfont-variant-caps[page]Add a CSS missing font loading mechanism[gfx]Font description should beHashandEq[gfx-font]AddFontProvider::load_from_system()API[page]Fix page task message timeout system[page]Generalize style resource loading into a separate function[gfx-font]Don't load fonts in the background if they don't exist[style]Supportfont-kerningandfont-variant-ligatures[gfx-font]Add ability to change ligatures & kerning hints[gfx+font+gui]Removewgpu_glyphdependency[gfx-font]Diverge path for grayscale or anti-aliasing[gfx-font]Remove oldascentper glyph from the font[gfx-font]Tidy upglyph_iter[gfx]Use HarfBuzz offsets & advances instead of the defaults[gfx-font]Fix baseline correction in text painting[gfx-font]Fix font height calculation[gfx-font]Use HarfBuzz for text shaping[gfx-font]Use the font size for atlas cache matching[gfx-font]Calculate alpha channel based on avg glyph mask[gfx-font]Use alpha blending for glyph painting[gfx]Allow color blending inTextureMaterialRenderer[gfx-font]Paint using the text color supplied[gfx]GiveTextureMaterialRendererbetter debug WebGPU labels[gfx]Fix incorrect resource reference inpaint_rect_textured_with[gfx]Give texture paint resources a better name[gfx-font]Implement glyph position correctly[gfx-font]Chore: clean-up font_kit backend glue[gfx-font]Re-enable parallelized glyph rasterization[gfx-font]Remove debugabortin Glyph loading[gfx]Makepaint_rect_texturedextensible[gfx]Streamline material rendering code[gfx-font]Custom text rendering withfont_kitglyph rasterization[gfx+font]AbstractFontpainting[gfx-font]RenameFonttoWgpuFont[svg]Start working on an SVG implementation[gfx]Don't emit scroll events if the cursor is outside the window[fetch]Special path for local page URL parsing[layout]Use serif font as the default[style]Support<body>presentational hints[ci]Install XCB package on Linux for clipboard to work[app]Usecopypastainstead ofclipboard[ua]Update stylesheet test because of CSS parser improvements[app+page]Open a website using an URL of the clipboard (Control+V)[app+page]Add keybind F6 to dump the style sheets[page]Set the URL as the title on (re)load[style-comp]Support pseudo selector specificity[gfx-font]MoveFontKitAbGlyphFontBridge::new()outside the Windows cfg[style-comp]Support pseudo selector matching for links and empty elements[style]Support parsing pseudo class selectors[gfx]Fix incorrect text color[layout]Add struct ActualValues[layout]Pass the IFC state to the LayoutBox::run_layout() function[layout]Describe crash (panic) for subtendril errors in line box fragmentation[style-parser]SupportcurrentColor[style-parser]Extract color parsing into a separate function[layout+compositor]Support CSScurrentColor[gfx-font]Begin working onfont-kitrendering support[style]Supportmargin-blockandmargin-inlineproperties[style]Parse<body>presentationalbackgroundandtexthints[layout]Run special path (replaced) for<img>elements[page]Don't crash on a network error in Fetch[page]Follow redirect URLs in HTTP responses[fetch]Add redirect URL getter forResponse[page]Scroll to top on page (re)load[page]Warn if there isn't a layout root when calling paint()[page]Always clean dirty state before entering command/task loop[common]Remove failing example of StrExt::index_of_substring()[page]Queue relayout, repaint, etc. by keeping track of the dirty state[app]Map keys to PageUp, PageDown, Home, End[page]Add actions Page{Up,Down} and ScrollTo{Bottom,Top} (Home & End)[page]Construct the scroller with the initial viewport size[page]Ensure scroll position isn't negative[layout]Implement the line box fragment algorithm!- `[l...