summaryrefslogtreecommitdiffstats
path: root/libass/ass_shaper.h
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@blackbox>2011-07-06 23:19:54 +0200
committerGrigori Goronzy <greg@blackbox>2011-07-06 23:24:30 +0200
commit3bb8743641c398e0807322ea74754d7e54fbbc3d (patch)
treee922f720492f52868fa7031fcbb63c18299714b1 /libass/ass_shaper.h
parent87d472953d5eb58a0e0b8d6414e7ffcd3678d83a (diff)
downloadlibass-3bb8743641c398e0807322ea74754d7e54fbbc3d.tar.bz2
libass-3bb8743641c398e0807322ea74754d7e54fbbc3d.tar.xz
Provisional bidi and shaping support
Adds fully working bidirectional text and simple shaping support. The following works: - bidirectional text according to the Unicode Bidirectional Algorithm - simple shaper for mirrored forms (brackets, etc.) according to rule L4 of the Unicode Bidirectional Algorithm - reordering into visual order with correct line wrapping However, the implementation certainly needs efficiency improvements (caching, less malloc'ing), a proper shaper (HarfBuzz) needs to be hooked up and various bugs with karaoke and positioning need to be fixed.
Diffstat (limited to 'libass/ass_shaper.h')
-rw-r--r--libass/ass_shaper.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/libass/ass_shaper.h b/libass/ass_shaper.h
new file mode 100644
index 0000000..7dc2f27
--- /dev/null
+++ b/libass/ass_shaper.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2011 Grigori Goronzy <greg@chown.ath.cx>
+ *
+ * This file is part of libass.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef ASS_SHAPER_H
+#define ASS_SHAPER_H
+
+#include <fribidi/fribidi.h>
+
+void ass_shaper_shape(TextInfo *text_info, FriBidiCharType *ctypes,
+ FriBidiLevel *emblevels);
+void ass_shaper_reorder(TextInfo *text_info, FriBidiCharType *ctypes,
+ FriBidiLevel *emblevels, FriBidiStrIndex *cmap);
+#endif