web-dev-qa-db-fra.com

Comment s'assurer que le texte chinois est rendu dans une page Web?

Je fais une page Web qui est en partie en chinois. J'utilise le codage UTF-8 pour tout le texte. La page contient des parties en chinois, mélangées avec des lettres occidentales. La police que j'utilise pour le texte occidental ne contient pas de caractères chinois. Je souhaite donc que la police chinoise disponible sur l'ordinateur de l'utilisateur soit utilisée pour restituer les caractères chinois (les polices btw chinois sont super grandes et ne peuvent pas être téléchargées à la volée.) ).

Puis-je simplement mettre les caractères chinois au milieu de l'autre texte et m'attendre à ce que le navigateur trouve une police chinoise pour les restituer (si je ne me soucie pas de la police dans laquelle il est rendu), ou dois-je spécifier la police chinoise dans d'une certaine façon?

Comment dois-je spécifier la police de caractères pour le texte chinois afin de m'assurer que le navigateur de l'utilisateur affiche 你好 et non □□?


Sur mon navigateur (Firefox 56.0), l'exemple ci-dessous rend le texte chinois correct (bien sûr, une police chinoise est installée sur l'ordinateur) dans les deux <span>s. Tout le texte chinois est affiché dans la même police. Le navigateur peut donc en quelque sorte trouver la police contenant les glyphes utilisés dans le texte, même si je n'ai spécifié le nom d'aucune police contenant des glyphes chinois. ... Je ne sais pas comment ça marche: |

<!doctype html>

<html lang="en-GB">

  <head>

    <meta charset="utf-8">

    <style>
      span.serif {
        font-family: "serif";
      }

      span.courier {
        font-family: "courier";
      }
    </style>

  </head>

  <body>
    <span class='serif'>123, wazzup? 一二三,你好嗎?</span><br />
    <span class='courier'>123, wazzup? 一二三,你好嗎?</span>
  </body>

</html>

Ce qui précède est rendu comme ceci sur mon ordinateur:

enter image description here

7
PetaspeedBeaver

Si la police spécifiée ne contient pas de glyphe pour un caractère, les navigateurs utilisent généralement tilisez une police de remplacement pour restituer ce caractère.

Les navigateurs n'ont pas faire cela, bien sûr, et son fonctionnement peut également dépendre du système d'exploitation. Mais ce serait vraiment surprenant s'il y avait des navigateurs qui n'en avaient pas N'utilisez pas de polices de remplacement, sans compter que de nombreux agents utilisateurs ne prennent même pas en charge les CSS, tels que les navigateurs de texte, les lecteurs de flux, etc., vous ne pouvez même pas spécifier de police pour commencer.)

Si aucune police appropriée n'est trouvée, un " glyphe de remplacement " (ou "tofu"; souvent, mais pas nécessairement , quelque chose comme "□") sera affiché à cet effet. personnage.

Les algorithmes définis par CSS:

Donc, à moins que vous ne connaissiez un agent utilisateur qui ne le gère pas, je ne m'en inquiéterais pas. Mais, idéalement, utilisez toujours l'attribut lang (dans ce contexte, cela pourrait aider les navigateurs "à sélectionner des polices adaptées à la langue" en tant que solutions de repli).

Si vous vous souciez de l'harmonie visuelle, des familles de polices telles que Noto ou bunt pourraient vous intéresser. Ils essaient de couvrir toutes les langues/tous les scripts, en les rendant de manière compatible visuellement (par exemple, même hauteur, etc.).

3
unor
  • Créez un bloc pour le texte chinois en utilisant les attributs html, par exemple p, ou em, ou strong, ou span ou quelque chose de similaire. Appliquez l'élément lang pour indiquer la langue du bloc créé. Info W3 sur Codes de langue ISO. Dans votre cas, ce sera lang = zh. Notez que vous pouvez spécifier un sous-ensemble pour la langue chinoise, par exemple pour chinois simplifié = zh-Hans , pour chinois (traditionnel) = zh-Hant . Aussi, vous pouvez spécifier/localiser le pays pour vos mots chinois - info UN sur Informations sur la langue et le territoire. Par exemple, le chinois pour Singapour lang = zh-SG.
  • Appliquez codeur/décodeur d’entité HTML pour vos mots chinois. Votre premier mot chinois sera codé comme &#x4F60;&#x597D;&#x55CE;. Ces caractères codés montreront n’importe quel navigateur, quel que soit le codage.
0
nikant25