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

Commit 8f1ce747 authored by Seigo Nonaka's avatar Seigo Nonaka Committed by Android (Google) Code Review
Browse files

Merge "Add NoBreakSpan that prevent line break the portion of text" into main

parents 9b21812e 2c062da5
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -17666,6 +17666,7 @@ package android.graphics.text {
    field public static final int LINE_BREAK_STYLE_LOOSE = 1; // 0x1
    field public static final int LINE_BREAK_STYLE_NONE = 0; // 0x0
    field public static final int LINE_BREAK_STYLE_NORMAL = 2; // 0x2
    field @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final int LINE_BREAK_STYLE_NO_BREAK = 4; // 0x4
    field public static final int LINE_BREAK_STYLE_STRICT = 3; // 0x3
    field @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final int LINE_BREAK_STYLE_UNSPECIFIED = -1; // 0xffffffff
    field public static final int LINE_BREAK_WORD_STYLE_NONE = 0; // 0x0
@@ -47912,6 +47913,10 @@ package android.text.style {
    method @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") @NonNull public android.graphics.text.LineBreakConfig getLineBreakConfig();
  }
  @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final class LineBreakConfigSpan.NoBreakSpan extends android.text.style.LineBreakConfigSpan {
    ctor @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public LineBreakConfigSpan.NoBreakSpan();
  }
  @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final class LineBreakConfigSpan.NoHyphenationSpan extends android.text.style.LineBreakConfigSpan {
    ctor @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public LineBreakConfigSpan.NoHyphenationSpan();
  }
+24 −0
Original line number Diff line number Diff line
@@ -71,6 +71,10 @@ public class LineBreakConfigSpan {
            .setHyphenation(LineBreakConfig.HYPHENATION_DISABLED)
            .build();

    private static final LineBreakConfig sNoBreakConfig = new LineBreakConfig.Builder()
            .setLineBreakStyle(LineBreakConfig.LINE_BREAK_STYLE_NO_BREAK)
            .build();

    /**
     * A specialized {@link LineBreakConfigSpan} that used for preventing hyphenation.
     */
@@ -84,4 +88,24 @@ public class LineBreakConfigSpan {
            super(sNoHyphenationConfig);
        }
    }

    /**
     * A specialized {@link LineBreakConfigSpan} that used for preventing line break.
     *
     * This is useful when you want to preserve some words in the same line.
     * Note that even if this style is specified, the grapheme based line break is still performed
     * for preventing clipping text.
     *
     * @see LineBreakConfigSpan
     */
    @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN)
    public static final class NoBreakSpan extends LineBreakConfigSpan {
        /**
         * Construct a new {@link NoBreakSpan}.
         */
        @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN)
        public NoBreakSpan() {
            super(sNoBreakConfig);
        }
    }
}
+16 −1
Original line number Diff line number Diff line
@@ -134,10 +134,25 @@ public final class LineBreakConfig {
     */
    public static final int LINE_BREAK_STYLE_STRICT = 3;

    /**
     * The line break style that used for preventing automatic line breaking.
     *
     * This is useful when you want to preserve some words in the same line by using
     * {@link android.text.style.LineBreakConfigSpan} or
     * {@link android.text.style.LineBreakConfigSpan.NoBreakSpan} as a shorthand.
     * Note that even if this style is specified, the grapheme based line break is still performed
     * for preventing clipping text.
     *
     * @see android.text.style.LineBreakConfigSpan
     * @see android.text.style.LineBreakConfigSpan.NoBreakSpan
     */
    @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN)
    public static final int LINE_BREAK_STYLE_NO_BREAK = 4;

    /** @hide */
    @IntDef(prefix = { "LINE_BREAK_STYLE_" }, value = {
            LINE_BREAK_STYLE_NONE, LINE_BREAK_STYLE_LOOSE, LINE_BREAK_STYLE_NORMAL,
            LINE_BREAK_STYLE_STRICT, LINE_BREAK_STYLE_UNSPECIFIED
            LINE_BREAK_STYLE_STRICT, LINE_BREAK_STYLE_UNSPECIFIED, LINE_BREAK_STYLE_NO_BREAK
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface LineBreakStyle {}