Mark,

Thanks again for your response.

I understand what you say about word formation, and combining marks, and
that the Alphabetic
classification should not be limited to "L"s.  But 30FC is of General
Category "Lm" (which should be
included) and, since version 3.1, is classified explicitly as Alphabetic in
DerivedCoreProperties.txt.
(It appears that formal  expression of the Alphabetic property was moved
from  PropList.txt 
to DerivedCoreProperties.txt in 3.1.)  I don't understand why its exclusion
from the Alphabetic 
category in 3.0.1 was not an oversight.  But if not, then either the
consortium consensus on 
the classification of this character has changed, or the current
classification is in error.

Here's a little more background regarding my motivation.  The problem occurs
in a procedure
that evaluates whether a user-supplied name can be used as an identifier -
for which identification 
of alphabetic characters is important.  One implementation of isalpha(),
purportedly based on 
Unicode 2.1, indicates that 30FC is an alpha character.  The current
implementation from the 
same vendor, based on 3.0.1, classifies it as non-alpha.  Presumably the
next one will be based 
on 3.1 or later and will reclassify it, again, as alpha.

I have since discovered section 5.16 of the spec which describes the Unicode
standard for
identifier formation, and frankly, our validation algorithm is a bit naive
and will require some 
work.  But our use of isalpha() is not, I think, fundamentally flawed; the
changes will require 
only that we include some additional characters that are not currently
considered valid.  
Certainly if the behavior of isalpha() did not change the existing algorithm
would at least 
be stable across different platforms, warts and all.  If we can't depend on
uniform behavior 
of isalpha() we will have to eliminate its use from our validation function.

So I am trying to discover why the behavior of isalpha() has changed.  Here
are the
possibilities: 1) the previous implementation was incorrect and the current
one is fixed;
2) the current implementation is flawed because it does not conform to the
documented
standard; 3) the current implementation is flawed because it's based on
incorrect 
documentation of the standard; 4) both implementations are correct but are
based on
different, incompatible standards; 5) something else I don't yet understand.

The overriding assumption for this entire discussion is that the behavior of
isalpha() should 
be governed by the Unicode Alphabetic property.  That seems reasonable to me
and is, in
fact, the vendor's claim.  If not, (or even if so) perhaps someone can
recommend a better 
(or more stable) API for discovery of Unicode character metrics upon which
we might base 
our identifier validation and other character processing logic.

Comments anyone?

Rob







-----Original Message-----
From: Mark Davis [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 05, 2003 2:48 PM
To: Mount, Rob (Robert F); [EMAIL PROTECTED]
Subject: Re: Classification of U+30FC KATAKANA-HIRAGANA PROLONGED SOUND
MARK


Ah, I see why you didn't find the Alphabetic property. It was added in
Unicode 3.1.0 (March 2001), precisely to capture characters that are
not L yet are still alphabetic. If you look at the derivation in
C:\DATA\UCD\3.1.0-Update\DerivedCoreProperties-3.1.0.txt, you will
see:

# Derived Property: Alphabetic
#  Generated from: Lu+Ll+Lt+Lm+Lo+Nl + Other_Alphabetic

So Alphabetic includes all L's, but also other characters. And, as I
said, it alone is not sufficient for word breaks.

> Is the ommision of 30FC from the Alphabetic category of PropList.txt
an
> error?

This is not an oversight. As I said, many characters are not
Alphabetic and are still part of words. Examples include that
character and many others. As a simple case, "can't" is a word in
English, although the apostrophe is not alphabetic. There are many,
many examples using combining marks, such as a virama (halant) in
Hindi, which is not Alphabetic:

http://oss.software.ibm.com/cgi-bin/icu/ub/utf-8/?ch=094D

So if you want reasonable word-breaks, you need to use more than the L
category, you need to look at
> http://www.unicode.org/reports/tr14/
> http://www.unicode.org/reports/tr29/

Mark
__________________________________
http://www.macchiato.com
?  "Eppur si muove" ?

----- Original Message ----- 
From: "Mount, Rob (Robert F)" <[EMAIL PROTECTED]>
To: "Mark Davis" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Thursday, June 05, 2003 11:57
Subject: RE: Classification of U+30FC KATAKANA-HIRAGANA PROLONGED
SOUND MARK


>
> Thanks to all who responded.  The insight you provided is
invaluable.  And I
>
> appreciate your patience with a UNICODE beginner.
>
> Mark's reference to UCD.html, and by inference to
DerivedCoreProperties.txt,
> seems difinitive.  However, these are part of the 4.0 spec.  The
suspect
> implementation of isalpha is based, according to the vendor, on
3.0.1.
>
> The vendor relys, instead, on
> http://www.unicode.org/Public/3.0-Update1/PropList-3.0.1.txt
> which classifies 30FC as Diacritic, Extender, Bidi: Left-to-Right,
and
> Identifier Part, but not
> as Alphabetic.  Is this an error in the specification?  I could find
no
> reference to the Alphabetic
> property in the 3.0.1 documentation except in, and with reference
to,
> PropList-3.0.1.txt.
> However, it would seem, from the 4.0 documentation, that all
characters
> having a General
> Category beginning with "L" should be considered as letters, and
hence,
> implicitly, as Alphabetic.
>
> Is this, indeed, the intent of the General Category classifications
> beginning with "L"?
>
> Is the ommision of 30FC from the Alphabetic category of PropList.txt
an
> error?
>
> Rob
>
> -----Original Message-----
> From: Mark Davis [mailto:[EMAIL PROTECTED]
> Sent: Thursday, June 05, 2003 9:28 AM
> To: Mount, Rob (Robert F); [EMAIL PROTECTED]
> Subject: Re: Classification of U+30FC KATAKANA-HIRAGANA PROLONGED
SOUND
> MARK
>
>
> The UCD has a property explicitly called "Alphabetic" in the UCD. So
> that should be used when determining whether a character is, well,
> alphabetic. See http://www.unicode.org/Public/UNIDATA/UCD.html
>
> However, in the past many people have misused functions like
isAlpha()
> for doing more complicated processing like determining text
boundaries
> (line and word breaks, for example). The function isAlpha() does not
> discriminate finely enough to be very accurate for processing like
> that. For more information, see
> http://www.unicode.org/reports/tr14/
> http://www.unicode.org/reports/tr29/
>
> Also see the proposed update to Unicode Regular Expressions, for
> discussion of the use of Unicode properties in connection with
alpha,
> punct, etc. (in the context of regular expressions, at least).
>
http://www.unicode.org/reports/tr18/tr18-7.html#Compatibility_Properties
>
> Mark
> __________________________________
> http://www.macchiato.com
> ?  "Eppur si muove" ?
>
> ----- Original Message ----- 
> From: "Mount, Rob (Robert F)" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, June 04, 2003 16:11
> Subject: Classification of U+30FC KATAKANA-HIRAGANA PROLONGED SOUND
> MARK
>
>
> > All,
> > I am investigating differing behavior in various environments of
the
> > wide-character version of the C function isAlpha with respect to
> > character U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK. Some
> > implementations indicate that it is alphabetic, some don't. I
> > suspect that other characters might be subject to the same
> confusion.
> >
> > The UNICODE documents seem abiguous on this point: the General
> > Catetory is "Lm" which, although informative instead of normative,
> > would seem to imply that it is alphabetic; likewise
> > DerivedCoreProperties-4.0.0.txt indicates that it is alphabetic;
but
> > PropList-4.0.0.txt contains two records - one indicating that it
is
> > a diacritic, one that indicates it is an extender.
> >
> > On to my questions:
> >
> > Q1: Can a character be both alphabetic and diacritic?
> >
> > Q2: Is there a difinitive answer as to whether this is an
alphabetic
> > character?
> >
> > Thanks in advance for answers to these questions and/or any
> > additional isight you can provide.
> >
> > Regards,
> > Rob Mount
> >
> >
> >
> >
> >
> >
> >
> >
> >
>

Reply via email to