forked from blinkseb/libass
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Changelog
523 lines (486 loc) · 23.5 KB
/
Changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
libass (0.17.1)
* Fix buffer overread if soft-wrapping occurred and
ASS_FEATURE_WHOLE_TEXT_LAYOUT was enabled via API or due to Encoding -1
(bug introduced in 0.16.0)
* x86: detect GNU Hurd and configure NASM appropriately
libass (0.17.0)
* 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
libass (0.16.0)
* 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-portable `Encoding=-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 of `Name`
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
libass (0.15.2)
* 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
libass (0.15.1)
* 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)
libass (0.15.0)
* 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-all ASS_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() nor ass_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 and Scroll effects
* Multiple fixes for karaoke override tags
libass (0.14.0)
* 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.
libass (0.13.7)
* Fix invalid memory accesses with BorderStyle=4
* Fix change detection bug on frame resizes
* Fix cache bugs with border size
* Reduce precision of border width in font outline caching
* Don't treat :;<=>? as hexadecimal digits in color headers
* Fix parsing of unusual Alignment values in ASS style definitions
* Fix potential truncation in timestamp parsing
* Treat negative PlayResX/PlayResY like VSFilter
* Fixes to parsing of embedded fonts
* Remove arbitrary bitmap limit (fixes issues with subtitle rendering at 4K)
* Allow using shadow offset to adjust size of background with BorderStyle=4
* Fix TrueType/OpenType font collection handling with the DirectWrite backend
libass (0.13.6)
* Bump ABI version to account for the new Justify field in ASS_Style
that was added in 0.13.5.
libass (0.13.5)
* Add Justify style override that changes text justification
(left/right/center) without affecting event positioning.
* Fix ass_set_cache_limits() to affect total bitmap cache size
including composite bitmap cache.
* Number parsing fixes
* Fix illegal read when parsing some numbers in scientific notation
with huge exponents.
* Correctly evaluate numbers in scientific notation with large exponents.
* Correctly evaluate numbers with many leading zeros.
* Bug fixes found with fuzzing
* Fix a small memory leak in the parser.
* Fix illegal read in the parser on specially crafted input with \t tags.
libass (0.13.4)
* Bug fixes found with fuzzing
* Fix memory reallocation in the shaper. (CVE-2016-7972)
* Fix two small memory leaks in the parser and test program.
* Fix illegal read in Gaussian blur coefficient calculations.
(CVE-2016-7970)
* Fix mode 0/3 line wrapping equalization in specific cases which could
result in illegal reads while laying out and shaping text.
(CVE-2016-7969)
libass (0.13.3)
* Improve compatibility/portablility of build system,
should fix e.g. compilation on Solaris.
* Fix memory leak in DirectWrite font provider.
* Fix the rasterizer when rendering some large outlines.
* Remove hack that forced RTL base direction depending on font encoding.
* Greatly improve the internal caches with refcounting and gradual clearing.
libass (0.13.2)
* Add ass_set_check_readorder() API function to disable use of the ReadOrder
field for duplicate checking in ass_process_chunk().
* ass_step_sub(track, now, 0) now finds the start of the subtitle at "now".
* Bug fixes
* Fix an issue with the new duplicate checking, which could lead to
missing subtitles after seeking.
* Fix a crash with CoreText under specific circumstances
libass (0.13.1)
* Much faster duplicate event check in ass_process_chunk. This can
bring a large speedup for embedded subtitles with lots of events.
To make this possible, it is now forbidden to combine calls to
ass_process_chunk with any other method of manipulating the event
list, namely, manual manipulation and calls to ass_process_data,
ass_read_memory and ass_read_file.
* Interpret negative timestamp components as actual negative numbers.
This change increases compatibility with VSFilter.
* Font matching changes for VSFilter compatibility
* Look up fonts that contain PostScript outlines by their PostScript
name instead of their full names. Family names continue to be used
for all fonts.
* Keep spaces in font names
* Drop support for Fontconfig < 2.10.92 to ensure correct font matching
* Bug fixes
* Fix building the assembler code for the x32 ABI (GH #200)
* Fix static linking against libass through pkg-config when libass
uses libiconv
* Fix some small memory leaks, potential crashes and bad data uses
libass (0.13.0)
* Add native font selection backends for OSX (CoreText) and Windows
(DirectWrite). You can now run libass without fontconfig on these
platforms. This fixes problems with fontconfig behaving badly on
these platforms (it could take minutes to scan all system fonts).
Even on Linux, this speeds up loading of embedded fonts (such as
provided by ass_add_font()).
The DirectWrite backend only works on Windows Vista and later. On
XP, fontconfig is still needed. libass can be compiled with both
DirectWrite and fontconfig, and then it will fallback to fontconfig
automatically if DirectWrite is not available at runtime.
* Add ass_get_available_font_providers() API function.
* Change the 4th parameter of ass_set_fonts(). This now selects the
font provider. This is somewhat backwards compatible with the old
behavior, but if you ever passed values other than 0 or 1, your
application might break with this libass release.
* The ass_fonts_update() function now does nothing. It's kept for
backward compatibility only.
* Much faster gaussian blur. This can bring a large speedup with big
blurred signs and such.
* Drop ENCA support
* Bug fixes
* Fix compilation of the freetype rasterizer (disabled by default)
* Fix rendering with some cases of consecutive line breaks (\N\N).
* Fix some memory allocation failure checks
* Avoid system locale dependent behavior by reinventing some standard
C functions
* Fix rendering errors with strikes (GH #193)
* MSVC compilation fixes
libass (0.12.3)
* VSFilter blur compatibility changes
* VSFilter color/alpha parsing compatibility changes
* Bugfixes
* Fix some potential memory leaks and crashes
* Fix large timestamps (larger than about 600 hours)
* Fix a potential crash with the new rasterizer and complex fonts
* Do not apply user-configured line position to non-dialog events
* Strictly clip non-dialog events to the video rectangle
libass (0.12.2)
* Add extern "C" guards to the public headers for C++ compatibility
* Improvements to style override API and implementation
* Bugfixes
* Fix some rasterizer bugs of unknown severity
* Fix a broken memset() of unknown severity
* Make timestamp parsing more lenient, which makes libass accept invalid
files accepted by most other ASS parsers
* Increase compatibility with broken ASS drawings accepted by VSFilter
libass (0.12.1)
* Make ASS drawings with an extremely high number of control points work
This change increases compatibility with VSFilter.
* Bugfixes
* Fix a crash when using newer harfbuzz versions (GH #155)
* Load embedded memory fonts correctly
* Large shadow offsets rendered incorrectly (GH #142)
* Fix incorrect closing of last drawing contour
* Fix issues with undefined behavior in shifts
* Lots of of malloc() error checking
libass (0.12.0)
* Implement fast quad-tree rasterizer in C and SSE2/AVX2 assembly
* Make \be animatable
* Add BorderStyle=4 (GH #105)
* Add selective style override functionality
* ass_set_selective_style_override()
* ass_set_selective_style_override_enabled()
* Support for assembly on DragonFly BSD
* Bugfixes
* Various parser fixes
* Fix premature parser exit on }{ in drawing mode (GH #75)
* Reset clipping mode on every rectangle clip
* Improved error handling for FriBidi and FreeType (GH #131)
* Fix bitmap combining cache
libass (0.11.2)
* Improve yasm version check
* Fix \fscx0 crashes
* Actually export ass_library_version
* Fix change detection with vector clips
* SIMD assembly bugfixes
* Parse drawing numbers as floats (GH #63)
* Fix shaper sign bug (GH #68)
* Initialize \pbo correctly (GH #74)
libass (0.11.1)
* Fix distfile generation
* No functional changes
libass (0.11.0)
* Add bitmap run combining/compositing
This changes the text rendering model and increases compatibility with
VSFilter. It may make rendering faster or slower in certain cases.
* Add AVX/SSE2 implementations for \be and compositing
This adds yasm as (optional) build dependency.
* Add ass_library_version() API funcion (GC #113)
* Add 'profile' program for benchmarks
* Improve gaussian blur
* Fix compilation with MSVC 2013
* Speed up HarfBuzz shaper
* Speed up cache
* Notable compatibility bugfixes
* Reset origin on \fay changes (GC #88)
* Tons of parser fixes
* Fix ascender/descender metrics (GH #8)
* Fix \pbo sign and scaling
* Don't reset wrap style on \r (GC #116, GH #45)
* Notable bugfixes:
* Correctly handle @font advance (GC #94)
* Disable ligatures for non-zero \fsp
* Make sure to release vector clip (GH #22)
libass (0.10.2)
* API additions and some ABI changes, bumped SONAME
* Expose header field for VSFilter color mangling (GC #87)
* Add functions for explicit scaling hints (GC #6)
* Add 'type' field to ASS_Image (GC #31)
* Workaround Freetype's font size grid-fitting where appropriate
* Apply blur to both glyph and border when using opaque box
* Parser bugfixes
* Parse angles in style as number
* Fix fallback event formats
* Make closing ')' optional for some tags
* Fix crazy VSFilter behaviour for \move (GC #90)
* Make \r fall back to line style (GC #104)
* Parse style name like VSFilter
* Ignore junk in nested \t tags
* Make \clip tag arguments mandatory
* Properly handle script and language in the HarfBuzz shaper
* Allow ASS_Track and ASS_Renderer to have different ASS_Library
* Fix stroking in some rare cases
* Correctly handle @font advance (GC #94)
* Fix ascent/descent for some fonts (GC #106)
* Fix ass_step_sub to not require sorted events
* Fix blur scaling
* Don't mutate input strings (GC #88)
* Remove/change some error messages
* Fix various small memory leaks
libass (0.10.1)
* Fix letter spacing
* Add \rSTYLENAME syntax support (GC #43)
* Fix border generation and border style reset (GC #56)
* Fix various issues with bug-for-bug compatibility of
transformations (\fax, \fay, etc.) to VSFilter (GC #46, GC #42)
* Fix drawing parsing (GC #47)
* Various fixes to shaper (GC #54, GC #55, GC#59)
* Fix change detection
* Add ass_set_line_position API to set a vertical subtitle offset
* Fix scaling of drawing baseline offset (\pbo) values
* Fix skipping of zero-width characters for FriBiDi shaper
* Use LTR text base direction by default, similar to VSFilter
libass (0.10.0)
* Bidirectional layout and Arabic shaping via FriBidi (GC #13)
* OpenType shaping via HarfBuzz-ng (GC #13)
* Add API for shaper configuration
* Add support for `Language' Script Info property, this can be used for
hinting the text language
* Vertical layout improvements
* Use `vert' and `vkna' OpenType features for vertical glyph variants
* Position rotated glyphs onto baseline
* Parse font encoding property for base text direction hinting
* Refactor cache system
* Use generic outlines in place of FreeType glyphs
* Direct outline bitmap rendering
* Fix whitespace trimming (GC #35)
* Do not render border if there's no shadow or glyph (GC #29)
* Adjust spacing after a italic to non-italic style change (GC #37)
* Fix fade timing
* Fix x positioning with borders (GC #27)
* Build system tweaks
libass (0.9.12)
* Switch to permissive (ISC) license
* Support \fs+ and \fs- syntax for modifying font size
* Fix word-wrapping
* Improved charmap fallback matching
* Handle a few more VSFilter quirks correctly
* Add a sensible default style
* Fix compilation against libpng 1.5
libass (0.9.11)
* Fix serious memory leaks
* Reduce frame/drawing initialization overhead
libass (0.9.10)
* Basic (incorrect, but working) support for @font vertical text layout
* Fix multiple faces per font attachment
* charmap selection fixes
* Add ass_flush_events API function
* Improve fullname font matching
* Better PAR correction if text transforms are used
* Calculate drawing bounding box like VSFilter
* Performance improvements
* Cache vector clip masks
* Avoid unnecessary glyph copies
* Various rendering fixes
libass (0.9.9)
* Parse numbers in a locale-independent way
* Remove support for freetype < 2.2.1, fontconfig < 2.4.1; this especially
means libass will not extract fonts into the file system anymore
* Disable script file size limit
* Match fonts against the full name ("name for humans")
* Reset clip mode after \iclip
* Improve VSFilter compatibility
* Update API documentation
* A couple of smaller fixes and cleanups
libass (0.9.8)
* Support \q override tag
* Support wrap style 1 (i.e. wrap, but do not equalize line lengths)
* Support border style 3 (opaque box)
* Use the event bounding box (instead of vertical position and height) for
collision detection
* Embold glyphs if no bold variant is available, but was requested
* Modify \fax to be similar to VSFilter
* Trim spaces after line wrapping
* Fix border/shadow overlap combining in some cases
* Disable kerning by default. Use "Kerning=yes" style override or
"Kerning: yes" in [Script Info] to enable it
* Slight bitmap handling optimizations
* Various bugfixes
libass (0.9.7)
* Build system fixes
* Fixed cache lookup and overload problems
* All globals have been eliminated, libass is reentrant
* Dynamically allocate glyph and line buffers
* Fix up stroking of big borders
* Support empty lines (\N\N)
* Support for the following override tags:
\fax, \fay, \xshad, \yshad, \ybord, \xbord, \iclip, \u, \s, \p, \pbo
* Full subpixel accuracy for positioning
* PAR and rotation correction for EOSD rendering
* Drawing mode (including vector \clip and \iclip)
* Fixed a few memory leaks
* Removed MPlayer compatibility code
* Introduced message handling callback
* Various fixes to match VSFilter quirks and Windows font metrics
* Lots of bugfixes
LibASS (0.9.6)
* Various fixes and updates to match VSFilter renderer.
* Support \blur tag and ScaledBordersAndShadow property.
* Fractional arguments and subpixel accuracy.
* Keep positions when pan-and-scan is used.
* Lots of bugfixes and other changes.
LibASS (0.9.5)
* Support '=' and '.' in style name in arguments to ass_set_style_overrides().
* Allow overriding [Script Info] parameters with ass_set_style_overrides().
* Add workarounds for some buggy fonts.
* Remove buggy workarounds for some other fonts.
* Fixed ass_set_line_spacing() (was broken before).
* Negative margin sizes are now used for image cropping.
* Better handling of behind-the-camera objects.
* Case insensitive parsing of SSA/ASS section headers.
* Improved font matching.
* When 2 styles have the same name, the later one is used.
* Fixed several other bugs.