Une rangée de glyphes demandés par leur numéro

Composer les formes d’une police par leur numéro dans le fichier — celles qu’aucune touche n’atteint — et dire ce que chacune représente quand on la copie.

Le résultat dans un vrai PDF

Ce qu’une police sait de ses propres lettres

Cinq échantillons composés deux fois chacun, une fois tels quels et une fois avec un seul réglage activé : les lettres liées, les petites capitales, les chiffres qui descendent sous la ligne, les lettres qu’une langue dessine à sa façon, et les paires rapprochées.

Ouvrir le PDF Voir l’exemple complet

Résumé

Une police contient plus de formes qu’il n’y a de lettres à taper : une seconde forme d’une lettre, une capitale ornée, un ornement, un chiffre dessiné pour une langue. Aucune touche du clavier ne les atteint, si bien qu’un texte ne peut pas les demander. Cet élément les demande par le numéro de chacune dans le fichier de la police et les pose en rangée. Pour chacune, vous pouvez aussi dire ce qu’elle représente, pour que la personne qui copie la rangée, ou qui cherche dans la page, trouve des mots plutôt que rien.

Techniquement

Demandé avec "type": "glyphs"

Un élément glyphs pose une ligne de glyphes d’une police par leur numéro dans le programme de la police, les numéros qu’une police composite écrit dans la page. Un glyphe copié donne le caractère que la table de la police associe à lui, et rien quand aucun caractère n’y mène ; un glyphe doté de stands_for se copie, se cherche et se lit à voix haute comme ce texte, écrit dans la table ToUnicode de la police. Un glyphe représente un seul texte dans un document, le premier donné pour lui. Une police atteinte par des codes d’un octet n’a pas de numéro de glyphe à atteindre et est refusée.

Schéma de la requête

Clés obligatoires : rect ; glyphs, un tableau dont chaque entrée est le numéro d’un glyphe dans le fichier de la police, ou un objet de glyph, ce numéro, et stands_for, une chaîne d’au plus 256 unités de code UTF-16, ce que le glyphe donne quand on le copie ; font, le nom d’une police déclarée ; font_size, en points. Facultatives : align, left (par défaut), center ou right, justify posant la rangée depuis le bord gauche ; color (noir par défaut) ; pages, un tableau d’entiers comptés à partir de 1, vide par défaut ; transform, six nombres ; rotate, degrés dans le sens inverse des aiguilles d’une montre autour du centre du rectangle ; layer, le nom d’un calque déclaré ; tag avec mark, ou artifact ; facts. La ligne de base de la rangée se trouve à 1,2 × font_size sous le haut de rect. Refus croisés : transform avec rotate ; tag avec artifact ; un objet contenant une autre clé que glyph et stands_for ; un numéro auquel la police n’a pas de glyphe. Entre deux glyphes, {"move": n} déplace la plume d’autant de millièmes de cadratin de font_size, un déplacement positif rapprochant le glyphe suivant et un négatif l’éloignant : l’espacement qu’écrit un programme qui a composé son texte lui-même, et que compte la largeur d’une rangée center ou right.

Une requête entière qui crée un PDF

Un nom ci-dessous tient lieu de fichier de police : mettez le fichier encodé à sa place, ou envoyez le fichier lui-même à côté de la description, comme une pièce fournie dans le même appel. Une page contient une vraie police déjà encodée, et sa requête part telle quelle.

{
  "fonts": [{ "name": "body", "data": "PASTE_THE_FONT_FILE_BASE64_HERE" }],
  "items": [
    {
      "type": "glyphs",
      "rect": { "llx": 72, "lly": 700, "urx": 523, "ury": 740 },
      "glyphs": [36, 37, 38, { "glyph": 5042, "stands_for": "fi" }],
      "font": "body",
      "font_size": 24,
      "align": "center"
    }
  ]
}

La ligne qui l’envoie, en trois langages

Texte

Un bloc de texte posé sur la page Du texte en paragraphes, avec retraits et tabulations Un tampon en travers de la page Une ligne de mots posée le long d’un chemin Des blocs posés les uns sous les autres, page après page

Où aller ensuite

Toutes les clés JSON d’une requête, en une page Les vingt-deux autres choses que l’on peut dessiner

Voir les prix Voir les exemples