如何为自定义 FontFamily 添加权重?

     2023-03-15     73

关键词:

【中文标题】如何为自定义 FontFamily 添加权重?【英文标题】:How to add weight to custom FontFamily? 【发布时间】:2017-04-07 01:12:46 【问题描述】:

我有多个来自同一家族的 .ttf 文件,例如:

MyFont.ttf
MyFont_Bold.ttf
MyFont_Light.ttf
MyFont_Medium.ttf

如果我想使用每个权重,我应该像这样将主题定义为单独的 FontFamily:

<FontFamily x:Key="MyFont">
    ms-appx:///Fonts/MyFont.ttf#MyFont
</FontFamily>
<FontFamily x:Key="MyFont_Bold">
    ms-appx:///Fonts/MyFont_Bold.ttf#MyFont
</FontFamily>
<FontFamily x:Key="MyFont_Light">
    ms-appx:///Fonts/MyFont_Light.ttf#MyFont
</FontFamily>
<FontFamily x:Key="MyFont_Medium">
    ms-appx:///Fonts/MyFont_Medium.ttf#MyFont
</FontFamily>

并像这样使用它们:

<TextBlock FontFamily="StaticResource MyFont" />
<TextBlock FontFamily="StaticResource MyFont_Bold" />
<TextBlock FontFamily="StaticResource MyFont_Light" />
<TextBlock FontFamily="StaticResource MyFont_Medium" />

有没有办法像这样使用主题:

<TextBlock FontFamily="StaticResource MyFont" />
<TextBlock FontFamily="StaticResource MyFont" FontWeight="Bold" />
<TextBlock FontFamily="StaticResource MyFont" FontWeight="Light" />
<TextBlock FontFamily="StaticResource MyFont" FontWeight="Medium" />

【问题讨论】:

【参考方案1】:

TextBlock 有一个TextBlock.FontWeight property。通过这个属性,我们可以为 TextBlock 设置字体粗细。所以你可以使用如下代码:

<TextBlock FontFamily="StaticResource MyFont" FontWeight="Bold">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="StaticResource MyFont" FontWeight="Light">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="StaticResource MyFont" FontWeight="Medium">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>

但是,在使用自定义字体时,字符轮廓的粗细是根据您设置的字体计算的。不能根据FontWeight使用对应的字体文件。计算出的粗细可能与您自定义字体中的粗细不同。例如:

<TextBlock FontFamily="Assets/Fonts/consola.ttf#Consolas" FontSize="36">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="Assets/Fonts/consolab.ttf#Consolas" FontSize="36">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>
<TextBlock FontFamily="Assets/Fonts/consola.ttf#Consolas" FontSize="36" FontWeight="Bold">The quick brown fox jumps over the lazy dog.1234567890</TextBlock>

在上面的示例中,“consola.ttf”是具有常规字体粗细的字体文件,“onsolab.ttf”是具有粗体粗细的字体文件。在第三个TextBlock中,我使用了常规字体文件并将FontWeight设置为Bold。输出如下:

FontWeight设置为Bold后可以看到,字符轮廓的粗细变大了,但与使用粗体字文件的不一样。所以你可能需要根据你的实际场景考虑是使用FontWeight还是不同的字体文件。

【讨论】:

感谢您的回答,但这正是我要问的。我需要一种方法将 FontWeight 属性与相应的字体文件或任何可以将 FontWeight 用于单独字体的方法进行匹配。

如何为训练观察实现具有自定义权重的 KNN 分类器

】如何为训练观察实现具有自定义权重的KNN分类器【英文标题】:HowtoimplementedaKNNclassifierwithcustomweightingfortrainingobservations【发布时间】:2016-10-1217:45:25【问题描述】:我想实现一个KNN分类器,其中对于训练集中的每个观察值,我... 查看详情

如何为颤振添加自定义颜色?

】如何为颤振添加自定义颜色?【英文标题】:howtoaddcustomcolortoflutter?【发布时间】:2018-11-0601:17:37【问题描述】:我想更改AppBar的颜色并为其使用自定义颜色,我尝试了很多选项,但似乎都不起作用。我有什么遗漏吗?import\'pa... 查看详情

如何为 UITableView 添加自定义 EditingAccessoryView?

】如何为UITableView添加自定义EditingAccessoryView?【英文标题】:HowtoaddCustomEditingAccessoryViewforUITableView?【发布时间】:2010-10-2508:01:27【问题描述】:我想在单元格中添加自定义EditingAccessoryView,当用户滑动代替删除按钮时,我想显... 查看详情

如何为分析添加 Firebase 自定义事件?

】如何为分析添加Firebase自定义事件?【英文标题】:HowtoaddFirebasecustomeventsforanalytics?【发布时间】:2017-03-2119:37:26【问题描述】:我已经看到一些关于Firebase分析的自定义事件的问题和答案,但我只是想问你一个直截了当的问题... 查看详情

如何为自定义对象的 ArrayList 添加 parcelable 实现?

】如何为自定义对象的ArrayList添加parcelable实现?【英文标题】:HowtoaddtheparcelableimplementationforArrayListofCustomobject?【发布时间】:2021-12-0202:02:55【问题描述】:我创建了一个包含自定义对象的ArrayList和一些其他字符串变量的类。我... 查看详情

如何为自定义 nemo 操作添加键盘快捷键?

】如何为自定义nemo操作添加键盘快捷键?【英文标题】:Howtoaddkeyboardshortcutforcustomnemoaction?【发布时间】:2016-12-2913:46:04【问题描述】:我有一个自定义nemo操作,如下所述:https://wiki.archlinux.org/index.php/Nemo#Nemo_Actions如何为此操... 查看详情

如何为自定义 uicontrol 和控制器添加触摸事件?

】如何为自定义uicontrol和控制器添加触摸事件?【英文标题】:Howtoaddtoucheventforcustomuicontrolandcontroller?【发布时间】:2017-09-1021:50:51【问题描述】:我有一个具有三个子视图的自定义UIControl。每个子视图,我添加一个目标:button.... 查看详情

如何为 GitHub 组织添加自定义用户角色?

】如何为GitHub组织添加自定义用户角色?【英文标题】:HowtoaddcustomuserrolesforaGitHuborganisation?【发布时间】:2016-09-2413:04:15【问题描述】:GitHub上的组织中有两个默认用户角色:“admin”和“member”。如何进一步引入角色并配置其... 查看详情

如何为自定义 UITableView 标题部分笔尖添加分隔线? [复制]

】如何为自定义UITableView标题部分笔尖添加分隔线?[复制]【英文标题】:HowdoIaddaseparatorlineforacustomUITableViewheadersectionnib?[duplicate]【发布时间】:2017-04-2206:56:57【问题描述】:我按照这个答案here中的说明操作并设法获得我的自定... 查看详情

Flask Mail:如何为发件人添加自定义名称?

】FlaskMail:如何为发件人添加自定义名称?【英文标题】:FlaskMail:howtoaddcustomnametothesender?【发布时间】:2019-04-2416:37:11【问题描述】:我正在使用Flask邮件发送电子邮件。一切正常,除了我注意到发件人姓名只是电子邮件的第一... 查看详情

如何为形状添加自定义视图修改器

】如何为形状添加自定义视图修改器【英文标题】:HowcaniaddacustomViewmodifierforShapes【发布时间】:2019-11-2100:15:17【问题描述】:我想用某种修饰符调用我的ImageView以使其中的图像为圆形或方形。代码应如下所示:ImageView(withURL:news... 查看详情

如何为已添加在 UIViewController 之上的 tableView 添加自定义单元格?

】如何为已添加在UIViewController之上的tableView添加自定义单元格?【英文标题】:HowdoIaddcustomcellsforatableViewwhichhasbeenaddedontopofaUIViewController?【发布时间】:2019-08-0211:48:28【问题描述】:我在一个普通的UIViewController类上使用了一个t... 查看详情

如何为 ConstraintLayout 视图添加不同的权重

】如何为ConstraintLayout视图添加不同的权重【英文标题】:HowtoadddifferentweighttoConstraintLayoutviews【发布时间】:2018-07-1813:43:07【问题描述】:在我的布局中,我有一个ConstraintLayout包含两个TextView元素。它们目前的尺寸相同,但我希... 查看详情

如何为 Spring Boot 2 添加自定义 MeterRegisty

】如何为SpringBoot2添加自定义MeterRegisty【英文标题】:HowtoaddcustomMeterRegistyforSpringBoot2【发布时间】:2020-03-2114:13:22【问题描述】:我目前正在以10秒的间隔将我的SpringBootWebflux项目的执行器指标导出到DataDog。我想为我们的一个内... 查看详情

如何为自定义 Android 通知添加垂直线到 RemoteView?

】如何为自定义Android通知添加垂直线到RemoteView?【英文标题】:HowtoaddverticallinetoRemoteViewforcustomAndroidNotifications?【发布时间】:2012-05-2308:10:03【问题描述】:我正在努力为自定义Android通知添加一条垂直线。我尝试将这样的视图... 查看详情

如何为自定义单元格中的动态附加输入字段添加约束

】如何为自定义单元格中的动态附加输入字段添加约束【英文标题】:Howtoaddconstraintsfordynamicappendinginputfieldsincustomcell【发布时间】:2019-12-0410:45:23【问题描述】:如何在自定义表格单元格中添加动态输入字段的同时实现单元格... 查看详情

如何为 Angular 6 项目全局添加自定义 CSS 文件

】如何为Angular6项目全局添加自定义CSS文件【英文标题】:HowtoaddcustomCSSfilesgloballyforangular6project【发布时间】:2019-01-1100:49:00【问题描述】:在angular.json文件中,如果我添加"styles":["src/styles.css","src/utility/vendor/bootstrap/css/bootstrap.cs... 查看详情

如何为 geom_hline 添加自定义图例

】如何为geom_hline添加自定义图例【英文标题】:Howtoaddacustomlegendforgeom_hline【发布时间】:2013-06-1004:22:47【问题描述】:使用下面的数据,请注意图例没有正确描述geom_hline:df<-data.frame(points=c(.153,.144,.126,.035,.037,.039,.010,.015,.07),... 查看详情