Polices incorporées
L’incorporation d’une police est la technique consistant à regrouper un document et les polices qu’il contient dans un fichier en vue de sa transmission à un autre ordinateur. L’incorporation d’une police garantit qu’une police spécifiée dans un fichier transmis sera présente sur l’ordinateur qui reçoit le fichier. Toutefois, toutes les polices ne peuvent pas être déplacées d’un ordinateur à l’autre, car la plupart des polices ne sont concédées sous licence qu’à un seul ordinateur à la fois. Seules les polices TrueType et OpenType peuvent être incorporées.
Les applications doivent incorporer une police dans un document uniquement à la demande d’un utilisateur. Une application ne peut pas être distribuée avec des documents qui contiennent des polices incorporées, ni une application elle-même ne peut contenir une police incorporée. Chaque fois qu’une application distribue une police, dans n’importe quel format, les droits de propriété du propriétaire de la police doivent être reconnus.
Il peut s’agir d’une violation des droits de propriété d’un fournisseur de polices ou d’un contrat de licence utilisateur d’incorporer des polices pour lesquelles l’incorporation n’est pas autorisée ou de ne pas respecter les instructions suivantes sur l’incorporation de polices. La licence d’une police ne peut accorder qu’une autorisation en lecture/écriture pour l’installation et l’utilisation d’une police sur l’ordinateur de destination. Ou la licence peut accorder une autorisation en lecture seule. L’autorisation en lecture seule permet à un document d’être affiché et imprimé (mais pas modifié) par l’ordinateur de destination. Les documents avec des polices incorporées en lecture seule sont eux-mêmes en lecture seule. Les polices incorporées en lecture seule ne peuvent pas être dissociées du document et installées sur l’ordinateur de destination.
Une application peut déterminer la licence status en appelant la fonction GetOutlineTextMetrics et en examinant le membre otmfsType de la structure OUTLINETEXTMETRIC. Si le bit 1 de otmfsType est défini, l’incorporation n’est pas autorisée pour la police. Si le bit 1 est clair, la police peut être incorporée. Si le bit 2 est défini, l’incorporation est en lecture seule.
Pour incorporer une police TrueType, une application peut utiliser la fonction GetFontData pour lire le fichier de police. La définition des paramètres dwTable et dwOffset de GetFontData sur 0L et du paramètre cbData sur 1L garantit que l’application lit l’intégralité du fichier de police depuis le début.
Plusieurs fonctions sont disponibles pour incorporer des polices OpenType en fonction de la largeur des caractères et de l’emplacement des données de police. Pour incorporer une police Unicode OpenType qui réside dans un contexte d’appareil, une application peut utiliser TTEmbedFont. Pour incorporer une police OpenType UCS-4 qui réside dans un contexte d’appareil, une application peut utiliser TTEmbedFontEx. Pour incorporer une police Unicode OpenType qui réside dans un fichier de polices, une application peut utiliser TTEmbedFontFromFile. Pour plus d’informations sur l’incorporation de polices OpenType, consultez la référence sur l’incorporation de polices.
Une fois qu’une application a récupéré les données de police, elle peut stocker les données avec le document à l’aide de n’importe quel format applicable. La plupart des applications créent un répertoire de polices dans le document, en répertoriant les polices incorporées et en indiquant si l’incorporation est en lecture/écriture ou en lecture seule. Une application peut utiliser les membres otmpStyleName et otmFamilyName de la structure OUTLINETEXTMETRIC pour identifier la police.
Si le bit en lecture seule est défini pour la police incorporée, les applications doivent chiffrer les données de police avant de les stocker dans le document. La méthode de chiffrement n’a pas besoin d’être compliquée ; par exemple, l’utilisation de l’opérateur XOR pour combiner les données de police avec une constante définie par l’application est adéquate et rapide.