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 UIKitFontTestDisplayNegativeLineSpace001();
106 UIKitFontTestDisplayNegativeLineSpace002();
107 UIKitFontTestDisplayEmoji001();
108 UIKitFontTestDisplayEmoji002();
109 UIKitFontTestDisplayEmoji003();
110 return container_;
111 }
112
UIKitFontTestDisplay001()113 void UITestFont::UIKitFontTestDisplay001()
114 {
115 if (container_ == nullptr) {
116 return;
117 }
118 InnerTestTitle(" Display single line Chinese");
119 UILabel* label = new UILabel();
120 label->SetPosition(positionX_, positionY_);
121 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
122 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
123 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
124 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
125 #else
126 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
127 #endif
128 label->SetText("轻量图形子系统");
129 container_->Add(label);
130 positionY_ += LABEL_HEIGHT + GAP;
131 }
132
UIKitFontTestDisplay002()133 void UITestFont::UIKitFontTestDisplay002()
134 {
135 if (container_ == nullptr) {
136 return;
137 }
138 InnerTestTitle(" Display multiline Chinese");
139 UILabel* label = new UILabel();
140 label->SetPosition(positionX_, positionY_);
141 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
142 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
143 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
144 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
145 #else
146 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
147 #endif
148 label->SetText(" 你好\n轻量图形子系统");
149 container_->Add(label);
150 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
151 }
152
153
UIKitFontTestDisplay003()154 void UITestFont::UIKitFontTestDisplay003()
155 {
156 if (container_ == nullptr) {
157 return;
158 }
159 InnerTestTitle(" Display single line English");
160 UILabel* label = new UILabel();
161 label->SetPosition(positionX_, positionY_);
162 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
163 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
164 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
165 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
166 #else
167 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
168 #endif
169 label->SetText("uikit test");
170 container_->Add(label);
171 positionY_ += LABEL_HEIGHT + GAP;
172 }
173
174
UIKitFontTestDisplay004()175 void UITestFont::UIKitFontTestDisplay004()
176 {
177 if (container_ == nullptr) {
178 return;
179 }
180 InnerTestTitle(" Display multiline English");
181 UILabel* label = new UILabel();
182 label->SetPosition(positionX_, positionY_);
183 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
184 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
185 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
186 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
187 #else
188 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
189 #endif
190 label->SetText(" Hello\n uikit");
191 container_->Add(label);
192 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
193 }
194
195
UIKitFontTestDisplay005()196 void UITestFont::UIKitFontTestDisplay005()
197 {
198 if (container_ == nullptr) {
199 return;
200 }
201 InnerTestTitle(" Display single line Chinese and English");
202 UILabel* label = new UILabel();
203 label->SetPosition(positionX_, positionY_);
204 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
205 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
206 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
207 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
208 #else
209 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
210 #endif
211 label->SetText("你好,轻量级图形 uikit");
212 container_->Add(label);
213 positionY_ += LABEL_HEIGHT + GAP;
214 }
215
UIKitFontTestDisplay006()216 void UITestFont::UIKitFontTestDisplay006()
217 {
218 if (container_ == nullptr) {
219 return;
220 }
221 InnerTestTitle(" Display multiline Chinese and English");
222 UILabel* label = new UILabel();
223 label->SetPosition(positionX_, positionY_);
224 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
225 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
226 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
227 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
228 #else
229 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
230 #endif
231 label->SetText("你好\n轻量级图形 uikit");
232 container_->Add(label);
233 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
234 }
235
236
UIKitFontTestDisplay007()237 void UITestFont::UIKitFontTestDisplay007()
238 {
239 if (container_ == nullptr) {
240 return;
241 }
242 InnerTestTitle(" Display single line text color");
243 UILabel* label = new UILabel();
244 label->SetPosition(positionX_, positionY_);
245 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
246 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
247 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
248 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
249 #else
250 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
251 #endif
252 label->SetStyle(STYLE_TEXT_COLOR, Color::Red().full);
253 label->SetText("你好,轻量级图形");
254 container_->Add(label);
255 positionY_ += LABEL_HEIGHT + GAP;
256 }
257
UIKitFontTestDisplay008()258 void UITestFont::UIKitFontTestDisplay008()
259 {
260 if (container_ == nullptr) {
261 return;
262 }
263 InnerTestTitle(" Display multiline text color");
264 UILabel* label = new UILabel();
265 label->SetPosition(positionX_, positionY_);
266 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
267 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
268 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
269 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
270 #else
271 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
272 #endif
273 label->SetStyle(STYLE_TEXT_COLOR, Color::Yellow().full);
274 label->SetText("你好\n 轻量级图形 uikit");
275 container_->Add(label);
276 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
277 }
278
279
UIKitFontTestDisplay009()280 void UITestFont::UIKitFontTestDisplay009()
281 {
282 if (container_ == nullptr) {
283 return;
284 }
285 InnerTestTitle(" Display multiline text color");
286 UILabel* label = new UILabel();
287 label->SetPosition(positionX_ + 100, positionY_); // 100 : offset x
288 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
289 label->SetLineBreakMode(UILabel::LineBreakMode::LINE_BREAK_ADAPT);
290 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
291 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
292 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
293 #else
294 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
295 #endif
296 label->Rotate(90, Vector2<float> {0, 0}); // 90 : angle
297 label->SetText("轻量级图形");
298 container_->Add(label);
299 positionY_ += LABEL_HEIGHT * 4 + GAP; // 4 : coefficient
300 }
301
302
UIKitFontTestDisplay010()303 void UITestFont::UIKitFontTestDisplay010()
304 {
305 if (container_ == nullptr) {
306 return;
307 }
308 InnerTestTitle(" Display multiline text color");
309 UILabel* label = new UILabel();
310 label->SetPosition(positionX_ + 100, positionY_); // 100 : offset x
311 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT); // 2 : half
312 label->SetLineBreakMode(UILabel::LineBreakMode::LINE_BREAK_MARQUEE);
313 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
314 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
315 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
316 #else
317 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
318 #endif
319 label->Rotate(90, Vector2<float> {0, 0}); // 90 : angle
320 label->SetText("轻量级图形,轻量级图形,轻量级图形");
321 container_->Add(label);
322 positionY_ += LABEL_HEIGHT * 4 + GAP; // 4 : coefficient
323 }
324
325
UIKitFontTestBaseline001()326 void UITestFont::UIKitFontTestBaseline001()
327 {
328 if (container_ == nullptr) {
329 return;
330 }
331 InnerTestTitle("Font baseline alignment");
332 UILabel* label = new UILabel();
333 label->SetPosition(positionX_, positionY_);
334 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT); // 2 : half
335 #if ENABLE_VECTOR_FONT
336 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
337 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
338 #else
339 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
340 #endif
341 label->SetText("hello, uikit");
342
343 UILabel* label2 = new UILabel();
344 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
345 label2->Resize(LABEL_WIDTH, LABEL_HEIGHT);
346 #if ENABLE_VECTOR_FONT
347 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
348 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
349 #else
350 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
351 #endif
352 label2->SetText("hello, uikit");
353
354 container_->Add(label);
355 container_->Add(label2);
356 positionY_ += LABEL_HEIGHT + GAP;
357 }
358
UIKitFontTestBaseline002()359 void UITestFont::UIKitFontTestBaseline002()
360 {
361 if (container_ == nullptr) {
362 return;
363 }
364 InnerTestTitle(" Font baseline alignment");
365 UILabel* label = new UILabel();
366 label->SetPosition(positionX_, positionY_);
367 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT); // 2 : half
368 #if ENABLE_VECTOR_FONT
369 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
370 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
371 #else
372 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
373 #endif
374 label->SetText("hello, uikit");
375 label->SetStyle(STYLE_LINE_HEIGHT, 30); // 30 : line height
376
377 UILabel* label2 = new UILabel();
378 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
379 label2->Resize(LABEL_WIDTH, LABEL_HEIGHT);
380 #if ENABLE_VECTOR_FONT
381 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
382 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
383 #else
384 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
385 #endif
386 label2->SetText("hello, uikit");
387 label2->SetStyle(STYLE_LINE_HEIGHT, 30); // 30 : line height
388
389 container_->Add(label);
390 container_->Add(label2);
391 positionY_ += LABEL_HEIGHT + GAP;
392 }
393
UIKitFontTestLineHeight001()394 void UITestFont::UIKitFontTestLineHeight001()
395 {
396 if (container_ == nullptr) {
397 return;
398 }
399 InnerTestTitle(" Font lineheight alignment");
400 UILabel* label = new UILabel();
401 label->SetPosition(positionX_, positionY_);
402 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
403 #if ENABLE_VECTOR_FONT
404 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
405 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
406 #else
407 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
408 #endif
409 label->SetText("hello,\n uikit");
410
411 UILabel* label2 = new UILabel();
412 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
413 label2->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
414 #if ENABLE_VECTOR_FONT
415 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
416 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
417 #else
418 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
419 #endif
420 label2->SetText("hello,\n uikit");
421
422 container_->Add(label);
423 container_->Add(label2);
424 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
425 }
426
UIKitFontTestLineHeight002()427 void UITestFont::UIKitFontTestLineHeight002()
428 {
429 if (container_ == nullptr) {
430 return;
431 }
432 InnerTestTitle(" Font lineheight alignment");
433 UILabel* label = new UILabel();
434 label->SetPosition(positionX_, positionY_);
435 label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
436 #if ENABLE_VECTOR_FONT
437 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
438 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
439 #else
440 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
441 #endif
442 label->SetText("hello,\n uikit");
443 label->SetStyle(STYLE_LINE_HEIGHT, 40); // 40 : line height
444
445 UILabel* label2 = new UILabel();
446 label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_); // 2 : half
447 label2->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2); // 2 : half
448 #if ENABLE_VECTOR_FONT
449 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
450 label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
451 #else
452 label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
453 #endif
454 label2->SetText("hello,\n uikit");
455 label2->SetStyle(STYLE_LINE_HEIGHT, 40); // 40 : line height
456
457 container_->Add(label);
458 container_->Add(label2);
459 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
460 }
461
462 #if ENABLE_MULTI_FONT
UIKitFontMultiLanguage001()463 void UITestFont::UIKitFontMultiLanguage001()
464 {
465 if (container_ == nullptr) {
466 return;
467 }
468 #if ENABLE_VECTOR_FONT
469 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
470 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
471 uint16_t findPath[] = {UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR)};
472 UIMultiFontManager::GetInstance()->SetSearchFontList(UIFont::GetInstance()->GetFontId(ROBOTO_CONDENSED_REGULAR),
473 findPath, sizeof(findPath));
474 #else
475 uint16_t findPath[] = {F_SOURCEHANSANSSC_REGULAR_30_4};
476 UIMultiFontManager::GetInstance()->SetSearchFontList(F_ROBOTOCONDENSED_REGULAR_30_4, findPath, sizeof(findPath));
477 #endif
478 InnerTestTitle(" Display multilingual display");
479 UILabel* label = new UILabel();
480 label->SetPosition(positionX_, positionY_);
481 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
482 #if ENABLE_VECTOR_FONT
483 label->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
484 #else
485 label->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
486 #endif
487 label->SetText("Hello, Test of GUI");
488 container_->Add(label);
489 positionY_ += LABEL_HEIGHT + GAP;
490 }
491
UIKitFontMultiLanguage002()492 void UITestFont::UIKitFontMultiLanguage002()
493 {
494 if (container_ == nullptr) {
495 return;
496 }
497 #if ENABLE_VECTOR_FONT
498 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
499 UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
500 uint16_t findPath[] = {UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR)};
501 UIMultiFontManager::GetInstance()->SetSearchFontList(UIFont::GetInstance()->GetFontId(ROBOTO_CONDENSED_REGULAR),
502 findPath, sizeof(findPath));
503 #else
504 uint16_t findPath[] = {F_SOURCEHANSANSSC_REGULAR_30_4};
505 UIMultiFontManager::GetInstance()->SetSearchFontList(F_ROBOTOCONDENSED_REGULAR_30_4, findPath, sizeof(findPath));
506 #endif
507 InnerTestTitle(" Display multilingual display");
508 UILabel* label = new UILabel();
509 label->SetPosition(positionX_, positionY_);
510 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
511 #if ENABLE_VECTOR_FONT
512 label->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
513 #else
514 label->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
515 #endif
516 label->SetText("Hello\n Test of GUI");
517 container_->Add(label);
518 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
519 }
520 #endif // ENABLE_MULTI_FONT
521
UIKitFontTestBackgroundColor()522 void UITestFont::UIKitFontTestBackgroundColor()
523 {
524 if (container_ == nullptr) {
525 return;
526 }
527 InnerTestTitle(" Display background color ");
528 UILabel* label = new UILabel();
529 label->SetPosition(positionX_, positionY_);
530 label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
531 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
532 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
533 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
534 #else
535 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
536 #endif
537 label->SetBackgroundColorSpan(Color::Red(), 0, 2); // 0 : start index; 2 : end index
538 label->SetBackgroundColorSpan(Color::Yellow(), 5, 6); // 5 : start index; 6 : end index
539 label->SetText("轻量图形子系统");
540 container_->Add(label);
541 positionY_ += LABEL_HEIGHT + GAP;
542 }
543
UIKitFontTestForegroundColor()544 void UITestFont::UIKitFontTestForegroundColor()
545 {
546 if (container_ == nullptr) {
547 return;
548 }
549 InnerTestTitle(" Change some font colors ");
550 UILabel* label = new UILabel();
551 label->SetPosition(positionX_, positionY_);
552 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
553 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
554 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
555 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
556 #else
557 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
558 #endif
559 label->SetForegroundColorSpan(Color::Blue(), 1, 3); // 1 : start index; 2 : end index
560 label->SetForegroundColorSpan(Color::Red(), 6, 9); // 6 : start index; 9 : end index
561 label->SetText("轻量图形子\n系统轻量图形子系统轻量图形子系统轻量图形子系统轻量图形子系统轻量图形子系统");
562 container_->Add(label);
563 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
564 }
565
UIKitFontTestLineBackgroundSpan()566 void UITestFont::UIKitFontTestLineBackgroundSpan()
567 {
568 if (container_ == nullptr) {
569 return;
570 }
571 InnerTestTitle(" Display LineBackgroundSpan ");
572 UILabel* label = new UILabel();
573 label->SetPosition(positionX_, positionY_);
574 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
575 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
576 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
577 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
578 #else
579 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
580 #endif
581 label->SetLineBackgroundSpan(Color::Blue(), 1, 3); // 1 : start index; 3 : end index
582 label->SetLineBackgroundSpan(Color::Red(), 5, 5); // 5 : start index; 5 : end index
583 label->SetText("轻量图\n形子系统");
584 container_->Add(label);
585 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
586 }
587
UIKitFontTestAbsoluteSizeSpan()588 void UITestFont::UIKitFontTestAbsoluteSizeSpan()
589 {
590 if (container_ == nullptr) {
591 return;
592 }
593 InnerTestTitle(" Display absolute size span");
594 UILabel* label = new UILabel();
595 label->SetPosition(positionX_, positionY_);
596 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
597 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
598 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
599 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
600 #else
601 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
602 #endif
603 label->SetText("轻量图形子系统\n轻量图形子系统");
604 label->SetAbsoluteSizeSpan(1, 2, 38); // 1 : start index; 2 : end index; 38 absolute font size
605 label->SetAbsoluteSizeSpan(2, 3, 18); // 2 : start index; 3 : end index; 18 absolute font size
606 label->SetAbsoluteSizeSpan(3, 4, 24); // 3 : start index; 4 : end index; 24 absolute font size
607 label->SetAbsoluteSizeSpan(10, 11, 14); // 10 : start index; 11 : end index; 14 font size
608 container_->Add(label);
609 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
610 }
611
UIKitFontTestRelativeSizeSpan()612 void UITestFont::UIKitFontTestRelativeSizeSpan()
613 {
614 if (container_ == nullptr) {
615 return;
616 }
617 InnerTestTitle(" Display Relative size span");
618 UILabel* label = new UILabel();
619 label->SetPosition(positionX_, positionY_);
620 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2); // 2 : double
621 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
622 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
623 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
624 #else
625 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
626 #endif
627 label->SetText("轻量图形子系统\n轻量图形子系统");
628 label->SetRelativeSizeSpan(1, 2, 0.8f); // 1 : start index; 2 : end index; 0.8f relative font size
629 label->SetRelativeSizeSpan(10, 11, 0.6f); // 1 : start index; 2 : end index; 0.6f relative font size
630 container_->Add(label);
631 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
632 }
633
UIKitFontTestDisplayEmoji001()634 void UITestFont::UIKitFontTestDisplayEmoji001()
635 {
636 if (container_ == nullptr) {
637 return;
638 }
639 InnerTestTitle("Emoij");
640 UILabel* label = new UILabel();
641 label->SetPosition(positionX_, positionY_);
642
643 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
644 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 3); // 2 : double; 3 : triple
645 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
646 UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
647 label->SetFont(DEFAULT_EMOJI_FILENAME, FONT_EMOJI_SIZE);
648 label->SetText("");
649 container_->Add(label);
650 positionY_ += LABEL_HEIGHT * 3 + GAP; // 3 : triple
651 #else
652 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
653 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
654 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
655 uint16_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
656 UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
657 #endif
658 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"
659 "\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82\xEF\x80\x83\xEF\x80\x84\xEF\x80\x85\xEF\x80\x86\xEF\x80\x87");
660 container_->Add(label);
661 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double;
662 #endif
663 }
664
UIKitFontTestDisplayEmoji002()665 void UITestFont::UIKitFontTestDisplayEmoji002()
666 {
667 if (container_ == nullptr) {
668 return;
669 }
670 InnerTestTitle("Text and Emoij");
671 UILabel* label = new UILabel();
672 label->SetPosition(positionX_, positionY_);
673
674 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
675 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 6); // 2 : double; 6 : six times
676 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
677 UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
678 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE);
679 label->SetText("轻量图形子系统");
680 container_->Add(label);
681 positionY_ += LABEL_HEIGHT * 6 + GAP; // 6 : six times
682 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
683 uint16_t findPath[] = {UIFont::GetInstance()->GetFontId(DEFAULT_EMOJI_FILENAME, FONT_EMOJI_SIZE)};
684 UIMultiFontManager::GetInstance()->SetSearchFontList(
685 UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE), findPath, sizeof(findPath));
686 #endif
687 #else
688 label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 3); // 3 : triple
689 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
690 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
691 uint16_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
692 UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
693 #endif
694 label->SetText("轻量图形子系统\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82\xEF\x80\x83\xEF\x80\x84鴻蒙");
695 container_->Add(label);
696 positionY_ += LABEL_HEIGHT * 3 + GAP; // 3 : triple
697 #endif
698 }
699
UIKitFontTestDisplayEmoji003()700 void UITestFont::UIKitFontTestDisplayEmoji003()
701 {
702 if (container_ == nullptr) {
703 return;
704 }
705 InnerTestTitle("Text and Emoij line break");
706 UILabel* label = new UILabel();
707 label->SetPosition(positionX_, positionY_);
708
709 #if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
710 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 12); // 2 : double; 12 : twelve times
711 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
712 UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
713 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE);
714 label->SetText("轻量图形子系统您好,轻量图形子系统,鴻蒙");
715 container_->Add(label);
716 positionY_ += LABEL_HEIGHT * 6 + GAP; // 6 : six times
717 #else
718 label->Resize(380, LABEL_HEIGHT * 3); // 3 : triple
719 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
720 #if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
721 uint16_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
722 UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
723 #endif
724 label->SetText("轻量图形子系统鴻蒙操作系統\xEF\x80\x80\xEF\x80\x80"); // EF8080
725 container_->Add(label);
726 positionY_ += LABEL_HEIGHT * 3 + GAP; // 3 : triple
727 #endif
728 }
729
UIKitFontTestDisplayNegativeLineSpace001()730 void UITestFont::UIKitFontTestDisplayNegativeLineSpace001()
731 {
732 if (container_ == nullptr) {
733 return;
734 }
735 InnerTestTitle(" Negative linespace with one line not enabled ");
736 UILabel* label = new UILabel();
737 label->SetPosition(positionX_, positionY_);
738 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT *2); // 2 : double
739 #if ENABLE_VECTOR_FONT
740 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
741 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
742 #else
743 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
744 #endif
745 label->SetStyle(STYLE_LINE_HEIGHT, FONT_SIZE);
746 label->SetStyle(STYLE_LINE_SPACE, -20); // -20 : lineSpace_
747 label->SetText("lineSpace_ = -20, with one line.");
748
749 container_->Add(label);
750 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
751 }
752
UIKitFontTestDisplayNegativeLineSpace002()753 void UITestFont::UIKitFontTestDisplayNegativeLineSpace002()
754 {
755 if (container_ == nullptr) {
756 return;
757 }
758 InnerTestTitle(" Negative linespace with two line is enabled. It is more clear when bounds can be seen. ");
759 UILabel* label = new UILabel();
760 label->SetPosition(positionX_, positionY_);
761 label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT *2); // 2 : double
762 #if ENABLE_VECTOR_FONT
763 UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
764 label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
765 #else
766 label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
767 #endif
768 label->SetStyle(STYLE_LINE_SPACE, -20); // -20 : lineSpace_
769
770 label->SetText("lineSpace_ = -20, \n with two line.");
771
772 container_->Add(label);
773 positionY_ += LABEL_HEIGHT * 2 + GAP; // 2 : double
774 }
775 } // namespace OHOS
776