需求:替换系统字体

分析:

过程: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系统字体相关推荐

  1. flutter字体不跟随系统_flutter 禁止字体大小跟随系统字体改变大小

    最近遇到个问题 刚开始是根据设计图写的字体大小 但是到我手机上都是非常小的文字 后来找到问题是因为我的手机系统字体比较小 习惯了 我的Android Studio字体也是比较小的 微信图片_20190 ...

  2. Android禁止app字体大小跟随系统字体大小调节

    Android禁止app字体大小跟随系统字体大小调节 针对字体不随系统应用改变而改变,不然会导致原来的一些布局变化,在Application中重写getResources() @Overridepub ...

  3. android 实现TextView字体不随系统字体设置变化

    今天工作遇到一个需求,说是要设置textview的字体大小不随系统字体设置变化.于是我一通百度,找到了一个so easy的方法. 1.直接将字体大小的sp改成dp即可实现改需求. 我美滋滋的找来领导, ...

  4. android webview 字体 系统字体大小,Android 系统字体大小动态改变,导致webview中显示不兼容的问题解决...

    唠叨几句: 在移动端再开发的过程中,很容易使用到webview,它也是用来混合开发的中间桥梁,因此解决webview使用过程中出现的问题是非常有必要的: 问题现象与发现: 现象: 日前,在是使用web ...

  5. oracle修改字体样式,电脑系统字体样式怎么改?电脑字体样式更改方法

    喜欢个性化电脑的朋友经常会想更改系统的一些默认设置,比如窗口动画.主题.或字体等等,总之要让我们看电脑时比较符合自己的口味才行哈,这里说明下如何更改系统显示的字体,包括图标下面的字体.右键菜单等等. ...

  6. android改变整个app字体大小,Android系统字体大小如何影响app的字体大小?

    在Android应用开发过程中,一定会碰到本来完美的布局,在系统字体大小设置[最大]时变成一团浆糊.解决办法网上也有很多,但是分析原理的却几乎没看到.博主在碰到问题的第一时间也是直接用了网上的方法,即 ...

  7. Android获取系统字体的大小,Android中设置字体不随系统字体大小而变化

    有的时候,我们设置好的布局,在某些手机上,就会出现布局错乱,因为这个问题会流失很多用户,体验超级不好,问题图如下 image.png . 我们可以看到本来是一行可以显示的布局,竟然错乱成这个样子,蛋疼 ...

  8. native字体尺寸自适应 react_react native 字体不随系统字体变化而变

    最近遇到了一个问题,rn写的软件内的字体(text组件)会随着手机系统字体大小的变化而变,也就是说当你把手机系统的显示-字体调到最大号,打开软件,text的字体会变得非常大,布局就乱了. 下面就这个问 ...

  9. 如何更改Windows显示字体_更改系统字体

    软件下载 软件名:noMeiryoUI [官网] https://github.com/Tatsu-syo/noMeiryoUI/releases [CSDN] https://download.cs ...

  10. ReactNative设置字体不随系统字体大小变化

    在Rn版本0.56.0之前可以直接如下设置: Text.defaultProps.allowFontScaling = false; 复制代码 0.56版本后关于Text的创建方式变了,所有可以下面的 ...

最新文章

  1. 刘启成_编写并使用shell脚本
  2. Linux 网卡驱动 PHY Mac MDIO kernel 驱动讲解 (未完待续)
  3. 2009-08 台湾印象
  4. 用CSS美化被鼠标选中的文字的样式
  5. GitHub真把代码冰封北极1000年!
  6. JavaWeb --第四章Maven详解
  7. 小旭的互联网营销之微信营销
  8. Hibernate 异常org.hibernate.LazyInitializationException: could not initialize proxy - no Session
  9. 基于python的气象数据分析_基于python的《Hadoop权威指南》一书中气象数据下载和map reduce化数据处理及其......
  10. spring对redis的操作
  11. 中职计算机考证的软件
  12. android wps mac 下载地址,wps for mac下载
  13. 2019计算机保研经验记录:南开软院、武大、信工所、南大软院、哈工深
  14. 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
  15. 视觉SLAM十四讲slambook2/ch3/examples/plotTrajectory.cpp程序报错解决
  16. 励志语录(忙碌的同时也要停下来思考人生)
  17. 自学html4,HTML4
  18. 微信小程序经典案例开发(微信开发)
  19. 李开复:人工智能对人类真正的威胁是什么?
  20. 王者荣耀-是用什么编程语言开发的

热门文章

  1. 【CCF会议期刊推荐】中国计算机协会(CCF)推荐计算领域高质量科技期刊分级目录(T2类)
  2. python爬虫分布式怎么构造_如何构建一个分布式爬虫:基础篇
  3. 珍稀资料:1950年中国高考数学真题
  4. 神策-神策中的营销学
  5. 基于Lora的远程农业监测与控制系统,过程回顾及经验总结
  6. response响应头设置总结
  7. 【光电工程实训】红外测温枪 红外辐射原理 测量影响因素探究标定
  8. Python读取Excel日期列读出来是数字的处理
  9. 盒模型和开发中常用的布局
  10. DHT21程序,DHT21与DHT11的不同处