Tamaño del texto de WebView

A veces, cuando cargo mi página (sin contenido estático, construido sobre la marcha) veo el tamaño de fuente demasiado pequeño1. Si recargo lo veo correctamente2. Voy hacia adelante y hacia atrás y lo veo correctamente. Y luego ... pequeña. No es una página específica, no en tiempos específicos. Ni siquiera una versión específica: implemento en un dispositivo ICS, no hay problema, luego cambio algo (como el tamaño de fuente) y aquí está el problema. Lo mismo para despliegues a 8 y 10 emuladores.

Mi opinión es bastante clara:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical" >
    <WebView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webviewArticle"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:padding="12dp" >
    </WebView>
</LinearLayout>

La construcción HTML (el parámetro de contenido tiene formato html)

String toShow = new StringBuffer()
    .append("<html>")
    .append("<head>")
    .append("<style type='text/css'>body{ font-size: large; color: #FFFFFF; background-color: #000000;}</style>")
    .append("</head>")
    .append(String.format(
        "<body><h1>%s</h1><div><img src='%s' alt='%s' style='width:100%%; height:auto' /></div><div style='background-color:#000000;'>%s</div><div><h3>%s</h3></div></body>",
        article.getTitle(),
        article.getImageLink().toString(),
        article.getTitle(),
        article.getContent().replace("%", "%25"), //html
        article.getAuthor()))
    .append("</html>")
    .toString();

mBrowser.getSettings().setBuiltInZoomControls(true);
mBrowser.setInitialScale(1);
CompatibilityUtils.setLoadWithOverviewMode(mBrowser, true); //set based on android version
mBrowser.getSettings().setUseWideViewPort(true);
mBrowser.loadDataWithBaseURL("fake://in/order/to/refresh", toShow, "text/html", "utf-8",null);

¿Alguna pista?

Descripción adicional 12/09/25: como lo sugieren las imágenes, la WebView piensa que el espacio disponible es la mitad de la pantalla y coloca el texto en consecuencia. Esto es extraño. Lo que es más extraño es que piensa así para el texto (el encabezado sobre la imagen y el div abajo) y no la imagen!

Respuestas a la pregunta(1)

Su respuesta a la pregunta