Skip to content

Releases: Chlumsky/msdfgen

Version 1.13

30 Nov 12:52

Choose a tag to compare

  • Improved BMP file output - support for BGRA (mtsdf mode), 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, -keepwinding from -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

31 May 17:55

Choose a tag to compare

  • 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 -scanline option (default in non-Skia builds)
  • Minor CMake adjustments and warning fixes

Version 1.12

18 May 09:12

Choose a tag to compare

  • 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:
    • -emnormalize in standalone, FONT_SCALING_EM_NORMALIZED in API for coordinates in ems
    • -noemnormalize in standalone, FONT_SCALING_NONE in 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
  • -size parameter renamed to -dimensions for clarity (old one will be kept for compatibility)
  • generate*SDF functions 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::normalize a 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 savePng where fclose could be called on null pointer
  • Minor code improvements

Version 1.11

11 Nov 14:27

Choose a tag to compare

  • 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 listFontVariationAxes which 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 stderr rather than stdout
  • All command line arguments can now also be passed with two dashes instead of one
  • Added -version argument to print the program's version
  • Shape can now be loaded from a pointer to FreeType's FT_Outline
  • Added hidden CMake options to selectively disable PNG, SVG, or variable font support
  • Added CMake presets
  • Other minor bug fixes

Version 1.10

15 Jan 11:29

Choose a tag to compare

  • 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

01 Dec 20:53

Choose a tag to compare

  • Improved detection of numerical errors in cubic equation solver
  • Added -windingpreprocess option
  • Fixed edge coloring not restored if lost during preprocessing

Version 1.9.1

09 Jul 14:07

Choose a tag to compare

  • Fixed an edge case bug in the new MSDF error correction algorithm

Version 1.9

28 May 18:00

Choose a tag to compare

  • 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

17 Oct 11:37

Choose a tag to compare

  • 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 -nopreprocess switch and the former enabled by -scanline and -overlap respectively.
    • The project can be built without the Skia library, forgoing the geometry preprocessing feature. This is controlled by the macro definition MSDFGEN_USE_SKIA
  • 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 g before the character code in -font argument)
  • Added -distanceshift argument 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_Face handle to the msdfgen library
  • Minor refactor of the core algorithm

Version 1.7.1

09 Mar 12:47

Choose a tag to compare

  • Fixed an edge case bug in scanline rasterization