• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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