As a child of the Text and ContainerSpan components, the Span component is used to display inline text.
This component is supported since API version 7. Updates will be marked with a superscript to indicate their earliest API version.
This component is supported since API version 10. It can inherit attribute settings from its parent component Text. This means that, if an attribute is not set in this component, it takes the value (if any) of the attribute from its parent component. Only the following attributes can be inherited: fontColor, fontSize, fontStyle, fontWeight, decoration, letterSpacing, textCase, fontFamily, and textShadow.
The universal attributes are not supported. To set universal attributes, use Text for configuration or use CustomSpan in the Styled String for custom drawing.
Among universal events, only onClick click events and onHover hover events are supported.
Span(value: string | Resource)
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | string | Resource | Yes | Plain text. |
decoration(value: DecorationStyleInterface)
Style and color of the text decorative line.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | DecorationStyleInterface12+ | Yes | Style of the text decorative line. Default value: { type: TextDecorationType.None, color: Color.Black, style: TextDecorationStyle.SOLID } NOTE The style parameter cannot be used in widgets. |
When the bottom contour of a character intersects with the decoration, underline avoidance is triggered, commonly affecting characters like "g", "j", "y", "q", and "p."
If the decoration color is set to Color.Transparent, it inherits the text color of the first character in each line. If the decoration color is set to "#00FFFFFF", the line becomes fully transparent.
letterSpacing(value: number | ResourceStr)
Sets the letter spacing. A negative value tightens the spacing; a positive value loosens the spacing, and the letters are spread farther apart with the value. For the string type, numeric string values with optional units, for example, "10" or "10fp", are supported.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | number | ResourceStr | Yes | Letter spacing. Unit: fp The Resource type is supported since API version 20. |
textCase(value: TextCase)
Sets the text case.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | TextCase | Yes | Text case. Default value: TextCase.Normal |
fontColor(value: ResourceColor)
Sets the font color.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | ResourceColor | Yes | Font color. Default value: '#e6182431' Default value for wearables: '#c5ffffff' |
fontSize(value: number | string | Resource)
Sets the font size.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | number | string | Resource | Yes | Font size. If fontSize is of the number type, the unit fp is used. The default font size is 16 fp. For the string type, numeric string values with optional units, for example, "10" or "10fp", are supported. Percentage values are not supported. Default value on wearable devices: 15fp. |
fontStyle(value: FontStyle)
Sets the font style.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | FontStyle | Yes | Font style. Default value: FontStyle.Normal |
fontWeight(value: number | FontWeight | ResourceStr)
Sets the font weight. If the value is too large, the text may be clipped depending on the font.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | number | FontWeight | ResourceStr | Yes | Font weight. For the number type, the value range is [100, 900], at an interval of 100. The default value is 400. A larger value indicates a heavier font weight. For the string type, only strings that represent a number, for example, 400, and the following enumerated values of FontWeight are supported: bold, bolder, lighter, regular, and medium. Default value: FontWeight.Normal The Resource type is supported since API version 20. |
fontWeight(weight: number | FontWeight | ResourceStr, fontWeightConfigs?: FontWeightConfigs)
Font weight of the text.
Widget capability: This API can be used in ArkTS widgets since API version 24.
Atomic service API: This API can be used in atomic services since API version 24.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| weight | number | FontWeight | ResourceStr | Yes | Font weight. For the number type, the value range is [100, 900], at an interval of 100. The default value is 400. A larger value indicates a heavier font weight. For the string type, only strings that represent a number, for example, 400, and the following enumerated values of FontWeight are supported: bold, bolder, lighter, regular, and medium. If the value is too large, truncation may occur in different fonts. Default value: FontWeight.Normal |
| fontWeightConfigs | FontWeightConfigs | No | Font weight configurations. The default value is inherited from FontWeightConfigs. |
fontFamily(value: string | Resource)
Sets the font family.
Widget capability: This API can be used in ArkTS widgets since API version 9.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | string | Resource | Yes | Font family. Default font: 'HarmonyOS Sans' To specify multiple fonts, separate them with commas (,), and fonts are applied in priority order. Example: 'Arial, HarmonyOS Sans'. |
lineHeight(value: Length)
Sets the line height for the text.
Atomic service API: This API can be used in atomic services since API version 11.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | Length | Yes | Line height of the text. If the value is of the number type, the unit is fp. For the string type, numeric string values with optional units, for example, "10" or "10fp", are supported. |
font(value: Font)
Sets the text style, covering the font size, font width, font family, and font style.
Atomic service API: This API can be used in atomic services since API version 11.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | Font | Yes | Text style. |
font(value: Font, fontConfigs?: FontConfigs)
Sets the text style.
Atomic service API: This API can be used in atomic services since API version 24.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | Font | Yes | Text style, including the font size, font weight, font family, and font style. |
| fontConfigs | FontConfigs | No | Font configurations. The default value is inherited from FontConfigs. |
textShadow(value: ShadowOptions | Array<ShadowOptions>)
Text shadow. It supports input parameters in an array to implement multiple text shadows. This API does not work with the fill attribute or coloring strategy.
Atomic service API: This API can be used in atomic services since API version 12.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | ShadowOptions | Array<ShadowOptions> | Yes | Text shadow. |
fontVariations(fontVariations: Array<FontVariation>)
Sets font variations.
Since: 26.0.0
Model restriction: This API can be used only in the stage model.
Atomic service API: This API can be used in atomic services since API version 26.0.0.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| fontVariations | Array<FontVariation> | Yes | Array of font variations, where each member represents a distinct font variation. The fontVariations attribute takes precedence over fontWeight. |
Among universal events, only onClick click events and onHover hover events are supported.
As the Span component does not include size information, the target attribute of the ClickEvent object returned by the click event is invalid.
Defines the base class BaseSpan, including the universal attributes of the Span component.
System capability: SystemCapability.ArkUI.ArkUI.Full
Atomic service API: This API can be used in atomic services since API version 12.
textBackgroundStyle(style: TextBackgroundStyle): T
Sets the text background style. This attribute prioritizes the value separately set for the component. If it is not set, the component can inherit the settings from its parent ContainerSpan.
Atomic service API: This API can be used in atomic services since API version 12.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| style | TextBackgroundStyle | Yes | Text background style. Default value: { color: Color.Transparent, radius: 0 } |
Return value
| Type | Description |
|---|---|
| T | Attributes of the span. |
baselineOffset(value: LengthMetrics): T
Sets the offset of the baseline. This attribute coexists with the baselineOffset attribute of the parent component.
Atomic service API: This API can be used in atomic services since API version 12.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
Parameters
| Name | Type | Mandatory | Description |
|---|---|---|---|
| value | LengthMetrics | Yes | Offset of the baseline. If the value specified is a percentage, the default value is used. A positive value moves the content upwards, while a negative value moves it downwards. Default value: 0 In the ImageSpan, when this parameter is set to a non-zero value, the verticalAlign is fixed to ImageSpanAlignment.BASELINE; when this parameter is set to 0, verticalAlign must be set to ImageSpanAlignment.BASELINE for the baseline alignment strategy to take effect. |
Return value
| Type | Description |
|---|---|
| T | Attributes of the span. |
Atomic service API: This API can be used in atomic services since API version 12.
Model restriction: This API can be used only in the stage model.
System capability: SystemCapability.ArkUI.ArkUI.Full
| Name | Type | Read-Only | Optional | Description |
|---|---|---|---|---|
| color | ResourceColor | No | Yes | Text background color. |
| radius | Dimension | BorderRadiuses | No | Yes | Rounded corner radius of the text background. |
This example demonstrates how to apply different text styles and configure click events for the Span component.
// xxx.ets
@Entry
@Component
struct SpanExample {
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start }) {
Text('Basic Usage').fontSize(9).fontColor(0xCCCCCC)
Text() {
Span('In Line')
Span(' Component')
Span(' !')
}
Text() {
Span('This is the Span component').fontSize(12).textCase(TextCase.Normal)
.decoration({ type: TextDecorationType.None, color: Color.Red })
.fontFamily('HarmonyOS Sans')
}.margin({ top: 12 })
// Add a line under the text.
Text('Text Decoration').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('I am Underline-WAVY-span')
.decoration({ type: TextDecorationType.Underline, color: Color.Red, style: TextDecorationStyle.WAVY })
.fontSize(12)
}
Text() {
Span('I am LineThrough-DOTTED-span')
.decoration({ type: TextDecorationType.LineThrough, color: Color.Red, style: TextDecorationStyle.DOTTED })
.fontSize(12)
}
Text() {
Span('I am Overline-DASHED-span')
.decoration({ type: TextDecorationType.Overline, color: Color.Red, style: TextDecorationStyle.DASHED })
.fontSize(12)
}
// Set the letter spacing.
Text('LetterSpacing').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('span letter spacing')
.letterSpacing(0)
.fontSize(12)
}
Text() {
Span('span letter spacing')
.letterSpacing(-2)
.fontSize(12)
}
Text() {
Span('span letter spacing')
.letterSpacing(3)
.fontSize(12)
}
// Set the text case.
Text('Text Case').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('I am Lower-span').fontSize(12)
.textCase(TextCase.LowerCase)
.decoration({ type: TextDecorationType.None })
}
Text() {
Span('I am Upper-span').fontSize(12)
.textCase(TextCase.UpperCase)
.decoration({ type: TextDecorationType.None })
}
// Set the text font style.
Text('FontStyle').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('I am FontStyle-Normal').fontSize(12)
.fontStyle(FontStyle.Normal)
}
Text() {
Span('I am FontStyle-Italic').fontSize(12)
.fontStyle(FontStyle.Italic)
}
// Set the text font weight.
Text('FontWeight').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('I am FontWeight-Lighter').fontSize(12)
.fontWeight(FontWeight.Lighter)
}
Text() {
Span('I am FontWeight-Bold').fontSize(12)
.fontWeight(FontWeight.Bold)
}
// Set the text line height.
Text('LineHeight').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('I am lineHeight default\n').fontSize(12)
.fontWeight(FontWeight.Lighter)
Span('I am lineHeight 30').fontSize(12)
.lineHeight(30)
}
.backgroundColor(Color.Gray)
// Set the text style.
Text('Font').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('span font 12 Bolder Italic')
.font({
size: 12,
weight: FontWeight.Bolder,
style: FontStyle.Italic,
family: "HarmonyOS Sans"
})
}
// Sets text font configurations. The fontConfigs attribute is supported since API version 24.
Text('Font with FontConfigs').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('span font with configs')
.font({
size: 14,
weight: 550,
style: FontStyle.Normal,
family: "HarmonyOS Sans"
}, {
fontWeightConfigs: {
enableVariableFontWeight: true
}
})
}
// Sets text font weight configurations. The fontWeightConfigs attribute is supported since API version 24.
Text('FontWeight with FontWeightConfigs').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('span fontWeight 850 with configs')
.fontWeight(850, {
enableVariableFontWeight: true,
enableDeviceFontWeightCategory: false
})
}
Text() {
Span('span fontWeight 600 with configs')
.fontWeight(600, {
enableVariableFontWeight: false,
enableDeviceFontWeightCategory: true
})
}
// Set the click event.
Text('span click event').fontSize(9).fontColor(0xCCCCCC).margin({ top: 12 })
Text() {
Span('Span default ').fontSize(12)
Span('Span click')
.onClick((event) => {
console.info("span onClick")
})
}
}.width('100%').padding({ left: 35, right: 35, top: 35 })
}
} 
In API version 11 and later versions, the textShadow attribute is used to set the text shadow.
// xxx.ets
@Entry
@Component
struct SpanExample {
@State textShadows: ShadowOptions | Array<ShadowOptions> = [{
radius: 10,
color: Color.Red,
offsetX: 10,
offsetY: 0
}, {
radius: 10,
color: Color.Orange,
offsetX: 20,
offsetY: 0
},
{
radius: 10,
color: Color.Yellow,
offsetX: 30,
offsetY: 0
}, {
radius: 10,
color: Color.Green,
offsetX: 40,
offsetY: 0
},
{
radius: 10,
color: Color.Blue,
offsetX: 100,
offsetY: 0
}]
build() {
Column({ space: 8 }) {
Text() {
Span('123456789').fontSize(50).textShadow(this.textShadows).fontColor(Color.Pink)
}
Text() {
Span('123456789') // span can inherit text shadow & font size from outer text
}.fontSize(50).textShadow(this.textShadows).fontColor(Color.Pink)
}
}
} 
This example demonstrates how to set the background style for text using the textBackgroundStyle attribute, available since API version 11.
// xxx.ets
@Component
@Entry
struct SpanExample {
build() {
Column() {
Text() {
Span(' Hello World ! ')
.fontSize('20fp')
.textBackgroundStyle({ color: "#7F007DFF", radius: "5vp" })
.fontColor(Color.White)
}
}.width('100%').margin({ bottom: '5vp' }).alignItems(HorizontalAlign.Center)
}
} 
In API version 12 and later versions, this example demonstrates how to set different baseline offsets for text through the baselineOffset attribute.
// xxx.ets
import { LengthUnit, LengthMetrics } from '@kit.ArkUI';
@Entry
@Component
struct SpanExample {
build() {
Row() {
Column() {
Text() {
Span('SpanOne')
.fontSize(10)
.baselineOffset(new LengthMetrics(20, LengthUnit.VP))
Span('SpanTwo')
.fontSize(10)
.baselineOffset(new LengthMetrics(0, LengthUnit.VP))
// Replace $r('app.media.sky') with the image resource file you use.
ImageSpan($r("app.media.sky"))
.width('80px')
.baselineOffset(new LengthMetrics(-20, LengthUnit.VP))
}
.backgroundColor('#7F007DFF')
}
.width('100%')
}
.height('100%')
}
} 
This example demonstrates how to set text font variations using fontVariations.
The fontVariations API is added since API version 26.0.0.
// xxx.ets
@Entry
@Component
struct SpanExample {
@State weightValue: number = 400;
build() {
Column() {
Text() {
Span('Hello World !')
// wght indicates the weight of the variable font.
.fontVariations([{ axis: 'wght', value: this.weightValue }])
}
Button('Weight: ' + this.weightValue)
.margin(10)
.onClick(() => {
this.weightValue += 100;
})
}.width('100%')
}
}