* Copyright (c) 2020-2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ui_test_font.h"
#include "graphic_config.h"
#include "common/screen.h"
#if ENABLE_VECTOR_FONT
#else
#include "common/ui_text_language.h"
#endif
#include "components/ui_label.h"
#include "font/ui_font.h"
#if ENABLE_MULTI_FONT
#include "font/ui_multi_font_manager.h"
#endif
namespace OHOS {
namespace {
const int16_t GAP = 5;
const int16_t TITLE_HEIGHT = 20;
const uint16_t LABEL_WIDTH = 400;
const uint16_t LABEL_HEIGHT = 50;
const uint16_t FONT_SIZE = 30;
const uint16_t FONT_EMOJI_SIZE = 100;
const char* SOURCE_HAN_SANS_SC_REGULAR = "SourceHanSansSC-Regular.otf";
const char* ROBOTO_CONDENSED_REGULAR = "RobotoCondensed-Regular.ttf";
const char* DEFAULT_EMOJI_FILENAME = "NotoColorEmojiCompat.ttf";
#if ENABLE_MULTI_FONT
const int16_t F_HWEMOJI_REGULAR_30_32 = 99;
#endif
}
void UITestFont::SetUp()
{
if (container_ == nullptr) {
container_ = new UIScrollView();
container_->SetThrowDrag(true);
container_->SetHorizontalScrollState(false);
container_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight() - BACK_BUTTON_HEIGHT);
positionX_ = 50;
positionY_ = 5;
}
}
void UITestFont::TearDown()
{
DeleteChildren(container_);
container_ = nullptr;
}
void UITestFont::InnerTestTitle(const char* title)
{
UILabel* titleLabel = new UILabel();
titleLabel->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, positionY_, Screen::GetInstance().GetWidth(),
TITLE_LABEL_DEFAULT_HEIGHT);
#if ENABLE_VECTOR_FONT
titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DEFAULT_VECTOR_FONT_SIZE);
#else
titleLabel->SetFontId(F_SOURCEHANSANSSC_REGULAR_18_4);
#endif
titleLabel->SetText(title);
container_->Add(titleLabel);
positionY_ += TITLE_HEIGHT + GAP;
}
const UIView* UITestFont::GetTestView()
{
UIKitFontTestDisplay001();
UIKitFontTestDisplay002();
UIKitFontTestDisplay003();
UIKitFontTestDisplay004();
UIKitFontTestDisplay005();
UIKitFontTestDisplay006();
UIKitFontTestDisplay007();
UIKitFontTestDisplay008();
UIKitFontTestDisplay009();
UIKitFontTestDisplay010();
UIKitFontTestBaseline001();
UIKitFontTestBaseline002();
UIKitFontTestLineHeight001();
UIKitFontTestLineHeight002();
#if ENABLE_MULTI_FONT
UIKitFontMultiLanguage001();
UIKitFontMultiLanguage002();
#endif
UIKitFontTestBackgroundColor();
UIKitFontTestForegroundColor();
UIKitFontTestLineBackgroundSpan();
UIKitFontTestAbsoluteSizeSpan();
UIKitFontTestRelativeSizeSpan();
UIKitFontTestDisplayNegativeLineSpace001();
UIKitFontTestDisplayNegativeLineSpace002();
UIKitFontTestDisplayEmoji001();
UIKitFontTestDisplayEmoji002();
UIKitFontTestDisplayEmoji003();
return container_;
}
void UITestFont::UIKitFontTestDisplay001()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display single line Chinese");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("轻量图形子系统");
container_->Add(label);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontTestDisplay002()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display multiline Chinese");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText(" 你好\n轻量图形子系统");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestDisplay003()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display single line English");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("uikit test");
container_->Add(label);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontTestDisplay004()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display multiline English");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText(" Hello\n uikit");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestDisplay005()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display single line Chinese and English");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("你好,轻量级图形 uikit");
container_->Add(label);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontTestDisplay006()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display multiline Chinese and English");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("你好\n轻量级图形 uikit");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestDisplay007()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display single line text color");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetStyle(STYLE_TEXT_COLOR, Color::Red().full);
label->SetText("你好,轻量级图形");
container_->Add(label);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontTestDisplay008()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display multiline text color");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetStyle(STYLE_TEXT_COLOR, Color::Yellow().full);
label->SetText("你好\n 轻量级图形 uikit");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestDisplay009()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display multiline text color");
UILabel* label = new UILabel();
label->SetPosition(positionX_ + 100, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
label->SetLineBreakMode(UILabel::LineBreakMode::LINE_BREAK_ADAPT);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->Rotate(90, Vector2<float> {0, 0});
label->SetText("轻量级图形");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 4 + GAP;
}
void UITestFont::UIKitFontTestDisplay010()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display multiline text color");
UILabel* label = new UILabel();
label->SetPosition(positionX_ + 100, positionY_);
label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT);
label->SetLineBreakMode(UILabel::LineBreakMode::LINE_BREAK_MARQUEE);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->Rotate(90, Vector2<float> {0, 0});
label->SetText("轻量级图形,轻量级图形,轻量级图形");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 4 + GAP;
}
void UITestFont::UIKitFontTestBaseline001()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle("Font baseline alignment");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("hello, uikit");
UILabel* label2 = new UILabel();
label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_);
label2->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
#else
label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
#endif
label2->SetText("hello, uikit");
container_->Add(label);
container_->Add(label2);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontTestBaseline002()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Font baseline alignment");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("hello, uikit");
label->SetStyle(STYLE_LINE_HEIGHT, 30);
UILabel* label2 = new UILabel();
label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_);
label2->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
#else
label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
#endif
label2->SetText("hello, uikit");
label2->SetStyle(STYLE_LINE_HEIGHT, 30);
container_->Add(label);
container_->Add(label2);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontTestLineHeight001()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Font lineheight alignment");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("hello,\n uikit");
UILabel* label2 = new UILabel();
label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_);
label2->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
#else
label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
#endif
label2->SetText("hello,\n uikit");
container_->Add(label);
container_->Add(label2);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestLineHeight002()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Font lineheight alignment");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("hello,\n uikit");
label->SetStyle(STYLE_LINE_HEIGHT, 40);
UILabel* label2 = new UILabel();
label2->SetPosition(positionX_ + (LABEL_WIDTH / 2), positionY_);
label2->Resize(LABEL_WIDTH / 2, LABEL_HEIGHT * 2);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
label2->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
#else
label2->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
#endif
label2->SetText("hello,\n uikit");
label2->SetStyle(STYLE_LINE_HEIGHT, 40);
container_->Add(label);
container_->Add(label2);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
#if ENABLE_MULTI_FONT
void UITestFont::UIKitFontMultiLanguage001()
{
if (container_ == nullptr) {
return;
}
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
uint16_t findPath[] = {UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR)};
UIMultiFontManager::GetInstance()->SetSearchFontList(UIFont::GetInstance()->GetFontId(ROBOTO_CONDENSED_REGULAR),
findPath, sizeof(findPath));
#else
uint16_t findPath[] = {F_SOURCEHANSANSSC_REGULAR_30_4};
UIMultiFontManager::GetInstance()->SetSearchFontList(F_ROBOTOCONDENSED_REGULAR_30_4, findPath, sizeof(findPath));
#endif
InnerTestTitle(" Display multilingual display");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if ENABLE_VECTOR_FONT
label->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
#endif
label->SetText("Hello, Test of GUI");
container_->Add(label);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontMultiLanguage002()
{
if (container_ == nullptr) {
return;
}
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
UIFont::GetInstance()->RegisterFontInfo(ROBOTO_CONDENSED_REGULAR);
uint16_t findPath[] = {UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR)};
UIMultiFontManager::GetInstance()->SetSearchFontList(UIFont::GetInstance()->GetFontId(ROBOTO_CONDENSED_REGULAR),
findPath, sizeof(findPath));
#else
uint16_t findPath[] = {F_SOURCEHANSANSSC_REGULAR_30_4};
UIMultiFontManager::GetInstance()->SetSearchFontList(F_ROBOTOCONDENSED_REGULAR_30_4, findPath, sizeof(findPath));
#endif
InnerTestTitle(" Display multilingual display");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if ENABLE_VECTOR_FONT
label->SetFont(ROBOTO_CONDENSED_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_ROBOTOCONDENSED_REGULAR_30_4);
#endif
label->SetText("Hello\n Test of GUI");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
#endif
void UITestFont::UIKitFontTestBackgroundColor()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display background color ");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetBackgroundColorSpan(Color::Red(), 0, 2);
label->SetBackgroundColorSpan(Color::Yellow(), 5, 6);
label->SetText("轻量图形子系统");
container_->Add(label);
positionY_ += LABEL_HEIGHT + GAP;
}
void UITestFont::UIKitFontTestForegroundColor()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Change some font colors ");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetForegroundColorSpan(Color::Blue(), 1, 3);
label->SetForegroundColorSpan(Color::Red(), 6, 9);
label->SetText("轻量图形子\n系统轻量图形子系统轻量图形子系统轻量图形子系统轻量图形子系统轻量图形子系统");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestLineBackgroundSpan()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display LineBackgroundSpan ");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetLineBackgroundSpan(Color::Blue(), 1, 3);
label->SetLineBackgroundSpan(Color::Red(), 5, 5);
label->SetText("轻量图\n形子系统");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestAbsoluteSizeSpan()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display absolute size span");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("轻量图形子系统\n轻量图形子系统");
label->SetAbsoluteSizeSpan(1, 2, 38);
label->SetAbsoluteSizeSpan(2, 3, 18);
label->SetAbsoluteSizeSpan(3, 4, 24);
label->SetAbsoluteSizeSpan(10, 11, 14);
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestRelativeSizeSpan()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Display Relative size span");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetText("轻量图形子系统\n轻量图形子系统");
label->SetRelativeSizeSpan(1, 2, 0.8f);
label->SetRelativeSizeSpan(10, 11, 0.6f);
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestDisplayEmoji001()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle("Emoij");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 3);
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
label->SetFont(DEFAULT_EMOJI_FILENAME, FONT_EMOJI_SIZE);
label->SetText("💋💋😂😂😂");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 3 + GAP;
#else
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 2);
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
uint16_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
#endif
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"
"\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82\xEF\x80\x83\xEF\x80\x84\xEF\x80\x85\xEF\x80\x86\xEF\x80\x87");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
#endif
}
void UITestFont::UIKitFontTestDisplayEmoji002()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle("Text and Emoij");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 6);
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE);
label->SetText("轻量图形子系统💋💋😂😂");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 6 + GAP;
#if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
uint16_t findPath[] = {UIFont::GetInstance()->GetFontId(DEFAULT_EMOJI_FILENAME, FONT_EMOJI_SIZE)};
UIMultiFontManager::GetInstance()->SetSearchFontList(
UIFont::GetInstance()->GetFontId(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE), findPath, sizeof(findPath));
#endif
#else
label->Resize(LABEL_WIDTH, LABEL_HEIGHT * 3);
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
uint16_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
#endif
label->SetText("轻量图形子系统\xEF\x80\x80\xEF\x80\x81\xEF\x80\x82\xEF\x80\x83\xEF\x80\x84鴻蒙");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 3 + GAP;
#endif
}
void UITestFont::UIKitFontTestDisplayEmoji003()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle("Text and Emoij line break");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
#if defined(ENABLE_VECTOR_FONT) && ENABLE_VECTOR_FONT
label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT * 12);
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
UIFont::GetInstance()->RegisterFontInfo(DEFAULT_EMOJI_FILENAME);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_EMOJI_SIZE);
label->SetText("轻量图形子系统💋😂😂😂您好,轻量图形子系统,鴻蒙😂");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 6 + GAP;
#else
label->Resize(380, LABEL_HEIGHT * 3);
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#if defined(ENABLE_MULTI_FONT) && ENABLE_MULTI_FONT
uint16_t findPath[] = {F_HWEMOJI_REGULAR_30_32};
UIMultiFontManager::GetInstance()->SetSearchFontList(F_SOURCEHANSANSSC_REGULAR_30_4, findPath, sizeof(findPath));
#endif
label->SetText("轻量图形子系统鴻蒙操作系統\xEF\x80\x80\xEF\x80\x80");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 3 + GAP;
#endif
}
void UITestFont::UIKitFontTestDisplayNegativeLineSpace001()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Negative linespace with one line not enabled ");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT *2);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetStyle(STYLE_LINE_HEIGHT, FONT_SIZE);
label->SetStyle(STYLE_LINE_SPACE, -20);
label->SetText("lineSpace_ = -20, with one line.");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
void UITestFont::UIKitFontTestDisplayNegativeLineSpace002()
{
if (container_ == nullptr) {
return;
}
InnerTestTitle(" Negative linespace with two line is enabled. It is more clear when bounds can be seen. ");
UILabel* label = new UILabel();
label->SetPosition(positionX_, positionY_);
label->Resize(LABEL_WIDTH * 2, LABEL_HEIGHT *2);
#if ENABLE_VECTOR_FONT
UIFont::GetInstance()->RegisterFontInfo(SOURCE_HAN_SANS_SC_REGULAR);
label->SetFont(SOURCE_HAN_SANS_SC_REGULAR, FONT_SIZE);
#else
label->SetFontId(F_SOURCEHANSANSSC_REGULAR_30_4);
#endif
label->SetStyle(STYLE_LINE_SPACE, -20);
label->SetText("lineSpace_ = -20, \n with two line.");
container_->Add(label);
positionY_ += LABEL_HEIGHT * 2 + GAP;
}
}