161847f8eSopenharmony_ci/*
261847f8eSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
461847f8eSopenharmony_ci * you may not use this file except in compliance with the License.
561847f8eSopenharmony_ci * You may obtain a copy of the License at
661847f8eSopenharmony_ci *
761847f8eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
861847f8eSopenharmony_ci *
961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and
1361847f8eSopenharmony_ci * limitations under the License.
1461847f8eSopenharmony_ci */
1561847f8eSopenharmony_ci
1661847f8eSopenharmony_ci/**
1761847f8eSopenharmony_ci * @file
1861847f8eSopenharmony_ci * @kit ArkGraphics2D
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ciimport type drawing from './@ohos.graphics.drawing';
2161847f8eSopenharmony_ciimport type common2D from './@ohos.graphics.common2D';
2261847f8eSopenharmony_ci
2361847f8eSopenharmony_ci/**
2461847f8eSopenharmony_ci * Provides functions such as 2D graphics text paragraphs, text styles.
2561847f8eSopenharmony_ci *
2661847f8eSopenharmony_ci * @namespace text
2761847f8eSopenharmony_ci * @syscap SystemCapability.Graphics.Drawing
2861847f8eSopenharmony_ci * @since 12
2961847f8eSopenharmony_ci */
3061847f8eSopenharmony_cideclare namespace text {
3161847f8eSopenharmony_ci
3261847f8eSopenharmony_ci  /**
3361847f8eSopenharmony_ci   * Refers to how to align the horizontal position of text when displaying text.
3461847f8eSopenharmony_ci   * @enum { number }
3561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
3661847f8eSopenharmony_ci   * @since 12
3761847f8eSopenharmony_ci   */
3861847f8eSopenharmony_ci  enum TextAlign {
3961847f8eSopenharmony_ci    /**
4061847f8eSopenharmony_ci     * Use the left side of the text as a reference line for alignment.
4161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
4261847f8eSopenharmony_ci     * @since 12
4361847f8eSopenharmony_ci     */
4461847f8eSopenharmony_ci    LEFT = 0,
4561847f8eSopenharmony_ci
4661847f8eSopenharmony_ci    /**
4761847f8eSopenharmony_ci     * Use the right side of the text as a reference line for alignment.
4861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
4961847f8eSopenharmony_ci     * @since 12
5061847f8eSopenharmony_ci     */
5161847f8eSopenharmony_ci    RIGHT = 1,
5261847f8eSopenharmony_ci
5361847f8eSopenharmony_ci    /**
5461847f8eSopenharmony_ci     * Use the midpoint line the text as a reference line for alignment.
5561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
5661847f8eSopenharmony_ci     * @since 12
5761847f8eSopenharmony_ci     */
5861847f8eSopenharmony_ci    CENTER = 2,
5961847f8eSopenharmony_ci
6061847f8eSopenharmony_ci    /**
6161847f8eSopenharmony_ci     * Align the text at the start and end of the line.
6261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
6361847f8eSopenharmony_ci     * @since 12
6461847f8eSopenharmony_ci     */
6561847f8eSopenharmony_ci    JUSTIFY = 3,
6661847f8eSopenharmony_ci
6761847f8eSopenharmony_ci    /**
6861847f8eSopenharmony_ci     * Align text from start, based on the direction of text, such as left-to-right or right-to-left.
6961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
7061847f8eSopenharmony_ci     * @since 12
7161847f8eSopenharmony_ci     */
7261847f8eSopenharmony_ci    START = 4,
7361847f8eSopenharmony_ci
7461847f8eSopenharmony_ci    /**
7561847f8eSopenharmony_ci     * Align text from end, based on the direction of text, such as left-to-right or right-to-left, opposite to START.
7661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
7761847f8eSopenharmony_ci     * @since 12
7861847f8eSopenharmony_ci     */
7961847f8eSopenharmony_ci    END = 5,
8061847f8eSopenharmony_ci  }
8161847f8eSopenharmony_ci
8261847f8eSopenharmony_ci  /**
8361847f8eSopenharmony_ci   * Enumerate text runs direction.
8461847f8eSopenharmony_ci   * @enum { number }
8561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
8661847f8eSopenharmony_ci   * @since 12
8761847f8eSopenharmony_ci   */
8861847f8eSopenharmony_ci  enum TextDirection {
8961847f8eSopenharmony_ci    /**
9061847f8eSopenharmony_ci     * The text is oriented from right to left.
9161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
9261847f8eSopenharmony_ci     * @since 12
9361847f8eSopenharmony_ci     */
9461847f8eSopenharmony_ci    RTL,
9561847f8eSopenharmony_ci
9661847f8eSopenharmony_ci    /**
9761847f8eSopenharmony_ci     * The text is oriented from left to right.
9861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
9961847f8eSopenharmony_ci     * @since 12
10061847f8eSopenharmony_ci     */
10161847f8eSopenharmony_ci    LTR,
10261847f8eSopenharmony_ci  }
10361847f8eSopenharmony_ci
10461847f8eSopenharmony_ci  /**
10561847f8eSopenharmony_ci   * Enumerate text segmentation strategy.
10661847f8eSopenharmony_ci   * @enum { number }
10761847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
10861847f8eSopenharmony_ci   * @since 12
10961847f8eSopenharmony_ci   */
11061847f8eSopenharmony_ci  enum BreakStrategy {
11161847f8eSopenharmony_ci    /**
11261847f8eSopenharmony_ci     * The segmentation strategy is greedy.
11361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
11461847f8eSopenharmony_ci     * @since 12
11561847f8eSopenharmony_ci     */
11661847f8eSopenharmony_ci    GREEDY,
11761847f8eSopenharmony_ci
11861847f8eSopenharmony_ci    /**
11961847f8eSopenharmony_ci     * The segmentation strategy is high quality.
12061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
12161847f8eSopenharmony_ci     * @since 12
12261847f8eSopenharmony_ci     */
12361847f8eSopenharmony_ci    HIGH_QUALITY,
12461847f8eSopenharmony_ci
12561847f8eSopenharmony_ci    /**
12661847f8eSopenharmony_ci     * The segmentation strategy is balanced.
12761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
12861847f8eSopenharmony_ci     * @since 12
12961847f8eSopenharmony_ci     */
13061847f8eSopenharmony_ci    BALANCED,
13161847f8eSopenharmony_ci  }
13261847f8eSopenharmony_ci
13361847f8eSopenharmony_ci  /**
13461847f8eSopenharmony_ci   * Enumerate word break strategy.
13561847f8eSopenharmony_ci   * @enum { number }
13661847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
13761847f8eSopenharmony_ci   * @since 12
13861847f8eSopenharmony_ci   */
13961847f8eSopenharmony_ci  enum WordBreak {
14061847f8eSopenharmony_ci    /**
14161847f8eSopenharmony_ci     * Normal word break strategy.
14261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
14361847f8eSopenharmony_ci     * @since 12
14461847f8eSopenharmony_ci     */
14561847f8eSopenharmony_ci    NORMAL,
14661847f8eSopenharmony_ci
14761847f8eSopenharmony_ci    /**
14861847f8eSopenharmony_ci     * Breaks word by character.
14961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
15061847f8eSopenharmony_ci     * @since 12
15161847f8eSopenharmony_ci     */
15261847f8eSopenharmony_ci    BREAK_ALL,
15361847f8eSopenharmony_ci
15461847f8eSopenharmony_ci    /**
15561847f8eSopenharmony_ci     * Breaks word by phrase.
15661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
15761847f8eSopenharmony_ci     * @since 12
15861847f8eSopenharmony_ci     */
15961847f8eSopenharmony_ci    BREAK_WORD,
16061847f8eSopenharmony_ci  }
16161847f8eSopenharmony_ci
16261847f8eSopenharmony_ci  /**
16361847f8eSopenharmony_ci   * Decoration for text.
16461847f8eSopenharmony_ci   * @typedef Decoration
16561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
16661847f8eSopenharmony_ci   * @since 12
16761847f8eSopenharmony_ci   */
16861847f8eSopenharmony_ci  interface Decoration {
16961847f8eSopenharmony_ci    /**
17061847f8eSopenharmony_ci     * Decorates text by line.
17161847f8eSopenharmony_ci     * @type { ?TextDecorationType }
17261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
17361847f8eSopenharmony_ci     * @since 12
17461847f8eSopenharmony_ci     */
17561847f8eSopenharmony_ci    textDecoration?: TextDecorationType;
17661847f8eSopenharmony_ci
17761847f8eSopenharmony_ci    /**
17861847f8eSopenharmony_ci     * Text color.
17961847f8eSopenharmony_ci     * @type { ?common2D.Color }
18061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
18161847f8eSopenharmony_ci     * @since 12
18261847f8eSopenharmony_ci     */
18361847f8eSopenharmony_ci    color?: common2D.Color;
18461847f8eSopenharmony_ci
18561847f8eSopenharmony_ci    /**
18661847f8eSopenharmony_ci     * Text decoration style.
18761847f8eSopenharmony_ci     * @type { ?TextDecorationStyle }
18861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
18961847f8eSopenharmony_ci     * @since 12
19061847f8eSopenharmony_ci     */
19161847f8eSopenharmony_ci    decorationStyle?: TextDecorationStyle;
19261847f8eSopenharmony_ci
19361847f8eSopenharmony_ci    /**
19461847f8eSopenharmony_ci     * The thickness scale of decoration line.
19561847f8eSopenharmony_ci     * @type { ?number }
19661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
19761847f8eSopenharmony_ci     * @since 12
19861847f8eSopenharmony_ci     */
19961847f8eSopenharmony_ci    decorationThicknessScale?: number;
20061847f8eSopenharmony_ci  }
20161847f8eSopenharmony_ci
20261847f8eSopenharmony_ci  /**
20361847f8eSopenharmony_ci   * Enumerates decoration line for text.
20461847f8eSopenharmony_ci   * @enum { number }
20561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
20661847f8eSopenharmony_ci   * @since 12
20761847f8eSopenharmony_ci   */
20861847f8eSopenharmony_ci  enum TextDecorationType {
20961847f8eSopenharmony_ci    /**
21061847f8eSopenharmony_ci     * There are no text decoration.
21161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
21261847f8eSopenharmony_ci     * @since 12
21361847f8eSopenharmony_ci     */
21461847f8eSopenharmony_ci    NONE,
21561847f8eSopenharmony_ci
21661847f8eSopenharmony_ci    /**
21761847f8eSopenharmony_ci     * There is a decoration line below the text.
21861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
21961847f8eSopenharmony_ci     * @since 12
22061847f8eSopenharmony_ci     */
22161847f8eSopenharmony_ci    UNDERLINE,
22261847f8eSopenharmony_ci
22361847f8eSopenharmony_ci    /**
22461847f8eSopenharmony_ci     * There is a decoration line above the text.
22561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
22661847f8eSopenharmony_ci     * @since 12
22761847f8eSopenharmony_ci     */
22861847f8eSopenharmony_ci    OVERLINE,
22961847f8eSopenharmony_ci
23061847f8eSopenharmony_ci    /**
23161847f8eSopenharmony_ci     * There is a decoration line through the middle of the text.
23261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
23361847f8eSopenharmony_ci     * @since 12
23461847f8eSopenharmony_ci     */
23561847f8eSopenharmony_ci    LINE_THROUGH,
23661847f8eSopenharmony_ci  }
23761847f8eSopenharmony_ci
23861847f8eSopenharmony_ci  /**
23961847f8eSopenharmony_ci   * Enumerates decoration line style.
24061847f8eSopenharmony_ci   * @enum { number }
24161847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
24261847f8eSopenharmony_ci   * @since 12
24361847f8eSopenharmony_ci   */
24461847f8eSopenharmony_ci  enum TextDecorationStyle {
24561847f8eSopenharmony_ci    /**
24661847f8eSopenharmony_ci     * Decoration line is solid line.
24761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
24861847f8eSopenharmony_ci     * @since 12
24961847f8eSopenharmony_ci     */
25061847f8eSopenharmony_ci    SOLID,
25161847f8eSopenharmony_ci
25261847f8eSopenharmony_ci    /**
25361847f8eSopenharmony_ci     * Decoration line is double line.
25461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
25561847f8eSopenharmony_ci     * @since 12
25661847f8eSopenharmony_ci     */
25761847f8eSopenharmony_ci    DOUBLE,
25861847f8eSopenharmony_ci
25961847f8eSopenharmony_ci    /**
26061847f8eSopenharmony_ci     * Decoration line is dotted line.
26161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
26261847f8eSopenharmony_ci     * @since 12
26361847f8eSopenharmony_ci     */
26461847f8eSopenharmony_ci    DOTTED,
26561847f8eSopenharmony_ci
26661847f8eSopenharmony_ci    /**
26761847f8eSopenharmony_ci     * Decoration line is dashed line.
26861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
26961847f8eSopenharmony_ci     * @since 12
27061847f8eSopenharmony_ci     */
27161847f8eSopenharmony_ci    DASHED,
27261847f8eSopenharmony_ci
27361847f8eSopenharmony_ci    /**
27461847f8eSopenharmony_ci     * Decoration line is wavy line.
27561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
27661847f8eSopenharmony_ci     * @since 12
27761847f8eSopenharmony_ci     */
27861847f8eSopenharmony_ci    WAVY,
27961847f8eSopenharmony_ci  }
28061847f8eSopenharmony_ci
28161847f8eSopenharmony_ci  /**
28261847f8eSopenharmony_ci   * Enumeration of font weight of text.
28361847f8eSopenharmony_ci   * @enum { number }
28461847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
28561847f8eSopenharmony_ci   * @since 12
28661847f8eSopenharmony_ci   */
28761847f8eSopenharmony_ci  enum FontWeight {
28861847f8eSopenharmony_ci    /**
28961847f8eSopenharmony_ci     * Thin
29061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
29161847f8eSopenharmony_ci     * @since 12
29261847f8eSopenharmony_ci     */
29361847f8eSopenharmony_ci    W100,
29461847f8eSopenharmony_ci
29561847f8eSopenharmony_ci    /**
29661847f8eSopenharmony_ci     * Extra-light
29761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
29861847f8eSopenharmony_ci     * @since 12
29961847f8eSopenharmony_ci     */
30061847f8eSopenharmony_ci    W200,
30161847f8eSopenharmony_ci
30261847f8eSopenharmony_ci    /**
30361847f8eSopenharmony_ci     * Light
30461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
30561847f8eSopenharmony_ci     * @since 12
30661847f8eSopenharmony_ci     */
30761847f8eSopenharmony_ci    W300,
30861847f8eSopenharmony_ci
30961847f8eSopenharmony_ci    /**
31061847f8eSopenharmony_ci     * Normal/Regular
31161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
31261847f8eSopenharmony_ci     * @since 12
31361847f8eSopenharmony_ci     */
31461847f8eSopenharmony_ci    W400,
31561847f8eSopenharmony_ci
31661847f8eSopenharmony_ci    /**
31761847f8eSopenharmony_ci     * Medium
31861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
31961847f8eSopenharmony_ci     * @since 12
32061847f8eSopenharmony_ci     */
32161847f8eSopenharmony_ci    W500,
32261847f8eSopenharmony_ci
32361847f8eSopenharmony_ci    /**
32461847f8eSopenharmony_ci     * Semi-bold
32561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
32661847f8eSopenharmony_ci     * @since 12
32761847f8eSopenharmony_ci     */
32861847f8eSopenharmony_ci    W600,
32961847f8eSopenharmony_ci
33061847f8eSopenharmony_ci    /**
33161847f8eSopenharmony_ci     * Bold
33261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
33361847f8eSopenharmony_ci     * @since 12
33461847f8eSopenharmony_ci     */
33561847f8eSopenharmony_ci    W700,
33661847f8eSopenharmony_ci
33761847f8eSopenharmony_ci    /**
33861847f8eSopenharmony_ci     * Extra-bold
33961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
34061847f8eSopenharmony_ci     * @since 12
34161847f8eSopenharmony_ci     */
34261847f8eSopenharmony_ci    W800,
34361847f8eSopenharmony_ci
34461847f8eSopenharmony_ci    /**
34561847f8eSopenharmony_ci     * Black
34661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
34761847f8eSopenharmony_ci     * @since 12
34861847f8eSopenharmony_ci     */
34961847f8eSopenharmony_ci    W900,
35061847f8eSopenharmony_ci  }
35161847f8eSopenharmony_ci
35261847f8eSopenharmony_ci  /**
35361847f8eSopenharmony_ci   * Enumeration of font style of text.
35461847f8eSopenharmony_ci   * @enum { number }
35561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
35661847f8eSopenharmony_ci   * @since 12
35761847f8eSopenharmony_ci   */
35861847f8eSopenharmony_ci  enum FontStyle {
35961847f8eSopenharmony_ci    /**
36061847f8eSopenharmony_ci     * Upright font type.
36161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
36261847f8eSopenharmony_ci     * @since 12
36361847f8eSopenharmony_ci     */
36461847f8eSopenharmony_ci    NORMAL,
36561847f8eSopenharmony_ci
36661847f8eSopenharmony_ci    /**
36761847f8eSopenharmony_ci     * Slant font.
36861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
36961847f8eSopenharmony_ci     * @since 12
37061847f8eSopenharmony_ci     */
37161847f8eSopenharmony_ci    ITALIC,
37261847f8eSopenharmony_ci
37361847f8eSopenharmony_ci    /**
37461847f8eSopenharmony_ci     * Oblique font.
37561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
37661847f8eSopenharmony_ci     * @since 12
37761847f8eSopenharmony_ci     */
37861847f8eSopenharmony_ci    OBLIQUE,
37961847f8eSopenharmony_ci  }
38061847f8eSopenharmony_ci
38161847f8eSopenharmony_ci  /**
38261847f8eSopenharmony_ci   * Enumeration of font width of text.
38361847f8eSopenharmony_ci   * @enum { number }
38461847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
38561847f8eSopenharmony_ci   * @since 12
38661847f8eSopenharmony_ci   */
38761847f8eSopenharmony_ci  enum FontWidth {
38861847f8eSopenharmony_ci    /**
38961847f8eSopenharmony_ci     * Ultra condensed font width.
39061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
39161847f8eSopenharmony_ci     * @since 12
39261847f8eSopenharmony_ci     */
39361847f8eSopenharmony_ci    ULTRA_CONDENSED = 1,
39461847f8eSopenharmony_ci
39561847f8eSopenharmony_ci    /**
39661847f8eSopenharmony_ci     * Extra condensed font width.
39761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
39861847f8eSopenharmony_ci     * @since 12
39961847f8eSopenharmony_ci     */
40061847f8eSopenharmony_ci    EXTRA_CONDENSED = 2,
40161847f8eSopenharmony_ci
40261847f8eSopenharmony_ci    /**
40361847f8eSopenharmony_ci     * Condensed font width.
40461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
40561847f8eSopenharmony_ci     * @since 12
40661847f8eSopenharmony_ci     */
40761847f8eSopenharmony_ci    CONDENSED = 3,
40861847f8eSopenharmony_ci
40961847f8eSopenharmony_ci    /**
41061847f8eSopenharmony_ci     * Semi condensed font width.
41161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
41261847f8eSopenharmony_ci     * @since 12
41361847f8eSopenharmony_ci     */
41461847f8eSopenharmony_ci    SEMI_CONDENSED = 4,
41561847f8eSopenharmony_ci
41661847f8eSopenharmony_ci    /**
41761847f8eSopenharmony_ci     * Normal font width.
41861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
41961847f8eSopenharmony_ci     * @since 12
42061847f8eSopenharmony_ci     */
42161847f8eSopenharmony_ci    NORMAL = 5,
42261847f8eSopenharmony_ci
42361847f8eSopenharmony_ci    /**
42461847f8eSopenharmony_ci     * Semi expanded font width.
42561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
42661847f8eSopenharmony_ci     * @since 12
42761847f8eSopenharmony_ci     */
42861847f8eSopenharmony_ci    SEMI_EXPANDED = 6,
42961847f8eSopenharmony_ci
43061847f8eSopenharmony_ci    /**
43161847f8eSopenharmony_ci     * Expanded font width.
43261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
43361847f8eSopenharmony_ci     * @since 12
43461847f8eSopenharmony_ci     */
43561847f8eSopenharmony_ci    EXPANDED = 7,
43661847f8eSopenharmony_ci
43761847f8eSopenharmony_ci    /**
43861847f8eSopenharmony_ci     * Extra expanded font width.
43961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
44061847f8eSopenharmony_ci     * @since 12
44161847f8eSopenharmony_ci     */
44261847f8eSopenharmony_ci    EXTRA_EXPANDED = 8,
44361847f8eSopenharmony_ci
44461847f8eSopenharmony_ci    /**
44561847f8eSopenharmony_ci     * Ultra expanded font width.
44661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
44761847f8eSopenharmony_ci     * @since 12
44861847f8eSopenharmony_ci     */
44961847f8eSopenharmony_ci    ULTRA_EXPANDED = 9,
45061847f8eSopenharmony_ci  }
45161847f8eSopenharmony_ci
45261847f8eSopenharmony_ci  /**
45361847f8eSopenharmony_ci   * Enumerates of height mode of text.
45461847f8eSopenharmony_ci   * @enum { number }
45561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
45661847f8eSopenharmony_ci   * @since 12
45761847f8eSopenharmony_ci   */
45861847f8eSopenharmony_ci  enum TextHeightBehavior {
45961847f8eSopenharmony_ci    /**
46061847f8eSopenharmony_ci     * Both ascend of first row and last row style.
46161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
46261847f8eSopenharmony_ci     * @since 12
46361847f8eSopenharmony_ci     */
46461847f8eSopenharmony_ci    ALL = 0x0,
46561847f8eSopenharmony_ci
46661847f8eSopenharmony_ci    /**
46761847f8eSopenharmony_ci     * Forbidding ascend of first row style.
46861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
46961847f8eSopenharmony_ci     * @since 12
47061847f8eSopenharmony_ci     */
47161847f8eSopenharmony_ci    DISABLE_FIRST_ASCENT = 0x1,
47261847f8eSopenharmony_ci
47361847f8eSopenharmony_ci    /**
47461847f8eSopenharmony_ci     * Forbidding ascend of last row style.
47561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
47661847f8eSopenharmony_ci     * @since 12
47761847f8eSopenharmony_ci     */
47861847f8eSopenharmony_ci    DISABLE_LAST_ASCENT = 0x2,
47961847f8eSopenharmony_ci
48061847f8eSopenharmony_ci    /**
48161847f8eSopenharmony_ci     * Neither ascend of first row nor last row style.
48261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
48361847f8eSopenharmony_ci     * @since 12
48461847f8eSopenharmony_ci     */
48561847f8eSopenharmony_ci    DISABLE_ALL = 0x1 | 0x2,
48661847f8eSopenharmony_ci  }
48761847f8eSopenharmony_ci
48861847f8eSopenharmony_ci  /**
48961847f8eSopenharmony_ci   * Enumeration the type of text baseline.
49061847f8eSopenharmony_ci   * @enum { number }
49161847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
49261847f8eSopenharmony_ci   * @since 12
49361847f8eSopenharmony_ci   */
49461847f8eSopenharmony_ci  enum TextBaseline {
49561847f8eSopenharmony_ci    /**
49661847f8eSopenharmony_ci     * The alphabetic baseline, typically used for Latin-based scripts where the baseline aligns
49761847f8eSopenharmony_ci     * with the base of lowercase letters.
49861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
49961847f8eSopenharmony_ci     * @since 12
50061847f8eSopenharmony_ci     */
50161847f8eSopenharmony_ci    ALPHABETIC,
50261847f8eSopenharmony_ci
50361847f8eSopenharmony_ci    /**
50461847f8eSopenharmony_ci     * The ideographic baseline, commonly used for ideographic scripts such as Chinese, Japanese, and Korean,
50561847f8eSopenharmony_ci     * where the baseline aligns with the center of characters.
50661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
50761847f8eSopenharmony_ci     * @since 12
50861847f8eSopenharmony_ci     */
50961847f8eSopenharmony_ci    IDEOGRAPHIC,
51061847f8eSopenharmony_ci  }
51161847f8eSopenharmony_ci
51261847f8eSopenharmony_ci  /**
51361847f8eSopenharmony_ci   * Enumerates of ellipsis mode.
51461847f8eSopenharmony_ci   * @enum { number }
51561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
51661847f8eSopenharmony_ci   * @since 12
51761847f8eSopenharmony_ci   */
51861847f8eSopenharmony_ci  enum EllipsisMode {
51961847f8eSopenharmony_ci    /**
52061847f8eSopenharmony_ci     * The ellipsis is shown in the start of text.
52161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
52261847f8eSopenharmony_ci     * @since 12
52361847f8eSopenharmony_ci     */
52461847f8eSopenharmony_ci    START,
52561847f8eSopenharmony_ci
52661847f8eSopenharmony_ci    /**
52761847f8eSopenharmony_ci     * The ellipsis is shown in the middle of text.
52861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
52961847f8eSopenharmony_ci     * @since 12
53061847f8eSopenharmony_ci     */
53161847f8eSopenharmony_ci    MIDDLE,
53261847f8eSopenharmony_ci
53361847f8eSopenharmony_ci    /**
53461847f8eSopenharmony_ci     * The ellipsis is shown in the end of text.
53561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
53661847f8eSopenharmony_ci     * @since 12
53761847f8eSopenharmony_ci     */
53861847f8eSopenharmony_ci    END,
53961847f8eSopenharmony_ci  }
54061847f8eSopenharmony_ci
54161847f8eSopenharmony_ci  /**
54261847f8eSopenharmony_ci   * Describes shadow of text.
54361847f8eSopenharmony_ci   * @typedef TextShadow
54461847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
54561847f8eSopenharmony_ci   * @since 12
54661847f8eSopenharmony_ci   */
54761847f8eSopenharmony_ci  interface TextShadow {
54861847f8eSopenharmony_ci    /**
54961847f8eSopenharmony_ci     * The color of text shadow.
55061847f8eSopenharmony_ci     * @type { ?common2D.Color } The color of text shadow
55161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
55261847f8eSopenharmony_ci     * @since 12
55361847f8eSopenharmony_ci     */
55461847f8eSopenharmony_ci    color?: common2D.Color;
55561847f8eSopenharmony_ci    /**
55661847f8eSopenharmony_ci     * The value sets offset of text shadow that based on the original text.
55761847f8eSopenharmony_ci     * @type { ?common2D.Point } The point of shadow
55861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
55961847f8eSopenharmony_ci     * @since 12
56061847f8eSopenharmony_ci     */
56161847f8eSopenharmony_ci    point?: common2D.Point;
56261847f8eSopenharmony_ci    /**
56361847f8eSopenharmony_ci     * The value sets special effect radius of blurring text, it default is 0.
56461847f8eSopenharmony_ci     * @type { ?number } The value about radius of blur, it type is "double"
56561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
56661847f8eSopenharmony_ci     * @since 12
56761847f8eSopenharmony_ci     */
56861847f8eSopenharmony_ci    blurRadius?: number;
56961847f8eSopenharmony_ci  }
57061847f8eSopenharmony_ci
57161847f8eSopenharmony_ci  /**
57261847f8eSopenharmony_ci   * Describes rect style of text.
57361847f8eSopenharmony_ci   * @typedef RectStyle
57461847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
57561847f8eSopenharmony_ci   * @since 12
57661847f8eSopenharmony_ci   */
57761847f8eSopenharmony_ci  interface RectStyle {
57861847f8eSopenharmony_ci    /**
57961847f8eSopenharmony_ci     * The color of rect style.
58061847f8eSopenharmony_ci     * @type { common2D.Color } The color of rect style
58161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
58261847f8eSopenharmony_ci     * @since 12
58361847f8eSopenharmony_ci     */
58461847f8eSopenharmony_ci    color: common2D.Color;
58561847f8eSopenharmony_ci
58661847f8eSopenharmony_ci    /**
58761847f8eSopenharmony_ci     * Radius in left top of rect style.
58861847f8eSopenharmony_ci     * @type { number } it is double type data
58961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
59061847f8eSopenharmony_ci     * @since 12
59161847f8eSopenharmony_ci     */
59261847f8eSopenharmony_ci    leftTopRadius: number;
59361847f8eSopenharmony_ci
59461847f8eSopenharmony_ci    /**
59561847f8eSopenharmony_ci     * Radius in right top of rect style.
59661847f8eSopenharmony_ci     * @type { number } it is double type data
59761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
59861847f8eSopenharmony_ci     * @since 12
59961847f8eSopenharmony_ci     */
60061847f8eSopenharmony_ci    rightTopRadius: number;
60161847f8eSopenharmony_ci
60261847f8eSopenharmony_ci    /**
60361847f8eSopenharmony_ci     * Radius in right bottom of rect style.
60461847f8eSopenharmony_ci     * @type { number } it is double type data
60561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
60661847f8eSopenharmony_ci     * @since 12
60761847f8eSopenharmony_ci     */
60861847f8eSopenharmony_ci    rightBottomRadius: number;
60961847f8eSopenharmony_ci
61061847f8eSopenharmony_ci    /**
61161847f8eSopenharmony_ci     * Radius in left bottom of rect style.
61261847f8eSopenharmony_ci     * @type { number } it is double type data
61361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
61461847f8eSopenharmony_ci     * @since 12
61561847f8eSopenharmony_ci     */
61661847f8eSopenharmony_ci    leftBottomRadius: number;
61761847f8eSopenharmony_ci  }
61861847f8eSopenharmony_ci
61961847f8eSopenharmony_ci  /**
62061847f8eSopenharmony_ci   * Describes font feature of text.
62161847f8eSopenharmony_ci   * @typedef FontFeature
62261847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
62361847f8eSopenharmony_ci   * @since 12
62461847f8eSopenharmony_ci   */
62561847f8eSopenharmony_ci  interface FontFeature {
62661847f8eSopenharmony_ci    /**
62761847f8eSopenharmony_ci     * The name of font feature.
62861847f8eSopenharmony_ci     * @type { string } feature name
62961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
63061847f8eSopenharmony_ci     * @since 12
63161847f8eSopenharmony_ci     */
63261847f8eSopenharmony_ci    name: string;
63361847f8eSopenharmony_ci    /**
63461847f8eSopenharmony_ci     * The value of font feature.
63561847f8eSopenharmony_ci     * @type { number } feature value
63661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
63761847f8eSopenharmony_ci     * @since 12
63861847f8eSopenharmony_ci     */
63961847f8eSopenharmony_ci    value: number;
64061847f8eSopenharmony_ci  }
64161847f8eSopenharmony_ci
64261847f8eSopenharmony_ci  /**
64361847f8eSopenharmony_ci   * Describes font variation of text.
64461847f8eSopenharmony_ci   * @typedef FontVariation
64561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
64661847f8eSopenharmony_ci   * @since 12
64761847f8eSopenharmony_ci   */
64861847f8eSopenharmony_ci  interface FontVariation {
64961847f8eSopenharmony_ci    /**
65061847f8eSopenharmony_ci     * The axis of font variation.
65161847f8eSopenharmony_ci     * @type { string } variation axis
65261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
65361847f8eSopenharmony_ci     * @since 12
65461847f8eSopenharmony_ci     */
65561847f8eSopenharmony_ci    axis: string;
65661847f8eSopenharmony_ci    /**
65761847f8eSopenharmony_ci     * The value of font variation.
65861847f8eSopenharmony_ci     * @type { number } variation value
65961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
66061847f8eSopenharmony_ci     * @since 12
66161847f8eSopenharmony_ci     */
66261847f8eSopenharmony_ci    value: number;
66361847f8eSopenharmony_ci  }
66461847f8eSopenharmony_ci
66561847f8eSopenharmony_ci  /**
66661847f8eSopenharmony_ci   * Describes text style.
66761847f8eSopenharmony_ci   * @typedef TextStyle
66861847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
66961847f8eSopenharmony_ci   * @since 12
67061847f8eSopenharmony_ci   */
67161847f8eSopenharmony_ci  interface TextStyle {
67261847f8eSopenharmony_ci
67361847f8eSopenharmony_ci    /**
67461847f8eSopenharmony_ci     * Decoration of text.
67561847f8eSopenharmony_ci     * @type { ?Decoration } decoration for text
67661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
67761847f8eSopenharmony_ci     * @since 12
67861847f8eSopenharmony_ci     */
67961847f8eSopenharmony_ci    decoration?: Decoration;
68061847f8eSopenharmony_ci
68161847f8eSopenharmony_ci    /**
68261847f8eSopenharmony_ci     * Color of text.
68361847f8eSopenharmony_ci     * @type { ?common2D.Color } it is uint32_t type data
68461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
68561847f8eSopenharmony_ci     * @since 12
68661847f8eSopenharmony_ci     */
68761847f8eSopenharmony_ci    color?: common2D.Color;
68861847f8eSopenharmony_ci
68961847f8eSopenharmony_ci    /**
69061847f8eSopenharmony_ci     * Font weight of text.
69161847f8eSopenharmony_ci     * @type { ?FontWeight } it is uint32_t type data
69261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
69361847f8eSopenharmony_ci     * @since 12
69461847f8eSopenharmony_ci     */
69561847f8eSopenharmony_ci    fontWeight?: FontWeight;
69661847f8eSopenharmony_ci
69761847f8eSopenharmony_ci    /**
69861847f8eSopenharmony_ci     * Font style of text.
69961847f8eSopenharmony_ci     * @type { ?FontStyle } it is uint32_t type data
70061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
70161847f8eSopenharmony_ci     * @since 12
70261847f8eSopenharmony_ci     */
70361847f8eSopenharmony_ci    fontStyle?: FontStyle;
70461847f8eSopenharmony_ci
70561847f8eSopenharmony_ci    /**
70661847f8eSopenharmony_ci     * Base line of text.
70761847f8eSopenharmony_ci     * @type { ?TextBaseline } it is uint32_t type data
70861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
70961847f8eSopenharmony_ci     * @since 12
71061847f8eSopenharmony_ci     */
71161847f8eSopenharmony_ci    baseline?: TextBaseline;
71261847f8eSopenharmony_ci
71361847f8eSopenharmony_ci    /**
71461847f8eSopenharmony_ci     * Font Families of text.
71561847f8eSopenharmony_ci     * @type { ?Array<string> } fontfamily gather
71661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
71761847f8eSopenharmony_ci     * @since 12
71861847f8eSopenharmony_ci     */
71961847f8eSopenharmony_ci    fontFamilies?: Array<string>;
72061847f8eSopenharmony_ci
72161847f8eSopenharmony_ci    /**
72261847f8eSopenharmony_ci     * Font size of text.
72361847f8eSopenharmony_ci     * @type { ?number } it is double type data
72461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
72561847f8eSopenharmony_ci     * @since 12
72661847f8eSopenharmony_ci     */
72761847f8eSopenharmony_ci    fontSize?: number;
72861847f8eSopenharmony_ci
72961847f8eSopenharmony_ci    /**
73061847f8eSopenharmony_ci     * Letter spacing of text.
73161847f8eSopenharmony_ci     * @type { ?number } it is double type data
73261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
73361847f8eSopenharmony_ci     * @since 12
73461847f8eSopenharmony_ci     */
73561847f8eSopenharmony_ci    letterSpacing?: number;
73661847f8eSopenharmony_ci
73761847f8eSopenharmony_ci    /**
73861847f8eSopenharmony_ci     * Word spacing of text.
73961847f8eSopenharmony_ci     * @type { ?number } it is double type data
74061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
74161847f8eSopenharmony_ci     * @since 12
74261847f8eSopenharmony_ci     */
74361847f8eSopenharmony_ci    wordSpacing?: number;
74461847f8eSopenharmony_ci
74561847f8eSopenharmony_ci    /**
74661847f8eSopenharmony_ci     * Height scale of text.
74761847f8eSopenharmony_ci     * @type { ?number } it is double type data
74861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
74961847f8eSopenharmony_ci     * @since 12
75061847f8eSopenharmony_ci     */
75161847f8eSopenharmony_ci    heightScale?: number;
75261847f8eSopenharmony_ci
75361847f8eSopenharmony_ci    /**
75461847f8eSopenharmony_ci     * Half leading of text.
75561847f8eSopenharmony_ci     * @type { ?boolean } it is boolean type data
75661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
75761847f8eSopenharmony_ci     * @since 12
75861847f8eSopenharmony_ci     */
75961847f8eSopenharmony_ci    halfLeading?: boolean;
76061847f8eSopenharmony_ci
76161847f8eSopenharmony_ci    /**
76261847f8eSopenharmony_ci     * Control the height calculation method of font blob, true means calculate the height of the blob by
76361847f8eSopenharmony_ci     * the font size, false means by the line height and leading.
76461847f8eSopenharmony_ci     * @type { ?boolean } it is boolean type data
76561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
76661847f8eSopenharmony_ci     * @since 12
76761847f8eSopenharmony_ci     */
76861847f8eSopenharmony_ci    heightOnly?: boolean;
76961847f8eSopenharmony_ci
77061847f8eSopenharmony_ci    /**
77161847f8eSopenharmony_ci     * Text ellipsis.
77261847f8eSopenharmony_ci     * @type { ?string } it is u16string type data.
77361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
77461847f8eSopenharmony_ci     * @since 12
77561847f8eSopenharmony_ci     */
77661847f8eSopenharmony_ci    ellipsis?: string;
77761847f8eSopenharmony_ci
77861847f8eSopenharmony_ci    /**
77961847f8eSopenharmony_ci     * Text ellipsis mode.
78061847f8eSopenharmony_ci     * @type { ?EllipsisMode } Ellipsis mode.
78161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
78261847f8eSopenharmony_ci     * @since 12
78361847f8eSopenharmony_ci     */
78461847f8eSopenharmony_ci    ellipsisMode?: EllipsisMode;
78561847f8eSopenharmony_ci
78661847f8eSopenharmony_ci    /**
78761847f8eSopenharmony_ci     * Text locale.
78861847f8eSopenharmony_ci     * @type { ?string } it is string type data.
78961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
79061847f8eSopenharmony_ci     * @since 12
79161847f8eSopenharmony_ci     */
79261847f8eSopenharmony_ci    locale?: string;
79361847f8eSopenharmony_ci
79461847f8eSopenharmony_ci    /**
79561847f8eSopenharmony_ci     * The offset distance that the underline of text.
79661847f8eSopenharmony_ci     * @type { ?number } it is double type data.
79761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
79861847f8eSopenharmony_ci     * @since 12
79961847f8eSopenharmony_ci     */
80061847f8eSopenharmony_ci    baselineShift?: number;
80161847f8eSopenharmony_ci
80261847f8eSopenharmony_ci    /**
80361847f8eSopenharmony_ci     * Text Style available font features.
80461847f8eSopenharmony_ci     * @type { ?Array<FontFeature> } A collection of font features.
80561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
80661847f8eSopenharmony_ci     * @since 12
80761847f8eSopenharmony_ci     */
80861847f8eSopenharmony_ci    fontFeatures?: Array<FontFeature>;
80961847f8eSopenharmony_ci
81061847f8eSopenharmony_ci    /**
81161847f8eSopenharmony_ci     * Text shadows of text.
81261847f8eSopenharmony_ci     * @type { ?Array<TextShadow> } textShadow gather.
81361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
81461847f8eSopenharmony_ci     * @since 12
81561847f8eSopenharmony_ci     */
81661847f8eSopenharmony_ci    textShadows?: Array<TextShadow>;
81761847f8eSopenharmony_ci
81861847f8eSopenharmony_ci    /**
81961847f8eSopenharmony_ci     * Rect style of text.
82061847f8eSopenharmony_ci     * @type { ?RectStyle } rect style for text.
82161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
82261847f8eSopenharmony_ci     * @since 12
82361847f8eSopenharmony_ci     */
82461847f8eSopenharmony_ci    backgroundRect?: RectStyle;
82561847f8eSopenharmony_ci
82661847f8eSopenharmony_ci    /**
82761847f8eSopenharmony_ci     * Text Style available font variations.
82861847f8eSopenharmony_ci     * @type { ?Array<FontVariation> } A collection of font variations.
82961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
83061847f8eSopenharmony_ci     * @since 12
83161847f8eSopenharmony_ci     */
83261847f8eSopenharmony_ci    fontVariations?: Array<FontVariation>;
83361847f8eSopenharmony_ci  }
83461847f8eSopenharmony_ci
83561847f8eSopenharmony_ci  /**
83661847f8eSopenharmony_ci   * Provides the basis for graphics.
83761847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
83861847f8eSopenharmony_ci   * @since 12
83961847f8eSopenharmony_ci   */
84061847f8eSopenharmony_ci  class FontCollection {
84161847f8eSopenharmony_ci    /**
84261847f8eSopenharmony_ci     * Get global FontCollection instance of the application.
84361847f8eSopenharmony_ci     * @returns { FontCollection } The FontCollection object.
84461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
84561847f8eSopenharmony_ci     * @since 12
84661847f8eSopenharmony_ci     */
84761847f8eSopenharmony_ci    static getGlobalInstance(): FontCollection;
84861847f8eSopenharmony_ci
84961847f8eSopenharmony_ci    /**
85061847f8eSopenharmony_ci     * Load font.
85161847f8eSopenharmony_ci     * @param { string } name - the font name.
85261847f8eSopenharmony_ci     * @param { string | Resource } path - the path of the font file.
85361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
85461847f8eSopenharmony_ci     * @since 12
85561847f8eSopenharmony_ci     */
85661847f8eSopenharmony_ci    loadFontSync(name: string, path: string | Resource): void;
85761847f8eSopenharmony_ci
85861847f8eSopenharmony_ci    /**
85961847f8eSopenharmony_ci     * Load font.
86061847f8eSopenharmony_ci     * @param { string } name - The font name.
86161847f8eSopenharmony_ci     * @param { string | Resource } path - The path of the font file.
86261847f8eSopenharmony_ci     * @returns { Promise<void> } The promise returned by the function.
86361847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
86461847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
86561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
86661847f8eSopenharmony_ci     * @since 14
86761847f8eSopenharmony_ci     */
86861847f8eSopenharmony_ci    loadFont(name: string, path: string | Resource): Promise<void>;
86961847f8eSopenharmony_ci
87061847f8eSopenharmony_ci    /**
87161847f8eSopenharmony_ci     * Clear font caches.
87261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
87361847f8eSopenharmony_ci     * @since 12
87461847f8eSopenharmony_ci     */
87561847f8eSopenharmony_ci     clearCaches(): void;
87661847f8eSopenharmony_ci  }
87761847f8eSopenharmony_ci
87861847f8eSopenharmony_ci  /**
87961847f8eSopenharmony_ci   * Describes strut style.
88061847f8eSopenharmony_ci   * @typedef StrutStyle
88161847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
88261847f8eSopenharmony_ci   * @since 12
88361847f8eSopenharmony_ci   */
88461847f8eSopenharmony_ci  interface StrutStyle {
88561847f8eSopenharmony_ci    /**
88661847f8eSopenharmony_ci     * The families of the font to use when calculating the strut.
88761847f8eSopenharmony_ci     * @type { ?Array<string> } fontfamily gather
88861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
88961847f8eSopenharmony_ci     * @since 12
89061847f8eSopenharmony_ci     */
89161847f8eSopenharmony_ci    fontFamilies?: Array<string>;
89261847f8eSopenharmony_ci
89361847f8eSopenharmony_ci    /**
89461847f8eSopenharmony_ci     * The font style to use when calculating the strut.
89561847f8eSopenharmony_ci     * @type { ?FontStyle } it is uint32_t type data
89661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
89761847f8eSopenharmony_ci     * @since 12
89861847f8eSopenharmony_ci     */
89961847f8eSopenharmony_ci    fontStyle?: FontStyle;
90061847f8eSopenharmony_ci
90161847f8eSopenharmony_ci    /**
90261847f8eSopenharmony_ci     * The font width to use when calculating the strut.
90361847f8eSopenharmony_ci     * @type { ?FontWidth } it is uint32_t type data
90461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
90561847f8eSopenharmony_ci     * @since 12
90661847f8eSopenharmony_ci     */
90761847f8eSopenharmony_ci    fontWidth?: FontWidth;
90861847f8eSopenharmony_ci
90961847f8eSopenharmony_ci    /**
91061847f8eSopenharmony_ci     * The font weight to use when calculating the strut.
91161847f8eSopenharmony_ci     * @type { ?FontWeight } it is uint32_t type data
91261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
91361847f8eSopenharmony_ci     * @since 12
91461847f8eSopenharmony_ci     */
91561847f8eSopenharmony_ci    fontWeight?: FontWeight;
91661847f8eSopenharmony_ci
91761847f8eSopenharmony_ci    /**
91861847f8eSopenharmony_ci     * The size of the ascent plus descent in logical pixels.
91961847f8eSopenharmony_ci     * @type { ?number } it is double type data
92061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
92161847f8eSopenharmony_ci     * @since 12
92261847f8eSopenharmony_ci     */
92361847f8eSopenharmony_ci    fontSize?: number;
92461847f8eSopenharmony_ci
92561847f8eSopenharmony_ci    /**
92661847f8eSopenharmony_ci     * The minimum height of the strut, as a multiple of fontSize.
92761847f8eSopenharmony_ci     * @type { ?number } it is double type data
92861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
92961847f8eSopenharmony_ci     * @since 12
93061847f8eSopenharmony_ci     */
93161847f8eSopenharmony_ci    height?: number;
93261847f8eSopenharmony_ci
93361847f8eSopenharmony_ci    /**
93461847f8eSopenharmony_ci     * The additional leading to apply to the strut as a multiple of Size.
93561847f8eSopenharmony_ci     * @type { ?number } it is double type data
93661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
93761847f8eSopenharmony_ci     * @since 12
93861847f8eSopenharmony_ci     */
93961847f8eSopenharmony_ci    leading?: number;
94061847f8eSopenharmony_ci
94161847f8eSopenharmony_ci    /**
94261847f8eSopenharmony_ci     * Whether the strut height should be forced.
94361847f8eSopenharmony_ci     * @type { ?boolean } it is boolean type data
94461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
94561847f8eSopenharmony_ci     * @since 12
94661847f8eSopenharmony_ci     */
94761847f8eSopenharmony_ci    forceHeight?: boolean;
94861847f8eSopenharmony_ci
94961847f8eSopenharmony_ci    /**
95061847f8eSopenharmony_ci     * Whether the strut style should be enable.
95161847f8eSopenharmony_ci     * @type { ?boolean } it is boolean type data
95261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
95361847f8eSopenharmony_ci     * @since 12
95461847f8eSopenharmony_ci     */
95561847f8eSopenharmony_ci    enabled?: boolean;
95661847f8eSopenharmony_ci
95761847f8eSopenharmony_ci    /**
95861847f8eSopenharmony_ci     * Whether the height is override.
95961847f8eSopenharmony_ci     * @type { ?boolean } it is boolean type data
96061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
96161847f8eSopenharmony_ci     * @since 12
96261847f8eSopenharmony_ci     */
96361847f8eSopenharmony_ci    heightOverride?: boolean;
96461847f8eSopenharmony_ci
96561847f8eSopenharmony_ci    /**
96661847f8eSopenharmony_ci     * Whether the half leading is enable.
96761847f8eSopenharmony_ci     * @type { ?boolean } it is boolean type data
96861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
96961847f8eSopenharmony_ci     * @since 12
97061847f8eSopenharmony_ci     */
97161847f8eSopenharmony_ci    halfLeading?: boolean;
97261847f8eSopenharmony_ci  }
97361847f8eSopenharmony_ci
97461847f8eSopenharmony_ci  /**
97561847f8eSopenharmony_ci   * Determines the configuration used by ParagraphBuilder to position lines within a Paragraph of text.
97661847f8eSopenharmony_ci   * @typedef ParagraphStyle
97761847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
97861847f8eSopenharmony_ci   * @since 12
97961847f8eSopenharmony_ci   */
98061847f8eSopenharmony_ci  interface ParagraphStyle {
98161847f8eSopenharmony_ci    /**
98261847f8eSopenharmony_ci     * Text style of paragraph.
98361847f8eSopenharmony_ci     * @type { ?TextStyle }
98461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
98561847f8eSopenharmony_ci     * @since 12
98661847f8eSopenharmony_ci     */
98761847f8eSopenharmony_ci    textStyle?: TextStyle;
98861847f8eSopenharmony_ci
98961847f8eSopenharmony_ci    /**
99061847f8eSopenharmony_ci     * Text runs direction.
99161847f8eSopenharmony_ci     * @type { ?TextDirection }
99261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
99361847f8eSopenharmony_ci     * @since 12
99461847f8eSopenharmony_ci     */
99561847f8eSopenharmony_ci    textDirection?: TextDirection;
99661847f8eSopenharmony_ci
99761847f8eSopenharmony_ci    /**
99861847f8eSopenharmony_ci     * Refers to how to align the horizontal position of text when displaying text.
99961847f8eSopenharmony_ci     * @type { ?TextAlign }
100061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
100161847f8eSopenharmony_ci     * @since 12
100261847f8eSopenharmony_ci     */
100361847f8eSopenharmony_ci    align?: TextAlign;
100461847f8eSopenharmony_ci
100561847f8eSopenharmony_ci    /**
100661847f8eSopenharmony_ci     * Word break strategy.
100761847f8eSopenharmony_ci     * @type { ?WordBreak }
100861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
100961847f8eSopenharmony_ci     * @since 12
101061847f8eSopenharmony_ci     */
101161847f8eSopenharmony_ci    wordBreak?: WordBreak;
101261847f8eSopenharmony_ci
101361847f8eSopenharmony_ci    /**
101461847f8eSopenharmony_ci     * Maximum number of lines.
101561847f8eSopenharmony_ci     * @type { ?number }
101661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
101761847f8eSopenharmony_ci     * @since 12
101861847f8eSopenharmony_ci     */
101961847f8eSopenharmony_ci    maxLines?: number;
102061847f8eSopenharmony_ci
102161847f8eSopenharmony_ci    /**
102261847f8eSopenharmony_ci     * text segmentation strategy.
102361847f8eSopenharmony_ci     * @type { ?BreakStrategy }
102461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
102561847f8eSopenharmony_ci     * @since 12
102661847f8eSopenharmony_ci     */
102761847f8eSopenharmony_ci    breakStrategy?: BreakStrategy;
102861847f8eSopenharmony_ci
102961847f8eSopenharmony_ci    /**
103061847f8eSopenharmony_ci     * Strut style of paragraph.
103161847f8eSopenharmony_ci     * @type { ?StrutStyle }
103261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
103361847f8eSopenharmony_ci     * @since 12
103461847f8eSopenharmony_ci     */
103561847f8eSopenharmony_ci    strutStyle?: StrutStyle;
103661847f8eSopenharmony_ci
103761847f8eSopenharmony_ci    /**
103861847f8eSopenharmony_ci     * Text height behavior of paragraph.
103961847f8eSopenharmony_ci     * @type { ?TextHeightBehavior }
104061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
104161847f8eSopenharmony_ci     * @since 12
104261847f8eSopenharmony_ci     */
104361847f8eSopenharmony_ci    textHeightBehavior?: TextHeightBehavior;
104461847f8eSopenharmony_ci
104561847f8eSopenharmony_ci    /**
104661847f8eSopenharmony_ci     * Text tab of paragraph. Tab alignment does not take effect when text alignment is also set, Or when the ellipsis
104761847f8eSopenharmony_ci     * style is configured. When the tab is not set or the tab's location property is less than or equal to 0,
104861847f8eSopenharmony_ci     * it is the default space effect. And all tabs in the paragraph after the setting are aligned
104961847f8eSopenharmony_ci     * according to this tab effect.
105061847f8eSopenharmony_ci     * @type { ?TextTab }
105161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
105261847f8eSopenharmony_ci     * @since 14
105361847f8eSopenharmony_ci     */
105461847f8eSopenharmony_ci    tab?: TextTab;
105561847f8eSopenharmony_ci  }
105661847f8eSopenharmony_ci
105761847f8eSopenharmony_ci  /**
105861847f8eSopenharmony_ci   * Where to vertically align the placeholder relative to the surrounding text.
105961847f8eSopenharmony_ci   * @enum { number }
106061847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
106161847f8eSopenharmony_ci   * @since 12
106261847f8eSopenharmony_ci   */
106361847f8eSopenharmony_ci  enum PlaceholderAlignment {
106461847f8eSopenharmony_ci    /**
106561847f8eSopenharmony_ci     * Match the baseline of the placeholder with the baseline.
106661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
106761847f8eSopenharmony_ci     * @since 12
106861847f8eSopenharmony_ci     */
106961847f8eSopenharmony_ci    OFFSET_AT_BASELINE,
107061847f8eSopenharmony_ci
107161847f8eSopenharmony_ci    /**
107261847f8eSopenharmony_ci     * Align the bottom edge of the placeholder with the baseline such that the placeholder
107361847f8eSopenharmony_ci     * sits on top of the baseline.
107461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
107561847f8eSopenharmony_ci     * @since 12
107661847f8eSopenharmony_ci     */
107761847f8eSopenharmony_ci    ABOVE_BASELINE,
107861847f8eSopenharmony_ci
107961847f8eSopenharmony_ci    /**
108061847f8eSopenharmony_ci     * Align the top edge of the placeholder with the baseline specified in such that the placeholder
108161847f8eSopenharmony_ci     * hangs below the baseline.
108261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
108361847f8eSopenharmony_ci     * @since 12
108461847f8eSopenharmony_ci     */
108561847f8eSopenharmony_ci    BELOW_BASELINE,
108661847f8eSopenharmony_ci
108761847f8eSopenharmony_ci    /**
108861847f8eSopenharmony_ci     * Align the top edge of the placeholder with the top edge of the font. When the placeholder is very tall,
108961847f8eSopenharmony_ci     * the extra space will hang from the top and extend through the bottom of the line.
109061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
109161847f8eSopenharmony_ci     * @since 12
109261847f8eSopenharmony_ci     */
109361847f8eSopenharmony_ci    TOP_OF_ROW_BOX,
109461847f8eSopenharmony_ci
109561847f8eSopenharmony_ci    /**
109661847f8eSopenharmony_ci     * Align the bottom edge of the placeholder with the bottom edge of the text. When the placeholder is very tall,
109761847f8eSopenharmony_ci     * the extra space will rise from the bottom and extend through the top of the line.
109861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
109961847f8eSopenharmony_ci     * @since 12
110061847f8eSopenharmony_ci     */
110161847f8eSopenharmony_ci    BOTTOM_OF_ROW_BOX,
110261847f8eSopenharmony_ci
110361847f8eSopenharmony_ci    /**
110461847f8eSopenharmony_ci     * Align the middle of the placeholder with the middle of the text.When the placeholder is very tall,
110561847f8eSopenharmony_ci     * the extra space will grow equally from the top and bottom of the line.
110661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
110761847f8eSopenharmony_ci     * @since 12
110861847f8eSopenharmony_ci     */
110961847f8eSopenharmony_ci    CENTER_OF_ROW_BOX,
111061847f8eSopenharmony_ci  }
111161847f8eSopenharmony_ci
111261847f8eSopenharmony_ci  /**
111361847f8eSopenharmony_ci   * Provide a description of placeholder scope in creating typography.
111461847f8eSopenharmony_ci   * @typedef PlaceholderSpan
111561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
111661847f8eSopenharmony_ci   * @since 12
111761847f8eSopenharmony_ci   */
111861847f8eSopenharmony_ci  interface PlaceholderSpan {
111961847f8eSopenharmony_ci    /**
112061847f8eSopenharmony_ci     * The width of the placeholder.
112161847f8eSopenharmony_ci     * @type { number }
112261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
112361847f8eSopenharmony_ci     * @since 12
112461847f8eSopenharmony_ci     */
112561847f8eSopenharmony_ci    width: number;
112661847f8eSopenharmony_ci
112761847f8eSopenharmony_ci    /**
112861847f8eSopenharmony_ci     * The height of the placeholder.
112961847f8eSopenharmony_ci     * @type { number }
113061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
113161847f8eSopenharmony_ci     * @since 12
113261847f8eSopenharmony_ci     */
113361847f8eSopenharmony_ci    height: number;
113461847f8eSopenharmony_ci
113561847f8eSopenharmony_ci    /**
113661847f8eSopenharmony_ci     * Alignment mode of placeholder.
113761847f8eSopenharmony_ci     * @type { PlaceholderAlignment }
113861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
113961847f8eSopenharmony_ci     * @since 12
114061847f8eSopenharmony_ci     */
114161847f8eSopenharmony_ci    align: PlaceholderAlignment;
114261847f8eSopenharmony_ci
114361847f8eSopenharmony_ci    /**
114461847f8eSopenharmony_ci     * Baseline of placeholder.
114561847f8eSopenharmony_ci     * @type { TextBaseline }
114661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
114761847f8eSopenharmony_ci     * @since 12
114861847f8eSopenharmony_ci     */
114961847f8eSopenharmony_ci    baseline: TextBaseline;
115061847f8eSopenharmony_ci
115161847f8eSopenharmony_ci    /**
115261847f8eSopenharmony_ci     * Baseline offset of placeholder.
115361847f8eSopenharmony_ci     * @type { number }
115461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
115561847f8eSopenharmony_ci     * @since 12
115661847f8eSopenharmony_ci     */
115761847f8eSopenharmony_ci    baselineOffset: number;
115861847f8eSopenharmony_ci  }
115961847f8eSopenharmony_ci
116061847f8eSopenharmony_ci  /**
116161847f8eSopenharmony_ci   * Provides the definition of the range.
116261847f8eSopenharmony_ci   * @typedef Range
116361847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
116461847f8eSopenharmony_ci   * @since 12
116561847f8eSopenharmony_ci   */
116661847f8eSopenharmony_ci  interface Range {
116761847f8eSopenharmony_ci    /**
116861847f8eSopenharmony_ci     * Left index.
116961847f8eSopenharmony_ci     * @type { number }
117061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
117161847f8eSopenharmony_ci     * @since 12
117261847f8eSopenharmony_ci     */
117361847f8eSopenharmony_ci    start: number;
117461847f8eSopenharmony_ci
117561847f8eSopenharmony_ci    /**
117661847f8eSopenharmony_ci     * Right index.
117761847f8eSopenharmony_ci     * @type { number }
117861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
117961847f8eSopenharmony_ci     * @since 12
118061847f8eSopenharmony_ci     */
118161847f8eSopenharmony_ci    end: number;
118261847f8eSopenharmony_ci  }
118361847f8eSopenharmony_ci
118461847f8eSopenharmony_ci  /**
118561847f8eSopenharmony_ci   * An enumeration of system font types.
118661847f8eSopenharmony_ci   * @enum { number }
118761847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
118861847f8eSopenharmony_ci   * @since 14
118961847f8eSopenharmony_ci   */
119061847f8eSopenharmony_ci  enum SystemFontType {
119161847f8eSopenharmony_ci    /**
119261847f8eSopenharmony_ci     * All font types.
119361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
119461847f8eSopenharmony_ci     * @since 14
119561847f8eSopenharmony_ci     */
119661847f8eSopenharmony_ci    ALL = 1 << 0,
119761847f8eSopenharmony_ci
119861847f8eSopenharmony_ci    /**
119961847f8eSopenharmony_ci     * System generic font type.
120061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
120161847f8eSopenharmony_ci     * @since 14
120261847f8eSopenharmony_ci     */
120361847f8eSopenharmony_ci    GENERIC = 1 << 1,
120461847f8eSopenharmony_ci
120561847f8eSopenharmony_ci    /**
120661847f8eSopenharmony_ci     * Stylish font type.
120761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
120861847f8eSopenharmony_ci     * @since 14
120961847f8eSopenharmony_ci     */
121061847f8eSopenharmony_ci    STYLISH = 1 << 2,
121161847f8eSopenharmony_ci
121261847f8eSopenharmony_ci    /**
121361847f8eSopenharmony_ci     * Installed font types.
121461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
121561847f8eSopenharmony_ci     * @since 14
121661847f8eSopenharmony_ci     */
121761847f8eSopenharmony_ci    INSTALLED = 1 << 3,
121861847f8eSopenharmony_ci  }
121961847f8eSopenharmony_ci
122061847f8eSopenharmony_ci  /**
122161847f8eSopenharmony_ci   * Font descriptor
122261847f8eSopenharmony_ci   * @typedef FontDescriptor
122361847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
122461847f8eSopenharmony_ci   * @since 14
122561847f8eSopenharmony_ci   */
122661847f8eSopenharmony_ci  interface FontDescriptor {
122761847f8eSopenharmony_ci    /**
122861847f8eSopenharmony_ci     * Font file path
122961847f8eSopenharmony_ci     * @type { ?string }
123061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
123161847f8eSopenharmony_ci     * @since 14
123261847f8eSopenharmony_ci     */
123361847f8eSopenharmony_ci    path?: string;
123461847f8eSopenharmony_ci
123561847f8eSopenharmony_ci    /**
123661847f8eSopenharmony_ci     * Font postScript name
123761847f8eSopenharmony_ci     * @type { ?string }
123861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
123961847f8eSopenharmony_ci     * @since 14
124061847f8eSopenharmony_ci     */
124161847f8eSopenharmony_ci    postScriptName?: string;
124261847f8eSopenharmony_ci
124361847f8eSopenharmony_ci    /**
124461847f8eSopenharmony_ci     * Full font name
124561847f8eSopenharmony_ci     * @type { ?string }
124661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
124761847f8eSopenharmony_ci     * @since 14
124861847f8eSopenharmony_ci     */
124961847f8eSopenharmony_ci    fullName?: string;
125061847f8eSopenharmony_ci
125161847f8eSopenharmony_ci    /**
125261847f8eSopenharmony_ci     * Font family name
125361847f8eSopenharmony_ci     * @type { ?string }
125461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
125561847f8eSopenharmony_ci     * @since 14
125661847f8eSopenharmony_ci     */
125761847f8eSopenharmony_ci    fontFamily?: string;
125861847f8eSopenharmony_ci
125961847f8eSopenharmony_ci    /**
126061847f8eSopenharmony_ci     * Font subfamily name
126161847f8eSopenharmony_ci     * @type { ?string }
126261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
126361847f8eSopenharmony_ci     * @since 14
126461847f8eSopenharmony_ci     */
126561847f8eSopenharmony_ci    fontSubfamily?: string;
126661847f8eSopenharmony_ci
126761847f8eSopenharmony_ci    /**
126861847f8eSopenharmony_ci     * Font weight
126961847f8eSopenharmony_ci     * @type { ?FontWeight }
127061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
127161847f8eSopenharmony_ci     * @since 14
127261847f8eSopenharmony_ci     */
127361847f8eSopenharmony_ci    weight?: FontWeight;
127461847f8eSopenharmony_ci
127561847f8eSopenharmony_ci    /**
127661847f8eSopenharmony_ci     * Font width
127761847f8eSopenharmony_ci     * @type { ?number }
127861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
127961847f8eSopenharmony_ci     * @since 14
128061847f8eSopenharmony_ci     */
128161847f8eSopenharmony_ci    width?: number;
128261847f8eSopenharmony_ci
128361847f8eSopenharmony_ci    /**
128461847f8eSopenharmony_ci     * Font slant, non-0 means italic.
128561847f8eSopenharmony_ci     * @type { ?number }
128661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
128761847f8eSopenharmony_ci     * @since 14
128861847f8eSopenharmony_ci     */
128961847f8eSopenharmony_ci    italic?: number;
129061847f8eSopenharmony_ci
129161847f8eSopenharmony_ci    /**
129261847f8eSopenharmony_ci     * Whether the font is monospaced
129361847f8eSopenharmony_ci     * @type { ?boolean }
129461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
129561847f8eSopenharmony_ci     * @since 14
129661847f8eSopenharmony_ci     */
129761847f8eSopenharmony_ci    monoSpace?: boolean;
129861847f8eSopenharmony_ci
129961847f8eSopenharmony_ci    /**
130061847f8eSopenharmony_ci     * Whether to support symbols
130161847f8eSopenharmony_ci     * @type { ?boolean }
130261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
130361847f8eSopenharmony_ci     * @since 14
130461847f8eSopenharmony_ci     */
130561847f8eSopenharmony_ci    symbolic?: boolean;
130661847f8eSopenharmony_ci  }
130761847f8eSopenharmony_ci
130861847f8eSopenharmony_ci  /**
130961847f8eSopenharmony_ci   * A paragraph retains the size and position of each glyph in the text and can be efficiently resized and painted.
131061847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
131161847f8eSopenharmony_ci   * @since 12
131261847f8eSopenharmony_ci   */
131361847f8eSopenharmony_ci  class Paragraph {
131461847f8eSopenharmony_ci    /**
131561847f8eSopenharmony_ci     * Calculates the positioning of all the glyphs.
131661847f8eSopenharmony_ci     * @param { number } width - Control how wide the text is allowed to be.
131761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
131861847f8eSopenharmony_ci     * @since 12
131961847f8eSopenharmony_ci     */
132061847f8eSopenharmony_ci    layoutSync(width: number): void;
132161847f8eSopenharmony_ci
132261847f8eSopenharmony_ci    /**
132361847f8eSopenharmony_ci     * Calculates the positioning of all the glyphs.
132461847f8eSopenharmony_ci     * @param { number } width - Control how wide the text is allowed to be.
132561847f8eSopenharmony_ci     * @returns { Promise<void> } The promise returned by the function.
132661847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
132761847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
132861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
132961847f8eSopenharmony_ci     * @since 14
133061847f8eSopenharmony_ci     */
133161847f8eSopenharmony_ci    layout(width: number): Promise<void>;
133261847f8eSopenharmony_ci
133361847f8eSopenharmony_ci    /**
133461847f8eSopenharmony_ci     * Paint the laid out text onto the supplied canvas at (x, y).
133561847f8eSopenharmony_ci     * @param { drawing.Canvas } canvas - Object
133661847f8eSopenharmony_ci     * @param { number } x - Represents the X-axis position on the canvas.
133761847f8eSopenharmony_ci     * @param { number } y - Represents the Y-axis position on the canvas.
133861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
133961847f8eSopenharmony_ci     * @since 12
134061847f8eSopenharmony_ci     */
134161847f8eSopenharmony_ci    paint(canvas: drawing.Canvas, x: number, y: number): void;
134261847f8eSopenharmony_ci
134361847f8eSopenharmony_ci    /**
134461847f8eSopenharmony_ci     * Draw the laid out text onto the supplied canvas along the path and offset.
134561847f8eSopenharmony_ci     * @param { drawing.Canvas } canvas - Canvas used to carry the drawn content and drawing status.
134661847f8eSopenharmony_ci     * @param { drawing.Path } path - Path used to determine the position of the text.
134761847f8eSopenharmony_ci     * @param { number } hOffset - Horizontal offset along the path.
134861847f8eSopenharmony_ci     * @param { number } vOffset - Vertical offset along the path.
134961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
135061847f8eSopenharmony_ci     * @since 12
135161847f8eSopenharmony_ci     */
135261847f8eSopenharmony_ci    paintOnPath(canvas: drawing.Canvas, path: drawing.Path, hOffset: number, vOffset: number): void;
135361847f8eSopenharmony_ci
135461847f8eSopenharmony_ci    /**
135561847f8eSopenharmony_ci     * Get max width of horizontal space this paragraph occupied.
135661847f8eSopenharmony_ci     * @returns { number } Max width of horizontal space.
135761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
135861847f8eSopenharmony_ci     * @since 12
135961847f8eSopenharmony_ci     */
136061847f8eSopenharmony_ci    getMaxWidth(): number;
136161847f8eSopenharmony_ci
136261847f8eSopenharmony_ci    /**
136361847f8eSopenharmony_ci     * Get height of horizontal space this paragraph occupies.
136461847f8eSopenharmony_ci     * @returns { number } Height of horizontal space this paragraph occupies.
136561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
136661847f8eSopenharmony_ci     * @since 12
136761847f8eSopenharmony_ci     */
136861847f8eSopenharmony_ci    getHeight(): number;
136961847f8eSopenharmony_ci
137061847f8eSopenharmony_ci    /**
137161847f8eSopenharmony_ci     * Get the longest line of horizontal space this paragraph occupies.
137261847f8eSopenharmony_ci     * @returns { number } The longest line of horizontal space this paragraph occupies.
137361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
137461847f8eSopenharmony_ci     * @since 12
137561847f8eSopenharmony_ci     */
137661847f8eSopenharmony_ci    getLongestLine(): number;
137761847f8eSopenharmony_ci
137861847f8eSopenharmony_ci    /**
137961847f8eSopenharmony_ci     * Get the longest line of horizontal space this paragraph occupies, and this horizontal space contains the width
138061847f8eSopenharmony_ci     * of indent.
138161847f8eSopenharmony_ci     * @returns { number } The longest line with indent of horizontal space this paragraph occupies.
138261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
138361847f8eSopenharmony_ci     * @since 13
138461847f8eSopenharmony_ci     */
138561847f8eSopenharmony_ci    getLongestLineWithIndent(): number;
138661847f8eSopenharmony_ci
138761847f8eSopenharmony_ci    /**
138861847f8eSopenharmony_ci     * Get the min intrinsic width of horizontal space this paragraph occupies.
138961847f8eSopenharmony_ci     * @returns { number } The min intrinsic width of horizontal space this paragraph occupies.
139061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
139161847f8eSopenharmony_ci     * @since 12
139261847f8eSopenharmony_ci     */
139361847f8eSopenharmony_ci    getMinIntrinsicWidth(): number;
139461847f8eSopenharmony_ci
139561847f8eSopenharmony_ci    /**
139661847f8eSopenharmony_ci     * Get the max intrinsic width.
139761847f8eSopenharmony_ci     * @returns { number } Intrinsic Width.
139861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
139961847f8eSopenharmony_ci     * @since 12
140061847f8eSopenharmony_ci     */
140161847f8eSopenharmony_ci    getMaxIntrinsicWidth(): number;
140261847f8eSopenharmony_ci
140361847f8eSopenharmony_ci    /**
140461847f8eSopenharmony_ci     * Get the alphabetic baseline.
140561847f8eSopenharmony_ci     * @returns { number } Alphabetic Baseline.
140661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
140761847f8eSopenharmony_ci     * @since 12
140861847f8eSopenharmony_ci     */
140961847f8eSopenharmony_ci    getAlphabeticBaseline(): number;
141061847f8eSopenharmony_ci
141161847f8eSopenharmony_ci    /**
141261847f8eSopenharmony_ci     * Get the ideographic baseline.
141361847f8eSopenharmony_ci     * @returns { number } Ideographic Baseline.
141461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
141561847f8eSopenharmony_ci     * @since 12
141661847f8eSopenharmony_ci     */
141761847f8eSopenharmony_ci    getIdeographicBaseline(): number;
141861847f8eSopenharmony_ci
141961847f8eSopenharmony_ci    /**
142061847f8eSopenharmony_ci     * Get the rects for range.
142161847f8eSopenharmony_ci     * @param { Range } range - The range to set.
142261847f8eSopenharmony_ci     * @param { RectWidthStyle } widthStyle - Width style to set.
142361847f8eSopenharmony_ci     * @param { RectHeightStyle } heightStyle - Height style to set.
142461847f8eSopenharmony_ci     * @returns { Array<TextBox> } The rects for range.
142561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
142661847f8eSopenharmony_ci     * @since 12
142761847f8eSopenharmony_ci     */
142861847f8eSopenharmony_ci    getRectsForRange(range: Range, widthStyle: RectWidthStyle, heightStyle: RectHeightStyle): Array<TextBox>;
142961847f8eSopenharmony_ci
143061847f8eSopenharmony_ci    /**
143161847f8eSopenharmony_ci     * Get the rects for placeholders.
143261847f8eSopenharmony_ci     * @returns { Array<TextBox> } The rects for placeholders.
143361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
143461847f8eSopenharmony_ci     * @since 12
143561847f8eSopenharmony_ci     */
143661847f8eSopenharmony_ci    getRectsForPlaceholders(): Array<TextBox>;
143761847f8eSopenharmony_ci
143861847f8eSopenharmony_ci    /**
143961847f8eSopenharmony_ci     * Get the glyph position at coordinate.
144061847f8eSopenharmony_ci     * @param { number } x - the positionX of typography to set.
144161847f8eSopenharmony_ci     * @param { number } y - the positionY of typography to set.
144261847f8eSopenharmony_ci     * @returns { PositionWithAffinity } TextBlob object.
144361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
144461847f8eSopenharmony_ci     * @since 12
144561847f8eSopenharmony_ci     */
144661847f8eSopenharmony_ci    getGlyphPositionAtCoordinate(x: number, y: number): PositionWithAffinity;
144761847f8eSopenharmony_ci
144861847f8eSopenharmony_ci    /**
144961847f8eSopenharmony_ci     * Find the start and end position of the word containing the glyphs of the given offset.
145061847f8eSopenharmony_ci     * @param { number } offset - offset value
145161847f8eSopenharmony_ci     * @returns { Range } The range value returned to the caller.
145261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
145361847f8eSopenharmony_ci     * @since 12
145461847f8eSopenharmony_ci     */
145561847f8eSopenharmony_ci    getWordBoundary(offset: number): Range;
145661847f8eSopenharmony_ci
145761847f8eSopenharmony_ci    /**
145861847f8eSopenharmony_ci     * Get line count.
145961847f8eSopenharmony_ci     * @returns { number } The line count value returned to the caller.
146061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
146161847f8eSopenharmony_ci     * @since 12
146261847f8eSopenharmony_ci     */
146361847f8eSopenharmony_ci    getLineCount(): number;
146461847f8eSopenharmony_ci
146561847f8eSopenharmony_ci    /**
146661847f8eSopenharmony_ci     * Get the line height of the specified line.
146761847f8eSopenharmony_ci     * @param { number } line - line number
146861847f8eSopenharmony_ci     * @returns { number } The line height value returned to the caller.
146961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
147061847f8eSopenharmony_ci     * @since 12
147161847f8eSopenharmony_ci     */
147261847f8eSopenharmony_ci    getLineHeight(line: number): number;
147361847f8eSopenharmony_ci
147461847f8eSopenharmony_ci    /**
147561847f8eSopenharmony_ci     * Get the line width of the specified line.
147661847f8eSopenharmony_ci     * @param { number } line - line number
147761847f8eSopenharmony_ci     * @returns { number } The line width value returned to the caller.
147861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
147961847f8eSopenharmony_ci     * @since 12
148061847f8eSopenharmony_ci     */
148161847f8eSopenharmony_ci    getLineWidth(line: number): number;
148261847f8eSopenharmony_ci
148361847f8eSopenharmony_ci    /**
148461847f8eSopenharmony_ci     * Return whether it exceed the maximum lines of typography.
148561847f8eSopenharmony_ci     * @returns { boolean } The true indicates exceeding, the false indicates not exceeding.
148661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
148761847f8eSopenharmony_ci     * @since 12
148861847f8eSopenharmony_ci     */
148961847f8eSopenharmony_ci    didExceedMaxLines(): boolean;
149061847f8eSopenharmony_ci
149161847f8eSopenharmony_ci    /**
149261847f8eSopenharmony_ci     * Get the text lines of paragraph.
149361847f8eSopenharmony_ci     * @returns { Array<TextLine> } the tuple of TextLine.
149461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
149561847f8eSopenharmony_ci     * @since 12
149661847f8eSopenharmony_ci     */
149761847f8eSopenharmony_ci    getTextLines(): Array<TextLine>;
149861847f8eSopenharmony_ci
149961847f8eSopenharmony_ci    /**
150061847f8eSopenharmony_ci     * Returns the visible text on the line (excluding a possible ellipsis).
150161847f8eSopenharmony_ci     * @param { number } lineNumber - a line number
150261847f8eSopenharmony_ci     * @param { boolean } includeSpaces - indicates if the whitespaces should be included
150361847f8eSopenharmony_ci     * @returns { Range } The range of text.
150461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
150561847f8eSopenharmony_ci     * @since 12
150661847f8eSopenharmony_ci     */
150761847f8eSopenharmony_ci    getActualTextRange(lineNumber: number, includeSpaces: boolean): Range;
150861847f8eSopenharmony_ci
150961847f8eSopenharmony_ci    /**
151061847f8eSopenharmony_ci     * Returns the array of line metrics for a line of text.
151161847f8eSopenharmony_ci     * @returns { Array<LineMetrics> } Array of line metrics.
151261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
151361847f8eSopenharmony_ci     * @since 12
151461847f8eSopenharmony_ci     */
151561847f8eSopenharmony_ci    getLineMetrics(): Array<LineMetrics>;
151661847f8eSopenharmony_ci
151761847f8eSopenharmony_ci    /**
151861847f8eSopenharmony_ci     * Returns line metrics info for the line.
151961847f8eSopenharmony_ci     * @param { number } lineNumber - a line number
152061847f8eSopenharmony_ci     * @returns { LineMetrics | undefined } line metrics.
152161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
152261847f8eSopenharmony_ci     * @since 12
152361847f8eSopenharmony_ci     */
152461847f8eSopenharmony_ci    getLineMetrics(lineNumber: number): LineMetrics | undefined;
152561847f8eSopenharmony_ci  }
152661847f8eSopenharmony_ci
152761847f8eSopenharmony_ci  /**
152861847f8eSopenharmony_ci   * Provides the abilities to typeset by line.
152961847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
153061847f8eSopenharmony_ci   * @since 14
153161847f8eSopenharmony_ci   */
153261847f8eSopenharmony_ci  class LineTypeset {
153361847f8eSopenharmony_ci    /**
153461847f8eSopenharmony_ci     * Calculate the line breakpoint based on the width provided.
153561847f8eSopenharmony_ci     * @param { number } startIndex - The starting point for the line-break calculations.
153661847f8eSopenharmony_ci     * @param { number } width - The requested line-break width.
153761847f8eSopenharmony_ci     * @returns { number } A count of the characters from startIndex that would cause the line break.
153861847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
153961847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
154061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
154161847f8eSopenharmony_ci     * @since 14
154261847f8eSopenharmony_ci     */
154361847f8eSopenharmony_ci    getLineBreak(startIndex: number, width: number): number;
154461847f8eSopenharmony_ci
154561847f8eSopenharmony_ci    /**
154661847f8eSopenharmony_ci     * Creates a text line object based on the text range provided.
154761847f8eSopenharmony_ci     * @param { number } startIndex - The starting index of the text range.
154861847f8eSopenharmony_ci     * @param { number } count - The characters count of the text range.
154961847f8eSopenharmony_ci     * @returns { TextLine } Text line object.
155061847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
155161847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
155261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
155361847f8eSopenharmony_ci     * @since 14
155461847f8eSopenharmony_ci     */
155561847f8eSopenharmony_ci    createLine(startIndex: number, count: number): TextLine;
155661847f8eSopenharmony_ci  }
155761847f8eSopenharmony_ci
155861847f8eSopenharmony_ci  /**
155961847f8eSopenharmony_ci   * Box that contain text.
156061847f8eSopenharmony_ci   * @typedef TextBox
156161847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
156261847f8eSopenharmony_ci   * @since 12
156361847f8eSopenharmony_ci   */
156461847f8eSopenharmony_ci  interface TextBox{
156561847f8eSopenharmony_ci    /**
156661847f8eSopenharmony_ci     * Rect of text box.
156761847f8eSopenharmony_ci     * @type { common2D.Rect }
156861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
156961847f8eSopenharmony_ci     * @since 12
157061847f8eSopenharmony_ci     */
157161847f8eSopenharmony_ci    rect: common2D.Rect;
157261847f8eSopenharmony_ci
157361847f8eSopenharmony_ci    /**
157461847f8eSopenharmony_ci     * Text direction.
157561847f8eSopenharmony_ci     * @type { TextDirection }
157661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
157761847f8eSopenharmony_ci     * @since 12
157861847f8eSopenharmony_ci     */
157961847f8eSopenharmony_ci    direction: TextDirection;
158061847f8eSopenharmony_ci  }
158161847f8eSopenharmony_ci
158261847f8eSopenharmony_ci  /**
158361847f8eSopenharmony_ci   * Position and affinity.
158461847f8eSopenharmony_ci   * @typedef PositionWithAffinity
158561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
158661847f8eSopenharmony_ci   * @since 12
158761847f8eSopenharmony_ci   */
158861847f8eSopenharmony_ci  interface PositionWithAffinity {
158961847f8eSopenharmony_ci    /**
159061847f8eSopenharmony_ci     * Position of text.
159161847f8eSopenharmony_ci     * @type { number }
159261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
159361847f8eSopenharmony_ci     * @since 12
159461847f8eSopenharmony_ci     */
159561847f8eSopenharmony_ci    position: number;
159661847f8eSopenharmony_ci
159761847f8eSopenharmony_ci    /**
159861847f8eSopenharmony_ci     * Affinity of text.
159961847f8eSopenharmony_ci     * @type { Affinity }
160061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
160161847f8eSopenharmony_ci     * @since 12
160261847f8eSopenharmony_ci     */
160361847f8eSopenharmony_ci    affinity: Affinity;
160461847f8eSopenharmony_ci  }
160561847f8eSopenharmony_ci
160661847f8eSopenharmony_ci  /**
160761847f8eSopenharmony_ci   * Enumerates rect width style.
160861847f8eSopenharmony_ci   * @enum { number }
160961847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
161061847f8eSopenharmony_ci   * @since 12
161161847f8eSopenharmony_ci   */
161261847f8eSopenharmony_ci  enum RectWidthStyle {
161361847f8eSopenharmony_ci    /**
161461847f8eSopenharmony_ci     * Tight width.
161561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
161661847f8eSopenharmony_ci     * @since 12
161761847f8eSopenharmony_ci     */
161861847f8eSopenharmony_ci    TIGHT,
161961847f8eSopenharmony_ci
162061847f8eSopenharmony_ci    /**
162161847f8eSopenharmony_ci     * Max width.
162261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
162361847f8eSopenharmony_ci     * @since 12
162461847f8eSopenharmony_ci     */
162561847f8eSopenharmony_ci    MAX,
162661847f8eSopenharmony_ci  }
162761847f8eSopenharmony_ci
162861847f8eSopenharmony_ci  /**
162961847f8eSopenharmony_ci   * Enumerates rect height style.
163061847f8eSopenharmony_ci   * @enum { number }
163161847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
163261847f8eSopenharmony_ci   * @since 12
163361847f8eSopenharmony_ci   */
163461847f8eSopenharmony_ci  enum RectHeightStyle {
163561847f8eSopenharmony_ci    /**
163661847f8eSopenharmony_ci     * Provide tight bounding boxes that fit heights per run.
163761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
163861847f8eSopenharmony_ci     * @since 12
163961847f8eSopenharmony_ci     */
164061847f8eSopenharmony_ci    TIGHT,
164161847f8eSopenharmony_ci
164261847f8eSopenharmony_ci    /**
164361847f8eSopenharmony_ci     * The height of the boxes will be the maximum height of all runs in the line. All rects in the same
164461847f8eSopenharmony_ci     * line will be the same height.
164561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
164661847f8eSopenharmony_ci     * @since 12
164761847f8eSopenharmony_ci     */
164861847f8eSopenharmony_ci    MAX,
164961847f8eSopenharmony_ci
165061847f8eSopenharmony_ci    /**
165161847f8eSopenharmony_ci     * The top and bottom of each rect will cover half of the space above and half of the space below the line.
165261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
165361847f8eSopenharmony_ci     * @since 12
165461847f8eSopenharmony_ci     */
165561847f8eSopenharmony_ci    INCLUDE_LINE_SPACE_MIDDLE,
165661847f8eSopenharmony_ci
165761847f8eSopenharmony_ci    /**
165861847f8eSopenharmony_ci     * The line spacing will be added to the top of the rect.
165961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
166061847f8eSopenharmony_ci     * @since 12
166161847f8eSopenharmony_ci     */
166261847f8eSopenharmony_ci    INCLUDE_LINE_SPACE_TOP,
166361847f8eSopenharmony_ci
166461847f8eSopenharmony_ci    /**
166561847f8eSopenharmony_ci     * The line spacing will be added to the bottom of the rect.
166661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
166761847f8eSopenharmony_ci     * @since 12
166861847f8eSopenharmony_ci     */
166961847f8eSopenharmony_ci    INCLUDE_LINE_SPACE_BOTTOM,
167061847f8eSopenharmony_ci
167161847f8eSopenharmony_ci    /**
167261847f8eSopenharmony_ci     * The height of the boxes will be calculated by text strut.
167361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
167461847f8eSopenharmony_ci     * @since 12
167561847f8eSopenharmony_ci     */
167661847f8eSopenharmony_ci    STRUT,
167761847f8eSopenharmony_ci  }
167861847f8eSopenharmony_ci
167961847f8eSopenharmony_ci  /**
168061847f8eSopenharmony_ci   * Enumerates text affinity.When a selection range involves line breaks or other special characters, the
168161847f8eSopenharmony_ci   * affinity determines which side of the characters the start and end of the selection range should be
168261847f8eSopenharmony_ci   * closer to.
168361847f8eSopenharmony_ci   * @enum { number }
168461847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
168561847f8eSopenharmony_ci   * @since 12
168661847f8eSopenharmony_ci   */
168761847f8eSopenharmony_ci  enum Affinity {
168861847f8eSopenharmony_ci    /**
168961847f8eSopenharmony_ci     * The position has affinity for the upstream side of the text position.
169061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
169161847f8eSopenharmony_ci     * @since 12
169261847f8eSopenharmony_ci     */
169361847f8eSopenharmony_ci
169461847f8eSopenharmony_ci    UPSTREAM,
169561847f8eSopenharmony_ci    /**
169661847f8eSopenharmony_ci     * The position has affinity for the downstream side of the text position.
169761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
169861847f8eSopenharmony_ci     * @since 12
169961847f8eSopenharmony_ci     */
170061847f8eSopenharmony_ci    DOWNSTREAM,
170161847f8eSopenharmony_ci  }
170261847f8eSopenharmony_ci
170361847f8eSopenharmony_ci  /**
170461847f8eSopenharmony_ci   * Builds a Paragraph containing text with the given styling information.
170561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
170661847f8eSopenharmony_ci   * @since 12
170761847f8eSopenharmony_ci   */
170861847f8eSopenharmony_ci  class ParagraphBuilder {
170961847f8eSopenharmony_ci    /**
171061847f8eSopenharmony_ci     * Constructor ParagraphBuilder.
171161847f8eSopenharmony_ci     * @param { ParagraphStyle } paragraphStyle - Paragraph style {@link ParagraphStyle}
171261847f8eSopenharmony_ci     * @param { FontCollection } fontCollection - Font collection {@link FontCollection}
171361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
171461847f8eSopenharmony_ci     * @since 12
171561847f8eSopenharmony_ci     */
171661847f8eSopenharmony_ci    constructor(paragraphStyle: ParagraphStyle, fontCollection: FontCollection);
171761847f8eSopenharmony_ci
171861847f8eSopenharmony_ci    /**
171961847f8eSopenharmony_ci     * Push a style to the stack.
172061847f8eSopenharmony_ci     * @param { TextStyle } textStyle - Text style {@link TextStyle}
172161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
172261847f8eSopenharmony_ci     * @since 12
172361847f8eSopenharmony_ci     */
172461847f8eSopenharmony_ci    pushStyle(textStyle: TextStyle): void;
172561847f8eSopenharmony_ci
172661847f8eSopenharmony_ci    /**
172761847f8eSopenharmony_ci     * Remove a style from the stack.
172861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
172961847f8eSopenharmony_ci     * @since 12
173061847f8eSopenharmony_ci     */
173161847f8eSopenharmony_ci    popStyle(): void;
173261847f8eSopenharmony_ci
173361847f8eSopenharmony_ci    /**
173461847f8eSopenharmony_ci     * Adds text to the builder.
173561847f8eSopenharmony_ci     * @param { string } text - Text string
173661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
173761847f8eSopenharmony_ci     * @since 12
173861847f8eSopenharmony_ci     */
173961847f8eSopenharmony_ci    addText(text: string): void;
174061847f8eSopenharmony_ci
174161847f8eSopenharmony_ci    /**
174261847f8eSopenharmony_ci     * Add placeholder.
174361847f8eSopenharmony_ci     * @param { PlaceholderSpan } placeholderSpan - Placeholder Span {@link PlaceholderSpan}
174461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
174561847f8eSopenharmony_ci     * @since 12
174661847f8eSopenharmony_ci     */
174761847f8eSopenharmony_ci    addPlaceholder(placeholderSpan: PlaceholderSpan): void;
174861847f8eSopenharmony_ci
174961847f8eSopenharmony_ci    /**
175061847f8eSopenharmony_ci     * Create paragraph object.
175161847f8eSopenharmony_ci     * @returns { Paragraph } The paragraph value returned to the caller.
175261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
175361847f8eSopenharmony_ci     * @since 12
175461847f8eSopenharmony_ci     */
175561847f8eSopenharmony_ci    build(): Paragraph;
175661847f8eSopenharmony_ci
175761847f8eSopenharmony_ci    /**
175861847f8eSopenharmony_ci     * Create LineTypeset object.
175961847f8eSopenharmony_ci     * @returns { LineTypeset } The LineTypeset value returned to the caller.
176061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
176161847f8eSopenharmony_ci     * @since 14
176261847f8eSopenharmony_ci     */
176361847f8eSopenharmony_ci    buildLineTypeset(): LineTypeset;
176461847f8eSopenharmony_ci
176561847f8eSopenharmony_ci    /**
176661847f8eSopenharmony_ci     * Add symbolId.
176761847f8eSopenharmony_ci     * @param { number } symbolId - Symbol Id
176861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
176961847f8eSopenharmony_ci     * @since 12
177061847f8eSopenharmony_ci     */
177161847f8eSopenharmony_ci    addSymbol(symbolId: number): void;
177261847f8eSopenharmony_ci  }
177361847f8eSopenharmony_ci
177461847f8eSopenharmony_ci  /**
177561847f8eSopenharmony_ci   * Provides the definition of the typographic bounds.
177661847f8eSopenharmony_ci   * @typedef TypographicBounds
177761847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
177861847f8eSopenharmony_ci   * @since 14
177961847f8eSopenharmony_ci   */
178061847f8eSopenharmony_ci  interface TypographicBounds {
178161847f8eSopenharmony_ci    /**
178261847f8eSopenharmony_ci     * Distance Retained Above Baseline.
178361847f8eSopenharmony_ci     * @type { number }
178461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
178561847f8eSopenharmony_ci     * @since 14
178661847f8eSopenharmony_ci     */
178761847f8eSopenharmony_ci    ascent: number;
178861847f8eSopenharmony_ci
178961847f8eSopenharmony_ci    /**
179061847f8eSopenharmony_ci     * The distance that remains below the baseline.
179161847f8eSopenharmony_ci     * @type { number }
179261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
179361847f8eSopenharmony_ci     * @since 14
179461847f8eSopenharmony_ci     */
179561847f8eSopenharmony_ci    descent: number;
179661847f8eSopenharmony_ci
179761847f8eSopenharmony_ci    /**
179861847f8eSopenharmony_ci     * Line Spacing.
179961847f8eSopenharmony_ci     * @type { number }
180061847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
180161847f8eSopenharmony_ci     * @since 14
180261847f8eSopenharmony_ci     */
180361847f8eSopenharmony_ci    leading: number;
180461847f8eSopenharmony_ci
180561847f8eSopenharmony_ci    /**
180661847f8eSopenharmony_ci     * The total width of the typesetting border.
180761847f8eSopenharmony_ci     * @type { number }
180861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
180961847f8eSopenharmony_ci     * @since 14
181061847f8eSopenharmony_ci     */
181161847f8eSopenharmony_ci    width: number;
181261847f8eSopenharmony_ci  }
181361847f8eSopenharmony_ci
181461847f8eSopenharmony_ci  /**
181561847f8eSopenharmony_ci   * Offset callback function of caret.
181661847f8eSopenharmony_ci   *
181761847f8eSopenharmony_ci   * @typedef { function } CaretOffsetsCallback
181861847f8eSopenharmony_ci   * @param { number } offset - Character offset is traversed as an argument to the callback function.
181961847f8eSopenharmony_ci   * @param { number } index - Character index is traversed as an argument to the callback function.
182061847f8eSopenharmony_ci   * @param { boolean } leadingEdge - Whether the current offset is at the character front, as an argument to the
182161847f8eSopenharmony_ci   * callback function.
182261847f8eSopenharmony_ci   * @returns { boolean } The return value of the user-defined callback function. If false is returned, the traversal
182361847f8eSopenharmony_ci   * continues. If true is returned, the traversal stops.
182461847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
182561847f8eSopenharmony_ci   * @since 14
182661847f8eSopenharmony_ci   */
182761847f8eSopenharmony_ci  type CaretOffsetsCallback = (offset: number, index: number, leadingEdge: boolean) => boolean;
182861847f8eSopenharmony_ci
182961847f8eSopenharmony_ci  /**
183061847f8eSopenharmony_ci   * The structure of text line that provides the basis of paragraph for graphics.
183161847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
183261847f8eSopenharmony_ci   * @since 12
183361847f8eSopenharmony_ci   */
183461847f8eSopenharmony_ci  class TextLine {
183561847f8eSopenharmony_ci    /**
183661847f8eSopenharmony_ci     * Get the count of glyphs.
183761847f8eSopenharmony_ci     * @returns { number } The counts of glyphs.
183861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
183961847f8eSopenharmony_ci     * @since 12
184061847f8eSopenharmony_ci     */
184161847f8eSopenharmony_ci    getGlyphCount(): number;
184261847f8eSopenharmony_ci
184361847f8eSopenharmony_ci    /**
184461847f8eSopenharmony_ci     * Get the range of text line.
184561847f8eSopenharmony_ci     * @returns { Range } The range of text.
184661847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
184761847f8eSopenharmony_ci     * @since 12
184861847f8eSopenharmony_ci     */
184961847f8eSopenharmony_ci    getTextRange(): Range;
185061847f8eSopenharmony_ci
185161847f8eSopenharmony_ci    /**
185261847f8eSopenharmony_ci     * Get the glyph runs of text line.
185361847f8eSopenharmony_ci     * @returns { Array<Run> } The tuple of glyph runs of text.
185461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
185561847f8eSopenharmony_ci     * @since 12
185661847f8eSopenharmony_ci     */
185761847f8eSopenharmony_ci    getGlyphRuns(): Array<Run>;
185861847f8eSopenharmony_ci
185961847f8eSopenharmony_ci    /**
186061847f8eSopenharmony_ci     * Paint the range of text line.
186161847f8eSopenharmony_ci     * @param { drawing.Canvas } canvas - Canvas.
186261847f8eSopenharmony_ci     * @param { number } x - Represents the X-axis position on the canvas.
186361847f8eSopenharmony_ci     * @param { number } y - Represents the Y-axis position on the canvas.
186461847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
186561847f8eSopenharmony_ci     * @since 12
186661847f8eSopenharmony_ci     */
186761847f8eSopenharmony_ci    paint(canvas: drawing.Canvas, x: number, y: number): void;
186861847f8eSopenharmony_ci
186961847f8eSopenharmony_ci    /**
187061847f8eSopenharmony_ci     * Creates a truncated text line object.
187161847f8eSopenharmony_ci     * @param { number } width - The width of the truncated line.
187261847f8eSopenharmony_ci     * @param { EllipsisMode } ellipsisMode - Text ellipsis mode, EllipsisMode:MIDDLE is not supported.
187361847f8eSopenharmony_ci     * @param { string } ellipsis - Text ellipsis.
187461847f8eSopenharmony_ci     * @returns { TextLine } Truncated text line object.
187561847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
187661847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
187761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
187861847f8eSopenharmony_ci     * @since 14
187961847f8eSopenharmony_ci     */
188061847f8eSopenharmony_ci    createTruncatedLine(width: number, ellipsisMode: EllipsisMode, ellipsis: string): TextLine;
188161847f8eSopenharmony_ci
188261847f8eSopenharmony_ci    /**
188361847f8eSopenharmony_ci     * Gets the text line typographic bounds.
188461847f8eSopenharmony_ci     * @returns { TypographicBounds } The text line of typographic bounds.
188561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
188661847f8eSopenharmony_ci     * @since 14
188761847f8eSopenharmony_ci     */
188861847f8eSopenharmony_ci    getTypographicBounds(): TypographicBounds;
188961847f8eSopenharmony_ci
189061847f8eSopenharmony_ci    /**
189161847f8eSopenharmony_ci     * Gets the text line image bounds.
189261847f8eSopenharmony_ci     * @returns { common2D.Rect } Rect of text line.
189361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
189461847f8eSopenharmony_ci     * @since 14
189561847f8eSopenharmony_ci     */
189661847f8eSopenharmony_ci    getImageBounds(): common2D.Rect;
189761847f8eSopenharmony_ci
189861847f8eSopenharmony_ci    /**
189961847f8eSopenharmony_ci     * Gets the tail space width.
190061847f8eSopenharmony_ci     * @returns { number } The tail space width.
190161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
190261847f8eSopenharmony_ci     * @since 14
190361847f8eSopenharmony_ci     */
190461847f8eSopenharmony_ci    getTrailingSpaceWidth(): number;
190561847f8eSopenharmony_ci
190661847f8eSopenharmony_ci    /**
190761847f8eSopenharmony_ci     * Gets the string index of the given position.
190861847f8eSopenharmony_ci     * @param { common2D.Point } point - The given position.
190961847f8eSopenharmony_ci     * @returns { number } The string index for a given position.
191061847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
191161847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
191261847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
191361847f8eSopenharmony_ci     * @since 14
191461847f8eSopenharmony_ci     */
191561847f8eSopenharmony_ci    getStringIndexForPosition(point: common2D.Point): number;
191661847f8eSopenharmony_ci
191761847f8eSopenharmony_ci    /**
191861847f8eSopenharmony_ci     * Gets the offset of the given string index.
191961847f8eSopenharmony_ci     * @param { number } index - The given string index.
192061847f8eSopenharmony_ci     * @returns { number } The offset for a given string index.
192161847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
192261847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
192361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
192461847f8eSopenharmony_ci     * @since 14
192561847f8eSopenharmony_ci     */
192661847f8eSopenharmony_ci    getOffsetForStringIndex(index: number): number;
192761847f8eSopenharmony_ci
192861847f8eSopenharmony_ci    /**
192961847f8eSopenharmony_ci     * Enumerate caret offset and index in text lines.
193061847f8eSopenharmony_ci     * @param { CaretOffsetsCallback } callback - User-defined callback functions.
193161847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
193261847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
193361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
193461847f8eSopenharmony_ci     * @since 14
193561847f8eSopenharmony_ci     */
193661847f8eSopenharmony_ci    enumerateCaretOffsets(callback: CaretOffsetsCallback): void;
193761847f8eSopenharmony_ci
193861847f8eSopenharmony_ci    /**
193961847f8eSopenharmony_ci     * Gets the text offset based on the given alignment factor and alignment width.
194061847f8eSopenharmony_ci     * @param { number } alignmentFactor - The coefficients that text needs to be aligned.
194161847f8eSopenharmony_ci     *                                     Less than or equal to 0 is left justified, 0.5 is center justified,
194261847f8eSopenharmony_ci     *                                     and greater than or equal to 1 is right justified.
194361847f8eSopenharmony_ci     * @param { number } alignmentWidth - The width of the text to be aligned.
194461847f8eSopenharmony_ci     *                                    Returns 0 if it is less than the actual width of the text.
194561847f8eSopenharmony_ci     * @returns { number } The offset of the aligned text.
194661847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
194761847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
194861847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
194961847f8eSopenharmony_ci     * @since 14
195061847f8eSopenharmony_ci     */
195161847f8eSopenharmony_ci    getAlignmentOffset(alignmentFactor: number, alignmentWidth: number): number;
195261847f8eSopenharmony_ci  }
195361847f8eSopenharmony_ci
195461847f8eSopenharmony_ci  /**
195561847f8eSopenharmony_ci   * Independent rendering of text layout.
195661847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
195761847f8eSopenharmony_ci   * @since 12
195861847f8eSopenharmony_ci   */
195961847f8eSopenharmony_ci  class Run {
196061847f8eSopenharmony_ci    /**
196161847f8eSopenharmony_ci     * Gets the number of glyph.
196261847f8eSopenharmony_ci     * @returns { number } The number of glyph.
196361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
196461847f8eSopenharmony_ci     * @since 12
196561847f8eSopenharmony_ci     */
196661847f8eSopenharmony_ci    getGlyphCount(): number;
196761847f8eSopenharmony_ci
196861847f8eSopenharmony_ci    /**
196961847f8eSopenharmony_ci     * Gets the glyph identifier for each character.
197061847f8eSopenharmony_ci     * @returns { Array<number> } Glyph identifier.
197161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
197261847f8eSopenharmony_ci     * @since 12
197361847f8eSopenharmony_ci     */
197461847f8eSopenharmony_ci    getGlyphs(): Array<number>;
197561847f8eSopenharmony_ci
197661847f8eSopenharmony_ci    /**
197761847f8eSopenharmony_ci     * Gets the range glyph identifier for each character.
197861847f8eSopenharmony_ci     * @param { Range } range of run, range.start is the starting index of the run block, starting from 0.
197961847f8eSopenharmony_ci     * range.end is run length, if range.start and range.end are set to 0, then get all of the current run.
198061847f8eSopenharmony_ci     * @returns { Array<number> } Glyph identifier or undefined.
198161847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
198261847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
198361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
198461847f8eSopenharmony_ci     * @since 14
198561847f8eSopenharmony_ci     */
198661847f8eSopenharmony_ci    getGlyphs(range: Range): Array<number>;
198761847f8eSopenharmony_ci
198861847f8eSopenharmony_ci    /**
198961847f8eSopenharmony_ci     * Gets the font position offset.
199061847f8eSopenharmony_ci     * @returns { Array<common2D.Point> } The position of the font in the layout.
199161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
199261847f8eSopenharmony_ci     * @since 12
199361847f8eSopenharmony_ci     */
199461847f8eSopenharmony_ci    getPositions(): Array<common2D.Point>;
199561847f8eSopenharmony_ci
199661847f8eSopenharmony_ci    /**
199761847f8eSopenharmony_ci     * Gets the range font position offset.
199861847f8eSopenharmony_ci     * @param { Range } range of run, range.start is the starting index of the run block, starting from 0.
199961847f8eSopenharmony_ci     * range.end is run length, if range.start and range.end are set to 0, then get all of the current run.
200061847f8eSopenharmony_ci     * @returns { Array<common2D.Point> } The position of the font in the layout or undefined.
200161847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
200261847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
200361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
200461847f8eSopenharmony_ci     * @since 14
200561847f8eSopenharmony_ci     */
200661847f8eSopenharmony_ci    getPositions(range: Range): Array<common2D.Point>;
200761847f8eSopenharmony_ci
200861847f8eSopenharmony_ci	  /**
200961847f8eSopenharmony_ci     * Gets the font position offset array.
201061847f8eSopenharmony_ci     * @returns { Array<common2D.Point> } The position offset of the font in the layout.
201161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
201261847f8eSopenharmony_ci     * @since 12
201361847f8eSopenharmony_ci     */
201461847f8eSopenharmony_ci    getOffsets(): Array<common2D.Point>;
201561847f8eSopenharmony_ci
201661847f8eSopenharmony_ci    /**
201761847f8eSopenharmony_ci     * Gets the font object instance.
201861847f8eSopenharmony_ci     * @returns { drawing.Font } The font object instance.
201961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
202061847f8eSopenharmony_ci     * @since 12
202161847f8eSopenharmony_ci     */
202261847f8eSopenharmony_ci    getFont(): drawing.Font;
202361847f8eSopenharmony_ci
202461847f8eSopenharmony_ci    /**
202561847f8eSopenharmony_ci     * Paint the laid out text onto the supplied canvas at (x, y).
202661847f8eSopenharmony_ci     * @param { drawing.Canvas } canvas - Object.
202761847f8eSopenharmony_ci     * @param { number } x - Represents the X-axis position on the canvas.
202861847f8eSopenharmony_ci     * @param { number } y - Represents the Y-axis position on the canvas.
202961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
203061847f8eSopenharmony_ci     * @since 12
203161847f8eSopenharmony_ci     */
203261847f8eSopenharmony_ci    paint(canvas: drawing.Canvas, x: number, y: number): void;
203361847f8eSopenharmony_ci
203461847f8eSopenharmony_ci    /**
203561847f8eSopenharmony_ci     * Gets the range of run glyph indices, the offset of the indices relative to the entire paragraph.
203661847f8eSopenharmony_ci     * @param { Range } range of run, range.start is the starting index of the run block, starting from 0.
203761847f8eSopenharmony_ci     * range.end is run length, if range.start range.and end are set to 0, then get all of the current run.
203861847f8eSopenharmony_ci     * @returns { Array<number> } The glyph indices or undefined.
203961847f8eSopenharmony_ci     * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified.
204061847f8eSopenharmony_ci     * <br>2. Incorrect parameter types.
204161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
204261847f8eSopenharmony_ci     * @since 14
204361847f8eSopenharmony_ci     */
204461847f8eSopenharmony_ci    getStringIndices(range?: Range): Array<number>;
204561847f8eSopenharmony_ci
204661847f8eSopenharmony_ci    /**
204761847f8eSopenharmony_ci     * Gets the run glyph location and length.
204861847f8eSopenharmony_ci     * @returns { Range } The run of glyph location and length, Range.start is location, Range.end is length.
204961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
205061847f8eSopenharmony_ci     * @since 14
205161847f8eSopenharmony_ci     */
205261847f8eSopenharmony_ci    getStringRange(): Range;
205361847f8eSopenharmony_ci
205461847f8eSopenharmony_ci    /**
205561847f8eSopenharmony_ci     * Gets the run typographic bounds.
205661847f8eSopenharmony_ci     * @returns { TypographicBounds } The run of typographic bounds.
205761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
205861847f8eSopenharmony_ci     * @since 14
205961847f8eSopenharmony_ci     */
206061847f8eSopenharmony_ci    getTypographicBounds(): TypographicBounds;
206161847f8eSopenharmony_ci
206261847f8eSopenharmony_ci    /**
206361847f8eSopenharmony_ci     * Gets the run image bounds.
206461847f8eSopenharmony_ci     * @returns { common2D.Rect } The run rect bounds.
206561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
206661847f8eSopenharmony_ci     * @since 14
206761847f8eSopenharmony_ci     */
206861847f8eSopenharmony_ci    getImageBounds(): common2D.Rect;
206961847f8eSopenharmony_ci  }
207061847f8eSopenharmony_ci
207161847f8eSopenharmony_ci  /**
207261847f8eSopenharmony_ci   * Describes the layout information and metrics for a continuous piece of text (a run) in a line of text.
207361847f8eSopenharmony_ci   * @typedef RunMetrics
207461847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
207561847f8eSopenharmony_ci   * @since 12
207661847f8eSopenharmony_ci   */
207761847f8eSopenharmony_ci  interface RunMetrics {
207861847f8eSopenharmony_ci    /**
207961847f8eSopenharmony_ci     * The metrics of an Font.
208061847f8eSopenharmony_ci     * @type { TextStyle }
208161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
208261847f8eSopenharmony_ci     * @since 12
208361847f8eSopenharmony_ci     */
208461847f8eSopenharmony_ci    textStyle: TextStyle;
208561847f8eSopenharmony_ci
208661847f8eSopenharmony_ci    /**
208761847f8eSopenharmony_ci     * Describes text style.
208861847f8eSopenharmony_ci     * @type { drawing.FontMetrics }
208961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
209061847f8eSopenharmony_ci     * @since 12
209161847f8eSopenharmony_ci     */
209261847f8eSopenharmony_ci    fontMetrics: drawing.FontMetrics;
209361847f8eSopenharmony_ci  }
209461847f8eSopenharmony_ci
209561847f8eSopenharmony_ci  /**
209661847f8eSopenharmony_ci   * Describes the metric information for a line of text in a text layout.
209761847f8eSopenharmony_ci   * @typedef LineMetrics
209861847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
209961847f8eSopenharmony_ci   * @since 12
210061847f8eSopenharmony_ci   */
210161847f8eSopenharmony_ci  interface LineMetrics {
210261847f8eSopenharmony_ci    /**
210361847f8eSopenharmony_ci     * The indexes in the text buffer the line begins.
210461847f8eSopenharmony_ci     * @type { number }
210561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
210661847f8eSopenharmony_ci     * @since 12
210761847f8eSopenharmony_ci     */
210861847f8eSopenharmony_ci    startIndex: number;
210961847f8eSopenharmony_ci
211061847f8eSopenharmony_ci    /**
211161847f8eSopenharmony_ci     * The indexes in the text buffer the line ends.
211261847f8eSopenharmony_ci     * @type { number }
211361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
211461847f8eSopenharmony_ci     * @since 12
211561847f8eSopenharmony_ci     */
211661847f8eSopenharmony_ci    endIndex: number;
211761847f8eSopenharmony_ci
211861847f8eSopenharmony_ci    /**
211961847f8eSopenharmony_ci     * The height of the text rise, the distance from the baseline to the top of the character.
212061847f8eSopenharmony_ci     * @type { number }
212161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
212261847f8eSopenharmony_ci     * @since 12
212361847f8eSopenharmony_ci     */
212461847f8eSopenharmony_ci    ascent: number;
212561847f8eSopenharmony_ci
212661847f8eSopenharmony_ci    /**
212761847f8eSopenharmony_ci     * The height of the text drop, the distance from the baseline to the bottom of the character.
212861847f8eSopenharmony_ci     * @type { number }
212961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
213061847f8eSopenharmony_ci     * @since 12
213161847f8eSopenharmony_ci     */
213261847f8eSopenharmony_ci    descent: number;
213361847f8eSopenharmony_ci
213461847f8eSopenharmony_ci    /**
213561847f8eSopenharmony_ci     * The height of the current line is `round(ascent + descent)`.
213661847f8eSopenharmony_ci     * @type { number }
213761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
213861847f8eSopenharmony_ci     * @since 12
213961847f8eSopenharmony_ci     */
214061847f8eSopenharmony_ci    height: number;
214161847f8eSopenharmony_ci
214261847f8eSopenharmony_ci    /**
214361847f8eSopenharmony_ci     * Width of the line.
214461847f8eSopenharmony_ci     * @type { number }
214561847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
214661847f8eSopenharmony_ci     * @since 12
214761847f8eSopenharmony_ci     */
214861847f8eSopenharmony_ci    width: number;
214961847f8eSopenharmony_ci
215061847f8eSopenharmony_ci    /**
215161847f8eSopenharmony_ci     * The left edge of the line. The right edge can be obtained with `left + width`.
215261847f8eSopenharmony_ci     * @type { number }
215361847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
215461847f8eSopenharmony_ci     * @since 12
215561847f8eSopenharmony_ci     */
215661847f8eSopenharmony_ci    left: number;
215761847f8eSopenharmony_ci
215861847f8eSopenharmony_ci    /**
215961847f8eSopenharmony_ci     * The y position of the baseline for this line from the top of the paragraph.
216061847f8eSopenharmony_ci     * @type { number }
216161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
216261847f8eSopenharmony_ci     * @since 12
216361847f8eSopenharmony_ci     */
216461847f8eSopenharmony_ci    baseline: number;
216561847f8eSopenharmony_ci
216661847f8eSopenharmony_ci    /**
216761847f8eSopenharmony_ci     * Zero indexed line number.
216861847f8eSopenharmony_ci     * @type { number }
216961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
217061847f8eSopenharmony_ci     * @since 12
217161847f8eSopenharmony_ci     */
217261847f8eSopenharmony_ci    lineNumber: number;
217361847f8eSopenharmony_ci
217461847f8eSopenharmony_ci    /**
217561847f8eSopenharmony_ci     * Height from the top.
217661847f8eSopenharmony_ci     * @type { number }
217761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
217861847f8eSopenharmony_ci     * @since 12
217961847f8eSopenharmony_ci     */
218061847f8eSopenharmony_ci    topHeight: number;
218161847f8eSopenharmony_ci
218261847f8eSopenharmony_ci    /**
218361847f8eSopenharmony_ci     * Mapping between text index ranges and the FontMetrics associated with
218461847f8eSopenharmony_ci     * them. The first run will be keyed under start_index. The metrics here.
218561847f8eSopenharmony_ci     * are before layout and are the base values we calculate from.
218661847f8eSopenharmony_ci     * @type { Map<number, RunMetrics> }
218761847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
218861847f8eSopenharmony_ci     * @since 12
218961847f8eSopenharmony_ci     */
219061847f8eSopenharmony_ci    runMetrics: Map<number, RunMetrics>;
219161847f8eSopenharmony_ci  }
219261847f8eSopenharmony_ci
219361847f8eSopenharmony_ci  /**
219461847f8eSopenharmony_ci   * Obtain the corresponding font full names array based on the font type.
219561847f8eSopenharmony_ci   * @param { SystemFontType } fontType - System font type.
219661847f8eSopenharmony_ci   * @returns { Promise<Array<string>> } An array of font full names.
219761847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
219861847f8eSopenharmony_ci   * <br>2. Incorrect parameter types; 3. Parameter verification failed.
219961847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
220061847f8eSopenharmony_ci   * @since 14
220161847f8eSopenharmony_ci   */
220261847f8eSopenharmony_ci  function getSystemFontFullNamesByType(fontType: SystemFontType): Promise<Array<string>>;
220361847f8eSopenharmony_ci
220461847f8eSopenharmony_ci  /**
220561847f8eSopenharmony_ci   * Get font details according to the font full name and the font type, supporting generic fonts, stylish fonts, and
220661847f8eSopenharmony_ci   * installed fonts.
220761847f8eSopenharmony_ci   * @param { string } fullName - Font full name.
220861847f8eSopenharmony_ci   * @param { SystemFontType } fontType - System font type.
220961847f8eSopenharmony_ci   * @returns { Promise<FontDescriptor> } Returns the font descriptor.
221061847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
221161847f8eSopenharmony_ci   * <br>2. Incorrect parameter types.
221261847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
221361847f8eSopenharmony_ci   * @since 14
221461847f8eSopenharmony_ci   */
221561847f8eSopenharmony_ci  function getFontDescriptorByFullName(fullName: string, fontType: SystemFontType): Promise<FontDescriptor>;
221661847f8eSopenharmony_ci
221761847f8eSopenharmony_ci  /**
221861847f8eSopenharmony_ci   * Obtain all system font descriptive symbols that match the specified font descriptor.
221961847f8eSopenharmony_ci   * @param { FontDescriptor } desc - Custom font descriptor, where the 'path' fields are not
222061847f8eSopenharmony_ci   * considered as valid matching values. If all fields are default values, get all font descriptors.
222161847f8eSopenharmony_ci   * @returns { Promise<Array<FontDescriptor>> } List of font descriptors, and an empty array will be returned
222261847f8eSopenharmony_ci   * if the matching fails.
222361847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;
222461847f8eSopenharmony_ci   * <br>2. Incorrect parameter types.
222561847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
222661847f8eSopenharmony_ci   * @since 14
222761847f8eSopenharmony_ci   */
222861847f8eSopenharmony_ci  function matchFontDescriptors(desc: FontDescriptor): Promise<Array<FontDescriptor>>;
222961847f8eSopenharmony_ci
223061847f8eSopenharmony_ci  /**
223161847f8eSopenharmony_ci   * Text tab contains alignment type and location in paragraph style.
223261847f8eSopenharmony_ci   * @typedef TextTab
223361847f8eSopenharmony_ci   * @syscap SystemCapability.Graphics.Drawing
223461847f8eSopenharmony_ci   * @since 14
223561847f8eSopenharmony_ci   */
223661847f8eSopenharmony_ci  interface TextTab {
223761847f8eSopenharmony_ci    /**
223861847f8eSopenharmony_ci     * The alignment of tab. Support left alignment right alignment center alignment,
223961847f8eSopenharmony_ci     * other enumeration values are left alignment effect.
224061847f8eSopenharmony_ci     * @type { TextAlign }
224161847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
224261847f8eSopenharmony_ci     * @since 14
224361847f8eSopenharmony_ci     */
224461847f8eSopenharmony_ci    alignment: TextAlign;
224561847f8eSopenharmony_ci    
224661847f8eSopenharmony_ci    /**
224761847f8eSopenharmony_ci     * The position of the tab relative to the start of the line.
224861847f8eSopenharmony_ci     * @type { number }
224961847f8eSopenharmony_ci     * @syscap SystemCapability.Graphics.Drawing
225061847f8eSopenharmony_ci     * @since 14
225161847f8eSopenharmony_ci     */
225261847f8eSopenharmony_ci    location: number;
225361847f8eSopenharmony_ci  }
225461847f8eSopenharmony_ci}
225561847f8eSopenharmony_ci
225661847f8eSopenharmony_ciexport default text;
2257