chromium设置字体大小功能
来源:互联网 发布:表白网页源码下载 编辑:程序博客网 时间:2024/05/21 10:25
其实对于手机浏览器来说,设置字体大小实在是一个非常鸡肋又蛋疼无比的功能,因为本身可以缩放,还有缩放重排等功能。谁会有那么无聊想设置字体大小。改变字体大小强制改变了原网页的意图,排版完全改变,很可能造成较差的用户体验,真是一个吃力不讨好的功能。
在browser端设置字体大小之后,不出意外会最终设置到WebCore::Settings::setTextAutosizingFontScaleFactor函数。当然,前提是你必须开启了TEXT_AUTOSIZING功能。否则你的设置完全不会起作用。
TEXT_AUTOSIZING功能是什么,直白的理解就是自动调节字体大小以使用户获得更佳的体验。怎样来调节?当然是按照chromium自己的逻辑来调节。这个流程从排版开始:
#0 WebCore::TextAutosizer::processContainer (this=0x4bb6ee98, multiplier=1.5, container=0x4c9d1bd0, subtreeRoot=0x4c9d1bd0, windowInfo=...) at third_party/WebKit/Source/WebCore/rendering/TextAutosizer.cpp:149
#1 0x5b60758a in WebCore::TextAutosizer::processContainer (this=0x4bb6ee98, multiplier=1.5, container=<value optimized out>, subtreeRoot=0x4c9d136c, windowInfo=...)
at third_party/WebKit/Source/WebCore/rendering/TextAutosizer.cpp:167
#2 0x5b60758a in WebCore::TextAutosizer::processContainer (this=0x4bb6ee98, multiplier=1.5, container=<value optimized out>, subtreeRoot=0x4c9d1300, windowInfo=...)
at third_party/WebKit/Source/WebCore/rendering/TextAutosizer.cpp:167
#3 0x5b60758a in WebCore::TextAutosizer::processContainer (this=0x4bb6ee98, multiplier=1.5, container=<value optimized out>, subtreeRoot=0x4c9d11cc, windowInfo=...)
at third_party/WebKit/Source/WebCore/rendering/TextAutosizer.cpp:167
#4 0x5b60758a in WebCore::TextAutosizer::processContainer (this=0x4bb6ee98, multiplier=1.5, container=<value optimized out>, subtreeRoot=0x4c9d1018, windowInfo=...)
at third_party/WebKit/Source/WebCore/rendering/TextAutosizer.cpp:167
#5 0x5b607774 in WebCore::TextAutosizer::processCluster (this=0x4bb6ee98, cluster=<value optimized out>, container=0x4c9d1018, subtreeRoot=0x4c9d1018, windowInfo=...)
at third_party/WebKit/Source/WebCore/rendering/TextAutosizer.cpp:125
#6 0x5b607982 in WebCore::TextAutosizer::processSubtree (this=0x4bb6ee98, layoutRoot=0x4c9d1018) at third_party/WebKit/Source/WebCore/rendering/TextAutosizer.cpp:95
#7 0x5b5d7028 in WebCore::FrameView::layout (this=0x4c0046c0, allowSubtree=<value optimized out>) at third_party/WebKit/Source/WebCore/page/FrameView.cpp:1186
#8 WebCore::FrameView::layout
TEXT_AUTOSIZING功能在TextAutosizer类中实现。
这里不得不插一句,TEXT_AUTOSIZING与设置字体大小简直是一对悖论。因为设置字体大小是使浏览器强制改变字体,而TEXT_AUTOSIZING又使浏览器自动调节字体。。。。这就导致最终的结果是调节后的结果,设置字体未必会起作用。。。。
TEXT_AUTOSIZING在哪些情况下不会理会字体大小设置呢?
1. 从clusterShouldBeAutosized函数中可以看出,太短的一段文字chromium不会理会。要多短,大约是小于四行
2. 从contentHeightIsConstrained函数中可以看出,行高被强制设置的节点(除去html和body节点),chromium不会理会
用膝盖想也知道这容易造成一种情况。。。。就是一个页面中有的被改变有的不会被改变。。。。真是奇葩。
TEXT_AUTOSIZING还会对设置的值进行自动调节,比如processCluster函数,就对该值进行了狠狠的一番改造。说实话它的逻辑我完全没看懂。。。。但这样造成的效果就是,即使字体会改变,那么不同节点字体改变的大小也不一定一样。。。。。又一个奇葩
包括computeAutosizedFontSize函数中,对字体的大小,包括最小值又有限制。
总之,chromium改变字体大小的功能与TEXT_AUTOSIZING相悖,导致了较差的用户体验。
- chromium设置字体大小功能
- chromium设置字体大小功能
- 展讯平台----“设置字体大小功能”
- 设置字体大小
- chromium保存网页功能
- 树莓派chromium代理设置
- eclipse 设置工程字体大小
- myeclipse中设置字体大小
- window print 设置字体大小
- myeclipse中设置字体大小
- FLEX MXML字体大小设置
- 设置中的字体大小?
- 设置gvim的字体大小
- textView设置字体大小
- 设置控件的字体大小
- eclipse中设置字体大小
- Gvim 字体大小设置
- myeclipse 字体大小设置
- nginx介绍及编译安装
- Android开发源码链接
- 黑马程序员-集合概念与工具类Collections
- 基于MINA实现server端心跳检测(KeepAliveFilter)
- 深入理解C++的动态绑定和静态绑定
- chromium设置字体大小功能
- uva 11218 KTV
- ios本地化系统文字的方法,比如键盘的send本地化为发送
- hdu 3749 点双连通
- 80C51 单片机 蜂鸣器
- 工作那些事(十六)面试时,面试官喜欢的非技术问题汇总
- [JAVA软件工程师-面试宝典-2013最新版]
- CRM管理:邮件营销大学问
- ant的配置(二)创建文件并编译、删除文件、生成jar包和run设置