Met de sneltoets n gaat u rechtstreeks naar navigatie binnen de pagina. Naar begin van de inhoud gaan.

Dit document is een vertaling. In geval van afwijkingen of fouten, dient het meest recente origineel in het Engels dient als referentie te worden beschouwd. Het origineel copyright is eigendom van W3C, zoals hieronder getoond.

Vertaler: Dutch Translation Team, Trusted Translations, Inc.

s_gotoW3cHome Internationalization
 

Bidi-spatieverlies

Doelpubliek: gebruikers, XHTML/HTML-programmeurs (met gebruik van redacteurs of scripting), scriptontwikkelaars (PHP, JSP, etc.), CSS-programmeurs, schema-ontwikkelaars (DTDs, XML Schema, RelaxNG, etc.), XSLT-ontwikkelaars, Web project managers, en iedereen voor wie internationalisatie nieuw is en die hulp nodig heeft bij het bepalen van de belangrijke aspecten en manieren om het materiaal op de website te gebruiken.

Vraag

Waarom verwijdert mijn browser spaties tussen Latijnse en Arabisch/Hebreeuwse tekst?

Achtergrond

Het kan lijken alsof spaties tussen Latijnse en Arabisch/Hebreeuwse tekst verdwijnen indien de tekst gevolgd wordt door een spatie binnen een inline-element dat het attribuut dir bevat.

Bijvoorbeeld, in dergelijke browsers zal de code:

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

het volgende resultaat opleveren, waarbij de pijl de locatie van de ontbrekende spatie aangeeft.

Afbeelding van het resultaat, waarbij er zich aan de linkerzijde van de Latijnse tekst geen spatie bevindt.

Merk op dat dit effect ook plaatsvindt als tekst 'van rechts naar links' ingesloten wordt in een passage 'van links naar rechts'.

Antwoord

Als het voorgaande onderdeel het uiterlijk van uw code beschreef, zijn er twee oplossingen: u kunt alle spaties voor de eindtag van het inline-element verwijderen, of het attribuut dir verwijderen (indien van toepassing).

Bijvoorbeeld, door de spatie te verwijderen tussen (W3C) en </span>:

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

krijgt u het volgende resultaat:

Afbeelding van het resultaat, waarbij er zich aan beide zijden van de Latijnse tekst spaties bevinden.

Merk ook op dat in dit voorbeeld het attribuut dir="ltr" in het element <span> rond de tekst (W3C) eigenlijk niet noodzakelijk is om de juiste volgorde te garanderen. Het probleem kan ook opgelost worden door het attribuut of het volledige span-element weg te laten.

Hoe zie ik het?

In de onderstaande kaders ziet u voorbeelden van codes gevolgd door een implementatie van die code op deze pagina, zodat u het gedrag van uw huidige gebruikersagent kan testen.

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

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

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

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

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

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

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

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

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

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

Trouwens

Lees dit onderdeel enkel als u echt wilt weten waarom dit gebeurt.

Het verwachte gedrag wat betreft de weergave wordt niet in detail beschreven in de XHTML/HTML-specificaties maar wordt beschreven in recente CSS-specificaties. Hoewel de voorbeelden op deze pagina geen CSS gebruiken, gelden dezelfde principes. Het volgende is een fragment uit het CSS 2.1 Werkexemplaar:

  1. Als "white-space" is ingesteld op "normal", "nowrap", of "pre-line",
    1. wordt elke tab (U+0009) omgezet in een spatie (U+0020)
    2. elke spatie (U+0020) die een andere spatie opvolgt (U+0020) — zelfs een spatie vóór de inline, indien voor die spatie "white-space" ingesteld is op "normal", "nowrap" of "pre-line" — wordt verwijderd

Stelt u zich een scenario voor zoals hieronder (de kleuren stellen spaties voor, U+0020, om ze gemakkelijk te herkennen):

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

de specificatie stelt dat de spatie na A wordt behouden, de spatie vóór B wordt verwijderd, de spatie na B wordt gehouden, de spatie vóór C wordt verwijderd. Vervolgens wordt dit weergegeven met het Unicode bidirectioneel algoritme en het eindresultaat is:

A  BC

Merk op dat er zich tussen A en B twee spaties bevinden! De "embedding"-niveaus kunnen als volgt worden uitgedrukt:

11221

Vertel ons wat u ervan denkt (Engels).

Abonneer u op een RSS-feed.

Nieuwe bronnen

Thuispaginanieuws

Twitter (Thuispaginanieuws)

‎@webi18n

Aanbevolen lectuur

Auteur: Richard Ishida, W3C. Vertaler: Dutch Translation Team, Trusted Translations, Inc..

Geldige XHTML 1.0!
Geldige CSS!
Gecodeerd in UTF-8!

Vertaald vanuit de Engelse inhoud met datum 2003-11-06. Vertaalde versie laatst gewijzigd op 2009-03-05 10:31 GMT

Zoek naar qa-bidi-space in het i18n-blog voor een geschiedenis van de veranderingen in het document.