ForHosting KIT · Texte et IA

Remplir à la chasse fixe

Alignez des colonnes qui mêlent texte latin et texte d'Asie de l'Est : 東京 occupe 4 colonnes, donc le compléter à 8 n'ajoute que 4 espaces, pas 6. Les caractères larges et la plupart des emojis comptent pour deux colonnes. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
Texte
東京
Largeur
8
Côté
Right
Vous obtenez
Résultat
東京
Caractère
Longueur d'origine
2
Largeur visuelle d'origine
4

Remplir une chaîne pour que les colonnes s'alignent dans un terminal est un problème de largeur visuelle, pas de décompte de caractères. Les idéogrammes d'Asie de l'Est, les syllabes hangul, les lettres latines pleine chasse et la plupart des emoji occupent deux colonnes dans une police à chasse fixe, tandis que les marques combinantes, les sélecteurs de variation et les ligateurs de largeur nulle n'en occupent aucune. Un remplissage fondé sur la longueur JavaScript désaligne toute cellule qui mélange latin et japonais, chinois ou coréen. Cet outil mesure les colonnes d'affichage à la manière East Asian Width, puis insère un caractère de remplissage d'une colonne à gauche, à droite ou des deux côtés jusqu'à atteindre le nombre de colonnes cible.

Comment la largeur visuelle d'une colonne est mesurée

Dans un terminal à chasse fixe habituel, chaque lettre, chiffre et signe de ponctuation ASCII occupe une colonne. Ce modèle mental se brise dès que la chaîne contient un caractère dont l'East Asian Width est Wide ou Fullwidth. Les idéogrammes unifiés CJK, les syllabes hangul, les chiffres pleine chasse (formes idéographiques de zéro à neuf) et le bloc latin pleine chasse occupent chacun deux colonnes.

Les marques combinantes des catégories Mn ou Me, les caractères de format, les voyelles médianes et consonnes finales jamo du hangul, les sélecteurs de variation et le ligateur de largeur nulle occupent zéro colonne et s'attachent au graphème précédent. Les paires d'indicateurs régionaux qui forment un emoji drapeau sont traitées comme une grappe unique de deux colonnes, et les emoji joints par un ligateur de largeur nulle restent une grappe de largeur deux plutôt qu'une pile de pictogrammes indépendants.

Les caractères de largeur ambiguë, comme les lettres grecques et certains symboles, suivent la convention POSIX et occidentale et comptent pour une colonne, ce qui correspond à la plupart des terminaux Linux et macOS hors locale d'Asie de l'Est. Les caractères de contrôle, y compris tabulation et saut de ligne, sont rejetés : la largeur de tabulation n'est pas une propriété de la chaîne, et cet outil remplit une cellule, pas un tableau entier.

L'algorithme parcourt les points de code Unicode, jamais les paires de substitution UTF-16, donc un emoji hors du Basic Multilingual Plane est un caractère, pas deux. Le résultat est le même nombre de colonnes qu'une mesure prudente de type wcwidth, exactement ce qu'il vous faut avant d'ajouter des caractères de remplissage pour qu'un nom japonais et un SKU latin partagent un bord droit net.

Où le remplissage à largeur visuelle intervient dans le travail réel

Les auteurs de CLI, les formateurs de journaux et quiconque imprime un tableau en police à chasse fixe rencontrent ce problème dès qu'une valeur japonaise, chinoise ou coréenne tombe dans une colonne dimensionnée avec la longueur de chaîne. Les numéros de facture côtoient des noms de produits ; un nom CJK de deux caractères JavaScript occupe quatre colonnes de terminal et pousse la colonne de prix vers la droite.

Les tableaux Markdown, les tableaux de bord d'un README et les imprimantes thermiques de reçus ont la même contrainte dès qu'une cellule mélange les écritures. Les pipelines de données qui émettent des fichiers d'export à largeur fixe pour les marchés d'Asie de l'Est ne peuvent pas utiliser un remplissage par décompte de caractères sans casser la mise en page qu'attend l'analyseur bancaire ou mainframe en aval.

Préférez cette page lorsque l'intention de recherche est remplir à la largeur à chasse fixe, largeur visuelle, East Asian Width, wcwidth ou aligner des colonnes CJK dans un terminal. Le pad à gauche ou par zéros d'identifiants ASCII est une autre requête et relève de l'outil de pad par décompte de caractères ; cette page traite le problème d'alignement de colonnes qui n'apparaît que lorsque des caractères larges entrent dans la cellule.

Aligner des cellules CJK dans des tableaux de terminal

Remplissez à droite des cellules mixtes latin et japonais, chinois ou coréen jusqu'à une largeur visuelle commune afin que prix et statut restent droits dans la sortie CLI.

Champs d'export d'Asie de l'Est à largeur fixe

Remplissez d'espaces noms de produits et adresses jusqu'au budget de colonnes qu'attend un fichier héritage à largeur fixe, en comptant les caractères pleine chasse pour deux colonnes.

Centrer des bannières à écritures mixtes

Remplissez les deux côtés d'un titre court contenant du CJK ou des emoji pour qu'une ligne de reçu ou un en-tête de journal à chasse fixe soit visuellement centré.

En quoi cela diffère-t-il du remplissage ordinaire de chaînes ?

Le pad ordinaire compte les caractères JavaScript. Cet outil compte les colonnes visuelles à chasse fixe, donc 東京 a une largeur 4, pas 2, et les colonnes restent alignées lorsque latin et CJK partagent une ligne.

Que se passe-t-il si le texte est déjà plus large que la cible ?

Cet outil ne tronque jamais ; la largeur cible doit être supérieure ou égale à la largeur visuelle mesurée.

Puis-je remplir avec une espace pleine chasse ou un emoji ?

Non. Le caractère de remplissage doit occuper exactement une colonne visuelle. Utilisez une espace ASCII, 0, un trait d'union ou un autre glyphe étroit.

Comment les emoji et les drapeaux sont-ils comptés ?

La plupart des emoji occupent deux colonnes. Une paire d'indicateurs régionaux (un drapeau) est une grappe de deux colonnes. Les séquences avec ligateur de largeur nulle restent une grappe au lieu d'empiler les largeurs.

Combien coûte le remplissage à largeur visuelle ?

L'outil du navigateur est gratuit et s'exécute en local.

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.

POSThttps://api.kit.forhosting.com/str/pad-visual-width

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é.

curl -X POST https://api.kit.forhosting.com/str/pad-visual-width \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"東京","width":8,"side":"right"}'
{
  "text": "東京",
  "width": 8,
  "side": "right"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "str.pad_visual_width",
  "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.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_chars65536
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Lorsque le texte est déjà plus large que la cible, la requête échoue avec invalid_input au lieu de tronquer vos données en silence.

Ce que vous envoyez et ce que vous recevez

Un texte vide est autorisé et produit une chaîne de remplissage pur de la largeur demandée. Le char facultatif est un seul point de code dont la propre largeur visuelle est exactement une colonne et vaut par défaut une espace ASCII ; une espace pleine chasse ou un emoji de remplissage est rejeté, car un remplissage de deux colonnes ne peut pas atteindre un budget restant impair. Les nombres et booléens de text sont convertis en chaînes décimales ou true/false ; les objets et tableaux sont rejetés. Contrôle classique : le toponyme japonais à deux caractères 東京 a une largeur visuelle de quatre, donc un remplissage à droite jusqu'à width huit avec des espaces donne 東京 plus quatre espaces ; un remplissage à gauche de l'ASCII quarante-deux jusqu'à width six avec zéro donne encore 000042, comme un pad ordinaire pour une entrée uniquement latine. Envoyez les champs obligatoires text, width et side, plus le char facultatif. Text est la cellule à remplir ; les alias input, value, data, s, message, string, content et body sont acceptés. Width est le nombre cible de colonnes visuelles, un entier non négatif ; les alias target, columns, size et n fonctionnent lorsque width est omis. Side doit valoir left, right ou both, avec les alias start ou l, end ou r, et center ou c. Un texte plus long que le plafond documenté, ou un width au-dessus du maximum documenté, échoue avec invalid_input. En cas de succès, la réponse renvoie text, width, side et char, plus result pour la chaîne remplie, original_length et length comme longueurs de chaîne JavaScript, original_visual_width et visual_width comme nombres de colonnes, pad_count, pad_left, pad_right et operation égal à pad_visual_width. Le tarif des appels API réussis est la base publiée de $0.002 par élément ; les échecs de validation, y compris une cible inférieure à la largeur visuelle actuelle, ne sont pas facturés.

Où le remplissage à largeur visuelle intervient dans le travail réel

Comme cette capacité est un moteur parse pur, chaque appel réussi coûte le tarif de base publié de $0.002, sans jetons de modèle et sans réseau sortant, et une validation en échec ne consomme pas de solde.

Consulter la documentation complète du KIT →