簡體   English   中英

Android Jsoup更改樣式標簽中的字體系列

[英]Android Jsoup change font-family in style tag

在將html加載到WebView之后,我需要將font-family更改為自定義字體。 基本上我需要得到這個:

 <style>
            @font-face {
            font-family: 'MyFont';
            src: url('file:///android_asset/Custom-Font.otf')
            }
            body { font-family: 'MyFont', serif; font-size: 17px; color: #000; }
            a { color: #000; }
 </style>

<style>
            body { font-family: 'Helvetica', serif; font-size: 17px; color: #000; }
            a { color: #000; }
</style>

HTML是動態加載的,而不是從資產加載的。 我使用Jsoup,但到目前為止無法獲得此font-family參數...

JSoup不會為您解析CSS。 它最終以懸掛在style元素上的DataNode結束。 從那里開始,您可以自己進行解析。 如果您進行簡單的搜索和替換,則可以使用正則表達式來完成工作。 對於復雜的情況,您可以查看[CSS Parser] [1]。 您的情況看起來相對簡單,但是僅給出一個示例就很難確定要保留哪些元素。 這是基本概念的草圖,您可能需要進行修改以完全適合您的情況。 基本思想是從Style標記中獲取DataNode並使用正則表達式搜索和替換字段。

final String newFontInfo = "@font-face { \n"
        + "font-family: 'MyFont';\n"
        + "src: url('file:///android_asset/Custom-Font.otf')\n" + "}\n";
Elements styles = doc.select("style");
for (Element style : styles) {
    for (DataNode data : style.dataNodes()) {
        String dataTxt = data.getWholeData();
        if (dataTxt.contains("font-family")) {
             final String newData = dataTxt.replaceAll("font-family:\\s*'[^']*'","font-family: 'MyFont'");
             data.setWholeData(newFontInfo + newData);
        }
     }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM