Accesskey n salta alla navigazione della pagina. Salta al contentuo.

Questo documento è una traduzione. In caso di differenze o errori, dovrebbe essere considerato la fonte più autorevole l'ultimo documento originale Inglese. Il copyright originale appartiene al W3C, come mostrato in basso.

Traduttore: Italian Translation Team, Trusted Translations, Inc.

s_gotoW3cHome Internationalization
 

Perdita di spazio Bidi

Intended audience: utenti, codificatori XHTML/HTML (con impiego di editor o linguaggi di script), sviluppatori di script (PHP, JSP, ecc.), codificatori CSS, sviluppatori di schemi (DTD, XML Schema, RelaxNG, ecc.), sviluppatori XSLT, Web project manager e chiunque non abbia familiarità con le esigenze di internazionalizzazione e abbia bisogno di una guida in merito ai temi da tenere in considerazione e all'acquisizione di conoscenze utili per la creazione di un sito.

Domanda

Per quale motivo il mio browser elimina spazi fra un testo in latino e uno in arabo/ebraico?

Informazioni

Gli spazi compresi fra testi latini e arabo/ebraici possono scomparire se i testi medesimi sono seguiti da uno spazio bianco contenuto in un elemento in linea che include l'attributo dir.

Ad esempio, in alcuni browser il codice:

<p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

produce un risultato simile al seguente, con la freccia a indicare la posizione dello spazio mancante:

Immagine del risultato, raffigurante l'assenza dello spazio a sinistra del testo latino.

Nota che questo effetto si verifica anche quando il testo scritto da destra a sinistra è incorporato in un passaggio redatto da sinistra a destra.

Risposta

Se la sezione precedente descrive il codice da te visualizzato, la soluzione è rimuovere tutto lo spazio presente prima del tag finale dell'elemento in linea oppure, laddove appropriato, rimuovere l'attributo dir.

Ad esempio, rimuovendo lo spazio fra (W3C) e </span>:

<p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

si produce un risultato simile al seguente:

Immagine del risultato, raffigurante la presenza di uno spazio su ambo i lati del testo latino.

Nota, inoltre, che in questo esempio l'attributo dir="ltr" dell'elemento <span> intorno al testo (W3C) non è essenziale per garantire la correttezza dell'ordine testuale. Il problema può essere risolto anche elimando l'attributo o l'intero elemento span.

Che cosa vedo?

Le caselle di seguito mostrano esempi di codice seguiti dalla relativa implementazione sulla pagina corrente, in modo da consentirti di verificare il comportamento dello user agent che stai usando.

Codice: <p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Codice: <p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Codice: <p dir="rtl"> العالمية <span>(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Codice: <p dir="rtl"> العالمية <span>(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Codice: <p dir="rtl"> العالمية (W3C) تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Altre informazioni

Leggi questa sezione solo se desideri conoscere ogni minimo dettaglio in merito al motivo dell'accaduto.

Il comportamento atteso al momento della visualizzazione del testo non è descritto dettagliatamente nelle specifiche XHTML/HTML, ma lo è nelle recenti specifiche CSS. Anche se gli esempi riportati in questa pagina non fanno uso dei CSS, si applicano gli stessi principi. Di seguito un esempio tratto dalla Bozza di lavoro sui CSS 2.1:

  1. se 'white-space' è impostato su 'normal', 'nowrap' o 'pre-line',
    1. ogni carattere di tabulazione (U+0009) è convertito in uno spazio (U+0020)
    2. ogni spazio (U+0020) collocato dopo un altro spazio (U+0020) — anche uno spazio antecedente a un elemento in linea se caratterizzato dalla proprietà 'white-space' impostata su 'normal', 'nowrap' o 'pre-line' — è rimosso.

Dato lo scenario seguente (dove i colori rappresentano spazi, U+0020, per consentire una più semplice identificazione):

<ltr>A <rtl> B </rtl> C</ltr>

la specifica indica che lo spazio dopo A è conservato, lo spazio prima di B rimosso, lo spazio dopo B conservato, lo spazio prima di C rimosso. Questa è la resa in accordo all'algoritmo bidirezionale Unicode, con risultato finale:

A  BC

Nota che vi sono 2 spazi fra A e B! I livelli di embedding possono essere espressi come segue:

11221

Dicci cosa ne pensi (in Inglese).

Sottoscrivi il feed RSS.

Nuove risorse

Le novità presenti nella home page

Twitter (Le novità presenti nella home page)

‎@webi18n

Ulteriori letture

Autore: Richard Ishida, W3C. Traduttore: Italian Translation Team, Trusted Translations, Inc..

XHTML 1.0 valido!
CSS Valido!
Codificato in UTF-8!

Tradotto dal contenuto Inglese datato 2003-11-06. Ultima modifica della versione tradotta 2009-08-18 17:48 GMT

Per la cronistoria delle modifiche, cerca per qa-bidi-space nel blog i18n.