Author: atsushi
Date: 2005-04-25 03:26:06 -0400 (Mon, 25 Apr 2005)
New Revision: 43533

Modified:
   branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/ChangeLog
   
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/MSCompatUnicodeTable.cs
   
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/create-char-mapping-source.cs
Log:
2005-04-25  Atsushi Enomoto  <[EMAIL PROTECTED]>

        * create-char-mapping-source.cs : Now it generates
          ToWidthInsensitive() from combining category <wide> and <narrow>.
        * MSCompatUnicodeTable.cs : added ToKanaTypeInsensitive() and
          ToWidthInsensitive() for IgnoreKanaType and IgnoreWidth.



Modified: branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/ChangeLog
===================================================================
--- branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/ChangeLog      
2005-04-25 06:19:02 UTC (rev 43532)
+++ branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/ChangeLog      
2005-04-25 07:26:06 UTC (rev 43533)
@@ -1,5 +1,12 @@
 2005-04-25  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
+       * create-char-mapping-source.cs : Now it generates
+         ToWidthInsensitive() from combining category <wide> and <narrow>.
+       * MSCompatUnicodeTable.cs : added ToKanaTypeInsensitive() and
+         ToWidthInsensitive() for IgnoreKanaType and IgnoreWidth.
+
+2005-04-25  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
        * README, LdmlReader.cs, DataStructures.txt : new files.
 
 2005-04-25  Atsushi Enomoto  <[EMAIL PROTECTED]>

Modified: 
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/MSCompatUnicodeTable.cs
===================================================================
--- 
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/MSCompatUnicodeTable.cs
        2005-04-25 06:19:02 UTC (rev 43532)
+++ 
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/MSCompatUnicodeTable.cs
        2005-04-25 07:26:06 UTC (rev 43533)
@@ -349,6 +349,20 @@
                // We can reuse IsIgnorableSymbol testcode 
                // for IsIgnorableNonSpacing.
                #endregion
+
+               public static int ToKanatypeInsensitive (int i)
+               {
+                       // Note that IgnoreKanaType does not treat half-width
+                       // katakana as equivalent to full-width ones.
+
+                       // Thus, it is so simple ;-)
+                       return (0x3041 <= i && i <= 0x3094) ? i + 0x60 : i;
+               }
+
+               public static int ToWidthInsensitive (int i)
+               {
+                       return Normalization.ToWidthInsensitive (i);
+               }
        }
 }
 

Modified: 
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/create-char-mapping-source.cs
===================================================================
--- 
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/create-char-mapping-source.cs
  2005-04-25 06:19:02 UTC (rev 43532)
+++ 
branches/atsushi/mcs/class/corlib/Mono.Globalization.Unicode/create-char-mapping-source.cs
  2005-04-25 07:26:06 UTC (rev 43533)
@@ -63,6 +63,7 @@
                int [] mapIndex = new int [0x5000];
 
                ArrayList mappings = new ArrayList ();
+               ArrayList widthSensitives = new ArrayList ();
 
                public CharMappingGenerator ()
                {
@@ -166,6 +167,19 @@
                        Console.WriteLine ("    }");
                        Console.WriteLine ("    return 0;");
                        Console.WriteLine ("}");
+
+                       // WidthSensitives
+                       Console.WriteLine ("public static int 
ToWidthInsensitive (int i)");
+                       Console.WriteLine ("{");
+                       Console.WriteLine ("    if (i != 0x3000 && i < 
0xFF00)");
+                       Console.WriteLine ("            return i;");
+                       Console.WriteLine ("    switch (i) {");
+                       foreach (int i in widthSensitives)
+                               Console.WriteLine ("    case 0x{0:X}:", i);
+                       Console.WriteLine ("            return mappedChars 
[NormalizationTableUtil.MapIdx (i)];");
+                       Console.WriteLine ("    }");
+                       Console.WriteLine ("    return i;");
+                       Console.WriteLine ("}");
                }
 
                private void DumpArray (int [] array, int count, bool getCP)
@@ -207,6 +221,12 @@
                                if (combiningCategory.Length > 0)
                                        mappedCharsValue = canon.Substring 
(combiningCategory.Length + 2).Trim ();
                                if (mappedCharsValue.Length > 0) {
+                                       switch (combiningCategory) {
+                                       case "narrow":
+                                       case "wide":
+                                               widthSensitives.Add (cp);
+                                               break;
+                                       }
                                        mappings.Add (new CharMapping (cp,
                                                mappedCharCount, 
                                                combiningCategory.Length == 0));

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to