Estimez le gain des sous-ensembles de polices dans un PDF
Cet estimateur compare les caractères distincts employés dans un PDF à l'inventaire complet des glyphes de sa police incorporée.
Lancer gratuitement
Il indique les pourcentages estimés conservé et économisé, le nombre de glyphes supprimés et le rapport de réduction. Son calcul transparent suppose que l'espace occupé est réparti uniformément entre les glyphes. Vous pouvez ainsi planifier et comparer avant de recréer le PDF, sans prétendre à une précision en octets que ces deux nombres ne sauraient fournir.
Ce que vous apprend l'estimation
Une police entièrement incorporée peut contenir des milliers de glyphes alors qu'un document n'utilise qu'un alphabet restreint, quelques chiffres et des signes de ponctuation. La création d'un sous-ensemble conserve les glyphes nécessaires à l'affichage et écarte les autres. Saisissez le nombre total de glyphes de la police et celui des caractères distincts présents dans le PDF. L'estimateur assimile chaque caractère utilisé à un glyphe conservé, puis compare ce sous-ensemble à l'inventaire complet. Le pourcentage de gain représente la part estimée des données de glyphes susceptible d'être supprimée. Le pourcentage conservé en donne le complément, tandis que le rapport de réduction exprime combien de fois l'inventaire complet dépasse le sous-ensemble estimé. Ces valeurs servent surtout à classer rapidement des documents ou des polices. Un gain potentiel important invite à examiner le subsetting; une valeur proche de zéro signifie que le document exploite déjà presque tous les glyphes disponibles. L'estimation porte sur la partie de la police incorporée et non sur l'ensemble du fichier PDF. Les images, flux de contenu, métadonnées, structures et autres ressources incorporées restent inchangés.
Fonctionnement du modèle proportionnel
L'algorithme divise le nombre de caractères distincts utilisés par le nombre total de glyphes afin d'estimer la fraction conservée. Il soustrait ensuite cette fraction de un pour évaluer le gain, convertit les deux fractions en pourcentages et arrondit les valeurs affichées à deux décimales. La soustraction du nombre utilisé au total indique également combien de glyphes pourraient être retirés. Il s'agit d'un modèle proportionnel d'empreinte des glyphes, et non d'un analyseur de police. Dans une vraie police, tous les glyphes n'occupent pas exactement le même nombre d'octets: une espace simple peut nécessiter peu de données de contour, tandis qu'un idéogramme complexe en demande davantage. Les polices contiennent aussi des tables de noms, de métriques, de règles de composition, d'axes variables, d'optimisation d'affichage, de crénage et de correspondance des caractères. Certaines constituent une surcharge fixe; d'autres diminuent avec le sous-ensemble. Considérez donc le résultat comme un indicateur de planification cohérent fondé sur un glyphe moyen uniforme. Les seuls décomptes ne permettent pas de déduire le gain absolu en octets. Il faudrait également connaître la taille initiale, le format, la compression, les fonctions typographiques conservées, les dépendances des glyphes composites et l'outil de subsetting.
Comment obtenir des valeurs fiables
Utilisez le nombre de glyphes du programme de police précis qui est incorporé dans le PDF ou qui lui est destiné, et non celui d'une police de bureau portant un nom voisin. Les versions et variantes régionales peuvent présenter des inventaires différents. Comptez les caractères distincts dans tout le document après avoir fixé les règles de normalisation du texte, car des séquences visuellement identiques peuvent employer des points de code Unicode différents. Gardez à l'esprit que le nombre de caractères ne correspond pas toujours à celui des glyphes. Les ligatures peuvent fusionner plusieurs caractères en un glyphe, la composition contextuelle peut sélectionner diverses formes et les glyphes composites peuvent appeler des composants invisibles dans le texte. Cet estimateur emploie volontairement les caractères distincts comme approximation pratique, puisque ce sont les données disponibles. Pour vos comparaisons, appliquez la même méthode de comptage à tous les documents. Si le nombre de caractères utilisés dépasse le total de glyphes, la demande est rejetée plutôt que de produire un gain négatif. Cette anomalie révèle généralement des sources incompatibles, une confusion entre caractères totaux et distincts ou l'oubli d'une police de substitution. Après création du véritable PDF, inspectez son sous-ensemble et comparez les tailles réelles pour obtenir la mesure définitive.
Cas d’usage
Hiérarchiser l'optimisation des PDF
Comparez le gain estimé d'un lot et examinez en priorité les documents qui présentent la plus grande part de glyphes inutilisés.
Évaluer plusieurs polices
Déterminez si une vaste police multilingue ajoute beaucoup plus de poids qu'une police adaptée à l'écriture du document.
Cadrer les attentes avant l'export
Communiquez à l'équipe de production une estimation relative claire avant de recréer le PDF avec le subsetting activé.
Questions fréquentes
Le résultat prédit-il exactement le nombre d'octets gagnés?
Non. Les décomptes donnent une estimation relative; les octets dépendent aussi de la complexité des glyphes, des tables, du format, de la compression et de l'outil utilisé.
Pourquoi compter les caractères distincts plutôt que tous les caractères?
Les caractères répétés réutilisent normalement le même glyphe incorporé; les valeurs distinctes représentent donc mieux l'inventaire du sous-ensemble.
Le pourcentage de gain concerne-t-il tout le PDF?
Non. Il concerne la part estimée des glyphes de la police incorporée. Les autres contenus du PDF ne changent pas.
Que se passe-t-il si les caractères utilisés dépassent les glyphes?
La saisie est refusée, car les décomptes sont incompatibles et conduiraient sinon à un gain négatif.
Puis-je saisir zéro caractère distinct?
Oui. Ce cas représente un document théorique ne conservant aucun glyphe de caractère et produit une estimation proportionnelle de gain total.
Quel est le coût d'une requête API?
Chaque requête API coûte $0.002; le même calcul déterministe peut également être exécuté dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/pdf/embed-font-subset-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"full_glyph_count":2048,"distinct_characters_used":180}'const res = await fetch("https://api.kit.forhosting.com/pdf/embed-font-subset-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"full_glyph_count": 2048,
"distinct_characters_used": 180
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/embed-font-subset-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"full_glyph_count": 2048,
"distinct_characters_used": 180
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/embed-font-subset-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"full_glyph_count":2048,"distinct_characters_used":180}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"full_glyph_count":2048,"distinct_characters_used":180}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/embed-font-subset-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"full_glyph_count": 2048,
"distinct_characters_used": 180
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.embed_font_subset_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
max_pages | 200 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |