# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [4.5.0] - 2026-10-06

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.8.3
- C Module MicroVG 8.0.3

### Added

- Add a measurement test for a glyph drawn with cubic curves in an OpenType font.
- Add a measurement test comparing the TrueType and the OpenType format of the same font on curved glyphs.
- Add a drawing test checking that an OpenType font whose font matrix is not the default one draws at the size its TrueType format draws.
- Add a measurement test for the height of a string whose leading space is followed by a glyph drawn above the baseline.
- Add a measurement test for a character that draws no ink at either end of a string.
- Add a measurement test for a combining mark folded in at its own pen position.
- Add a drawing test for a string whose leftmost pixel is the end point of a curve.
- Add a drawing test for a letter spacing that crosses a pixel only over a long string.
- Add a measurement test checking that refused drawings leave the complex layouter's heap intact.
- Add letter spacing measurement and drawing tests in complex layout and on a circle, which expect the values of the simple layout.
- Add drawing tests checking that a string drawn with the MicroUI or the MicroVG painter draws nothing on the column after its measured width.
- Add a drawing test checking that a MicroUI string drawn into a buffered vector image sized to its measured width and height draws the same pixels as the direct drawing.

### Changed

- Expect the box the glyphs draw, instead of the box the font declares, in every text measure case.
- Check the MicroUI text width of a vector font against a measure that is not a whole number, which a VEE Port truncating that width now fails.
- Expect a text measure to be the union of the ink of all its glyphs.
- Expect a text measure to be positive or zero, and 0 when nothing is drawn.
- Expect a drawn text to start on the leftmost pixel it draws.
- Expect the ink box of an emoji, instead of its advance, in the emoji measurement and drawing cases.
- Run `TestDrawString` in a launch of its own, outside `AllTestClasses`, since it needs a larger image heap than the batch gives.

### Removed

- Remove the test class comparing the OpenType and the TrueType rendering of one glyph, `TestFontIncorrectOTFGlyphSize`.

### Fixed

- Fix the empty-string measurement test, which checked the height but not the width (introduced in version 4.4.0).
- Fix the character sweeps, which measured the left-overflowing character twice and never the right-overflowing one.

## [4.4.0] - 2026-09-15

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.8.2
- C Module MicroVG 8.0.2

### Added

- Add numeric measurement tests for text in complex layout.
- Add tests asserting both layouters agree on text needing no shaping, and on the empty string.
- Add a rendering test for complex-layout text drawn on a small-radius circle.
- Add performance tests for complex-layout text measurement, drawing and drawing on a circle.
- Add `AllTestClasses`, which runs the test classes in a single launch, for a VEE Port with enough memory to hold every test resource at once.
- Add a measurement test for a glyph whose extreme point ends a curve.
- Add a test that measures a complex-layout font loaded after another one was closed.
- Add a test that measures a complex-layout font loaded after the SNI close function released another one.

### Changed

- Shorten the first Arabic string of the complex-layout drawing test and regenerate its reference image.

### Fixed

- Close the images that test classes allocated without releasing them.
- Close every complex-layout font the tests open, which they used to leave open to work around a C Module defect.

## [4.3.3] - 2026-05-21

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.8.1
- C Module MicroVG 8.0.1

### Fixed

- Fix the publication of the JAR artifact (wrong configuration).

## [4.3.2] - 2026-02-11

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.8.1
- C Module MicroVG 8.0.1

### Removed

- Skip the test `TestBufferedVectorImage.testClearDuringClose()` on the simulator.

## [4.3.1] - 2026-02-10

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.8.1
- C Module MicroVG 8.0.1

### Added

- Add a test that checks the closing of BufferedVectorImage during asynchronous and concurrent third-party allocations.

### Changed

- Improve the test that checks the release of native resources to ensure that it registers the native object instead of the Java object.

## [4.3.0] - 2026-01-23

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.8.1
- C Module MicroVG 8.0.0

### Added

- Add a test that draws an image with the fill rule "even-odd".
- Add a test that checks the release of native resources.
- Add a test that clears BufferedVectorImage whereas its clip is null.

### Changed

- Close all fonts.

## [4.2.0] - 2025-09-15

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.7.2
- C Module MicroVG 7.0.0

### Added

- Add a test that draws a gradient in a BufferedVectorImage.
- Add tests that draw a filtered image in a BufferedVectorImage.
- Add a test that draws a character with a specific bounding box in a BufferedVectorImage.

## [4.1.0] - 2025-04-09

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.7.1
- C Module MicroVG 7.0.0

### Added

- Add a test that draws a BufferedVectorImage outside the destination clip.
- Add a test that draws outside the BufferedVectorImage's clip.
- Add tests that draw BufferedVectorImages with a rotation.
- Add tests that draw AVD and SVG images with gradients with zero or one color.

## [4.0.0] - 2024-10-09

### VEE Port Requirements

- MicroVG API 1.5
- VG Pack 1.7.0
- C Module MicroVG 7.0.0

### Added

- Add some tests that use a MicroVG font as a MicroUI font.

### Fixed

- Increment the tolerance of `testMeasureTwoCharacters`. 

## [3.0.0] - 2024-07-19

### VEE Port Requirements

- MicroVG API 1.4
- VG Pack 1.6.0
- C Module MicroVG 6.0.0

### Added

- Add a test that uses MicroVG before MicroUI startup.
- Add target-specific property files.
- Add the ability to skip individual tests by setting properties.
- Add a test that draws the MicroUI shapes compatible with the GPU in a BufferedVectorImage.
- Add a test that draws an image just after a flush.

### Changed

- Improve complex layout text tests.
  - Add `testDrawGradientString`.
  - Add `testDrawGradientStringAndRotation`.
  - Add `testDrawGradientStringAndScale`.
  - Remove `testDrawStringLayoutTransform`.

### Fixed

- Fix the test naming in `TestBufferedVectorImage`.
- Fix the test `TestFontFlushLimits` (not compatible with UI Pack 14).

### Removed

- Remove some checks on the target (emb, sim, android, javafx): each test can be ignored by the testsuite launcher.
- Remove the configuration of the number of loops of the tests `testParallelDrawingInClosedImage()` and `testParallelDrawingClosedImage()`. 

## [2.7.0] - 2024-04-11

### VEE Port Requirements

- MicroVG API 1.4
- VG Pack 1.5.1
- C Module MicroVG 5.0.0

### Added

- Add system properties to skip specific tests.
  - Add the constant `tests.gradients.skip` to skip gradient tests.
  - Add the constant `tests.TestPath.testVeryLongDynamicPath.skip` to skip `TestPath.testVeryLongDynamicPath`.
- Add tests to draw a VG RAW image on a BufferedVectorImage with source and / or destination clip(s).
- Add tests to draw a BufferedVectorImage on a BufferedVectorImage with source and / or destination clip(s).
- Add a test for glyph path overlap.

## [2.6.0] - 2024-02-15

### VEE Port Requirements

- MicroVG API 1.4
- VG Pack 1.5.0
- C Module MicroVG 5.0.0

### Added

- Add tests when loading fonts (empty paths, missing leading slash).
- Add tests when getting images (empty paths).
- Add a test for memory leak on BufferedVectorImage.
- Add a test for color matrix on BufferedVectorImage.
 
### Changed

- Align tests when getting images with tests when loading fonts.  
- Fix some tests to be compatible with UI Pack 14.0.0

### Removed

- Cannot test flush bounds anymore (since UI Pack 14.0.0).

## [2.5.0] - 2023-11-13

### VEE Port Requirements

- MicroVG API 1.4
- VG Pack 1.4.2
- C Module MicroVG 4.0.0

### Added

- Add a test for very long dynamic paths (larger than 64 KB).
  
### Fixed

- Reduce the precision of the test `TestMatrix`.
- Fix the test `TestFontComplexLayoutOnCircle` on displays other than 392x392. 
- Fix the test `testStringWithSpace()` with a space inside the string.

## [2.4.0] - 2023-09-21

### VEE Port Requirements

- MicroVG API 1.4
- VG Pack 1.4.1
- C Module MicroVG 3.0.1

### Added

- Add a test for `MOVE_REL` path command. 
- Add test cases for translated Graphics Context.
- Add test cases (drawings and measures) for several kinds of characters. 
  
### Changed

- Update the license. 
- Ask for an explicit `flush()` instead of a `requestFlush()`.
- Split the tests with clip (`testPathWithClip()` and `testGradientWithClip()`) in 3 tests (large, fit and thin clip).
- Reduce the scope of several tests to check only what is expected by the test.
- Improve debugging traces. 
  
### Fixed

- Fix the end of test `TestBufferedVectorImageOOM` to avoid losing the last traces.
- Fix `TestFontComplexLayout` and `TestFontComplexLayoutOnCircle` tests on Android by increasing pixel comparison tolerance.

## [2.3.0] - 2023-07-21

### VEE Port Requirements

- MicroVG API 1.4
- VG Pack 1.4.0
- C Module MicroVG 3.0.0

### Added

- Add test cases for DST_OUT and PLUS blend modes.
- Add tests for path bounds.
- Add tests to check that loading a font from a path without a leading slash fails.
- Add tests for drawing empty strings and strings outside of the clip area.

### Fixed

- Make BVI tests compatible with Android.
- Do not print debug logs in TestFontMeasures, TestImageExternal and TestPath when the debug constant is not set.

## [2.2.0] - 2023-05-10

### VEE Port Requirements

- MicroVG API 1.3
- VG Pack 1.3.0
- C Module MicroVG 3.0.0

### Added

- Add tests on invalid "external images".
- Add compatibility tests to check that BufferedVectorImage can be used in place of VectorImage in the API.
- Add a test for memory leaks when closing a BufferedVectorImage.
- Add a test to check an image with several gradients.
- Add a test for an animated images with different path interpolators.
- Add tests to check out-of-memory error reporting when using BufferedVectorImages.
  
### Changed

- Publish the testsuite jar in addition with to the rip file.
  
### Fixed

- Fix "external image" tests: close the images and calibrate the images heap.

## [2.1.0] - 2023-02-06

### VEE Port Requirements

- MicroVG API 1.2
- VG Pack 1.2.1
- C Module MicroVG 2.1.0

### Added

- Add test to check the clip and the translation when drawing an image.
- Add test to check the "empty" drawings of a string.

### Fixed

- Make TestImageExternal and TestPath compatible with Android.
- Do not print debug logs in TestMatrix when the debug constant is not set.

## [2.0.1] - 2022-12-30

### VEE Port Requirements

- MicroVG API 1.2
- VG Pack 1.2.1
- C Module MicroVG 2.1.0

### Fixed

- TestBlendMode requires a non-null image heap size. 

## [2.0.0] - 2022-12-29

### VEE Port Requirements

- MicroVG API 1.2
- VG Pack 1.2.1
- C Module MicroVG 2.1.0

### Added

- Add a mechanism to run the full testsuite and a single test (in MicroEJ launch mode) using the same properties.
- Add test to check the side effects on Matrix.setConcat().
- Add tests for resource image closing.
- Add tests for external image loading.
- Add drawOnCircle tests with complex layouts.
- Add test with a very long path.
- Add more cases in blend mode test.

### Changed

- Close images in the color filter tests.
- Change test accuracy for Android (new pixel difference formula).
- Each test embeds only the necessary resources (not all the resources).

### Removed

- Remove the "wrong" vector image (no meaning with RAW format).

### Fixed

- Add missing clearScreen before FontExternal tests.
- Fix expected results for SRC and SRC_IN blend modes.
- Add tests for elapsed time outside the animated image duration.

## [1.1.0] - 2022-09-02

### VEE Port Requirements

- MicroVG API 1.1
- VG Pack 1.1.0
- C Module MicroVG 2.0.0

### Added

- Add test to check the use of external VectorFonts.
- Restore tests that close a VectorFont.
- Add test to check the use of VectorImageBuilder.
- Add test for complex text layout feature.
- Adjust some expected results to match Android specification.

### Changed

- Adapt drawStringOnCircle tests as character bboxes are joined at baseline.
  
## [1.0.0] - 2022-05-13

### VEE Port Requirements

- MicroVG API 1.0
- VG Pack 1.0.0

### Added

- Extract microvg-impl tests.
- Extract VectorFont tests.

---  
_Copyright 2022-2026 MicroEJ Corp._\
_Use of this source code is governed by a BSD-style license that can be found with this software._\
_Build: 7E4D1F7C_
