阿尼樱奈奈
deepin
2023-05-17 05:20 意思是各个软件用各自的字体,并且有相关调整设置?
Reply Like 0 View the author
意思是各个软件用各自的字体,并且有相关调整设置?
意思是各个软件用各自的字体,并且有相关调整设置?
不是,用DTK提供的字体,软件能够随系统共同响应。
比如,你在deepin系统的“控制中心”中设置字体为中文,字体大小为中型,然后软件本身也能会共同响应,软件界面中的字体内容也是中文、字体大小也为中型。
当然,如果你也可以再次到软件中重新设定字体的国家语言类型和大小。
但不得不说那个API真的又臭又长,根本记不住
c++
m_TrashDescritionLab = new DLabel();
DFontSizeManager::instance()->bind(m_TrashDescritionLab, DFontSizeManager::T6, QFont::Medium);
QPalette pal = DApplicationHelper::instance()->palette(m_TrashDescritionLab);
QColor color_BT = pal.color(DPalette::BrightText);
DGuiApplicationHelper::ColorType themeType = DGuiApplicationHelper::instance()->themeType();
if (themeType == DGuiApplicationHelper::LightType) {
color_BT.setAlphaF(0.5);
pal.setBrush(DPalette::Text, color_BT);
} else if (themeType == DGuiApplicationHelper::DarkType) {
color_BT.setAlphaF(0.75);
pal.setBrush(DPalette::Text, color_BT);
}
m_TrashDescritionLab->setForegroundRole(DPalette::Text);
m_TrashDescritionLab->setPalette(pal);
但不得不说那个API真的又臭又长,根本记不住
c++
m_TrashDescritionLab = new DLabel();
DFontSizeManager::instance()->bind(m_TrashDescritionLab, DFontSizeManager::T6, QFont::Medium);
QPalette pal = DApplicationHelper::instance()->palette(m_TrashDescritionLab);
QColor color_BT = pal.color(DPalette::BrightText);
DGuiApplicationHelper::ColorType themeType = DGuiApplicationHelper::instance()->themeType();
if (themeType == DGuiApplicationHelper::LightType) {
color_BT.setAlphaF(0.5);
pal.setBrush(DPalette::Text, color_BT);
} else if (themeType == DGuiApplicationHelper::DarkType) {
color_BT.setAlphaF(0.75);
pal.setBrush(DPalette::Text, color_BT);
}
m_TrashDescritionLab->setForegroundRole(DPalette::Text);
m_TrashDescritionLab->setPalette(pal);
最后一步不推荐直接设置 QPalette,我记得会有警告
Dtk 里面一般要求用 DApplicationHelper::instance()->setPalette(m_TrashDescritionLab, pal); 设置调色板
但不得不说那个API真的又臭又长,根本记不住
c++
m_TrashDescritionLab = new DLabel();
DFontSizeManager::instance()->bind(m_TrashDescritionLab, DFontSizeManager::T6, QFont::Medium);
QPalette pal = DApplicationHelper::instance()->palette(m_TrashDescritionLab);
QColor color_BT = pal.color(DPalette::BrightText);
DGuiApplicationHelper::ColorType themeType = DGuiApplicationHelper::instance()->themeType();
if (themeType == DGuiApplicationHelper::LightType) {
color_BT.setAlphaF(0.5);
pal.setBrush(DPalette::Text, color_BT);
} else if (themeType == DGuiApplicationHelper::DarkType) {
color_BT.setAlphaF(0.75);
pal.setBrush(DPalette::Text, color_BT);
}
m_TrashDescritionLab->setForegroundRole(DPalette::Text);
m_TrashDescritionLab->setPalette(pal);
所以,后续要进行适度优化,方便软件开发者。
最后一步不推荐直接设置 QPalette,我记得会有警告
Dtk 里面一般要求用 DApplicationHelper::instance()->setPalette(m_TrashDescritionLab, pal); 设置调色板
还行吧,这段是从官方的代码仓库里截取出来的
Popular Ranking
ChangePopular Events
More
关于字体这块,现在论坛出现比较多的问题就是:WPS的文档界面排版出现错乱或重叠。然后,官方是推荐重新安装win字体,不过对于普通用户来讲这种处理方式确实有点拖沓,同时这也提示着deepin/UOS的软件开发者们在开发软件的过程中需要注重一些细节。
对于桌面系统的用户来讲,他们更希望查看软件界面的字体时,是美观、稳定的,无需再重新安装字体相关的软件或deb包,也就是在软件界面本身中进行字体设置选择。
那么,用户在软件中直接设置字体,软件开发者肯定要把一些稳定的字体一起绑定到软件程序中。这些字体的程序和文件,绑定到软件程序中,实际也是在要求deepin/UOS 操作系统的DTK能够提供一种软件字体开发服务,需要在DTK开发文档中提供实现字体程序API的调用方法和开发流程,让软件开发者能够一定程度上减少代码量和测试次数。

软件中的字体通过DTK的字体服务(font kit)绑定,有以下几个好处:
1.规范桌面系统用户的操作行为,让用户能减少安装程序包的次数,增加软件使用的频率,让系统也能更加稳定、安全;
2.开发者无需再到Linux生态中花更多时间找相关字体,直接调用DTK的字体服务(font kit),字体的大小、颜色等设置可以统一由deepin系统的设置(或控制中心)来统一调度。就如,用户在系统的控制中心中设置字体的大小为“中”,那么系统中安装的一些软件中的字体大小也会变为“中”,还有初始化的还原操作。
3.不稳定的字体,不仅会导致软件界面出现排版错乱,还有可能出现“乱码”、“无法打印”等问题,而DTK提供字体服务(font kit)则是把这些问题统一起来处理,减少软件应用层开发者的工作量,深层次也保证了系统的可靠性。
......
最后,我希望deepin用户在使用一些软件出现的问题,能够转变为deepin软件开发平台DTK提供的后台服务能力,让软件开发者和用户都能轻易上手。