詳解android 中文字體向上偏移解決方案
在開發(fā) webapp 時,發(fā)現(xiàn)在 android 端的中文會莫名其妙的向上偏移。為了解決這個問題,嘗試了很多方法,最后使用以下解決方案。
1.bug 出現(xiàn)
目前在開發(fā) webapp,在調(diào)試的時候,發(fā)現(xiàn)項目里面的中文有一點向上偏移。具體表現(xiàn)為:使用開發(fā)者工具去查看元素,元素的真實高度和位置與文字不同。列如,一個span的font-size和line-height都設置為16px,在調(diào)試時,元素的高度確實是16px,但是,中文的高度看起來并不止16px,而且顯示的位置明顯超出了元素的尺寸范圍,向上偏移。
開始的時候還以為是樣式導致的,于是嘗試各種修改 css,但是完全沒有用。后來在網(wǎng)上看到用“定位”或者“上邊距”來強制文字的位置,但是發(fā)現(xiàn)這個方法太麻煩了,最終放棄這個方案。
后來想到使用的是ubuntu,懷疑可能是系統(tǒng)默認字體的原因?qū)е铝诉@個問題。于是下載了一個字體文件(用的是“思源黑體”)。然后配置全局字體,發(fā)現(xiàn)可以解決這個問題。
2.第二個問題出現(xiàn)
雖然使用自定義字體解決了中文文字偏移的問題,但是由于字體文件太大導致性能很不理想。無論是將字體文件放到服務器還是使用 cdn 都不理想。最終找到了fontmin這個插件。這個插件的原理是將字體文件中的字符集進行篩選,生成的新的字體文件中,只包含要使用到的文字字符集。
3.最終的方案
雖然fontmin可以進行字符集篩選,但是項目中到底需要哪些中文文字是不確定的。但沒有關系,經(jīng)過實驗,使用一個只有0這個字符集的字體文件同樣可以解決我們最初的問題。下面來看實現(xiàn)步驟。
3.1 字體下載
到網(wǎng)上下載一個中文字體,這里我使用的是google fonts。先測試一下,直接引用這個字體后,是否可以解決字體偏移??梢缘脑挘M行下一步。
3.2 安裝 fontmin
這里不推薦全局安裝,在項目里面安裝即可。
npm install fontmin -D
然后編寫配置文件。這里我是寫在項目根目錄的。
// fontmin-config.js
var Fontmin = require("fontmin")
var srcPath = "./src/assets/fonts/my-font.ttf" // 字體源文件
var destPath = "./src/assets/font-output/" // 輸出路徑
var text = "0" // 篩選的字符集
var fontmin = new Fontmin()
.src(srcPath) // 輸入配置
.use(
Fontmin.glyph({
text: text
})
)
.dest(destPath) // 輸出配置
fontmin.run(function(err, files, stream) {
if (err) {
console.error(err)
}
console.log("done")
})
然后執(zhí)行
cd your-project-dir node ./fontmin-config.js
3.3 配置 css
// global.css
@font-face {
font-family: "my-font";
src: url("../fonts/my-font.ttf");
}
html,body{
font-family: "my-font", sans-serif;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android Studio進行APP圖標更改的兩種方式總結
這篇文章主要介紹了Android Studio進行APP圖標更改的兩種方式總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Android應用中使用ContentProvider掃描本地圖片并顯示
這篇文章主要介紹了Android應用中使用ContentProvider掃描本地圖片并顯示的方法,比調(diào)用本地圖庫的方法更加靈活和可定制,需要的朋友可以參考下2016-04-04
Android中Handler實現(xiàn)倒計時的兩種方式
本篇文章主要介紹了Android中Handler實現(xiàn)倒計時的兩種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
Android布局耗時監(jiān)測的三種實現(xiàn)方式
在Android應用開發(fā)中,性能優(yōu)化是一個至關重要的方面,為了更好地監(jiān)測布局渲染的耗時,我們需要一種可靠的實現(xiàn)方案,本文將介紹三種針對Android布局耗時監(jiān)測的實現(xiàn)方案,幫助開發(fā)者及時發(fā)現(xiàn)并解決布局性能問題,需要的朋友可以參考下2024-03-03
Android啟動內(nèi)置APK和動態(tài)發(fā)送接收自定義廣播實例詳解
這篇文章主要介紹了Android啟動內(nèi)置APK和動態(tài)發(fā)送接收自定義廣播實例詳解的相關資料,需要的朋友可以參考下2017-06-06
android開發(fā)修改狀態(tài)欄背景色和圖標顏色的示例
本篇文章主要介紹了android開發(fā)修改狀態(tài)欄背景色和圖標顏色的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Android雙向選擇控件DoubleSeekBar使用詳解
這篇文章主要為大家詳細介紹了Android雙向選擇控件DoubleSeekBar的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08

