# Auditoría de fuentes — Fase D

## Estado

Auditoría técnica y corrección completadas para revisión humana. **No se generó un ZIP y no se realizó despliegue.** Los paquetes producidos antes de esta auditoría deben considerarse obsoletos.

Esta revisión no ajustó `font-size`, `line-height` ni `letter-spacing`. Se corrigieron exclusivamente los archivos tipográficos y su mapeo `@font-face`.

## Fuentes de evidencia

- Mirror recuperado real: `/workspace/codex-workspace/flexi/source/reference/frontend-mirror/flexiprestamos.com.do/`.
- Snapshot: `/workspace/codex-workspace/flexi/source/reference/inicio-original.html`.
- CSS histórico de Bridge: `/workspace/codex-workspace/flexi/source/original-wordpress/flexiprestamos.com.do.todocomunicard.com/wp-content/themes/bridge/css/style_dynamic.css`.
- Reconstrucción previa: `/workspace/codex-workspace/flexi/rebuild/wordpress/wp-content/mu-plugins/flexi-reconstruction/fonts.css`.
- Repositorio oficial Google Fonts, commit Asap del 24-02-2021: `6daa244b0a0c6457128e0132cd4a7c7e8a5a7893`.
- Repositorio oficial Google Fonts, commit Raleway vigente en 2021: `062dbdcbffb17b5ebeaa4ebc586439f1119b6b00` (binarios Raleway v4.026).

La ruta abreviada `/workspace/codex-workspace/flexi/reference/frontend-mirror` no existe directamente; el mirror preservado está dentro de `source/reference/`.

## Qué solicitaba el sitio histórico

El HTML preservado carga esta API histórica de Google Fonts:

```text
https://fonts.googleapis.com/css?family=Raleway:100,200,300,400,500,600,700,800,900,...|Asap:100,200,300,400,500,600,700,800,900,...&subset=latin,latin-ext&ver=1.0.0
```

El CSS dinámico de Bridge asigna:

- Asap normal al body, párrafos, encabezados, navegación y footer.
- Asap 500 a navegación de escritorio y móvil.
- Raleway 700 a botones.
- Asap 400 como base de encabezados; algunos textos históricos contienen `<strong>` y por ello usan 700.

No existe referencia a `Asap Condensed`. La familia histórica es `Asap`, licencia OFL, ancho normal.

## Declaraciones `@font-face` antes de la corrección

Todas estaban en `public/assets/css/site.css`:

| Familia CSS | Style | Weight | Stretch | Src | Formato | Ruta física |
|---|---:|---:|---:|---|---|---|
| Asap | normal | 400 | normal | `../fonts/Asap-wdth-wght.ttf` | TrueType | `public/assets/fonts/Asap-wdth-wght.ttf` |
| Asap | normal | 500 | normal | `../fonts/Asap-wdth-wght.ttf` | TrueType | `public/assets/fonts/Asap-wdth-wght.ttf` |
| Asap | normal | 700 | normal | `../fonts/Asap-wdth-wght.ttf` | TrueType | `public/assets/fonts/Asap-wdth-wght.ttf` |
| Raleway | normal | 700 | normal | `../fonts/Raleway-wght.ttf` | TrueType | `public/assets/fonts/Raleway-wght.ttf` |

No se encontraron otras declaraciones `@font-face` utilizadas por el layout público Laravel.

## Inventario y metadata reales antes

### `Asap-wdth-wght.ttf`

- SHA-256: `7bf29bcab72f7d00de600e964a3fc206620050d8448ddd976822378d0fe18028`.
- Family: Asap.
- Subfamily/full name/PostScript por defecto: Regular / Asap Regular / Asap-Regular.
- Versión interna: 3.002.
- OS/2 weight: 400.
- OS/2 width class: 5, normal.
- Variable: sí.
- Ejes: `wght` 100–900, default 400; `wdth` 75–125, default 100.
- No se identifica como “Asap Condensed”, pero sí contiene un eje de anchura que no existía en la fuente histórica inicial.
- Procedencia: Google Fonts Asap v3.002, incorporada al repositorio oficial en mayo de 2025; no es el binario contemporáneo al sitio de 2021.

### `Raleway-wght.ttf`

- SHA-256: `8bbcc3eb8275c388f4bcd998832f8a4b943eadbaf6a595205312774b5951aefb`.
- Family interna por defecto: Raleway Thin.
- Subfamily/full name/PostScript: Regular / Raleway Thin / Raleway-Thin.
- Versión: 4.026.
- OS/2 weight: 100.
- OS/2 width class: 5, normal.
- Variable: sí.
- Eje: `wght` 100–900, default 100.

## Comprobación del navegador antes

Se usó Chromium CDP `CSS.getPlatformFontsForNode` junto con la captura de respuestas de red. El navegador descargó:

- `/assets/fonts/Asap-wdth-wght.ttf`;
- `/assets/fonts/Raleway-wght.ttf`.

Resultado de renderizado real:

| Elemento | Computed CSS | PostScript realmente renderizado |
|---|---|---|
| Body/párrafos | Asap 400 | `Asap-Regular` |
| Hero | Asap 700 | `Asap-Regular` |
| Servicios | Asap 700 | `Asap-Regular` |
| “Gestiona tu préstamo…” | Asap 700 | `Asap-Regular` |
| Menú | Asap 500 | `Asap-Regular` |
| Labels del formulario | Asap 600 | `Asap-Regular` |
| Botones | Raleway 700 | `Raleway-Thin` |
| Footer | Asap 400 | `Asap-Regular` |

Esto demuestra que `getComputedStyle()` por sí solo era insuficiente: los pesos declarados no coincidían con las instancias internas efectivamente usadas.

## Problema identificado

Los mismos binarios variables se declararon repetidamente como si fueran archivos estáticos de pesos diferentes. Chromium aceptaba el descriptor CSS, pero seguía mostrando el PostScript de la instancia por defecto:

- Asap Regular para 400, 500, 600/700;
- Raleway Thin para botones 700.

Además, el Asap actual era v3.002 de 2025 y añadía un eje `wdth` 75–125 que no pertenecía al archivo oficial disponible cuando se construyó el sitio histórico. Aunque el valor computado indicaba `font-stretch: 100%`, el archivo no era una reproducción exacta de la fuente histórica.

No se corrigió el problema renombrando binarios. Se retiraron del directorio público los dos archivos variables anteriores y se reemplazaron por instancias estáticas oficiales.

## Fuentes utilizadas ahora

Los archivos proceden directamente de los commits oficiales de Google Fonts indicados arriba.

| Archivo | Familia/full name | Weight real | Width | Variable | SHA-256 |
|---|---|---:|---:|---:|---|
| `Asap-Regular.ttf` | Asap / Asap Regular | 400 | 5 normal | no | `b1a9dbd81a78c7a4225a7bdcd062a1093ee886a5120330240d35597627b13dad` |
| `Asap-Medium.ttf` | Asap Medium | 500 | 5 normal | no | `0636ae11a24e529ae5ebf7db5f8f94de69afd912f21962e1e281f39251f95996` |
| `Asap-SemiBold.ttf` | Asap SemiBold | 600 | 5 normal | no | `ebbf8e2255ae4cfa82aaa4b1a8715d2e33383bfab08c883aab85b865342e9b80` |
| `Asap-Bold.ttf` | Asap Bold | 700 | 5 normal | no | `d0fc9666f1027f9888637b86d39e8e71cc34f7fd2e3b4932c9e59a3dfedfd9b7` |
| `Raleway-Bold.ttf` | Raleway / Raleway Bold | 700 | 5 normal | no | `6894481ab1c298e9c66f23455ecf05ccb25393d719a6b2d63428358c0409d2d0` |

Asap informa versión interna `3.001; ttfautohint (v1.8.3)` en estas instancias del commit oficial de 2021. Ningún archivo posee eje `wdth`, nombre Condensed, clase de ancho estrecha ni variaciones activas.

## Declaraciones `@font-face` actuales

| Familia CSS | Style | Weight | Stretch | Src | Formato | Ruta física |
|---|---:|---:|---:|---|---|---|
| Asap | normal | 400 | normal | `../fonts/Asap-Regular.ttf` | TrueType | `public/assets/fonts/Asap-Regular.ttf` |
| Asap | normal | 500 | normal | `../fonts/Asap-Medium.ttf` | TrueType | `public/assets/fonts/Asap-Medium.ttf` |
| Asap | normal | 600 | normal | `../fonts/Asap-SemiBold.ttf` | TrueType | `public/assets/fonts/Asap-SemiBold.ttf` |
| Asap | normal | 700 | normal | `../fonts/Asap-Bold.ttf` | TrueType | `public/assets/fonts/Asap-Bold.ttf` |
| Raleway | normal | 700 | normal | `../fonts/Raleway-Bold.ttf` | TrueType | `public/assets/fonts/Raleway-Bold.ttf` |

`font-synthesis: none` se mantiene globalmente y todas las caras tienen `font-stretch: normal`.

## Comprobación del navegador después

Recursos descargados con HTTP 200:

- `Asap-Regular.ttf`;
- `Asap-Medium.ttf`;
- `Asap-SemiBold.ttf`;
- `Asap-Bold.ttf`;
- `Raleway-Bold.ttf`.

PostScript realmente renderizado:

| Elemento | PostScript verificado |
|---|---|
| Body/párrafos y footer | `Asap-Regular` |
| Menú | `Asap-Medium` |
| Hero, servicios y “Gestiona…” | `Asap-Bold` |
| Labels del formulario | `Asap-SemiBold` |
| Botones públicos y del formulario | `Raleway-Bold` |

Todas aparecen como `isCustomFont: true`. No se usan fallbacks del sistema ni pesos sintéticos.

## Alcance global

El layout público hereda las caras corregidas en header, menú, Home, servicios, bloque WhatsApp, “Gestiona…”, CTA, páginas públicas, wizard completo y footer. Los controles del formulario heredan la tipografía y sus labels utilizan la cara real 600.

## Capturas

- `output/review-phase-d/screenshots/font-audit-before.png`
- `output/review-phase-d/screenshots/font-audit-after.png`
- `output/review-phase-d/screenshots/home-font-final.png`
- `output/review-phase-d/screenshots/application-font-final.png`

## Pruebas

- 68 tests ejecutados.
- 68 aprobados.
- 243 assertions.
- 0 fallos.

## Pendiente

Revisión visual humana de las cuatro capturas. No generar ni utilizar un paquete productivo hasta recibir nueva aprobación explícita.
