chromium設定字型大小功能

2021-06-18 22:30:27 字數 2750 閱讀 1264

其實對於手機瀏覽器來說,設定字型大小實在是乙個非常雞肋又蛋疼無比的功能,因為本身可以縮放,還有縮放重排等功能。誰會有那麼無聊想設定字型大小。改變字型大小強制改變了原網頁的意圖,排版完全改變,很可能造成較差的使用者體驗,真是乙個吃力不討好的功能。

在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=, 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=, 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=, 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=, subtreeroot=0x4c9d1018, windowinfo=...)

at third_party/webkit/source/webcore/rendering/textautosizer.cpp:167

#5  0x5b607774 in webcore::textautosizer::processcluster (this=0x4bb6ee98, cluster=, 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=) 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相悖,導致了較差的使用者體驗。

展訊平台 「設定字型大小功能」

這周移植了展訊平台的 設定字型大小功能 總結一些如下 分析 在設定選單中需要增加 設定字型大小 的功能。對於每乙個視窗都是由一些控制項畫出來的。所以要更改字型,必須把每個控制項的字型的字型處改動。看 可以得到基本上控制項的字型引數都是由mmi default big font引數傳遞的,只需要改動此...

Gvim 字型大小設定

經過多方試驗,在win下設定vim的大小終於成功了,備份如下,現在把gvim7.1更改字型的方法記錄如下,一段時間後,可能會失效,對他人造成困擾吧?在 vimrc中寫 set guifont courier new h10 設定字型為courier new,大小10號 若在linux下,應該寫為,s...

Matlab設定字型大小

1.設定座標軸上下限 axis xmin,xmax,ymin,ymax x1和y1是圖的左下角座標,dx和dy是圖沿著x和y方向的大小,比如 set gcf,position 347,162,380,300 圖例中字型及大小 legend fontname times new roman fonts...