aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libskrift_draw_text.c2
-rw-r--r--libskrift_get_cluster_glyph.c12
-rw-r--r--libskrift_get_grapheme_glyph.c2
3 files changed, 9 insertions, 7 deletions
diff --git a/libskrift_draw_text.c b/libskrift_draw_text.c
index e827159..f3615d7 100644
--- a/libskrift_draw_text.c
+++ b/libskrift_draw_text.c
@@ -6,7 +6,7 @@ reverse_text(const char *restrict text, size_t text_length, char *restrict s)
{
size_t n, off = text_length;
for (; text_length; text += n, text_length -= n) {
- off -= n = grapheme_bytelen(text);
+ off -= n = grapheme_next_character_break(text, text_length);
memcpy(&s[off], text, n);
}
}
diff --git a/libskrift_get_cluster_glyph.c b/libskrift_get_cluster_glyph.c
index 6b3abaa..67ddf72 100644
--- a/libskrift_get_cluster_glyph.c
+++ b/libskrift_get_cluster_glyph.c
@@ -8,10 +8,12 @@ libskrift_get_cluster_glyph(LIBSKRIFT_CONTEXT *ctx, const char *text, size_t tex
struct libskrift_saved_grapheme *saved, double x, double y, struct libskrift_glyph **glyphp)
{
struct libskrift_glyph *glyph0, *glyph1, *glyph2;
- uint32_t cp0, cp1;
- int state = 0;
+ uint_least32_t cp0, cp1;
+ GRAPHEME_STATE state;
size_t r, len;
+ memset(&state, 0, sizeof(state));
+
*glyphp = NULL;
if (!text_length) {
@@ -23,7 +25,7 @@ libskrift_get_cluster_glyph(LIBSKRIFT_CONTEXT *ctx, const char *text, size_t tex
cp0 = saved->cp;
len = saved->len;
} else {
- len = grapheme_cp_decode(&cp0, (const void *)text, text_length);
+ len = grapheme_decode_utf8(text, text_length, &cp0);
}
if (libskrift_get_grapheme_glyph(ctx, cp0, x, y, &glyph0))
@@ -32,8 +34,8 @@ libskrift_get_cluster_glyph(LIBSKRIFT_CONTEXT *ctx, const char *text, size_t tex
x += glyph0->advance * ctx->char_x_advancement;
y += glyph0->advance * ctx->char_y_advancement;
for (; len < text_length; cp0 = cp1, len += r) {
- r = grapheme_cp_decode(&cp1, (const void *)&text[len], text_length - len);
- if (grapheme_boundary(cp0, cp1, &state)) {
+ r = grapheme_decode_utf8((const void *)&text[len], text_length - len, &cp1);
+ if (grapheme_is_character_break(cp0, cp1, &state)) {
if (saved) {
saved->have_saved = 1;
saved->cp = cp1;
diff --git a/libskrift_get_grapheme_glyph.c b/libskrift_get_grapheme_glyph.c
index e0b699d..79b36dc 100644
--- a/libskrift_get_grapheme_glyph.c
+++ b/libskrift_get_grapheme_glyph.c
@@ -115,6 +115,6 @@ libskrift_get_grapheme_glyph(LIBSKRIFT_CONTEXT *ctx, libskrift_codepoint_t codep
return r;
}
- /* TODO add callback for drawing fallback glyph, draw square by default. */
+ /* TODO Use glyph 0 */
return -1;
}