android8.1字体,Android8.1系统字体
需求:替换系统字体
分析:
过程:frameworks/base/data/fonts/fonts.xml
external/roboto-fonts/
noto-fonts/other/
关于字体上层主要在
frameworks/base/graphics/java/android/graphics/Typeface.java
static {
final ArrayMap systemFontMap =new ArrayMap<>();
final ArrayMap systemFallbackMap =new ArrayMap<>();
buildSystemFallback("/system/etc/fonts.xml","/system/fonts/", systemFontMap,
systemFallbackMap);
sSystemFontMap = Collections.unmodifiableMap(systemFontMap);
sSystemFallbackMap = Collections.unmodifiableMap(systemFallbackMap);
setDefault(sSystemFontMap.get(DEFAULT_FAMILY));
// Set up defaults and typefaces exposed in public API
DEFAULT =create((String)null,0);
DEFAULT_BOLD =create((String)null, Typeface.BOLD);
SANS_SERIF =create("sans-serif",0);
SERIF =create("serif",0);
MONOSPACE =create("monospace",0);
sDefaults =new Typeface[] {
DEFAULT,
DEFAULT_BOLD,
create((String)null, Typeface.ITALIC),
create((String)null, Typeface.BOLD_ITALIC),
};
}
static代码块 是系统typeface的初始化
DEFAULT 、DEFAULT_BOLD 、SANS_SERIF、SERIF、MONOSPACE
因为DEFAULT_FAMILY ="sans-serif" 所以DEFAULT = SANS_SERIF DEFAULT_BOLD = SANS_SERIF + BOLD
所以先介绍下三种familyName的含义
sans-serif:区别于“serif”,没有"笔锋",笔画粗细也基本差不多
serif:带“笔锋”,而且根据横竖斜的宽度也不一样
monospace:打印用字体,属于“sans-serif”,每个字母等间距
其次介绍下"font-weight",
weight指的是粗细”
那么默认的weight是多少?
===>>>Typeface.java
create(null,0);
nativeCreateFromTypeface(ni, style)
===>>>Typeface.cpp
frameworks/base/core/jni/android/graphics/Typeface.cpp
Typeface* face = Typeface::createRelative(family, (SkTypeface::Style)style);
===>>>Typeface.cpp
frameworks/base/libs/hwui/hwui/Typeface.cpp
Typeface* Typeface::createRelative(Typeface* src, SkTypeface::Style style) {
Typeface* resolvedFace = Typeface::resolveDefault(src);
Typeface* hwTypeface = new Typeface();
hwTypeface->fFontCollection = collection;
hwTypeface->fSkiaStyle = SkTypeface::kNormal;
hwTypeface->fBaseWeight = SkFontStyle::kNormal_Weight;
hwTypeface->fStyle = minikin::FontStyle(4 /* weight */, false /* italic */);
Typeface::setDefault(hwTypeface);
===>>>SkFontStyle.h
external/skia/include/core/SkFontStyle.h
enum Weight {
kInvisible_Weight = 0,
kThin_Weight = 100,
kExtraLight_Weight = 200,
kLight_Weight = 300,
kNormal_Weight = 400,
kMedium_Weight = 500,
kSemiBold_Weight = 600,
kBold_Weight = 700,
kExtraBold_Weight = 800,
kBlack_Weight = 900,
kExtraBlack_Weight = 1000,
};
所以默认的weight是400
再根据frameworks/base/data/fonts/fonts.mk 找到Roboto-Regular.ttf 才是默认的自体文件
Roboto-Thin.ttf
Roboto-ThinItalic.ttf
Roboto-Light.ttf
Roboto-LightItalic.ttf
Roboto-Regular.ttf
Roboto-Italic.ttf
Roboto-Medium.ttf
Roboto-MediumItalic.ttf
Roboto-Black.ttf
Roboto-BlackItalic.ttf
Roboto-Bold.ttf
Roboto-BoldItalic.ttf
其中要注意ttc文件
```
1234
```
NotoSansCJK-Regular.ttc
NotoSansCJK-Regular.ttc
NotoSansCJK-Regular.ttc
NotoSansCJK-Regular.ttc
```
android8.1字体,Android8.1系统字体相关推荐
- flutter字体不跟随系统_flutter 禁止字体大小跟随系统字体改变大小
最近遇到个问题 刚开始是根据设计图写的字体大小 但是到我手机上都是非常小的文字 后来找到问题是因为我的手机系统字体比较小 习惯了 我的Android Studio字体也是比较小的 微信图片_20190 ...
- Android禁止app字体大小跟随系统字体大小调节
Android禁止app字体大小跟随系统字体大小调节 针对字体不随系统应用改变而改变,不然会导致原来的一些布局变化,在Application中重写getResources() @Overridepub ...
- android 实现TextView字体不随系统字体设置变化
今天工作遇到一个需求,说是要设置textview的字体大小不随系统字体设置变化.于是我一通百度,找到了一个so easy的方法. 1.直接将字体大小的sp改成dp即可实现改需求. 我美滋滋的找来领导, ...
- android webview 字体 系统字体大小,Android 系统字体大小动态改变,导致webview中显示不兼容的问题解决...
唠叨几句: 在移动端再开发的过程中,很容易使用到webview,它也是用来混合开发的中间桥梁,因此解决webview使用过程中出现的问题是非常有必要的: 问题现象与发现: 现象: 日前,在是使用web ...
- oracle修改字体样式,电脑系统字体样式怎么改?电脑字体样式更改方法
喜欢个性化电脑的朋友经常会想更改系统的一些默认设置,比如窗口动画.主题.或字体等等,总之要让我们看电脑时比较符合自己的口味才行哈,这里说明下如何更改系统显示的字体,包括图标下面的字体.右键菜单等等. ...
- android改变整个app字体大小,Android系统字体大小如何影响app的字体大小?
在Android应用开发过程中,一定会碰到本来完美的布局,在系统字体大小设置[最大]时变成一团浆糊.解决办法网上也有很多,但是分析原理的却几乎没看到.博主在碰到问题的第一时间也是直接用了网上的方法,即 ...
- Android获取系统字体的大小,Android中设置字体不随系统字体大小而变化
有的时候,我们设置好的布局,在某些手机上,就会出现布局错乱,因为这个问题会流失很多用户,体验超级不好,问题图如下 image.png . 我们可以看到本来是一行可以显示的布局,竟然错乱成这个样子,蛋疼 ...
- native字体尺寸自适应 react_react native 字体不随系统字体变化而变
最近遇到了一个问题,rn写的软件内的字体(text组件)会随着手机系统字体大小的变化而变,也就是说当你把手机系统的显示-字体调到最大号,打开软件,text的字体会变得非常大,布局就乱了. 下面就这个问 ...
- 如何更改Windows显示字体_更改系统字体
软件下载 软件名:noMeiryoUI [官网] https://github.com/Tatsu-syo/noMeiryoUI/releases [CSDN] https://download.cs ...
- ReactNative设置字体不随系统字体大小变化
在Rn版本0.56.0之前可以直接如下设置: Text.defaultProps.allowFontScaling = false; 复制代码 0.56版本后关于Text的创建方式变了,所有可以下面的 ...
最新文章
- 刘启成_编写并使用shell脚本
- Linux 网卡驱动 PHY Mac MDIO kernel 驱动讲解 (未完待续)
- 2009-08 台湾印象
- 用CSS美化被鼠标选中的文字的样式
- GitHub真把代码冰封北极1000年!
- JavaWeb --第四章Maven详解
- 小旭的互联网营销之微信营销
- Hibernate 异常org.hibernate.LazyInitializationException: could not initialize proxy - no Session
- 基于python的气象数据分析_基于python的《Hadoop权威指南》一书中气象数据下载和map reduce化数据处理及其......
- spring对redis的操作
- 中职计算机考证的软件
- android wps mac 下载地址,wps for mac下载
- 2019计算机保研经验记录:南开软院、武大、信工所、南大软院、哈工深
- 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
- 视觉SLAM十四讲slambook2/ch3/examples/plotTrajectory.cpp程序报错解决
- 励志语录(忙碌的同时也要停下来思考人生)
- 自学html4,HTML4
- 微信小程序经典案例开发(微信开发)
- 李开复:人工智能对人类真正的威胁是什么?
- 王者荣耀-是用什么编程语言开发的