| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Make sure to correctly handle situations where glyphs
have info->linebreak and info->skip set at the same time.
Fixes libass#44.
|
|
|
|
| |
This isn't part of a style. Fixes libass#45, GC#116.
|
|
|
|
| |
Fixes libass#8.
|
|
|
|
| |
Fixes libass#16 (the remaining sub-issue).
|
|
|
|
| |
...instead of doing this manually.
|
|
|
|
|
| |
Rotation origin was not taken into account
when caching glyph run bitmaps.
|
|\
| |
| | |
Shaper and hash function optimizations
|
| |
| |
| |
| | |
Unroll the hash function with Duff's device for improved performance.
|
| |
| |
| |
| |
| |
| |
| | |
start/end of feature tags is unsigned, so use the proper constant
to signal to HarfBuzz that these features are global. This allows
HarfBuzz to cache shape plans, and that can considerably speed up
shaping, especially if many small runs need to be shaped.
|
|/ |
|
|
|
|
|
|
| |
Rewrite the core of the harfbuzz shaping function. Gets rid of the
MAX_RUNS limit of runs per line and reuses a single hb_buffer_t,
which should be more efficient.
|
|
|
|
| |
Now they're the same as in ass_utils.h.
|
|
|
|
| |
They're not even used.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Events with a clip mask but no text such as just
Dialogue: ...,{\clip(m 47 32 )}
had their clip masks carried over to the next event.
Fixes GitHub issue #22.
|
|
|
|
| |
No functional changes.
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Use more warning flags
|
| | |
|
| | |
|
| |
| |
| |
| | |
No more double pointer dereferencing.
|
| |
| |
| |
| |
| |
| |
| | |
The idea is that more recently-added cache items are more likely to
get hits.
Signed-off-by: wm4 <wm4@nowhere>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We can rely on fast multiplication and good compilers.
v2: use default FNV-1a prime
Signed-off-by: wm4 <wm4@nowhere>
Signed-off-by: Grigori Goronzy <greg@chown.ath.cx>
|
| |
| |
| |
| | |
Some broken fonts are dropped by Fontconfig during compacting.
|
|/ |
|
|
|
|
|
|
|
| |
These aren't very useful for debugging due to the high volume of the log
output in problem cases. In fact, all they do is making the code slower
(the message callback can easily appear in the profiler output, even if
the callback doesn't actually print the messages).
|
|
|
|
| |
This reduces the frequency of reallocations.
|
|
|
|
|
|
|
|
| |
Times in \fade(,,,-1,fadein,fadeout,-1)
are interpreted as in \fad(fadein,fadeout).
Make sure we check the times in the same
order as VSFilter in case they are not sorted.
|
|
|
|
|
| |
The end time is reset to line duration if and only if it is zero.
Negative accelerations are allowed (and can cause overflow later).
|
|
|
|
|
| |
Trailing \N is effectively ignored, but
\N\N should still yield an empty line.
|
| |
|
|
|
|
| |
Confirmed with VSFilter. This complements the previous commit.
|
|
|
|
|
| |
This brings us in line with VSFilter
and also fixes Google Code issue #101.
|
| |
|
|
|
|
| |
hspacing affects opaque box borders.
|
| |
|
|
|
|
|
|
|
|
| |
VSFilter does not do this.
The code being removed was already buggy: i > 0 should
have been "got any non-skipped glyphs since last_break?",
and hspacing should have been taken from glyphs[i-1].
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
b61d260b attempted to add support for \p scaling to \pbo.
However, while it fixed the exact sample originally reported,
it broke \pbo with other \p values, including \p1, by confusing
the direction of scaling and the units in which \pbo is measured.
In addition, the descenders assigned to drawings have always
had a wrong sign, causing lines that contain drawings with \pbo
to be shifted in the wrong direction: negative \pbo raised bottom-
aligned lines, while positive \pbo lowered top-aligned lines.
All errors and fixes have been confirmed with VSFilter.
|
|
|
|
|
| |
VSFilter forgets to scale this distance,
just like it forgets to scale blur radius.
|
| |
|
|
|
|
| |
Obtained by reading the xy-VSFilter source code.
|
|
|
|
| |
The argument is a relative amount. The unit is: \fs+1 = +10%.
|
|
|
|
| |
Unlike what the cc635086 message says, VSFilter does not animate them.
|
| |
|
| |
|
|
|
|
| |
This complements 5903771e.
|
|
|
|
|
|
|
|
|
|
| |
The code was confusing glyph index and Unicode codepoint.
256df617 attempted a fix but merely moved the wrong code.
Fixes Google Code issue #94.
Vertical ligatures are possibly still broken, but
horizontal ligatures and non-ligatures are correct now.
|
| |
|
| |
|
|
|
|
| |
Based on xy-VSFilter commit 54391d3a.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
For whatever reason FT_Vector points[4] = { ... }; needs to come at the
beginning of a scope. Since that block was duplicated, just extract it
to a function.
This does not include buildsystem support, so actually compiling with
VC++ requires creating a project and supplying a config.h file.
Signed-off-by: wm4 <wm4@nowhere>
|
| |
|
|
|
|
| |
The "if (0) { // cool ;)" is just mindblowing.
|
|
|
|
|
|
| |
Based on the patch by chadr123.
See google code issue #113.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Comparing this rendering of this line:
{\fnTahoma\c&H000000&\fs100\an7\fay0.115\pos(240,250)}——————–>{\fay0.0}——>
To this line:
{\fnTahoma\c&H000000&\fs100\an7\fay0.0\pos(240,250)}——————–>{\fay0.0}——>
The second arrow is in the same place for both lines when using
VSFilter, but the origin of the second shear is different when using
libass.
After every change in \fay or a newline, the vertical offset resets
to 0.
Fixes issue #80. Bug report and patch by BwackNinja (BwackNi...@gmail.com)
(this commit corresponds to the patch issue_80_3.patch)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
ass_step_sub() assumed that the subtitle event list was sorted by event
start time, but that is not guaranteed. Making the list sorted is not
an option. (At least for now - too many issues are in the way to get
such a change being done.) Fix this function so that it works with an
unsorted event list.
Semantics regarding corner cases might be slightly different, such as
what happens if the now parameter coincides with event start/end, or
behavior with overlapping subtitles.
|
|
|
|
|
| |
Since font_size is usually normalized to 256, scale_x/y has to be used
for this purpose.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 05eb520 missed some duplicated bits in ass_shaper.c.
<wm4> oh crap
<zgreg> oh crap indeed
Instead of duplicating the logic in ass_shaper.c, just change the
glyphs before they even get into processing. This way, all code
reading the font size etc. is affected. This essentially reverts
commit c207000c, because it's not needed anymore.
|
|
|
|
|
|
|
|
| |
'\r' characters weren't skipped correctly.
SKIP_SYMBOL from original patch renamed to IS_SKIP_SYMBOL.
Signed-off-by: wm4 <wm4@nowhere>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was broken since commit f780146. For reasons why, read the commit
message of that commit. To make it short, we set the font size to
something large and constant (256), and scale the font outlines returned
by freetype to the size we need in order to get smooth animation and
accurate positioning.
Of course, this obviously breaks hinting. Fix hinting by not using the
hack mentioned above if hinting enabled.
To mitigate the issues caused by freetype grid fitting and extremely
bad ASS scripts (such as setting font size to very small values and
scaling them up with \fscx/y), we still adjust the font size such that
the font is never scaled in Y direction (only in X direction, because
the \fscx/y tags can change aspect ratio).
Also see google code issue #46.
|
| |
|
|
|
|
|
| |
The old include statement works only by coincidence, and will actually
break the build on certain setups.
|
| |
|
|
|
|
|
|
|
|
| |
Some fonts stuff a signed, negative value into this unsigned
field. This usually causes very small and wrongly positioned
rendering. Also handle usWinAscent similarly, just in case.
Fixes issue #106.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes google code issue #88.
process_text() garbles the memory as the text is parsed.
This also fixes that the user provided buffer implicitly had to
be null terminated. This wasn't obvious, because the caller
passes in the buffer length. libass ignored the buffer length
(unless a codepage was provided and iconv was enabled), and
happily read past the end of the buffer.
It would be much nicer if the parsing code would be fixed,
instead of just copying the input buffer. Maybe one day.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the explicit check whether the ASS_Track and ASS_Renderer were
created from the same ASS_Library object. Logging will not be entirely
consistent (some log messages go to the ASS_Track library when
rendering), but otherwise it works.
ASS_Library also contains embedded fonts added with ass_add_font().
It looks like the renderer will use the fonts from the ASS_Renderer
library object.
|
|
|
|
|
|
| |
Trim '*' from the start of style name fields of Style
and Dialogue lines and normalize the case of "Default"
in the style name field of Dialogue lines.
|
|
|
|
|
| |
Make \rSTYLENAME with an invalid STYLENAME fall back to
line style rather than to Default. This fixes issue #104.
|
|
|
|
|
|
|
|
|
| |
Commit 0e1702ad7a6a827d "Add ass_set_storage_size and fix related scaling issues"
attempted to fix blur scaling. This breaks blur scaling for players
which don't call ass_set_storage_size().
This commit reverts the default behavior to the old behavior. The
behavior when ass_set_storage_size() is called should be unchanged.
|
|
|
|
|
|
|
|