CARVIEW |
Navigation Menu
-
Notifications
You must be signed in to change notification settings - Fork 232
Releases: libass/libass
Release 0.17.4
Compare
This is a small release mainly adding a new API for manually or automatically pruning old, no longer needed event data as well as a toggle for selective blur overrides.
Detailed Changes:
- add new API to prune old events from memory
ass_prune_events
for manual pruningass_configure_prune
to set up automatic pruning
- add
ASS_OVERRIDE_BIT_BLUR
flag - fontconfig: fix minor memory leaks in pathological font setups
- coretext: fix build on older compilers or Mac OS X 10.5
- checkasm: fix build for older compilers
- aarch64: fix assembly build on strict compilers due to oversized align
- meson: improve ASM configuration on x86 Android
- meson: align MSVC warnings and optimisations closer to gcc-like compilers
- meson can now build all dev utility executables
Assets 6
Release 0.17.3
Compare
This release fixes a 0.17.2 regression in the fontconfig font provider as well as some build issues. Furthermore it brings API enhancements and a performance improvement for a specific case.
The newly added ass_malloc
and ass_free
API should always be used when directly interacting with libass-owned or provided data to be safe on setups with multiple allocators as it’s not too uncommon on Microsoft Windows.
However libass continues to always use the standard allocators provided at build time; no currently working setups break.
Detailed Changes:
- Fix 0.17.2 regression in the fontconfig fontprovider leading to undesirable widths being chosen from large typographic families
- Fix configure generated with slibtool-provided autoconf macros
- Fix
make check
for shared-only builds - Constify some API parameters in a backwards-compatible manner
- Add new
ass_malloc
andass_free
API functions - Tweak default optimization flags
- Speed up parsing of events with very long override blocks
- Improve handling of HarfBuzz-related failures
Assets 6
Release 0.17.2
Compare
This release brings optimized assembly routines for aarch64, as well as numerous individual improvements and fixes.
Furthermore, Meson/muon is added as a secondary build system restoring first-party support for MSVC builds. Note however, this build setup is not at feature parity with autotools and in particular not considered suitable for packaging purposes on non-Windows platforms. For more details see our README.
Detailed Changes:
- Fix rendering of \h in certain cases
- Fix a minor memory leak in the CoreText and DirectWrite font provider
- Fix wrong ASS_Image dimensions for huge
BorderStyle
=4 backgrounds potentially leading to out of bound reads by API users - Improve quality of animated rectangular clips
- Improve accuracy of cache limits
- Full-Unicode cmaps are now always preferred
- Improve font selection compatibility in the DirectWrite font provider
- Improved documentation
- Color mangling notes in ass_types.h were updated for tone mapping and HDR video
- Guidelines for producing portable ASS files can now be found in our wiki
- Updating selective overrides now forces a cache clear to avoid issues with outdated caches
- Frame and storage resolutions are now limited to what a single
ASS_Image
can represent make check
now runscheckasm
if assembly is enabled- CoreText can now be used on Mac OS X 10.5
- Meson/muon is now offered as a secondary build system bringing back first-party MSVC support
Note however it is not at feature parity with autotools in all cases - aarch64: add optimized assembly routines covering the same set as on x86; they work on both little and big endian systems
- x86: add SSSE3 versions of some assembly routines to help CPUs without AVX2
- x86: it is now possible to build binaries with optimized assembly and SHSTK support
- Improve VSFilter compatibility:
- Trailing spaces are no longer trimmed from style and event string fields (this does not affect Text)
- All BiDi paragraph separators now delimit BiDi runs
- Fix treatment of font weights < 10
- Match GDI's faux italic slant
- Employ faux italics and faux bolding in the same cases as GDI
- Better match font selection with regard to italic and weight
- Treat empty Style name as "Default"
- Various drawing fixes
- Reject drawings not starting with a valid m command or invalid m followed by valid n
- Drop coordinates following invalid commands rather than appending them to the prior command
- Ignore p commands without enough preceding nodes
- Partially fix s and p commands used outside of a properly closed b-spline sequence
Assets 6
Release 0.17.1
Compare
This is an important, bug-fix-only release.
Users of 0.17.0 are advised to upgrade to 0.17.1 soon. Nothing has changed besides fixing crash and build-stopper bugs, so there are no side effects.
Users of 0.16.0 are also affected by the buffer overread bug and are advised to upgrade or at least to backport the relevant fix themselves.
- Fix buffer overread if soft-wrapping occurred and
ASS_FEATURE_WHOLE_TEXT_LAYOUT
was enabled via API or due toEncoding -1
(bug introduced in 0.16.0) - x86: detect GNU Hurd and configure NASM appropriately
Assets 6
Release 0.17.0
Compare
This release’s major feature is the addition of a new ASS ScriptInfo header pair: LayoutResX
and LayoutResY
. The introduction has been coordinated with active VSFilters and will soon be available in xy-VSFilter and XySubFilter as well.
Since the beginning, many features in ASS scale relative to or are otherwise affected by the storage resolution of the video file the subs are bundled with. Adjusting subs for different video resolutions traditionally took non-trivial effort. Of course this behavior must be kept by default to preserve compatibility with existing files. But now, setting both of the new headers to a positive, non-zero value will replace the video storage resolution with the specified resolution for the whole file, allowing easy reuse across all encodes of the same display aspect ratio. This includes PAR effects, so reuse across anamorphic and non-anamorphic releases is possible too.
Apart from that, some notes for package maintainers:
- for
ASS_FEATURE_WRAP_UNICODE
to be usable at runtime, libass must be linked against the new optional dependency libunibreak whose source currently resides at https://github.com/adah1972/libunibreak - switching to a non-recursive build means it is no longer possible to invoke make in subdirectories. However this wasn’t really useful anyway and everything else, including uninstalled binary locations, was kept unchanged.
- reminder: as announced last release more keys are now authorized for signing release tags and tarballs; a signature of any one of those keys is sufficient. See the
MAINTAINERS
file in the last or this release’s tarball for a complete list and more details.
Detailed Changes:
- Fix various parts relating to automatic linebreaking
- Fix rendering when hinting was enabled and fontsizes or scales are zero
- Switch build to a non-recursive setup for improved parallelism
- Improve quality of SSA Effects movement
- Further documentation improvements
- Completely invalid Events are now discarded during parsing
- Introduction of
LayoutRes{X,Y}
script headers - New
AlphaLevel
style override to set all alpha values while keeping the color - Add
ASS_FEATURE_WRAP_UNICODE
to allow automatic linebreaks in accordance with the Unicode line breaking algorithm instead of ASS' much stricter breaking rules. For the feature to be available at runtime, libass must be linked against the new optional dependency libunibreak. - Improve VSFilter compatibility:
- Fix premature truncation of animated alphas (was a 0.15.0 regression)
- Fix handling of small delay parameters for legacy SSA Effects
- Fix x-scaling with
PlayResX
- Fix x-scaling for anamorphic video (except for
\be
whose scaling remains buggy in general) - Support SSA's
AlphaLevel
style field - Support the
\kt
override tag from VSFilter's v4++ set - Parse
ScriptType
headers - Parse integer header, style and event field values like VSFilter
- Ignore trailing whitespace in an event's text
Assets 6
Release 0.16.0
Compare
This release brings a new ASS_FEATURE_WHOLE_TEXT_LAYOUT
API toggle, brings an important API change on (only) Microsoft’s Win32 platform to enable arbirtrary paths to be used rather than only ANSI ones, fixes an incompatibility with FreeType versions >= 2.11.1 on Win32 and brings many more bug and compatibility fixes as well as other improvements.
API users are highly encouraged to pay special attention to the following points:
-
The documentation has been expanded and multiple errors in it have been fixed. It may be worthwhile to reread the documentation for all functions you are using (or all of it). If you still have questions afterwards or spot an error, please contact us so the docs can be further improved.
-
For those on Win32 only (other platforms do not require special handling of the path’s encoding):
The new support for arbitrary paths via the new dual encoding used in the majority of our API is mostly backward compatible, i.e. continuing to use
fopen
ANSI paths works mostly as well (or bad) as before except when there are actual on-disk name collisions. However, the other way around, using the new encoding with older libass binaries, will in general fail unless the paths happen to be pure 7-bit US-ASCII.If you want to make use of arbitrary paths but also wish to continue to support older libass versions, you should continue to always use the
fopen
encoding ifass_library_version() < 0x01502002
.Technically, this should be accompanied by an increase in the minor soname version, but there is none because the change is Win32-specific and the minor soname version is not even used by the dynamic linker in common MS Windows setups.
Detailed changes:
- Fix missing
-framework
options in libass.pc on macOS - Fix missing GDI or DirectWrite options in libass.pc on Win32
- Fix crashes with fonts missing Postscript names and without one being synthesised by the font provider
- Fix crashes on negative fontsizes and some overflows
- Fix a rare memory leak introduced in 0.13.0
- Fix minimum dependency versions in configure and our pc-file
- Fix our public headers for use with GCC versions between 3.1.0 and 4.5.0 (was a regression introduced in 0.15.0)
- x86: Fix potential buffer over-read by 16 bytes with AVX2 assembly when large tiles are not enabled (the default)
- x86: Fix PIC flags not being interpreted by the assembler, breaking the asm-enabled build setup on NetBSD and OpenBSD. On 32-bit x86, if the toolchain requires PIC objects and relies on compiler defaults to get PIC implicitly, you need to pass
--with-pic
to configure to ensure NASM always produces PIC objects - x86: Fix AVX support not being detected on non-Intel CPUs and some VMs
- x86: Fix CPUID being used on CPUs not supporting the instruction (<= i486) and the way it is used for CPUs with less than 7 CPUID-leafs which could lead to crashes due to illegal instructions
- MS Windows-only issue: Fix crashes with FreeType >= 2.11.1 on Win32 when rendering strikethrough or underline
- Improve
\iclip
quality - Improve quality of very small outlines
- Switch to wyhash for much better cache performance
- Propagate ZWJ/ZWNJ effects across glyph run boundaries
- Do not depend on compiler-specific defines to actually use built assembly
- Expand documentation and fix mistakes in it
- configure now errors out if an explicitly requested feature is unavailable
- MS Windows-only issue: ease linking against static/shared GNU FriBidi
- Add
ASS_FEATURE_WHOLE_TEXT_LAYOUT
to apply bidi, shaping and \fay to the entire unsplit event text. The non-portableEncoding=-1
mode always behaves as if the feature were enabled - MS Windows-only issue: add support for arbitrary Unicode paths; see documentation of related functions for details
- Improve VSFilter compatibility
- Do not treat format lines using
Actor
in place ofName
as custom format lines. The former is used by VSFilter itself, the latter by Aegisub - Run bidi and shaping on each glyph run separately by default
- Match VSFilter’s \fsp effects on bidi and shaping
- Match VSFilter’s \fay behaviour
- Support non-Unicode font cmaps when Win32 API or iconv is available and can convert to the relevant encoding
- Treat empty clip outlines as if everything was outside the clip not inside (was a 0.14.0 regression)
- Parse integer parameters of override tags more like VSFilter
- Do not treat format lines using
This release is signed by the same OpenPGP key as the 0.15.x series of releases. Future releases may be signed with other keys listed in the new MAINTAINERS
file.
Assets 6
Release 0.15.2
Compare
This is a bug fix release without API or ABI changes, mainly to fix more known 0.15.0 and 0.15.1 regressions. But as a bonus, it is now possible to build the DirectWrite system font provider for Microsoft’s Universal Windows Platform (UWP).
Two known minor 0.15.x DirectWrite system font regressions remain:
-
when a font is attached/memory-loaded but a different (non-attached) style of the same font is used by the subtitles
(only the attached style[s] will be used; this also affects Core Text since 0.13.0 but not Fontconfig); -
in the unlikely case that the full name of a system font equals the family name of another system font
(only the family name matches will be found).
Also please note that our IRC channel #libass has moved from freenode.net to Libera.Chat, and all presence on freenode.net has been fully retired.
Changes:
- Fix some known 0.15.x regressions:
- Fix Core Text font fallback failing on some fonts with multiple names
- Fix DirectWrite failing to look up any but the first loaded variant of system fonts
- Fix some format string bugs, which could lead to garbled log messages or on some platforms crashes
- Fix
ass_set_fonts_dir
failing to load long paths - Better handling of control characters that have no associated font glyphs
- DirectWrite: font lookup is now closer to VSFilter
- DirectWrite: this font provider can now be built for UWP
Assets 4
Release 0.15.1
Compare
This is purely a bug fix and polish release, with no significant API or ABI changes.
The only API change is that ass_add_font
is now declared to accept const char *
. Previously it took only char *
, but const has worked in practice since the very first standalone libass release.
- Fix currently known 0.15.0 regressions:
- Fix crashing on some ASS files with embedded fonts
- Fix total font fallback failure with some fonts on Core Text
- Fix embedded and memory fonts not actually being used unless
ass_set_fonts
was called after they have been added - Fix events assuming the largest xbord-value of a preceding event of the same frame during collision handling
- Fix
\fscx0
and\fscy0
making more text disappear than they should - Fix shift in vertical positioning of some right-to-left events with
\an4-6
,\pos
,\move
or Scroll effects - Fix imprecise output for
\be
with huge argument - Fix the
--enable-large-tiles
configure switch doing nothing - Fix output of ASM-enabled builds deviating from non-ASM builds
- Fix ASM-builds on Haiku and 32-bit *BSDs
- Overhaul x86 assembly for better performance and to allow ASM-enabled PIC-builds on 32-bit
- Reduce temporary allocation in rendering
- DirectWrite: request fonts on demand for better performance and improved compatibility with external on-demand font activation
- Log libass version numbers upon renderer startup
- Accept pointers to const as arguments to
ass_add_font
- Improve VSFilter compatibility:
- Disregard zero area events in collision handling
- Do not apply
\fsp
to vector drawings - Fix bug preventing cutting out glyphs from border & shadow with abnormal
\fad
values (or causing aliasing artifacts in some cases with normal values)
Assets 4
Release 0.15.0
Compare
Boo! Three long years in the making due to large internal changes, this long-awaited release brings bug fixes, speed, and a new mechanism for opting into VSFilter-incompatible features:
- Fix backwards/VSFilter-incompatible font sizes with FreeType 2.10+
- Improve speed via better caching
- Require HarfBuzz unconditionally to ensure good shaping for complex scripts
ass_set_use_margins(true)
now simply places text on the whole screen instead of attempting to tie it to video positioning (set by the margin values) and failing in various ways when margins are used to implement pan & scan in a video player- Add
ass_track_set_feature()
& catch-allASS_FEATURE_INCOMPATIBLE_EXTENSIONS
- Add
ASS_FEATURE_BIDI_BRACKETS
to enable Unicode 6.3+ bracket matching when applying the Unicode Bidirectional Algorithm (incompatible with VSFilter; requires libass built with FriBidi 1.0+) - Fix stack overflow on deeply nested
\t
tags - Fix positioning of events with leading line breaks
- Fix small but nonzero
\bord
becoming\bord0
(regression in 0.14.0) - Measure
BorderStyle
=4 box padding from glyph border, not from glyph fill - Scale everything from script resolution if storage size is not set (including borders and shadows regardless of
ScaledBorderAndShadow
) - Fix the default aspect ratio calculation when neither
ass_set_pixel_aspect()
norass_set_aspect_ratio()
is called - Multiple fixes for karaoke override tags
- Handle memory allocation failures better: avoid some crashes and produce images closer to truth
- Avoid some integer overflows
- Add internal infrastructure for regression testing
- Improve VSFilter compatibility:
- Treat invalid nested
\t
tags like VSFilter - Make
\t(T,T,...)
at time exactly T use the post-transition values - Make lines stack more like they do in VSFilter
- Default
ScaledBorderAndShadow
to 0 (like VSFilter), except for subtitles that were produced by old FFmpeg/Libav - Make shadow positioning with 3D transforms match VSFilter’s
- Cut out glyphs from border & shadow in all the same cases as VSFilter
- Match VSFilter on animated color tags with negative acceleration
- Fix parsing of some files that VSFilter accepts but libass didn’t by ignoring leading whitespace in each line of an ASS file or
CodecPrivate
- Improve font selection with CoreText
- Stop faux-bolding fonts that are too bold to get faux bold in VSFilter
- Ignore leading/trailing spaces when calculating height of nonblank lines
- Match VSFilter on
\fade
with large alpha value arguments - Stop splitting bitmaps on font substitution
- Multiple fixes for
Banner
andScroll
effects - Multiple fixes for karaoke override tags
- Treat invalid nested
Assets 4
Release 0.14.0
Compare
- Brand new, faster and better outline stroker (replaces FreeType stroker)
- Remove option to use the FreeType rasterizer
- Fix spots of missing border around self-intersecting shapes
- Switch from Yasm to NASM for building hand-written assembler code
- Support Core Text font provider on Mac OS X 10.6 and 10.7
- Clear font cache in ass_set_fonts(). This fixes potentially incorrect font choices and an occasional crash if this function is called midway through rendering a file.