
\frz-91 left-to-right
\frz-90 left-to-right
\frz0 left-to-right
\frz45 left-to-right
\frz89 left-to-right
\frz90 left-to-right
\frz90 left-to-right
\frz91 right-to-left
\frz135 right-to-left
\frz180 right-to-left
\frz180\frx180\fry180 right-to-left
\frz269 right-to-left
\frz270 left-to-right--- a/libass/ass_parse.c
+++ b/libass/ass_parse.c
@@ -995,8 +995,8 @@ void process_karaoke_effects(ASS_Renderer *render_priv)
x_start = 1000000;
x_end = -1000000;
for (cur2 = s1; cur2 <= e1; ++cur2) {
- x_start = FFMIN(x_start, d6_to_int(cur2->bbox.xMin + cur2->pos.x));
- x_end = FFMAX(x_end, d6_to_int(cur2->bbox.xMax + cur2->pos.x));
+ x_start = FFMIN(x_start, d6_to_int(cur2->pos.x));
+ x_end = FFMAX(x_end, d6_to_int(cur2->pos.x + cur2->advance.x));
}
dt = (tm_current - tm_start);

\frz-91
\frz-90
\frz0
\frz45
\frz89
\frz90
\frz90
\frz91
\frz135
\frz180
\frz180\frx180\fry180
\frz269
\frz270
\frz-91
\frz-90
\frz0
\frz45
\frz89
\frz90
\frz90
\frz91
\frz135
\frz180
\frz180\frx180\fry180
\frz269
\frz270
\frz-91
\frz-90
\frz0
\frz45 wtf
\frz89
\frz90
\frz90
\frz91
\frz135
\frz180
\frz180\frx180\fry180
\frz269
\frz270
\frz-91 left-to-right
\frz-90 left-to-right
\frz0 left-to-right
\frz45 left-to-right
\frz89 left-to-right
\frz90 left-to-right
\frz90 left-to-right
\frz91 right-to-left
\frz135 right-to-left
\frz180 right-to-left
\frz180\frx180\fry180 right-to-left
\frz269 right-to-left
\frz270 left-to-rightThe leftmost pixel of each item is always displayed. This is not visible in the word “text” (except with \frz-91) because its leftmost pixel is transparent. However, this is visible in the word “kara” and the parenthesis.

\frz-91 left-to-right
\frz-90 left-to-right
\frz0 left-to-right
\frz45 left-to-right
\frz89 left-to-right
\frz90 left-to-right
\frz90 left-to-right
\frz91 right-to-left
\frz135 right-to-left
\frz180 right-to-left
\frz180\frx180\fry180 right-to-left
\frz269 right-to-left
\frz270 left-to-right