1 /*
2 * Copyright (c) 2020-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "ui_test_font.h"
17
18 #include "graphic_config.h"
19
20 #include "common/screen.h"
21 #if ENABLE_VECTOR_FONT
22 #else
23 #include "common/ui_text_language.h"
24 #endif
25 #include "components/ui_label.h"
26 #include "font/ui_font.h"
27 #if ENABLE_MULTI_FONT
28 #include "font/ui_multi_font_manager.h"
29 #endif
30
31 namespace OHOS {
32 namespace {
33 const int16_t GAP = 5;
34 const int16_t TITLE_HEIGHT = 20;
35 const uint16_t LABEL_WIDTH = 400;
36 const uint16_t LABEL_HEIGHT = 50;
37 const uint16_t FONT_SIZE = 30;
38 const uint16_t FONT_EMOJI_SIZE = 100;
39 const char* SOURCE_HAN_SANS_SC_REGULAR = "SourceHanSansSC-Regular.otf";
40 const char* ROBOTO_CONDENSED_REGULAR = "RobotoCondensed-Regular.ttf";
41 const char* DEFAULT_EMOJI_FILENAME = "NotoColorEmojiCompat.ttf";
42 #if ENABLE_MULTI_FONT
43 const int16_t F_HWEMOJI_REGULAR_30_32 = 99;
44 #endif
45 } // namespace
46
SetUp()47 void UITestFont::SetUp()
48 {
49 if (container_ == nullptr) {
50 container_ = new UIScrollView();
51 container_->SetThrowDrag(true);
52 container_->SetHorizontalScrollState(false);
53 container_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight() - BACK_BUTTON_HEIGHT);
54 positionX_ = 50; // 50: init position x
55 positionY_ = 5; // 5: init position y
56 }
57 }
58
TearDown()59 void UITestFont::TearDown()
60 {
61 DeleteChildren(container_);
62 container_ = nullptr;
63 }
64
InnerTestTitle(const char * title)65 void UITestFont::InnerTestTitle(const char* title)
66 {
67 UILabel* titleLabel = new UILabel();
68 titleLabel->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, positionY_, Screen::GetInstance().GetWidth(),
69 TITLE_LABEL_DEFAULT_HEIGHT);
70 #if ENABLE_VECTOR_FONT
71 titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DEFAULT_VECTOR_FONT_SIZE);
72 #else
73 titleLabel->SetFontId(F_SOURCEHANSANSSC_REGULAR_18_4);
74 #endif
75 titleLabel->SetText(title);
76 container_->Add(titleLabel);
77 positionY_ += TITLE_HEIGHT + GAP;
78 }
79
GetTestView()80 const UIView* UITestFont::GetTestView()
81 {
82 UIKitFontTestDisplay001();
83 UIKitFontTestDisplay002();
84 UIKitFontTestDisplay003();
85 UIKitFontTestDisplay004();
86 UIKitFontTestDisplay005();
87 UIKitFontTestDisplay006();
88 UIKitFontTestDisplay007();
89 UIKitFontTestDisplay008();
90 UIKitFontTestDisplay009();
91 UIKitFontTestDisplay010();
92 UIKitFontTestBaseline001();
93 UIKitFontTestBaseline002();
94 UIKitFontTestLineHeight001();
95 UIKitFontTestLineHeight002();
96 #if ENABLE_MULTI_FONT
97 UIKitFontMultiLanguage001();
98 UIKitFontMultiLanguage002();
99 #endif
100 UIKitFontTestBackgroundColor();
101 UIKitFontTestForegroundColor();
102 UIKitFontTestLineBackgroundSpan();
103 UIKitFontTestAbsoluteSizeSpan();
104 UIKitFontTestRelativeSizeSpan();
105 UIKitFontTestDisplayEmoji001();
106 UIKitFontTestDisplayEmoji002();
107 UIKitFontTestDisplayEmoji003();
108 return container_;
109 }
110
UIKitFontTestDisplay001()111 void UITestFont::UIKitFontTestDisplay001()
112 {
113 if (container_ == nullptr) {
114 return;
115 }
116 InnerTestTitle(" Display single line Chinese");
117 UILabel* label = new UILabel();
118 label->SetPosition(positionX_, positionY_);
119 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
120 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
121 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
122 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
123 #else
124 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
125 #endif
126 label->SetText("轻量图形子系统");
127 container_->Add(label);
128 positionY_ += LABEL_HEIGHT + GAP;
129 }
130
UIKitFontTestDisplay002()131 void UITestFont::UIKitFontTestDisplay002()
132 {
133 if (container_ == nullptr) {
134 return;
135 }
136 InnerTestTitle(" Display multiline Chinese");
137 UILabel* label = new UILabel();
138 label->SetPosition(positionX_, positionY_);
139 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
140 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
141 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
142 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
143 #else
144 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
145 #endif
146 label->SetText(" 你好\n轻量图形子系统");
147 container_->Add(label);
148 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
149 }
150
151
UIKitFontTestDisplay003()152 void UITestFont::UIKitFontTestDisplay003()
153 {
154 if (container_ == nullptr) {
155 return;
156 }
157 InnerTestTitle(" Display single line English");
158 UILabel* label = new UILabel();
159 label->SetPosition(positionX_, positionY_);
160 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
161 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
162 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
163 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
164 #else
165 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
166 #endif
167 label->SetText("uikit test");
168 container_->Add(label);
169 positionY_ += LABEL_HEIGHT + GAP;
170 }
171
172
UIKitFontTestDisplay004()173 void UITestFont::UIKitFontTestDisplay004()
174 {
175 if (container_ == nullptr) {
176 return;
177 }
178 InnerTestTitle(" Display multiline English");
179 UILabel* label = new UILabel();
180 label->SetPosition(positionX_, positionY_);
181 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
182 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
183 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
184 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
185 #else
186 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
187 #endif
188 label->SetText(" Hello\n uikit");
189 container_->Add(label);
190 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
191 }
192
193
UIKitFontTestDisplay005()194 void UITestFont::UIKitFontTestDisplay005()
195 {
196 if (container_ == nullptr) {
197 return;
198 }
199 InnerTestTitle(" Display single line Chinese and English");
200 UILabel* label = new UILabel();
201 label->SetPosition(positionX_, positionY_);
202 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
203 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
204 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
205 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
206 #else
207 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
208 #endif
209 label->SetText("你好,轻量级图形 uikit");
210 container_->Add(label);
211 positionY_ += LABEL_HEIGHT + GAP;
212 }
213
UIKitFontTestDisplay006()214 void UITestFont::UIKitFontTestDisplay006()
215 {
216 if (container_ == nullptr) {
217 return;
218 }
219 InnerTestTitle(" Display multiline Chinese and English");
220 UILabel* label = new UILabel();
221 label->SetPosition(positionX_, positionY_);
222 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
223 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
224 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
225 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
226 #else
227 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
228 #endif
229 label->SetText("你好\n轻量级图形 uikit");
230 container_->Add(label);
231 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
232 }
233
234
UIKitFontTestDisplay007()235 void UITestFont::UIKitFontTestDisplay007()
236 {
237 if (container_ == nullptr) {
238 return;
239 }
240 InnerTestTitle(" Display single line text color");
241 UILabel* label = new UILabel();
242 label->SetPosition(positionX_, positionY_);
243 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
244 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
245 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
246 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
247 #else
248 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
249 #endif
250 label->SetStyle(STYLE_TEXT_COLOR, Color::Red().full);
251 label->SetText("你好,轻量级图形");
252 container_->Add(label);
253 positionY_ += LABEL_HEIGHT + GAP;
254 }
255
UIKitFontTestDisplay008()256 void UITestFont::UIKitFontTestDisplay008()
257 {
258 if (container_ == nullptr) {
259 return;
260 }
261 InnerTestTitle(" Display multiline text color");
262 UILabel* label = new UILabel();
263 label->SetPosition(positionX_, positionY_);
264 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
265 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
266 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
267 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
268 #else
269 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
270 #endif
271 label->SetStyle(STYLE_TEXT_COLOR, Color::Yellow().full);
272 label->SetText("你好\n 轻量级图形 uikit");
273 container_->Add(label);
274 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
275 }
276
277
UIKitFontTestDisplay009()278 void UITestFont::UIKitFontTestDisplay009()
279 {
280 if (container_ == nullptr) {
281 return;
282 }
283 InnerTestTitle(" Display multiline text color");
284 UILabel* label = new UILabel();
285 label->SetPosition(positionX_ + 100, positionY_); // 100 : offset x
286 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
287 label->SetLineBreakMode(UILabel::LineBreakMode::LINE_BREAK_ADAPT);
288 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
289 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
290 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
291 #else
292 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
293 #endif
294 label->Rotate(90, Vector2<float> {0, 0}); // 90 : angle
295 label->SetText("轻量级图形");
296 container_->Add(label);
297 positionY_ += LABEL_HEIGHT * 4 + GAP; // 4 : coefficient
298 }
299
300
UIKitFontTestDisplay010()301 void UITestFont::UIKitFontTestDisplay010()
302 {
303 if (container_ == nullptr) {
304 return;
305 }
306 InnerTestTitle(" Display multiline text color");
307 UILabel* label = new UILabel();
308 label->SetPosition(positionX_ + 100, positionY_); // 100 : offset x
309 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT); // 2 : half
310 label->SetLineBreakMode(UILabel::LineBreakMode::LINE_BREAK_MARQUEE);
311 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
312 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
313 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
314 #else
315 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
316 #endif
317 label->Rotate(90, Vector2<float> {0, 0}); // 90 : angle
318 label->SetText("轻量级图形,轻量级图形,轻量级图形");
319 container_->Add(label);
320 positionY_ += LABEL_HEIGHT * 4 + GAP; // 4 : coefficient
321 }
322
323
UIKitFontTestBaseline001()324 void UITestFont::UIKitFontTestBaseline001()
325 {
326 if (container_ == nullptr) {
327 return;
328 }
329 InnerTestTitle("Font baseline alignment");
330 UILabel* label = new UILabel();
331 label->SetPosition(positionX_, positionY_);
332 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT); // 2 : half
333 #if ENABLE_VECTOR_FONT
334 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
335 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
336 #else
337 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
338 #endif
339 label->SetText("hello, uikit");
340
341 UILabel* label2 = new UILabel();
342 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
343 label2->Resize(LABEL_WIDTH, LABEL_HEIGHT);
344 #if ENABLE_VECTOR_FONT
345 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
346 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
347 #else
348 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
349 #endif
350 label2->SetText("hello, uikit");
351
352 container_->Add(label);
353 container_->Add(label2);
354 positionY_ += LABEL_HEIGHT + GAP;
355 }
356
UIKitFontTestBaseline002()357 void UITestFont::UIKitFontTestBaseline002()
358 {
359 if (container_ == nullptr) {
360 return;
361 }
362 InnerTestTitle(" Font baseline alignment");
363 UILabel* label = new UILabel();
364 label->SetPosition(positionX_, positionY_);
365 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT); // 2 : half
366 #if ENABLE_VECTOR_FONT
367 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
368 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
369 #else
370 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
371 #endif
372 label->SetText("hello, uikit");
373 label->SetStyle(STYLE_LINE_HEIGHT, 30); // 30 : line height
374
375 UILabel* label2 = new UILabel();
376 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
377 label2->Resize(LABEL_WIDTH, LABEL_HEIGHT);
378 #if ENABLE_VECTOR_FONT
379 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
380 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
381 #else
382 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
383 #endif
384 label2->SetText("hello, uikit");
385 label2->SetStyle(STYLE_LINE_HEIGHT, 30); // 30 : line height
386
387 container_->Add(label);
388 container_->Add(label2);
389 positionY_ += LABEL_HEIGHT + GAP;
390 }
391
UIKitFontTestLineHeight001()392 void UITestFont::UIKitFontTestLineHeight001()
393 {
394 if (container_ == nullptr) {
395 return;
396 }
397 InnerTestTitle(" Font lineheight alignment");
398 UILabel* label = new UILabel();
399 label->SetPosition(positionX_, positionY_);
400 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
401 #if ENABLE_VECTOR_FONT
402 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
403 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
404 #else
405 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
406 #endif
407 label->SetText("hello,\n uikit");
408
409 UILabel* label2 = new UILabel();
410 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
411 label2->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
412 #if ENABLE_VECTOR_FONT
413 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
414 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
415 #else
416 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
417 #endif
418 label2->SetText("hello,\n uikit");
419
420 container_->Add(label);
421 container_->Add(label2);
422 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
423 }
424
UIKitFontTestLineHeight002()425 void UITestFont::UIKitFontTestLineHeight002()
426 {
427 if (container_ == nullptr) {
428 return;
429 }
430 InnerTestTitle(" Font lineheight alignment");
431 UILabel* label = new UILabel();
432 label->SetPosition(positionX_, positionY_);
433 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
434 #if ENABLE_VECTOR_FONT
435 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
436 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
437 #else
438 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
439 #endif
440 label->SetText("hello,\n uikit");
441 label->SetStyle(STYLE_LINE_HEIGHT, 40); // 40 : line height
442
443 UILabel* label2 = new UILabel();
444 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
445 label2->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
446 #if ENABLE_VECTOR_FONT
447 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
448 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
449 #else
450 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
451 #endif
452 label2->SetText("hello,\n uikit");
453 label2->SetStyle(STYLE_LINE_HEIGHT, 40); // 40 : line height
454
455 container_->Add(label);
456 container_->Add(label2);
457 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
458 }
459
460 #if ENABLE_MULTI_FONT
UIKitFontMultiLanguage001()461 void UITestFont::UIKitFontMultiLanguage001()
462 {
463 if (container_ == nullptr) {
464 return;
465 }
466 #if ENABLE_VECTOR_FONT
467 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
468 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
469 uint16_t findPath[] = {UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR)};
470 UIMultiFontManager::GetInstance()->SetSearchFontList(UIFont::GetInstance()->GetFontId(ROBOTO_CONDENSED_REGULAR),
471 findPath, sizeof(findPath));
472 #else
473 uint8_t findPath[] = {F_SOURCEHANSANSSC_REGULAR_30_4};
474 UIMultiFontManager::GetInstance()->SetSearchFontList(F_ROBOTOCONDENSED_REGULAR_30_4, findPath, sizeof(findPath));
475 #endif
476 InnerTestTitle(" Display multilingual display");
477 UILabel* label = new UILabel();
478 label->SetPosition(positionX_, positionY_);
479 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
480 #if ENABLE_VECTOR_FONT
481 label->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
482 #else
483 label->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
484 #endif
485 label->SetText("Hello, Test of GUI");
486 container_->Add(label);
487 positionY_ += LABEL_HEIGHT + GAP;
488 }
489
UIKitFontMultiLanguage002()490 void UITestFont::UIKitFontMultiLanguage002()
491 {
492 if (container_ == nullptr) {
493 return;
494 }
495 #if ENABLE_VECTOR_FONT
496 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
497 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
498 uint8_t findPath[] = {UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR)};
499 UIMultiFontManager::GetInstance()->SetSearchFontList(UIFont::GetInstance()->GetFontId(ROBOTO_CONDENSED_REGULAR),
500 findPath, sizeof(findPath));
501 #else
502 uint8_t findPath[] = {F_SOURCEHANSANSSC_REGULAR_30_4};
503 UIMultiFontManager::GetInstance()->SetSearchFontList(F_ROBOTOCONDENSED_REGULAR_30_4, findPath, sizeof(findPath));
504 #endif
505 InnerTestTitle(" Display multilingual display");
506 UILabel* label = new UILabel();
507 label->SetPosition(positionX_, positionY_);
508 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
509 #if ENABLE_VECTOR_FONT
510 label->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
511 #else
512 label->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
513 #endif
514 label->SetText("Hello\n Test of GUI");
515 container_->Add(label);
516 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
517 }
518 #endif // ENABLE_MULTI_FONT
519
UIKitFontTestBackgroundColor()520 void UITestFont::UIKitFontTestBackgroundColor()
521 {
522 if (container_ == nullptr) {
523 return;
524 }
525 InnerTestTitle(" Display background color ");
526 UILabel* label = new UILabel();
527 label->SetPosition(positionX_, positionY_);
528 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
529 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
530 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
531 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
532 #else
533 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
534 #endif
535 label->SetBackgroundColorSpan(Color::Red(), 0, 2); // 0 : start index; 2 : end index
536 label->SetBackgroundColorSpan(Color::Yellow(), 5, 6); // 5 : start index; 6 : end index
537 label->SetText("轻量图形子系统");
538 container_->Add(label);
539 positionY_ += LABEL_HEIGHT + GAP;
540 }
541
UIKitFontTestForegroundColor()542 void UITestFont::UIKitFontTestForegroundColor()
543 {
544 if (container_ == nullptr) {
545 return;
546 }
547 InnerTestTitle(" Change some font colors ");
548 UILabel* label = new UILabel();
549 label->SetPosition(positionX_, positionY_);
550 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
551 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
552 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
553 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
554 #else
555 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
556 #endif
557 label->SetForegroundColorSpan(Color::Blue(), 1, 3); // 1 : start index; 2 : end index
558 label->SetForegroundColorSpan(Color::Red(), 6, 9); // 6 : start index; 9 : end index
559 label->SetText("轻量图形子\n系统轻量图形子系统轻量图形子系统轻量图形子系统轻量图形子系统轻量图形子系统");
560 container_->Add(label);
561 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
562 }
563
UIKitFontTestLineBackgroundSpan()564 void UITestFont::UIKitFontTestLineBackgroundSpan()
565 {
566 if (container_ == nullptr) {
567 return;
568 }
569 InnerTestTitle(" Display LineBackgroundSpan ");
570 UILabel* label = new UILabel();
571 label->SetPosition(positionX_, positionY_);
572 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
573 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
574 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
575 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
576 #else
577 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
578 #endif
579 label->SetLineBackgroundSpan(Color::Blue(), 1, 3); // 1 : start index; 3 : end index
580 label->SetLineBackgroundSpan(Color::Red(), 5, 5); // 5 : start index; 5 : end index
581 label->SetText("轻量图\n形子系统");
582 container_->Add(label);
583 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
584 }
585
UIKitFontTestAbsoluteSizeSpan()586 void UITestFont::UIKitFontTestAbsoluteSizeSpan()
587 {
588 if (container_ == nullptr) {
589 return;
590 }
591 InnerTestTitle(" Display absolute size span");
592 UILabel* label = new UILabel();
593 label->SetPosition(positionX_, positionY_);
594 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
595 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
596 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
597 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
598 #else
599 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
600 #endif
601 label->SetText("轻量图形子系统\n轻量图形子系统");
602 label->SetAbsoluteSizeSpan(1, 2, 38); // 1 : start index; 2 : end index; 38 absolute font size
603 label->SetAbsoluteSizeSpan(2, 3, 18); // 2 : start index; 3 : end index; 18 absolute font size
604 label->SetAbsoluteSizeSpan(3, 4, 24); // 3 : start index; 4 : end index; 24 absolute font size
605 label->SetAbsoluteSizeSpan(10, 11, 14); // 10 : start index; 11 : end index; 14 font size
606 container_->Add(label);
607 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
608 }
609
UIKitFontTestRelativeSizeSpan()610 void UITestFont::UIKitFontTestRelativeSizeSpan()
611 {
612 if (container_ == nullptr) {
613 return;
614 }
615 InnerTestTitle(" Display Relative size span");
616 UILabel* label = new UILabel();
617 label->SetPosition(positionX_, positionY_);
618 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
619 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
620 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
621 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
622 #else
623 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
624 #endif
625 label->SetText("轻量图形子系统\n轻量图形子系统");
626 label->SetRelativeSizeSpan(1, 2, 0.8f); // 1 : start index; 2 : end index; 0.8f relative font size
627 label->SetRelativeSizeSpan(10, 11, 0.6f); // 1 : start index; 2 : end index; 0.6f relative font size
628 container_->Add(label);
629 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
630 }
631
UIKitFontTestDisplayEmoji001()632 void UITestFont::UIKitFontTestDisplayEmoji001()
633 {
634 if (container_ == nullptr) {
635 return;
636 }
637 InnerTestTitle("Emoij");
638 UILabel* label = new UILabel();
639 label->SetPosition(positionX_, positionY_);
640
641 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
642 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 3); // 2 : double; 3 : triple
643 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
644 UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
645 label->SetFont(DEFAULT_EMOJI_FILENAME, FONT_EMOJI_SIZE);
646 label->SetText("");
647 container_->Add(label);
648 positionY_ += LABEL_HEIGHT * 3 + GAP; // 3 : triple
649 #else
650 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
651 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
652 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
653 uint8_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
654 UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
655 #endif
656 label->SetText("\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82\xEF\x80\x83\xEF\x80\x84\xEF\x80\x85\xEF\x80\x86\xEF\x80\x87"
657 "\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82\xEF\x80\x83\xEF\x80\x84\xEF\x80\x85\xEF\x80\x86\xEF\x80\x87");
658 container_->Add(label);
659 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double;
660 #endif
661 }
662
UIKitFontTestDisplayEmoji002()663 void UITestFont::UIKitFontTestDisplayEmoji002()
664 {
665 if (container_ == nullptr) {
666 return;
667 }
668 InnerTestTitle("Text and Emoij");
669 UILabel* label = new UILabel();
670 label->SetPosition(positionX_, positionY_);
671
672 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
673 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 6); // 2 : double; 6 : six times
674 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
675 UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
676 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE);
677 label->SetText("轻量图形子系统");
678 container_->Add(label);
679 positionY_ += LABEL_HEIGHT * 6 + GAP; // 6 : six times
680 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
681 uint8_t findPath[] = {UIFont::GetInstance()->GetFontId(DEFAULT_EMOJI_FILENAME, FONT_EMOJI_SIZE)};
682 UIMultiFontManager::GetInstance()->SetSearchFontList(
683 UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE), findPath, sizeof(findPath));
684 #endif
685 #else
686 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 3); // 3 : triple
687 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
688 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
689 uint8_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
690 UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
691 #endif
692 label->SetText("轻量图形子系统\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82\xEF\x80\x83\xEF\x80\x84鴻蒙");
693 container_->Add(label);
694 positionY_ += LABEL_HEIGHT * 3 + GAP; // 3 : triple
695 #endif
696 }
697
UIKitFontTestDisplayEmoji003()698 void UITestFont::UIKitFontTestDisplayEmoji003()
699 {
700 if (container_ == nullptr) {
701 return;
702 }
703 InnerTestTitle("Text and Emoij line break");
704 UILabel* label = new UILabel();
705 label->SetPosition(positionX_, positionY_);
706
707 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
708 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 12); // 2 : double; 12 : twelve times
709 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
710 UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
711 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE);
712 label->SetText("轻量图形子系统您好,轻量图形子系统,鴻蒙");
713 container_->Add(label);
714 positionY_ += LABEL_HEIGHT * 6 + GAP; // 6 : six times
715 #else
716 label->Resize(380, LABEL_HEIGHT * 3); // 3 : triple
717 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
718 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
719 uint8_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
720 UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
721 #endif
722 label->SetText("轻量图形子系统鴻蒙操作系統\xEF\x80\x80\xEF\x80\x80"); // EF8080
723 container_->Add(label);
724 positionY_ += LABEL_HEIGHT * 3 + GAP; // 3 : triple
725 #endif
726 }
727 } // namespace OHOS
728