1# ArkUI子系统Changelog 2 3## cl.arkui.1 属性字符串TextStyle类型fontStyle、fontWeight字段返回类型变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11接口实际行为与文档描述不一致。 12 13**变更影响** 14 15此变更涉及应用适配。 16 17| 字段名 | 描述 |变更前类型 | 变更后类型 | 18|---------| ---------|---------| ------| 19| fontWeight | 获取属性字符串的文本字体粗细。| string | number | 20| fontStyle | 获取属性字符串的文本字体样式。 | string | FontStyle | 21 22**起始API Level** 23 24接口起始版本为API version 12。 25 26**变更发生版本** 27 28从OpenHarmony SDK 5.1.0.49开始,API version 18及以上生效。 29 30**变更的接口/组件** 31 32属性字符串的getStyles接口。 33 34**适配指导** 35 36变更后,使用getStyles接口获得的TextStyle类型变量中fontStyle、fontWeight字段将会返回FontStyle和number类型而非之前的string类型,应用需要使用新的返回类型来进行判断。 37 38``` ts 39@Entry 40@Component 41struct styled_string_demo1 { 42 scroll: Scroller = new Scroller(); 43 fontStyleAttr1: TextStyle = new TextStyle({ fontColor: Color.Blue, fontWeight: FontWeight.Bolder, fontStyle: FontStyle.Normal }); 44 fontStyleAttr2: StyledStringValue = new TextStyle({ fontColor: Color.Orange, fontStyle: FontStyle.Italic, fontWeight: FontWeight.Lighter }); 45 mutableStyledString1: MutableStyledString = new MutableStyledString("运动45分钟", [{ 46 start: 0, 47 length: 3, 48 styledKey: StyledStringKey.FONT, 49 styledValue: this.fontStyleAttr1 50 }, { 51 start: 3, 52 length: 3, 53 styledKey: StyledStringKey.FONT, 54 styledValue: this.fontStyleAttr2 55 }]); 56 controller1: TextController = new TextController(); 57 58 build() { 59 Column() { 60 Scroll(this.scroll) { 61 Column() { 62 // 显示属性字符串 63 Text(undefined, { controller: this.controller1 }) 64 .onAppear(() => { 65 this.controller1.setStyledString(this.mutableStyledString1) 66 }) 67 68 Button('查询样式') 69 .onClick(() => { 70 let styles = this.mutableStyledString1.getStyles(0, this.mutableStyledString1.length) 71 for (let i = 0; i < styles.length; i++) { 72 console.info('StyledString style object start:' + styles[i].start) 73 console.info('StyledString style object length:' + styles[i].length) 74 console.info('StyledString style object key:' + styles[i].styledKey) 75 if (styles[i].styledKey === 0) { 76 let fontAttr = styles[i].styledValue as TextStyle; 77 console.info('StyledString fontStyle type:' + typeof fontAttr.fontStyle) 78 console.info('StyledString fontWeight type:' + typeof fontAttr.fontWeight) 79 } 80 } 81 }) 82 .margin({ top: 10 }) 83 }.width('100%') 84 } 85 } 86 .width('100%') 87 } 88} 89``` 90 91## cl.arkui.2 CanvasRenderer的measureText方法传undefined参数时返回值变更 92 93**访问级别** 94 95公开接口 96 97**变更原因** 98 99measureText方法传undefined参数时,返回的textMetrics为undefined,和W3C标准行为不一致。 100 101**变更影响** 102 103变更前: 104measureText方法传undefined参数时,返回的textMetrics为undefined。 105 106变更后: 107measureText方法传undefined参数时,返回值为按照字符串"undefined"测量的textMetrics。 108 109 110**起始API Level** 111 112API 8 113 114**变更发生版本** 115 116从OpenHarmony SDK 5.1.0.49开始。 117 118**变更的接口/组件** 119 120CanvasRenderingContext2D和OffscreenCanvasRenderingContext2D的measureText方法 121 122**适配指导** 123 124如果应用无需获取undefined参数的textMetrics,可在调用measureText方法前对参数做判断。 125 126**示例** 127 128```ts 129@Entry 130@Component 131struct Demo { 132 private settings: RenderingContextSettings = new RenderingContextSettings(true) 133 private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 134 135 measureText(text: string) 136 { 137 if (text != undefined) { 138 let metrics = this.context.measureText(text); 139 console.info('width = ' + metrics.width); 140 } 141 } 142 143 build() { 144 Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 145 Canvas(this.context) 146 .width('100%') 147 .height('100%') 148 .onReady(() => { 149 this.measureText(undefined) 150 this.measureText('Hello World') 151 }) 152 } 153 .width('100%') 154 .height('100%') 155 } 156} 157```