Releases: Chlumsky/msdfgen
Releases · Chlumsky/msdfgen
Version 1.13
- Improved BMP file output - support for BGRA (
mtsdfmode), optimized size of grayscale files- For builds without PNG support, BMP replaces TIFF as the default output format
- Fixed incorrect output with asymmetrical distance range when inversion occurs due to winding correction (
-guesswinding/-reversewinding) or scanline pass (-scanline) - The library now operates on bitmap section references (instead of contiguous bitmap references), which makes it possible to generate a distance field directly into a subsection of a larger bitmap or a bitmap with the opposite row ordering
- Improved semantics of specifying Y-axis orientation (upward / downward)
- Improved precision of cubic curve distance computation
- Fixed a bug incorrectly adjusting convergent edge segments in shape normalization
- Renamed options
-guesswinding,-reversewinding,-keepwindingfrom-guessorder, ... for clarity (old names kept for compatibility) - Adjusted the Readme example shader to improve anti-aliasing in a rotated frame
- Minor CMake fixes
Version 1.12.1
- Fixed a bug applying error correction incorrectly if shape's Y-axis is inverted (mainly affected SVG input)
- Fixed error correction not being applied in the standalone executable in MTSDF mode with the
-scanlineoption (default in non-Skia builds) - Minor CMake adjustments and warning fixes
Version 1.12
- Added the possibility to specify asymmetrical distance range (
-arange,-apxrange) - Added the ability to export the shape into an SVG file (
-exportsvg) - Edge coloring no longer colors smooth contours white, which has been found suboptimal
- Fixed incorrect scaling of font glyph coordinates. To preserve backwards compatibility, the user has to enable the fix with an explicit additional argument:
-emnormalizein standalone,FONT_SCALING_EM_NORMALIZEDin API for coordinates in ems-noemnormalizein standalone,FONT_SCALING_NONEin API for raw integer coordinates- The default (backwards-compatible) behavior will change in a future version; a warning will be displayed if neither option is set
- Added two new developer-friendly export image formats: RGBA and FL32
-sizeparameter renamed to-dimensionsfor clarity (old one will be kept for compatibility)generate*SDFfunctions now combine projection and range into a single argument (SDFTransformation)- Conversion of floating point color values to 8-bit integers adjusted to match graphics hardware
- Improved edge deconvergence procedure and made sure that calling
Shape::normalizea second time has no effect - Fixed certain edge cases where Skia geometry preprocessing wouldn't make the geometry fully compliant
- The term "perpendicular distance" now used instead of "pseudo-distance" (PSDF instead of PseudoSDF in API)
- Fixed a bug in
savePngwherefclosecould be called on null pointer - Minor code improvements
Version 1.11
- Reworked SVG parser, which now supports multiple paths and other shapes - requires Skia
- Major performance improvements due to inlining certain low-level classes
- A limited version of the standalone executable can now be built without any dependencies
- Fixed
listFontVariationAxeswhich previously reported incorrectly scaled values - Fixed potential crash when generating SDF from an empty
Shape - Fixed a small bug in the error correction routine
- Errors now reported to
stderrrather thanstdout - All command line arguments can now also be passed with two dashes instead of one
- Added
-versionargument to print the program's version Shapecan now be loaded from a pointer to FreeType'sFT_Outline- Added hidden CMake options to selectively disable PNG, SVG, or variable font support
- Added CMake presets
- Other minor bug fixes
Version 1.10
- Switched to vcpkg as the primary dependency management system
- Switched to libpng as the primary PNG file encoder
- Parameters of variable fonts can be specified
- Fixed a bug that prevented glyph 0 to be specified in a glyphset
Version 1.9.2
- Improved detection of numerical errors in cubic equation solver
- Added
-windingpreprocessoption - Fixed edge coloring not restored if lost during preprocessing
Version 1.9.1
- Fixed an edge case bug in the new MSDF error correction algorithm
Version 1.9
- Error correction of multi-channel distance fields has been completely reworked
- Added new edge coloring strategy that optimizes colors based on distances between edges
- Added some minor functions for the library API
- Minor code refactor and optimizations
Version 1.8
- Integrated the Skia library into the project, which is used to preprocess the shape geometry and eliminate any self-intersections and other irregularities previously unsupported by the software
- The scanline pass and overlapping contour mode is made obsolete by this step and has been disabled by default. The preprocess step can be disabled by the new
-nopreprocessswitch and the former enabled by-scanlineand-overlaprespectively. - The project can be built without the Skia library, forgoing the geometry preprocessing feature. This is controlled by the macro definition
MSDFGEN_USE_SKIA
- The scanline pass and overlapping contour mode is made obsolete by this step and has been disabled by default. The preprocess step can be disabled by the new
- Significantly improved performance of the core algorithm by reusing results from previously computed pixels
- Introduced an additional error correction routine which eliminates MSDF artifacts by analytically predicting results of bilinear interpolation
- Added the possibility to load font glyphs by their index rather than a Unicode value (use the prefix
gbefore the character code in-fontargument) - Added
-distanceshiftargument that can be used to adjust the center of the distance range in the output distance field - Fixed several errors in the evaluation of curve distances
- Fixed an issue with paths containing convergent corners (those whose inner angle is zero)
- The algorithm for pseudo-distance computation slightly changed, fixing certain rare edge cases and improving consistency
- Added the ability to supply own
FT_Facehandle to the msdfgen library - Minor refactor of the core algorithm
Version 1.7.1
- Fixed an edge case bug in scanline rasterization