This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Utilisez le balisage dans les composants Label et les nœuds de texte GUI pour appliquer des styles visuels et des effets imbriqués, et inspecter les liens et les sprites depuis Lua.
go.set("#label", "text", "Score: <color=#69D2E7>1200</color>")
Vous pouvez aussi définir sur la police un style d’objet nommé réutilisable et le sélectionner depuis un lien :
local fontpath = "/fonts/ui.fontc"
font.set_style(fontpath, "menu_link", "<color=#69D2E7>")
go.set("#label", "text", "Open <link style=menu_link src=inventory>inventory</link>")
| Balise | Fonction | Exemple |
|---|---|---|
color |
Définit la couleur de remplissage des glyphes. | ![]() |
size |
Modifie la taille utilisée pour la mise en forme des glyphes et la mise en page. | ![]() |
gradient |
Applique un dégradé de couleurs statique ou animé. | ![]() |
ul |
Souligne le texte. | ![]() |
strike |
Barre le texte. | ![]() |
outline |
Définit la largeur et la couleur du contour des glyphes. | ![]() |
shadow |
Ajoute une ombre au texte. | ![]() |
shake |
Applique un décalage aléatoire animé. | ![]() |
wave |
Anime le texte selon une onde sinusoïdale. | ![]() |
sprite |
Ajoute un objet sprite intégré au texte. | |
link |
Ajoute un objet lien interactif. | ![]() |
Les noms de balises et d’attributs sont sensibles à la casse. Une paire de balises s’applique au texte UTF-32 visible qu’elle contient. Les objets sprite utilisent des balises autofermantes.
<color=#69D2E7>colored text</color>
<ul pattern=dashed>underlined text</ul>
<outline size=2 color=#000000>outlined text</outline>
<shadow x=2 y=-2 color=#00000080>shadowed text</shadow>
<sprite src=images/icon.png width=2em/>
Les valeurs d’attributs peuvent être écrites sans guillemets lorsqu’elles ne contiennent aucun espace, ou entourées de guillemets simples ou doubles. color et size acceptent une première valeur abrégée ainsi que la forme nommée value.
<color=#FF8800>Orange</color>
<color value="#FF8800">Orange</color>
<size='120%'>Larger</size>
Les balises doivent se fermer dans l’ordre inverse de leur ouverture. Les valeurs d’un style intérieur remplacent les mêmes propriétés d’un style extérieur. Les propriétés différentes se combinent. Les effets de chaque portion de texte restent actifs indépendamment : les dégradés imbriqués multiplient donc les couleurs et les effets de position imbriqués additionnent leurs décalages.
<color=#FFCC00>
Gold <outline size=2 color=#000000>with a black outline</outline>
</color>
Utilisez &, ', >, < et " pour les caractères réservés dans le texte visible. Les entités numériques ne sont pas prises en charge actuellement.
Les balises de texte enrichi appliquent un style à la portion de texte qu’elles entourent ou décrivent un objet qui peut être inspecté depuis Lua. Les balises de style utilisent une balise de fermeture correspondante. L’objet sprite est autofermant, tandis que link entoure le texte du lien.
color
Définit la couleur de remplissage des glyphes. Les couleurs utilisent #RRGGBB ou #RRGGBBAA. Le préfixe dièse est obligatoire ; 0xFF0000 et FF0000 ne sont pas valides. Le résultat multiplie la couleur de base du label ou du moteur de rendu.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
=color ou value=color |
Oui | Aucune valeur par défaut | Couleur de remplissage au format hexadécimal RGB ou RGBA. |
<color=#00FF00>Opaque green</color>
<color=#00FF0080>Half-alpha green</color>
#00FF00

#00FF0080

size
Modifie la taille utilisée pour la mise en forme des glyphes et la mise en page, et pas seulement l’échelle des sommets. Les valeurs relatives utilisent toujours la taille de base de la police de la mise en page. Elles ne se cumulent pas avec une balise size extérieure.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
=size ou value=size |
Oui | Aucune valeur par défaut | Taille absolue, pourcentage, multiple de la taille de base ou décalage signé par rapport à celle-ci, sous l’une des formes ci-dessous. |
| Forme | Exemple pour 32 px | Taille résolue |
|---|---|---|
Nombre seul ou px |
24, 24px |
24 px |
| Pourcentage de la taille de base | 120% |
38.4 px |
| Multiple de la taille de base | 2em |
64 px |
| Décalage signé par rapport à la taille de base | +4, -4 |
36 px, 28 px |
<size=24px>Exactly 24 pixels</size>
<size=120%>120% of the layout base size</size>
<size=2em>Twice the layout base size</size>
24px

120% de 32px

2em pour 32px

gradient
Un dégradé accepte exactement un ensemble complet d’attributs. Mélanger des ensembles ou omettre l’un de leurs membres n’est pas valide.
| Mode | Attributs obligatoires | Interpolation |
|---|---|---|
| Horizontal | left, right |
Interpole entre les deux couleurs horizontales. |
| Vertical | bottom, top |
Interpole entre les couleurs du bas et du haut. |
| Quatre coins | tl, tr, bl, br |
Interpole entre les couleurs des quatre sommets. |
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
left, right |
Pour le mode horizontal | Aucune | Couleurs des extrémités horizontales au format #RRGGBB ou #RRGGBBAA. Les deux doivent être présentes. |
bottom, top |
Pour le mode vertical | Aucune | Couleurs des extrémités verticales. Les deux doivent être présentes. |
tl, tr, bl, br |
Pour le mode quatre coins | Aucune | Couleurs des coins supérieur gauche, supérieur droit, inférieur gauche et inférieur droit. Les quatre doivent être présentes. |
fit |
Non | span |
glyph échantillonne chaque position de texte après mise en forme ; span répartit le dégradé sur tout le texte entouré par la balise. |
hz |
Non | 0 |
Nombre de cycles complets de défilement par seconde dans [0,) ; zéro conserve un dégradé statique. |
direction |
Non | forward |
forward ou reverse. Contrôle le sens du défilement lorsque hz est non nul. |
Lorsque fit est omis, fit=span répartit le dégradé sur tout le texte entouré par la balise. fit=glyph échantillonne indépendamment chaque position de texte après mise en forme. L’attribut facultatif hz définit le nombre de cycles complets d’animation du défilement par seconde ; sa valeur par défaut de zéro conserve un dégradé statique. La rampe de couleurs répétée en miroir défile en continu et boucle sans saut de couleur. direction=forward est la valeur par défaut ; utilisez direction=reverse pour inverser le défilement.
<gradient left=#FF00FF right=#FFFFFF>Horizontal Gradient</gradient>
<gradient hz=0.25 fit=glyph bottom=#182848 top=#4B6CB7>Animated vertical glyphs</gradient>
<gradient hz=0.25 direction=reverse left=#FF0000 right=#0000FF>Reverse flow</gradient>
<gradient hz=0.25 direction=reverse fit=span left=#FF0000 right=#0000FF>One animated span color</gradient>
<gradient fit=glyph tl=#FF0000 tr=#00FF00 bl=#0000FF br=#FFFFFF>
Four corners
</gradient>
Horizontal

Vertical

Quatre coins
fit=glyph

fit=span

Animé
fit=glyph

fit=span

Les couleurs du dégradé multiplient la couleur de remplissage actuelle. Un dégradé à l’intérieur de color=#808080 ne peut donc produire aucun canal plus lumineux que ce multiplicateur de base.
ul
Trace un soulignement en utilisant les métriques de soulignement de la police lorsqu’elles sont disponibles. La balise n’a pas de couleur indépendante : la ligne hérite de la couleur de remplissage effective, y compris les dégradés horizontaux, verticaux et à quatre coins.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
pattern |
Non | solid |
solid ou dashed. |
<ul>Solid underline</ul>
<ul pattern=dashed>Dashed underline</ul>
<ul><gradient left=#FF00FF right=#FFFFFF>Gradient line</gradient></ul>
Continu

Tirets

Dégradé

strike
Trace une ligne à travers le texte entouré par la balise. Accepte les mêmes valeurs de pattern que ul et hérite également de la couleur de remplissage effective.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
pattern |
Non | solid |
solid ou dashed. |
<strike>No longer available</strike>
<strike pattern=dashed>Dashed strikethrough</strike>
Continu

Tirets

outline
Définit la largeur du contour, sa couleur ou les deux. Au moins un attribut est obligatoire. Une largeur nulle désactive explicitement le contour pour la portion de texte.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
size |
L’un des attributs size/color | Héritée ; 0 sur une police par défaut |
Largeur en unités de mise en page, dans l’intervalle [0,). Les suffixes d’unité ne sont pas acceptés. |
color |
L’un des attributs size/color | Héritée ; #000000 sur un label par défaut |
Couleur unique du contour au format hexadécimal RGB (#RRGGBB) ou RGBA (#RRGGBBAA) ; la composante alpha contrôle l’opacité. |
<outline size=3 color=#000000>Black outline</outline>
<outline color=#FF0000>Keep inherited width, change color</outline>
<outline size=0>Disable inherited outline</outline>
Contour noir extérieur

shadow
Ajoute une ombre nette au texte entouré par la balise. Au moins un attribut est obligatoire. Les attributs omis par une balise imbriquée conservent la valeur de l’ombre extérieure ; ceux omis par la balise la plus extérieure conservent la valeur de base de l’ombre de la police.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
color |
Non | Héritée ; #000000 sur un label par défaut |
Couleur de l’ombre au format #RRGGBB ou #RRGGBBAA. |
x |
Non | Hérité ; 0 sur une police par défaut |
Décalage horizontal de l’ombre en unités de mise en page. Les valeurs positives la déplacent vers la droite. |
y |
Non | Hérité ; 0 sur une police par défaut |
Décalage vertical de l’ombre en unités de mise en page. Les valeurs positives la déplacent vers le haut. |
blur |
Non | Hérité ; 0 sur une police par défaut |
Rayon du flou en unités de mise en page, dans l’intervalle [0,). |
<shadow x=6 y=-6 blur=4 color=#000000A0>Shadow</shadow>
<shadow x=-2>Override only the horizontal offset</shadow>
x=6, y=-6, blur=4

Le flou de l’ombre est généré et stocké dans l’atlas de glyphes. Une portion de texte peut demander un flou plus petit que celui précalculé pour la police ; les valeurs plus élevées sont conservées dans la mise en page, mais leur rendu utilise actuellement le flou maximal disponible dans l’atlas.
shake
Applique un décalage aléatoire animé déterministe sans modifier les sauts de ligne ni les limites de la mise en page. L’effet gère le temps en interne ; les scripts n’ont pas besoin de modifier le texte du label à chaque image de l’animation.
| Attribut | Obligatoire | Valeur par défaut | Valeurs valides | Signification |
|---|---|---|---|---|
hz |
Non | 20 | [0,) |
Nombre de transitions vers une cible aléatoire par seconde. Zéro met l’effet en pause. |
amplitude |
Non | 0.5 | [0,) |
Déplacement maximal en unités de mise en page. |
fit |
Non | glyph |
glyph ou span |
glyph calcule un décalage respectant les groupes de caractères pour chaque unité de glyphe mise en forme. span déplace toute la portion de texte entourée par la balise comme un seul bloc rigide. |
<shake>Default shake</shake>
<shake hz=12 amplitude=0.8 fit=glyph>Glyph shake</shake>
<shake hz=12 amplitude=0.8 fit=span>Rigid span shake</shake>
fit=glyph

fit=span

wave
Déplace les caractères de haut en bas selon une onde sinusoïdale animée sans modifier les sauts de ligne ni les limites de la mise en page. La mise en page accumule le temps d’animation lors de ses mises à jour.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
amplitude |
Non | 1 | Déplacement vertical maximal en unités de mise en page, dans l’intervalle [0,). |
hz |
Non | 1 | Nombre de cycles temporels complets par seconde, dans l’intervalle [0,). Zéro met l’onde en pause. |
wavelength |
Non | 6 | Nombre de positions de texte UTF-32 visible par cycle spatial complet, dans l’intervalle [1,). Les caractères que la police met en forme ensemble, comme un caractère de base et son accent combinatoire, se déplacent comme une seule unité. |
fit |
Non | glyph |
glyph applique l’onde spatiale sur le texte. span donne à toute la portion de texte entourée par la balise un même décalage sinusoïdal vertical. |
direction |
Non | forward |
forward fait progresser l’onde normalement. reverse inverse son sens de propagation. |
<wave>Animated character wave</wave>
<wave amplitude=4 hz=3 wavelength=8 fit=glyph>Travelling wave</wave>
<wave amplitude=4 hz=3 wavelength=8 fit=glyph direction=reverse>Reverse travelling wave</wave>
<wave amplitude=4 hz=1 fit=span>Whole span moves together</wave>
fit=glyph

fit=span

sprite
Ajoute un objet sprite autofermant à la position actuelle dans le texte visible. Ses attributs sont préservés comme métadonnées pour label.get_layout_objects() et gui.get_layout_objects().
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
id |
Non | Généré | Identifiant stable haché dans le champ id de l’objet de mise en page renvoyé. |
src |
Non | Aucune | Identifiant de ressource sprite défini par l’application, par exemple le chemin d’une image ou d’un atlas du projet. |
animation |
Non | Aucune | Identifiant d’animation défini par l’application au sein de la ressource. |
width |
Non | 1em |
Largeur résolue du sprite. |
height |
Non | 1em |
Hauteur résolue du sprite. |
| Tout autre attribut | Non | Absent | Métadonnées définies par l’application, conservées pour le résolveur d’objets et les API d’objets de mise en page. |
A <sprite src=engine/engine/content/builtins/assets/images/logo/logo_256.png/> logo
<sprite src=images/banner.png width=4em height=2em/>
<sprite src=images/icons.atlas animation=coin width=2em/>
Sprite résolu intégré au texte
![]()
Les dimensions acceptent des unités de mise en page positives sans suffixe, px, em ou %. em et % utilisent tous deux la taille de base de la police de la mise en page du texte.
Chaque dimension manquante vaut indépendamment 1em par défaut. Omettre les deux produit un objet de 1em × 1em ; préciser uniquement la largeur ne déduit pas automatiquement la hauteur à partir du rapport largeur/hauteur d’une ressource.
La balise sprite n’est qu’un emplacement réservé où le développeur peut insérer l’objet de son choix !
link
Décrit une plage de texte visible comme un objet lien. Le texte entouré par la balise est mis en page normalement et reçoit par défaut le style nommé link. Les composants Label et GUI sélectionnent link:hover et link:active en réponse aux entrées, sans refaire la mise en forme des glyphes. Consultez Messages d’interaction pour les messages produits par les entrées sur les liens.
| Attribut | Obligatoire | Valeur par défaut | Signification |
|---|---|---|---|
src |
Non | Aucune | Cible du lien définie par l’application. La valeur est renvoyée sous forme de chaîne sans validation ni navigation automatique. |
id |
Non | Généré | Identifiant stable haché dans le champ id de l’objet de mise en page renvoyé. |
style |
Non | link |
Style par défaut nommé pour le texte du lien. |
| Tout autre attribut | Non | Absent | Métadonnées définies par l’application, par exemple un identifiant, une action, une infobulle ou une valeur d’analyse d’usage. |
<ul><link id=website src=https://www.defold.com>www.defold.com</link></ul>
<link id=inventory style=menu_link action=open_inventory item=sword>Iron sword</link>
style=link

Le composant suit l’état du pointeur pour chaque lien. Il applique link:hover lorsque le pointeur survole le lien et link:active lorsque le pointeur est pressé. Lorsqu’aucun de ces états ne s’applique, le composant restaure le style nommé par l’attribut style du lien, ou link lorsque cet attribut est absent.
Les interactions avec les liens utilisent le système d’entrée habituel de Defold. Ajoutez une liaison Mouse Trigger pour MOUSE_BUTTON_LEFT, ce qui active également les entrées tactiles à un doigt, et acquérez le focus d’entrée dans le script de l’objet de jeu ou le script GUI :
function init(self)
msg.post(".", "acquire_input_focus")
end
Consultez Focus d’entrée et Entrées de la souris et tactiles pour les détails de configuration.
Lorsqu’un composant Label ou GUI reçoit des entrées du pointeur, les liens produisent les messages suivants. Les messages des labels sont envoyés à l’objet de jeu auquel ils appartiennent ; les messages GUI sont envoyés au script GUI.
| Message | Moment de l’envoi |
|---|---|
text_object_hovered |
Le pointeur entre sur un lien. |
text_object_unhovered |
Le pointeur quitte un lien. |
text_object_clicked |
Un appui est relâché sur le même lien. |
Chaque message contient ces champs :
| Champ | Type | Description |
|---|---|---|
id |
hash |
L’attribut id de l’objet, ou son identifiant d’objet de mise en page généré. |
type |
hash |
Le type de l’objet de mise en page, actuellement hash("link"). |
src |
string |
La valeur de l’attribut src de l’objet définie par l’application, ou une chaîne vide si elle est absente. |
function on_message(self, message_id, message)
if message_id == hash("text_object_clicked") then
assert(message.type == hash("link"))
print(message.id, message.src)
end
end
Chaque collection de polices contient des styles d’objets nommés qui agissent uniquement sur le rendu. Un lien utilise le style nommé par son attribut style, ou link lorsque cet attribut est absent. Il n’existe pas de balise générique <style> pour les portions de texte.
Defold fournit les valeurs par défaut suivantes :
| Style | Multiplicateur de couleur de remplissage | Décoration |
|---|---|---|
link |
(0.10, 0.45, 0.90, 1.0) |
Soulignement continu |
link:hover |
(0.30, 0.65, 1.00, 1.0) |
Aucune |
link:active |
(0.05, 0.30, 0.70, 1.0) |
Aucune |
Définissez un style avec une chaîne de texte contenant des balises d’ouverture. Les balises sont implicitement fermées dans l’ordre inverse ; les balises de fermeture et le texte visible ne sont donc pas autorisés.
font.set_style("/fonts/ui.fontc", "link",
"<color=#2673ff><outline color=#000000 size=1>")
font.set_style("/fonts/ui.fontc", "link:hover",
"<color=#66b3ff><shake amplitude=0.2 hz=20>")
Les balises sont appliquées de gauche à droite, comme si elles étaient imbriquées autour du texte de l’objet. Un style d’objet sélectionné par l’appelant est appliqué après le style par défaut. Lorsque plusieurs balises définissent la même propriété de rendu, la valeur appliquée en dernier remplace les précédentes. Les effets sont ajoutés de gauche à droite.
L’appel de font.set_style() remplace les propriétés de rendu et les effets de ce style nommé. Les décorations définies par la ressource restent inchangées ; redéfinir link ne supprime donc pas son soulignement par défaut. Les styles nommés acceptent les balises agissant uniquement sur le rendu, telles que color, outline, shadow, gradient, wave et shake. Les balises modifiant la mise en page, les balises de décoration et les balises d’objet sont rejetées.
Utilisez label.get_layout_objects() ou gui.get_layout_objects() pour récupérer les objets sprite et link du texte mis en page.
label.get_layout_objects()
objects = label.get_layout_objects(url)
| Argument | Type | Description |
|---|---|---|
url |
string, hash ou url |
Le composant Label à inspecter, par exemple "#label". |
gui.get_layout_objects()
objects = gui.get_layout_objects(node)
| Argument | Type | Description |
|---|---|---|
node |
node |
Le nœud de texte GUI à inspecter, par exemple gui.get_node("rich_text"). |
Les deux fonctions renvoient un tableau nouvellement créé contenant les objets de mise en page actuels dans l’ordre de la source. Elles renvoient un tableau vide lorsque le texte ne contient aucune balise d’objet. Comme les objets et leurs attributs sont copiés dans Lua à chaque appel, mettez le résultat en cache et interrogez à nouveau après avoir modifié le texte ou une autre propriété qui change sa mise en page.
| Champ | Type | Description |
|---|---|---|
type |
string |
"sprite" ou "link". |
id |
hash |
Identifiant de l’objet utilisé dans les messages d’interaction. |
text_offset |
number |
Position commençant à zéro dans le texte visible, mesurée en points de code Unicode. Le balisage est exclu, et les entités comptent comme les caractères qu’elles représentent après décodage. Pour un sprite, il s’agit de son point d’insertion. |
text_length |
number |
Longueur du texte visible entouré par la balise, en points de code Unicode. Un sprite a une longueur de un pour son point de code de remplacement d’objet U+FFFC inséré. |
width |
number |
Largeur résolue en unités de mise en page du texte. Les liens ont actuellement une largeur nulle. |
height |
number |
Hauteur résolue en unités de mise en page du texte. Les liens ont actuellement une hauteur nulle. |
x |
number |
Position horizontale du coin inférieur gauche de l’objet par rapport à l’origine supérieure gauche de la mise en page du texte. |
y |
number |
Position verticale du coin inférieur gauche de l’objet par rapport à l’origine supérieure gauche de la mise en page du texte. |
attributes |
table |
Tous les attributs de la balise sous forme de paires clé/valeur de chaînes. Les valeurs des attributs conservent leur représentation source, comme "2em". Une valeur abrégée sans nom est stockée sous la clé value. |
text_offset et text_length ne sont pas des décalages en octets UTF-8. Un caractère non ASCII comme å ou 猫 compte pour une position.
local text = [[
Read the <link src=https://defold.com/manuals/ id=manual>manual</link>
or inspect <sprite src=images/info.png width=2em/> for more information.
]]
go.set("#label", "text", text)
local objects = label.get_layout_objects("#label")
for _, object in ipairs(objects) do
if object.type == "link" then
print("link", object.attributes.src)
print("visible range", object.text_offset, object.text_length)
print("position", object.x, object.y)
elseif object.type == "sprite" then
print("sprite", object.x, object.y, object.width, object.height)
pprint(object.attributes)
end
end
local gui_objects = gui.get_layout_objects(gui.get_node("rich_text"))
<outline size=2 color=#101820>
<gradient left=#FEE715 right=#FF6F61>Gradient title</gradient>
</outline>
Le dégradé multiplie uniquement la couleur de remplissage ; le contour conserve sa propre couleur.
<shake hz=20 amplitude=0.5>
This <gradient left=#FF00FF right=#FFFFFF>whole</gradient> text shakes!
</shake>
L’effet de position extérieur s’applique à chaque glyphe. L’effet de couleur imbriqué s’applique uniquement à « whole ».
<color=#FFFFFF><outline size=2 color=#000000>
Normal <color=#FF4040>warning</color> normal
</outline></color>
La couleur intérieure modifie le remplissage tout en conservant la largeur et la couleur de contour héritées.