[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [idn] amending [IDNA]?



After some thinking, I suggest more specific statement
in [IDNA] to explain its relationship with [nameprep]:


On Fri, 17 Aug 2001 18:03:23 -0700 liana.ydisg@juno.com writes:
> Hi, Paul:
> 
> I suggest the following procedure specification 
> adds to [IDNA], this is only an idea, while I have no 
> intention to put proper words in the document.
> 
> [IDNA] is the component of internetionalization of 
> Domain Name system. It contains procedures preparing
> localized domain name representation for DNS and 
> supply display representation for local standard 
> according to DNS registered hostnames.  

[IDNA] implements Unicode codepoint specifications
published in [nameprep]. 

> 
> The IDN-label protocol is:
> 
> idn-label(input, tag-file, input-std, zonefile, idn-name)
> {
>   tag = find-tag(input, tag-file, input-std);

     if error(tag) 
	{
	fprintf(stderr, "%s %s", idn-name, "illegal characters found in IDN
label.");
	return (ERROR);
	}

>   switch (tag)
> 	{
> 	case USASCII : return(input);  /* a legal DNS string*/
> 	case NIL: idn-name= 
> 		uni-compress(input, UNICODE, DEFAULT-ACE);
> 		return strcat(DEFAULT-ACE, idn-name);
> 	default:
> 	 idn-folding(input, input-std, tag, USASCII, output-list);
> 	 if idn-label-length(output-list) >= MaxLabelLength
> 	 {	 
> 		record-label(input, output-list, zonefile, tag);
> 		idn-truncate-label(output-list, tag);
> 	 }
> 	 idn-label-concat(output-list, idn-name);
> 	 return  strcat(tag, idn-name);
> 	} 
> 
> The idn-display protocol is:
> 
> idn-display-code(input, local-std, zonefile, display-string)
> {
>   display-string = NIL;
>   search-zone(input, zonefile, local-std, display-string);
>   if display-string 
> 	return display-string;
> 
>   tag = find-tag (input, tag-file, USASCII);

     if error(tag) 
	{
	fprintf(stderr, "%s %s", input, "WARNING: Error found in DNS label.");
	return (ERROR);
	}

>   switch (tag)
> 	{
> 	case USASCII : return(input);  /* a legal DNS string*/
> 	case NIL: return(input); /* legacy name */
> 	case DEFAULT-TAG: 
> 		local-std = UNICODE;
> 		uni-decompress(input, display-string)
> 		return display-string;
> 	default:
> 	 idn-folding(input, USASCII, tag, local-std, 
> display-string);
> 	 if length(inupt) >= MaxLabelLength)  /* truncated */
> 	 	idn-request-fullname(input, output-list, host1, 
> host2);
> 	 return display-string;
> 	} 
> 
> 
delete: > [nameprep] shall be the host for and only deal with
...
delete > for case folding table lookups, and leave exclusion list to be 
delete > checked by idn-label procedure  within a tagged Unicode block.

[nameprep] shall specify availble case folding tables for 
 idn-folding(input, in-std, tag, out-std, out-list) protocol,
and illegal codepoint exclusion shall be implemented in
   tag = find-tag(input, tag-file, input-std)

where tags are script based with naming defined in 
[ISO 639-2/T] and registered with IANA.  

The tags have values:
ERROR		/* contain [nameprep] has Excluded Codepoints */
USASCII		/* [A-Za-z0-9] */
NIL	/* Unicode string with no applicable script label found. */
ZHO	/* Chinese tag */
KOR	/* Korean */
JAP	/* Japanese */
LAT	/* Latin */
...

> 
> I am looking forward for your comments.
> 
> Liana Ye
>