Conclusión primero: los subconjuntos de fuentes PDF pueden reducir el 90 % del tamaño; la causa raíz es que las fuentes chinas suelen ocupar 15-20 MB, mientras que un documento realmente solo usa uno o dos mil caracteres. El principio central del subconjuntado son tres pasos: escanear el conjunto de caracteres realmente usados en el documento, reconstruir la tabla de mapeo CMap y remapear los índices de glifos descartando los no utilizados. Source Han Serif completo ocupa 18 MB; tras el subconjuntado, solo 0,4 MB, una reducción del 97,7 %. A continuación se explica la estructura de archivos de fuentes, el principio técnico del subconjuntado y datos comparativos de tres fuentes.
Si aún no está familiarizado con los métodos generales de compresión PDF, le recomendamos leerPrincipios de compresión PDF: principios y métodos。
1. Estructura de archivos de fuentes: por qué las fuentes chinas incrustadas son tan grandes
Para entender por qué el subconjuntado es eficaz, primero hay que comprender qué contiene un archivo de fuente. Los archivos TrueType (.ttf) y OpenType (.otf) constan de múltiples tablas de datos, cada una responsable de diferentes funciones. Al incrustarse en PDF, estas tablas se empaquetan completas en el archivo, independientemente de cuántos caracteres use el documento.
| Tabla de datos | Función | Proporción típica | ¿Recortable por subconjuntado? |
|---|---|---|---|
| cmap | Mapeo de codificación de caracteres a índice de glifo | 1%–3% | Requiere reconstrucción |
| glyf | Datos de contorno de glifo TrueType | 70%–85% | Recortable en gran medida |
| CFF | Contorno de glifo OpenType CFF (PostScript) | 60%–80% | Recortable en gran medida |
| loca | Índice de posición de datos de glifo | 1%–2% | Requiere reconstrucción |
| hmtx | Métrica horizontal (ancho/avance) | 2%–5% | Requiere reconstrucción |
| name | Metadatos: nombre de fuente, copyright, etc. | 0.5%–1% | Conservar |
| post | Mapeo de nombres PostScript | 1%–3% | Recorte parcial |
Como se puede observar en la tabla anterior, los datos de contorno de glifo (tabla glyf o CFF) representan el 60 %–85 % del tamaño del archivo de fuente. Una fuente china contiene entre 20 000 y 70 000 glifos; cada carácter chino tiene un promedio de 300–600 bytes de datos de contorno vectorial, sumando 10–20 MB en total. Sin embargo, un documento PDF de 50 páginas normalmente solo usa 800–2000 caracteres diferentes, lo que significa que más del 95 % de los datos de glifo se desperdician — precisamente el espacio de compresión que aprovecha el subconjuntado.
2. Principio de subconjuntado: tres pasos para recortar glifos no utilizados
La idea central del subconjuntado de fuentes es conservar solo los glifos que el documento realmente usa y descartar el resto. El proceso se divide en tres pasos clave, cada uno implicando operaciones precisas sobre la estructura de las tablas de fuente.
| Paso | Operación | Principio | Tablas procesadas |
|---|---|---|---|
| 1. Escaneo de uso de caracteres | Recorrer el flujo de contenido de todas las páginas PDF y extraer los códigos de caracteres mostrados | Recopilar puntos de código Unicode analizando operadores de texto (Tj/TJ) | Ninguna (genera conjunto de caracteres) |
| 2. Reconstrucción de tabla CMap | Reconstruir el mapeo de codificación a índice de glifo según los caracteres usados | Conservar solo las entradas de mapeo de caracteres usados, eliminar el resto | cmap |
| 3. Remapeo de índices de glifo | Reordenar continuamente los glifos usados y actualizar todos los índices de referencia | Los índices originales pueden no ser consecutivos; tras el remapeo, van de 0 a N consecutivamente | glyf/CFF, loca, hmtx |
1. Escaneo de uso de caracteres
El primer paso es escanear el documento PDF para encontrar todos los caracteres realmente mostrados. El texto en PDF se escribe en el flujo de contenido mediante operadores de texto (Tj muestra cadenas, TJ muestra arrays), donde cada carácter corresponde a una codificación. La herramienta de subconjuntado recorre el flujo de contenido de todas las páginas, extrae estas codificaciones y las convierte a puntos de código Unicode mediante la tabla CMap actual de la fuente, obteniendo finalmente un "conjunto de caracteres usados".
Durante el escaneo también se manejan casos especiales: CMap ToUnicode (mapeo inverso), codificación multibyte (común en fuentes CJK) y el prefijo de subconjuntado de fuentes incrustadas (formato de seis caracteres + signo). Un PDF chino de 50 páginas normalmente produce 800–2000 caracteres Unicode diferentes; sumando signos de puntuación y dígitos, se conservan aproximadamente 1000–2500 glifos.
2. Reconstrucción de tabla CMap
La tabla CMap es el "directorio" de la fuente, registrando el índice de glifo (glyph ID) correspondiente a cada codificación de carácter. La tabla CMap de una fuente china original contiene entre 20 000 y 70 000 mapeos; tras el subconjuntado, solo se conservan las entradas de los caracteres usados. La reconstrucción también debe manejar múltiples formatos de subtabla de codificación.
| Formato de subtabla CMap | Rango de codificación | Propósito | Procesamiento de subconjuntado |
|---|---|---|---|
| Format 0 | 0–255 | Un byte ASCII/Latin | Recortar entradas no usadas |
| Format 4 | Plano básico BMP | Caracteres comunes CJK | Reconstruir tabla de segmentos |
| Format 12 | Unicode completo | Cubre todos los caracteres | Recortar segmentos no usados |
3. Remapeo de índices de glifo
Este es el paso más crítico y complejo. En la fuente original, los índices de glifo (GID) se disponen consecutivamente de 0 a N, pero los glifos a conservar pueden estar dispersos. El remapeo consiste en reordenar los glifos conservados en una nueva secuencia continua: el GID 0 original (.notdef) permanece sin cambios, el GID 1523 original puede convertirse en el nuevo GID 1, el GID 8944 en el nuevo GID 2, y así sucesivamente.
Tras el remapeo, se deben actualizar sincrónicamente todas las tablas que referencian GID: la tabla glyf (o CFF) conserva solo los datos de glifo correspondientes y los ordena por el nuevo índice; la tabla loca reconstruye el índice de posiciones; la tabla hmtx reconstruye los datos de métrica horizontal; la tabla post actualiza el mapeo de nombres PostScript. Un manejo incorrecto en este paso puede dañar la fuente, por lo que se debe seguir estrictamente la especificación OpenType.
3. Datos reales: comparación antes y después del subconjuntado de tres fuentes
Seleccionamos tres fuentes comunes para pruebas de subconjuntado, representando fuentes chinas (Source Han Serif, Microsoft YaHei) y fuentes en inglés (Arial). El documento de prueba es una licitación china de 50 páginas, con 1342 caracteres usados.
| Fuente | Archivo original | Glifos (original) | Glifos (subconjunto) | Tras subconjuntado | Reducción |
|---|---|---|---|---|---|
| Source Han Serif Regular | 18.2MB | 65535 | 1342 | 0.42MB | 97.7% |
| Microsoft YaHei Regular | 15.6MB | 28622 | 1342 | 0.35MB | 97.8% |
| Arial Regular | 0.82MB | 3257 | 96 | 0.06MB | 92.7% |
Los datos muestran que el subconjuntado es más efectivo en fuentes chinas: Source Han Serif pasa de 18,2 MB a 0,42 MB, una reducción del 97,7 %. Esto se debe a que las fuentes chinas tienen muchos glifos (60 000+) pero el documento usa pocos (1000+), ofreciendo un enorme espacio de recorte. La fuente Arial en inglés originalmente ocupa solo 0,82 MB; tras el subconjuntado, 0,06 MB, una reducción del 92,7 %; aunque el tamaño absoluto es pequeño, la proporción es igualmente considerable.
Veamos el efecto del subconjuntado con diferentes volúmenes de caracteres, usando Source Han Serif como ejemplo:
| Tipo de documento | Caracteres usados | Tamaño tras subconjuntado | Reducción | Notas |
|---|---|---|---|---|
| Notificación breve (1 pág.) | Aprox. 200 | 0.08MB | 99.6% | Muy pocos caracteres, subconjunto mínimo |
| Acta de reunión (10 págs.) | Aprox. 600 | 0.19MB | 99.0% | Documento de oficina diario |
| Licitación (50 págs.) | Aprox. 1342 | 0.42MB | 97.7% | Documento profesional, amplia cobertura de caracteres |
| Manual técnico (200 págs.) | Aprox. 2800 | 0.85MB | 95.3% | Gran volumen de caracteres usados |
| Enciclopedia (1000 págs.) | Aprox. 6500 | 1.92MB | 89.5% | Cerca de la cobertura máxima |
4. Comparación de herramientas de subconjuntado y recomendaciones por escenario
Existen diversas herramientas para el subconjuntado de fuentes, desde herramientas de línea de comandos de código abierto hasta motores de compresión comerciales, cada una con sus ventajas e inconvenientes. La tabla siguiente compara las soluciones principales.
| Herramienta | Capacidad de subconjuntado | Soporte CFF | Procesamiento por lotes | Dificultad de integración |
|---|---|---|---|---|
| SmartSlim | ★★★★★ | Sí | Admite | SDK/API/escritorio |
| fonttools (Python) | ★★★★☆ | Sí | Requiere script | Media |
| Adobe Acrobat | ★★★★☆ | Sí | Limitado | Operación GUI |
| Ghostscript | ★★★☆☆ | Parcial | Admite | Línea de comandos |
| Herramientas online | ★★☆☆☆ | Parcial | No admite | Baja (riesgo de privacidad) |
SmartSlim, basado en un motor de compresión Rust propio, maneja automáticamente ambos formatos de glifo (TrueType y OpenType CFF) durante el subconjuntado y admite el procesamiento por lotes de cientos de PDF mediante arrastrar y soltar. Más importante aún, todo el proceso de subconjuntado se completa localmente; los datos de fuentes y el contenido del documento no pasan por ningún servidor externo, lo que es especialmente crítico para documentos confidenciales y archivos sensibles de empresas.
Recomendaciones de estrategia de subconjuntado por escenario:
| Escenario | ¿Subconjuntado recomendado? | Precauciones | Herramienta recomendada |
|---|---|---|---|
| Archivo y distribución final | Muy recomendado | Tras subconjuntar no se pueden editar nuevos caracteres | SmartSlim |
| Archivo por lotes empresarial | Muy recomendado | Usar API para procesamiento automático por lotes | SmartSlim Server |
| Publicación/vista previa online | Recomendado | Reducir tamaño de descarga mejora velocidad de carga | Script fonttools |
| Borrador que aún requiere edición | No recomendado | Conservar fuente completa para edición | No subconjuntar por ahora |
| Documento confidencial/secretoso | Recomendado | Debe procesarse localmente, prohibir herramientas online | SmartSlim |
Para más técnicas de optimización PDF, consulteGuía de optimización de linearización PDFyMétodos de compresión de documentos Word。
5. Preguntas frecuentes (FAQ)
Q1: ¿El subconjuntado de fuentes PDF afecta a la visualización?
No. El subconjuntado de fuentes solo descarta los caracteres y datos de glifo no utilizados en el documento; los caracteres conservados son idénticos a los de la fuente original, sin impacto en la visualización. Tras el subconjuntado, la fuente sigue siendo de contorno vectorial, sin distorsión al ampliar o reducir; atributos como color y grosor también se mantienen. La única limitación es que la fuente subconjuntada solo puede usarse en ese documento y no puede reutilizarse en otros.
Q2: ¿Cuánto tamaño puede reducir el subconjuntado de fuentes?
Depende de la relación entre el número de caracteres usados y el tamaño original de la fuente. Las fuentes chinas (p. ej., Source Han Serif 18 MB) normalmente usan solo 1000-2000 caracteres; tras el subconjuntado, el tamaño se reduce a 0,3-0,8 MB, una reducción superior al 95 %. Las fuentes en inglés (p. ej., Arial 0,8 MB) usan aún menos caracteres; tras el subconjuntado, 0,05-0,1 MB, una reducción de aproximadamente el 90 %. Cuanto mayor la fuente y menos caracteres usados, más significativo el efecto del subconjuntado.
Q3: ¿Se puede editar texto en un PDF subconjuntado?
Con limitaciones. El subconjuntado solo conserva los caracteres ya usados en el documento; si al editar se introduce un nuevo carácter (que no aparece en el documento original), no podrá mostrarse y aparecerá como un cuadro o espacio en blanco. Por tanto, el subconjuntado es adecuado para archivo y distribución de documentos finales, pero no para documentos que aún requieren mucha edición. Si necesita editar, se recomienda conservar la fuente completa o volver a incrustar un subconjunto.
Q4: ¿Cómo verificar si un PDF ya tiene subconjuntos de fuentes?
Abra el PDF con Adobe Acrobat, vaya a Archivo > Propiedades > Fuentes y revise la lista de fuentes incrustadas. Si el nombre de la fuente tiene un prefijo de seis caracteres (p. ej., ABCDEO+Source Han Serif), significa que ya está subconjuntada. También puede abrir el PDF con SmartSlim; el motor analizará automáticamente el estado de incrustación de fuentes e indicará si se necesita subconjuntado, junto con una estimación del tamaño de compresión.
Resumen
El subconjuntado de fuentes PDF es uno de los medios más eficaces para reducir el tamaño de un PDF, especialmente en documentos con fuentes chinas incrustadas. El principio central son tres operaciones: escanear caracteres usados, reconstruir la tabla de mapeo CMap y remapear índices de glifo descartando los no utilizados. Los datos reales muestran que Source Han Serif de 18 MB se reduce a solo 0,4 MB tras el subconjuntado, una reducción del 97,7 %, sin impacto en la visualización.
Recomendación práctica: realice el subconjuntado de fuentes antes de distribuir el documento final; para documentos confidenciales, use herramientas locales. Si necesita procesar PDF por lotes, SmartSlim admite más de 40 formatos en 10 categorías, incluidos PDF, imágenes, vídeo, Office y OFD; basado en un motor de compresión Rust propio, completa automáticamente el subconjuntado de fuentes, con los datos sin salir del dominio.
Artículos relacionados
¿Necesita comprimir archivos? Pruebe SmartSlim
Construido sobre un motor de compresión Rust propio, compatible con 10 categorías y más de 40 formatos, incluyendo PDF, imágenes, vídeo, Office y OFD, con compresión local que mantiene sus datos en sus instalaciones.