Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c34632cd authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add vertical layout flag to Paint class" into main

parents fd1412ee da18d159
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16847,6 +16847,7 @@ package android.graphics {
    field @FlaggedApi("com.android.text.flags.letter_spacing_justification") public static final int TEXT_RUN_FLAG_LEFT_EDGE = 8192; // 0x2000
    field @FlaggedApi("com.android.text.flags.letter_spacing_justification") public static final int TEXT_RUN_FLAG_RIGHT_EDGE = 16384; // 0x4000
    field public static final int UNDERLINE_TEXT_FLAG = 8; // 0x8
    field @FlaggedApi("com.android.text.flags.vertical_text_layout") public static final int VERTICAL_TEXT_FLAG = 4096; // 0x1000
  }
  public enum Paint.Align {
+7 −0
Original line number Diff line number Diff line
@@ -202,3 +202,10 @@ flag {
  description: "Deprecate the Paint#elegantTextHeight API and stick it to true"
  bug: "349519475"
}

flag {
  name: "vertical_text_layout"
  namespace: "text"
  description: "Make Paint class work for vertical layout text."
  bug: "355296926"
}
+20 −2
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package android.graphics;
import static com.android.text.flags.Flags.FLAG_FIX_LINE_HEIGHT_FOR_LOCALE;
import static com.android.text.flags.Flags.FLAG_LETTER_SPACING_JUSTIFICATION;
import static com.android.text.flags.Flags.FLAG_DEPRECATE_ELEGANT_TEXT_HEIGHT_API;

import static com.android.text.flags.Flags.FLAG_VERTICAL_TEXT_LAYOUT;

import android.annotation.ColorInt;
import android.annotation.ColorLong;
@@ -35,6 +35,7 @@ import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.graphics.fonts.FontVariationAxis;
import android.graphics.text.TextRunShaper;
import android.os.Build;
import android.os.LocaleList;
import android.text.GraphicsOperations;
@@ -269,7 +270,24 @@ public class Paint {
    public static final int EMBEDDED_BITMAP_TEXT_FLAG = 0x400;
    /** @hide bit mask for the flag forcing freetype's autohinter on for text */
    public static final int AUTO_HINTING_TEXT_FLAG = 0x800;
    /** @hide bit mask for the flag enabling vertical rendering for text */

    /**
     * A flat that controls text to be written in vertical orientation
     *
     * <p>
     * This flag is used for telling the underlying text layout engine that the text is for vertical
     * direction. By enabling this flag, text measurement, drawing and shaping APIs works for
     * vertical text layout. For example, {@link Canvas#drawText(String, float, float, Paint)} draws
     * text from top to bottom. {@link Paint#measureText(String)} returns vertical advances instead
     * of horizontal advances. {@link TextRunShaper} shapes text vertically and report glyph IDs for
     * vertical layout.
     *
     * <p>
     * Do not set this flag for making {@link android.text.Layout}. The {@link android.text.Layout}
     * class and its subclasses are designed for horizontal text only and does not work for vertical
     * text.
     */
    @FlaggedApi(FLAG_VERTICAL_TEXT_LAYOUT)
    public static final int VERTICAL_TEXT_FLAG = 0x1000;

    /**
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ minikin::MinikinPaint MinikinUtils::prepareMinikinPaint(const Paint* paint,
    minikinPaint.fontStyle = resolvedFace->fStyle;
    minikinPaint.fontFeatureSettings = paint->getFontFeatureSettings();
    minikinPaint.fontVariationSettings = paint->getFontVariationOverride();
    minikinPaint.verticalText = paint->isVerticalText();

    const std::optional<minikin::FamilyVariant>& familyVariant = paint->getFamilyVariant();
    if (familyVariant.has_value()) {
+2 −0
Original line number Diff line number Diff line
@@ -158,6 +158,7 @@ public:
    SkSamplingOptions sampling() const {
        return SkSamplingOptions(this->filterMode());
    }
    bool isVerticalText() const { return mVerticalText; }

    void setVariationOverride(minikin::VariationSettings&& varSettings) {
        mFontVariationOverride = std::move(varSettings);
@@ -202,6 +203,7 @@ private:
    bool mUnderline = false;
    bool mDevKern = false;
    minikin::RunFlag mRunFlag = minikin::RunFlag::NONE;
    bool mVerticalText = false;
};

}  // namespace android
Loading