risorse | e normalizzazione della spaziatura
La normalizzazione della spaziatura dovrebbe collassare anche ?
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 non è l'unico caso speciale da considerare nell'implementazione di una procedura di normalizzazione della spaziatura.
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
Il carattere 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 . 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.
Pagina modificata il 11/04/2014