risorse |   e normalizzazione della spaziatura

  e normalizzazione della spaziatura

La normalizzazione della spaziatura dovrebbe collassare anche  ?

Definizioni

Per normalizzazione della spaziatura (sottinteso: di una stringa) si intende la sostituzione delle sequenze di piĆ¹ caratteri di spaziatura con il carattere ASCII 0x20 (SPACE). Per carattere di spaziatura, invece, si intende[3]:

white space is any character or series of whitespace characters that represent horizontal or vertical space in typography.

Esistono diversi tipi di caratteri di spaziatura, dal significato o dall'aspetto caratteristico[2], e Unicode ne fornisce una classificazione esplicita[7]:

# PropList-6.3.0.txt
# Date: 2013-09-25, 18:58:50 GMT [MD]
#
# Unicode Character Database
# Copyright (c) 1991-2013 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/

# ================================================

0009..000D    ; White_Space # Cc   [5] >control-0009<..>control-000D<
0020          ; White_Space # Zs       SPACE
0085          ; White_Space # Cc       >control-0085<
00A0          ; White_Space # Zs       NO-BREAK SPACE
1680          ; White_Space # Zs       OGHAM SPACE MARK
2000..200A    ; White_Space # Zs  [11] EN QUAD..HAIR SPACE
2028          ; White_Space # Zl       LINE SEPARATOR
2029          ; White_Space # Zp       PARAGRAPH SEPARATOR
202F          ; White_Space # Zs       NARROW NO-BREAK SPACE
205F          ; White_Space # Zs       MEDIUM MATHEMATICAL SPACE
3000          ; White_Space # Zs       IDEOGRAPHIC SPACE
...

L'esistenza di questa varietà di caratteri di spaziatura dovrebbe suggerire che forse &nbsp; non è l'unico caso speciale da considerare nell'implementazione di una procedura di normalizzazione della spaziatura.

Strumenti

Alcune piattaforme di sviluppo consentono di risalire almeno in parte alla natura del carattere di spaziatura; ad esempio, JAVA offre le seguenti funzioni[5][6]:

isSpaceChar
Determines if the specified character (Unicode code point) is a Unicode space character.
isWhitespace
Determines if the specified character is white space according to Java.

Anche ICU mette a disoposizione diversi metodi per lo stesso scopo[10]:

u_isUWhiteSpace=UCHAR_WHITE_SPACE
Unicode White_Space property; most of general categories “Z” (separators) + most whitespace ISO controls (including no-break spaces, but excluding IS1..IS4 and ZWSP)
u_isWhitespace
Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
u_isJavaSpaceChar
Java isSpaceChar; just Z (including no-break spaces)
u_isspace
Z + whitespace ISO controls (including no-break spaces)
u_isblank
“horizontal spaces” = TAB + Zs - ZWSP

Normalizzazione e &nbsp;

Il carattere &nbsp; corrisponde al code point Unicode U+00A0 (NO-BREAK SPACE), la cui definizione è[1]:

...a variant of the space character that prevents an automatic line break (line wrap) at its position. In certain formats (such as HTML), it also prevents the “collapsing” of multiple consecutive whitespace characters into a single space. The non-breaking space is also known as a hard space or fixed space

Come spesso accade, la domanda iniziale non ha una risposta univoca: dipende dall'uso che si fa della stringa normalizzata. La risposta sarà tendenzialmente negativa se la stringa normalizzata viene visualizzata, dato che i caratteri NO-BREAK SPACE e SPACE causano impaginazioni diverse. D'altra parte, a volte può risultare comodo normalizzare anche questo carattere, per esempio per attività di analisi non collegate al processo di pubblicazione del testo (indicizzazione, ricerche full text, …).

A titolo d'esempio, la definizione della funzione di normalizzazione degli spazi bianchi di XPath[11]:

string normalize-space(string?)
The normalize-space function returns the argument string with whitespace normalized by stripping leading and trailing whitespace and replacing sequences of whitespace characters by a single space. Whitespace characters are the same as those allowed by the S production in XML…

La produzione cui si riferisce la definizione è la seguente[12]:

[3] S ::= (#x20 | #x9 | #xD | #xA)+

La normalizzazione XPath opera dunque, per definizione, su un insieme molto ristretto di caratteri di spaziatura, che non contempla il carattere &nbsp;. Analogamente, nel trattamento dei file XAML, Microsoft dichiara di effettuare il “collapsing” dei soli caratteri di spaziatura U+0020 (SPACE), U+000A (LINE FEED) e U+0009 (CHARACTER TABULATION)[4]. Questo a dimostrazione del fatto che non esiste una forma comunemente accettata di normalizzazione dei caratteri di spaziatura.

Riferimenti

  1. “Non-breaking space”, wikipedia.org — http://en.wikipedia.org/wiki/Non-breaking_space, visitato il 10/04/2014.
  2. “Spaces in Unicode”, wikipedia.org — http://en.wikipedia.org/wiki/Space_%28punctuation%29#Spaces_in_Unicode, visitato il 10/04/2014.
  3. “Whitespace character”, wikipedia.org — http://en.wikipedia.org/wiki/Whitespace_character, visitato il 10/04/2014.
  4. “Collapsible Whitespace Characters”, MSDN — http://msdn.microsoft.com/en-us/library/ee177368.aspx, visitato il 10/04/2014.
  5. “isSpaceChar”, JAVA Platform SE 7 Docs — http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isSpaceChar%28char%29, visitato il 10/04/2014.
  6. “isWhitespace”, JAVA Platform SE 7 Docs — http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace%28char%29, visitato il 10/04/2014.
  7. “Unicode Character Database”, Unicode — http://unicode.org/Public/UNIDATA/PropList.txt, visitato il 10/04/2014.
  8. “Legacy Support for Space Character as Base for Combining Marks”, Unicode — http://www.unicode.org/reports/tr14/#LegacySpace, visitato il 10/04/2014.
  9. “The Unicode Standard Version 6.2 - Core Specification”, unicode.org — http://www.unicode.org/versions/Unicode6.2.0/ch04.pdf, visitato il 10/04/2014.
  10. “uchar.h File Reference”, unicode.org — http://www.icu-project.org/apiref/icu4c/uchar_8h.html, visitato l'11/04/2014.
  11. “XML Path Language (XPath) - Version 1.0”, W3C — http://www.w3.org/TR/xpath/, visitato il 10/04/2014.
  12. “Extensible Markup Language (XML) 1.0 (Fifth Edition) - Common Syntactic Constructs - White Space”, W3C — http://www.w3.org/TR/REC-xml/#NT-S, visitato il 10/04/2014.

Pagina modificata il 11/04/2014