diff --git a/native/include/common.hpp b/native/include/common.hpp index a719a62..582a740 100644 --- a/native/include/common.hpp +++ b/native/include/common.hpp @@ -52,6 +52,7 @@ enum TextBaseline { }; enum TextDirection { + kInherit, kLTR, kRTL }; diff --git a/native/src/context2d.cpp b/native/src/context2d.cpp index 244cab1..dfc1467 100644 --- a/native/src/context2d.cpp +++ b/native/src/context2d.cpp @@ -30,7 +30,7 @@ sk_context_state* create_default_state() { state->imageSmoothingQuality = kLow; state->textAlign = kStart; state->textBaseline = kAlphabetic; - state->direction = kLTR; + state->direction = kInherit; state->font = new Font(); state->font->size = 10; state->font->family = strdup("sans-serif"); @@ -298,7 +298,7 @@ extern "C" { skia::textlayout::ParagraphStyle paraStyle; paraStyle.setTextAlign(skia::textlayout::TextAlign::kLeft); paraStyle.setTextStyle(tstyle); - paraStyle.setTextDirection(skia::textlayout::TextDirection(context->state->direction)); + paraStyle.setTextDirection(skia::textlayout::TextDirection(context->state->direction == kRTL ? 0 : 1)); auto builder = skia::textlayout::ParagraphBuilderImpl::make(paraStyle, fontCollection, SkUnicode::Make()); builder->addText(text, textLen); @@ -395,10 +395,10 @@ extern "C" { paintX = x - lineWidth; break; case TextAlign::kStart: - paintX = context->state->direction == TextDirection::kLTR ? x : x - lineWidth; + paintX = context->state->direction == TextDirection::kRTL ? x - lineWidth : x; break; case TextAlign::kEnd: - paintX = context->state->direction == TextDirection::kLTR ? x - lineWidth : x; + paintX = context->state->direction == TextDirection::kRTL ? x : x - lineWidth; break; } auto needScale = lineWidth > maxWidth; diff --git a/src/context2d.ts b/src/context2d.ts index 7da2309..d2c28fc 100644 --- a/src/context2d.ts +++ b/src/context2d.ts @@ -129,8 +129,9 @@ enum CTextAlign { } enum CTextDirection { - ltr = 0, - rtl = 1, + inherit = 0, + ltr = 1, + rtl = 2, } enum CTextBaseline {