[uim-commit] r708 - branches/composer/scm

yamaken at freedesktop.org yamaken at freedesktop.org
Wed Feb 23 17:26:21 PST 2005


Author: yamaken
Date: 2005-02-23 17:26:18 -0800 (Wed, 23 Feb 2005)
New Revision: 708

Added:
   branches/composer/scm/japanese-nicola.scm
   branches/composer/scm/ng-japanese-azik.scm
   branches/composer/scm/ng-japanese-kana.scm
   branches/composer/scm/ng-japanese-romaji.scm
   branches/composer/scm/ng-japanese.scm
Modified:
   branches/composer/scm/Makefile.am
Log:
* This commit adds several Japanese composition tables for evmap

* scm/Makefile.am
  - (SCM_FILES): Add ng-japanese.scm, ng-japanese-romaji.scm,
    ng-japanese-kana.scm, japanese-nicola.scm and
    ng-japanese-azik.scm

* scm/ng-japanese.scm
  - (record ja-kana, record ja-kana-props): New record
  - (ja-extract-dedicated-ruleset, ja-define-dedicated-ruleset,
    ja-define-dedicated-rulesets): New procedure
  - (ja-kana-a, ja-kana-i, ja-kana-u, ja-kana-e, ja-kana-o,
    ja-kana-ka, ja-kana-ki, ja-kana-ku, ja-kana-ke, ja-kana-ko,
    ja-kana-kya, ja-kana-kyi, ja-kana-kyu, ja-kana-kye, ja-kana-kyo,
    ja-kana-ga, ja-kana-gi, ja-kana-gu, ja-kana-ge, ja-kana-go,
    ja-kana-gya, ja-kana-gyi, ja-kana-gyu, ja-kana-gye, ja-kana-gyo,
    ja-kana-xtsu): New variable for kana definition
  - (ja-kana-props-alist, ja-halfwidth-space-ruleset,
    ja-fullwidth-space-ruleset, ja-halfwidth-hyphen-ruleset,
    ja-fullwidth-hyphen-ruleset, ja-halfwidth-comma-ruleset,
    ja-fullwidth-comma-ruleset, ja-fullwidth-kana-comma-ruleset,
    ja-halfwidth-kana-comma-ruleset, ja-halfwidth-period-ruleset,
    ja-fullwidth-period-ruleset, ja-fullwidth-kana-period-ruleset,
    ja-halfwidth-kana-period-ruleset,
    ja-halfwidth-basic-symbol-ruleset,
    ja-fullwidth-basic-symbol-ruleset, ja-halfwidth-number-ruleset,
    ja-fullwidth-number-ruleset, ja-halfwidth-alphabet-ruleset,
    ja-fullwidth-alphabet-ruleset, ja-halfwidth-alphanumeric-ruleset,
    ja-fullwidth-alphanumeric-ruleset): New variable

* scm/ng-japanese-romaji.scm,
  - (ja-romaji-generate-double-consonant-ruleset): New procedure
  - (ja-romaji-double-consonant-alist,
    ja-romaji-double-consonant-guide-ruleset, ja-romaji-basic-ruleset,
    ja-romaji-basic-double-consonant-ruleset,
    ja-romaji-x-prefixed-small-kana-ruleset,
    ja-romaji-l-prefixed-small-kana-ruleset, ja-romaji-minor-ruleset,
    ja-romaji-minor-contracted-ruleset,
    ja-romaji-minor-contracted-double-consonant-ruleset,
    ja-romaji-skk-like-symbol-ruleset, ja-romaji-hepburn-ruleset,
    ja-romaji-hepburn-double-consonant-ruleset,
    ja-romaji-hepburn-n-ruleset, ja-romaji-hepburn-oh-ruleset,
    ja-romaji-hepburn-irregular-double-consonant-guide-ruleset,
    ja-romaji-hepburn-irregular-double-consonant-ruleset,
    ja-romaji-ruleset-name-list, ja-romaji-hiragana-ruleset,
    ja-romaji-katakana-ruleset, ja-romaji-halfkana-ruleset): New
    variable

* scm/ng-japanese-kana.scm,
  - (ja-kana-char-sensitive-core-ruleset, ja-kana-core-ruleset,
    ja-kana-ruleset-name-list, ja-kana-hiragana-ruleset,
    ja-kana-katakana-ruleset, ja-kana-halfkana-ruleset): New variable

* scm/japanese-nicola.scm,
  - (ja-nicola-core-ruleset,
    ja-nicola-postfixed-voiced-consonant-ruleset,
    ja-nicola-jp106-pseudo-thumb-shift-ruleset,
    ja-nicola-ruleset-name-list, ja-nicola-hiragana-ruleset,
    ja-nicola-katakana-ruleset, ja-nicola-halfkana-ruleset): New
    variable

* scm/ng-japanese-azik.scm,
  - (ja-azik-core-ruleset, ja-azik-ruleset-name-list,
    ja-azik-hiragana-ruleset, ja-azik-katakana-ruleset,
    ja-azik-halfkana-ruleset): New variable


Modified: branches/composer/scm/Makefile.am
===================================================================
--- branches/composer/scm/Makefile.am	2005-02-24 00:59:57 UTC (rev 707)
+++ branches/composer/scm/Makefile.am	2005-02-24 01:26:18 UTC (rev 708)
@@ -11,6 +11,8 @@
  uim-sh.scm custom.scm custom-rt.scm \
  manage-modules.scm \
  direct.scm \
+ ng-japanese.scm ng-japanese-romaji.scm ng-japanese-kana.scm \
+ japanese-nicola.scm ng-japanese-azik.scm \
  rk.scm \
  generic.scm generic-custom.scm generic-key-custom.scm \
  pyload.scm PY.scm pyunihan.scm pinyin-big5.scm \

Added: branches/composer/scm/japanese-nicola.scm
===================================================================
--- branches/composer/scm/japanese-nicola.scm	2005-02-24 00:59:57 UTC (rev 707)
+++ branches/composer/scm/japanese-nicola.scm	2005-02-24 01:26:18 UTC (rev 708)
@@ -0,0 +1,269 @@
+;;; japanese-nicola.scm: NICOLA composition rulesets for Japanese
+;;;
+;;; Copyright (c) 2005 uim Project http://uim.freedesktop.org/
+;;;
+;;; All rights reserved.
+;;;
+;;; Redistribution and use in source and binary forms, with or without
+;;; modification, are permitted provided that the following conditions
+;;; are met:
+;;; 1. Redistributions of source code must retain the above copyright
+;;;    notice, this list of conditions and the following disclaimer.
+;;; 2. Redistributions in binary form must reproduce the above copyright
+;;;    notice, this list of conditions and the following disclaimer in the
+;;;    documentation and/or other materials provided with the distribution.
+;;; 3. Neither the name of authors nor the names of its contributors
+;;;    may be used to endorse or promote products derived from this software
+;;;    without specific prior written permission.
+;;;
+;;; THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+;;; ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+;;; SUCH DAMAGE.
+;;;;
+
+;; See following pages for further information about the NICOLA kana
+;; input method
+;;
+;; Draft JIS specification (Japanese)
+;; http://nicola.sunicom.co.jp/spec/jisdraft.htm
+;;
+;; Specification (Japanese)
+;; http://nicola.sunicom.co.jp/spec/kikaku.htm
+;;
+;; Keyboard layout variations
+;; http://nicola.sunicom.co.jp/info2.html
+
+
+;; The key mappings coded in this file are transcribed from the NICOLA
+;; specifications by hand. No other copyrighted data are included.
+;;   -- YamaKen 2005-02-11
+
+;; This composition rulesets only sense strict simultaneous key
+;; presses. Timer-based compensations is not available.
+
+(require "ng-japanese.scm")
+(require "physical-key.scm")
+
+
+(define ja-nicola-core-ruleset
+  '(
+    ;; left hand side without shift
+    ((pkey_jp106_q)          ("¡£" "¡£" "Ž¡"))
+    ((pkey_jp106_w)          ("¤«" "¥«" "Ž¶"))
+    ((pkey_jp106_e)          ("¤¿" "¥¿" "ŽÀ"))
+    ((pkey_jp106_r)          ("¤³" "¥³" "Žº"))
+    ((pkey_jp106_t)          ("¤µ" "¥µ" "Ž»"))
+		               
+    ((pkey_jp106_a)          ("¤¦" "¥¦" "Ž³"))
+    ((pkey_jp106_s)          ("¤·" "¥·" "Ž¼"))
+    ((pkey_jp106_d)          ("¤Æ" "¥Æ" "ŽÃ"))
+    ((pkey_jp106_f)          ("¤±" "¥±" "Ž¹"))
+    ((pkey_jp106_g)          ("¤»" "¥»" "Ž¾"))
+		               
+    ((pkey_jp106_z)          ("¡¥" "¡¥" "."))
+    ((pkey_jp106_x)          ("¤Ò" "¥Ò" "ŽË"))
+    ((pkey_jp106_c)          ("¤¹" "¥¹" "Ž½"))
+    ((pkey_jp106_v)          ("¤Õ" "¥Õ" "ŽÌ"))
+    ((pkey_jp106_b)          ("¤Ø" "¥Ø" "ŽÍ"))
+
+    ;; right hand side without shift
+    ((pkey_jp106_y)          ("¤é" "¥é" "Ž×"))
+    ((pkey_jp106_u)          ("¤Á" "¥Á" "ŽÁ"))
+    ((pkey_jp106_i)          ("¤¯" "¥¯" "Ž¸"))
+    ((pkey_jp106_o)          ("¤Ä" "¥Ä" "ŽÂ"))
+    ((pkey_jp106_p)          ("¡¤" "¡¤" ","))
+    ((pkey_jp106_at)         ("¡¢" "¡¢" "Ž¤"))
+
+    ((pkey_jp106_h)          ("¤Ï" "¥Ï" "ŽÊ"))
+    ((pkey_jp106_j)          ("¤È" "¥È" "ŽÄ"))
+    ((pkey_jp106_k)          ("¤­" "¥­" "Ž·"))
+    ((pkey_jp106_l)          ("¤¤" "¥¤" "Ž²"))
+    ((pkey_jp106_semicolon)  ("¤ó" "¥ó" "ŽÝ"))
+			       
+    ((pkey_jp106_n)          ("¤á" "¥á" "ŽÒ"))
+    ((pkey_jp106_m)          ("¤½" "¥½" "Ž¿"))
+    ((pkey_jp106_comma)      ("¤Í" "¥Í" "ŽÈ"))
+    ((pkey_jp106_period)     ("¤Û" "¥Û" "ŽÎ"))
+    ((pkey_jp106_slash)      ("¡¦" "¡¦" "Ž¥"))
+
+    ;; left hand side with same-handed shift
+    (((chord lkey_Thumb_Shift_L pkey_jp106_q))          ("¤¡" "¥¡" "Ž§"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_w))          ("¤¨" "¥¨" "Ž´"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_e))          ("¤ê" "¥ê" "ŽØ"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_r))          ("¤ã" "¥ã" "Ž¬"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_t))          ("¤ì" "¥ì" "ŽÚ"))
+							 
+    (((chord lkey_Thumb_Shift_L pkey_jp106_a))          ("¤ò" "¥ò" "Ž¦"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_s))          ("¤¢" "¥¢" "Ž±"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_d))          ("¤Ê" "¥Ê" "ŽÅ"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_f))          ("¤å" "¥å" "Ž­"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_g))          ("¤â" "¥â" "ŽÓ"))
+							 
+    (((chord lkey_Thumb_Shift_L pkey_jp106_z))          ("¤¥" "¥¥" "Ž©"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_x))          ("¡¼" "¡¼" "Ž°"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_c))          ("¤í" "¥í" "ŽÛ"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_v))          ("¤ä" "¥ä" "ŽÔ"))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_b))          ("¤£" "¥£" "Ž¨"))
+							 
+    ;; right hand side with same-handed shift		 
+    (((chord lkey_Thumb_Shift_R pkey_jp106_y))          ("¤è" "¥è" "ŽÖ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_u))          ("¤Ë" "¥Ë" "ŽÆ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_i))          ("¤ë" "¥ë" "ŽÙ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_o))          ("¤Þ" "¥Þ" "ŽÏ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_p))          ("¤§" "¥§" "Žª"))
+    ;;(((chord lkey_Thumb_Shift_R pkey_jp106_at))         ("" "" ""))
+
+    (((chord lkey_Thumb_Shift_R pkey_jp106_h))          ("¤ß" "¥ß" "ŽÐ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_j))          ("¤ª" "¥ª" "Žµ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_k))          ("¤Î" "¥Î" "ŽÉ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_l))          ("¤ç" "¥ç" "Ž®"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_semicolon))  ("¤Ã" "¥Ã" "Ž¯"))
+							 
+    (((chord lkey_Thumb_Shift_R pkey_jp106_n))          ("¤Ì" "¥Ì" "ŽÇ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_m))          ("¤æ" "¥æ" "ŽÕ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_comma))      ("¤à" "¥à" "ŽÑ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_period))     ("¤ï" "¥ï" "ŽÜ"))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_slash))      ("¤©" "¥©" "Ž«"))
+
+    ;; left hand side with cross-shift
+    ;;(((chord lkey_Thumb_Shift_R pkey_jp106_q))          ("" "" ""))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_w))          ("¤¬" "¥¬" ("Ž¶" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_e))          ("¤À" "¥À" ("ŽÀ" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_r))          ("¤´" "¥´" ("Žº" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_t))          ("¤¶" "¥¶" ("Ž»" "ŽÞ")))
+							 
+    ;;(((chord lkey_Thumb_Shift_R pkey_jp106_a))   (("¤¦" "¡«") "¥ô" ("Ž³" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_s))          ("¤¸" "¥¸" ("Ž¼" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_d))          ("¤Ç" "¥Ç" ("ŽÃ" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_f))          ("¤²" "¥²" ("Ž¹" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_g))          ("¤¼" "¥¼" ("Ž¾" "ŽÞ")))
+							 
+    ;;(((chord lkey_Thumb_Shift_R pkey_jp106_z))          ("" "" ""))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_x))          ("¤Ó" "¥Ó" ("ŽË" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_c))          ("¤º" "¥º" ("Ž½" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_v))          ("¤Ö" "¥Ö" ("ŽÌ" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_R pkey_jp106_b))          ("¤Ù" "¥Ù" ("ŽÍ" "ŽÞ")))
+							 
+    ;; right hand side with cross-shift			 
+    (((chord lkey_Thumb_Shift_L pkey_jp106_y))          ("¤Ñ" "¥Ñ" ("ŽÊ" "Žß")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_u))          ("¤Â" "¥Â" ("ŽÁ" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_i))          ("¤°" "¥°" ("Ž¸" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_o))          ("¤Å" "¥Å" ("ŽÂ" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_p))          ("¤Ô" "¥Ô" ("ŽË" "Žß")))
+    ;;(((chord lkey_Thumb_Shift_L pkey_jp106_at))         ("" "" ""))
+
+    (((chord lkey_Thumb_Shift_L pkey_jp106_h))          ("¤Ð" "¥Ð" ("ŽÊ" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_j))          ("¤É" "¥É" ("ŽÄ" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_k))          ("¤®" "¥®" ("Ž·" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_l))          ("¤Ý" "¥Ý" ("ŽÎ" "Žß")))
+    ;;(((chord lkey_Thumb_Shift_L pkey_jp106_semicolon))  ("" "" ""))
+							 
+    (((chord lkey_Thumb_Shift_L pkey_jp106_n))          ("¤×" "¥×" ("ŽÌ" "Žß")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_m))          ("¤¾" "¥¾" ("Ž¿" "ŽÞ")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_comma))      ("¤Ú" "¥Ú" ("ŽÍ" "Žß")))
+    (((chord lkey_Thumb_Shift_L pkey_jp106_period))     ("¤Ü" "¥Ü" ("ŽÎ" "ŽÞ")))
+    ;;(((chord lkey_Thumb_Shift_L pkey_jp106_slash))      ("" "" ""))
+    ))
+
+(define ja-nicola-postfixed-voiced-consonant-ruleset
+  '(
+    ;; right hand side without shift
+    ((pkey_jp106_bracketleft) ("¡«" "" ""))
+
+    ;; right hand side with same-handed shift		 
+    (((chord lkey_Thumb_Shift_R pkey_jp106_bracketleft)) ("¡¬" "" ""))
+
+    ;; right hand side with cross-shift			 
+    ;;(((chord lkey_Thumb_Shift_R pkey_jp106_bracketleft)) ("" "" ""))
+
+    ;; left hand side without shift
+    ;;((pkey_jp106_q         pkey_jp106_bracketleft) ("¡£" "¡£" "Ž¡"))
+    ((pkey_jp106_w         pkey_jp106_bracketleft) ("¤¬" "¥¬" ("Ž¶" "ŽÞ")))
+    ((pkey_jp106_e         pkey_jp106_bracketleft) ("¤À" "¥À" ("ŽÀ" "ŽÞ")))
+    ((pkey_jp106_r         pkey_jp106_bracketleft) ("¤´" "¥´" ("Žº" "ŽÞ")))
+    ((pkey_jp106_t         pkey_jp106_bracketleft) ("¤¶" "¥¶" ("Ž»" "ŽÞ")))
+		           
+    ((pkey_jp106_a         pkey_jp106_bracketleft) (("¤¦" "¡«") "¥ô" ("Ž³" "ŽÞ")))
+    ((pkey_jp106_s         pkey_jp106_bracketleft) ("¤¸" "¥¸" ("Ž¼" "ŽÞ")))
+    ((pkey_jp106_d         pkey_jp106_bracketleft) ("¤Ç" "¥Ç" ("ŽÃ" "ŽÞ")))
+    ((pkey_jp106_f         pkey_jp106_bracketleft) ("¤²" "¥²" ("Ž¹" "ŽÞ")))
+    ((pkey_jp106_g         pkey_jp106_bracketleft) ("¤¼" "¥¼" ("Ž¾" "ŽÞ")))
+		           
+    ;;((pkey_jp106_z         pkey_jp106_bracketleft) ("¡¥" "¡¥" "."))
+    ((pkey_jp106_x         pkey_jp106_bracketleft) ("¤Ó" "¥Ó" ("ŽË" "ŽÞ")))
+    ((pkey_jp106_c         pkey_jp106_bracketleft) ("¤º" "¥º" ("Ž½" "ŽÞ")))
+    ((pkey_jp106_v         pkey_jp106_bracketleft) ("¤Ö" "¥Ö" ("ŽÌ" "ŽÞ")))
+    ((pkey_jp106_b         pkey_jp106_bracketleft) ("¤Ù" "¥Ù" ("ŽÍ" "ŽÞ")))
+
+    ;; right hand side without shift
+    ;;((pkey_jp106_y         pkey_jp106_bracketleft) ("¤é" "¥é" "Ž×"))
+    ((pkey_jp106_u         pkey_jp106_bracketleft) ("¤Â" "¥Â" ("ŽÁ" "ŽÞ")))
+    ((pkey_jp106_i         pkey_jp106_bracketleft) ("¤°" "¥°" ("Ž¸" "ŽÞ")))
+    ((pkey_jp106_o         pkey_jp106_bracketleft) ("¤Å" "¥Å" ("ŽÂ" "ŽÞ")))
+    ;;((pkey_jp106_p         pkey_jp106_bracketleft) ("¡¤" "¡¤" ","))
+    ;;((pkey_jp106_at        pkey_jp106_bracketleft) ("¡¢" "¡¢" "Ž¤"))
+
+    ((pkey_jp106_h         pkey_jp106_bracketleft) ("¤Ð" "¥Ð" ("ŽÊ" "ŽÞ")))
+    ((pkey_jp106_j         pkey_jp106_bracketleft) ("¤É" "¥É" ("ŽÄ" "ŽÞ")))
+    ((pkey_jp106_k         pkey_jp106_bracketleft) ("¤®" "¥®" ("Ž·" "ŽÞ")))
+    ;;((pkey_jp106_l         pkey_jp106_bracketleft) ("¤¤" "¥¤" "Ž²"))
+    ;;((pkey_jp106_semicolon pkey_jp106_bracketleft) ("¤ó" "¥ó" "ŽÝ"))
+			       
+    ;;((pkey_jp106_n         pkey_jp106_bracketleft) ("¤á" "¥á" "ŽÒ"))
+    ((pkey_jp106_m         pkey_jp106_bracketleft) ("¤¾" "¥¾" ("Ž¿" "ŽÞ")))
+    ;;((pkey_jp106_comma     pkey_jp106_bracketleft) ("¤Í" "¥Í" "ŽÈ"))
+    ((pkey_jp106_period    pkey_jp106_bracketleft) ("¤Ü" "¥Ü" ("ŽÎ" "ŽÞ")))
+    ;;((pkey_jp106_slash     pkey_jp106_bracketleft) ("¡¦" "¡¦" "Ž¥"))
+
+    ;; left hand side without shift
+    ((pkey_jp106_x      (chord lkey_Thumb_Shift_R pkey_jp106_bracketleft))
+                                                      ("¤Ô" "¥Ô" ("ŽË" "Žß")))
+    ((pkey_jp106_v      (chord lkey_Thumb_Shift_R pkey_jp106_bracketleft))
+                                                      ("¤×" "¥×" ("ŽÌ" "Žß")))
+    ((pkey_jp106_b      (chord lkey_Thumb_Shift_R pkey_jp106_bracketleft))
+                                                      ("¤Ú" "¥Ú" ("ŽÍ" "Žß")))
+
+    ;; right hand side without shift
+    ((pkey_jp106_h      (chord lkey_Thumb_Shift_R pkey_jp106_bracketleft))
+                                                      ("¤Ñ" "¥Ñ" ("ŽÊ" "Žß")))
+    ((pkey_jp106_period (chord lkey_Thumb_Shift_R pkey_jp106_bracketleft))
+                                                      ("¤Ý" "¥Ý" ("ŽÎ" "Žß")))
+    ))
+
+(define ja-nicola-jp106-pseudo-thumb-shift-ruleset
+  '((((lkey_Henkan   press   peek)) (($1 lkey_Thumb_Shift_R loopback)))
+    (((lkey_Henkan   release peek)) (($1 lkey_Thumb_Shift_R loopback)))
+    (((lkey_Muhenkan press   peek)) (($1 lkey_Thumb_Shift_L loopback)))
+    (((lkey_Muhenkan release peek)) (($1 lkey_Thumb_Shift_L loopback)))))
+
+(define ja-nicola-ruleset-name-list
+  '(core
+    postfixed-voiced-consonant))
+
+(ja-define-dedicated-rulesets 'ja-nicola ja-nicola-ruleset-name-list)
+
+(define ja-nicola-hiragana-ruleset
+  (append
+   ja-nicola-hiragana-core-ruleset
+   ja-nicola-hiragana-postfixed-voiced-consonant-ruleset
+   ja-nicola-jp106-pseudo-thumb-shift-ruleset))
+
+(define ja-nicola-katakana-ruleset
+  (append
+   ja-nicola-katakana-core-ruleset
+   ja-nicola-katakana-postfixed-voiced-consonant-ruleset
+   ja-nicola-jp106-pseudo-thumb-shift-ruleset))
+
+(define ja-nicola-halfkana-ruleset
+  (append
+   ja-nicola-halfkana-core-ruleset
+   ja-nicola-halfkana-postfixed-voiced-consonant-ruleset
+   ja-nicola-jp106-pseudo-thumb-shift-ruleset))

Added: branches/composer/scm/ng-japanese-azik.scm
===================================================================
--- branches/composer/scm/ng-japanese-azik.scm	2005-02-24 00:59:57 UTC (rev 707)
+++ branches/composer/scm/ng-japanese-azik.scm	2005-02-24 01:26:18 UTC (rev 708)
@@ -0,0 +1,610 @@
+;;; ng-japanese-azik.scm: AZIK composition rulesets for Japanese
+;;;
+;;; Copyright (c) 2003-2005 uim Project http://uim.freedesktop.org/
+;;;
+;;; All rights reserved.
+;;;
+;;; Redistribution and use in source and binary forms, with or without
+;;; modification, are permitted provided that the following conditions
+;;; are met:
+;;; 1. Redistributions of source code must retain the above copyright
+;;;    notice, this list of conditions and the following disclaimer.
+;;; 2. Redistributions in binary form must reproduce the above copyright
+;;;    notice, this list of conditions and the following disclaimer in the
+;;;    documentation and/or other materials provided with the distribution.
+;;; 3. Neither the name of authors nor the names of its contributors
+;;;    may be used to endorse or promote products derived from this software
+;;;    without specific prior written permission.
+;;;
+;;; THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+;;; ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+;;; SUCH DAMAGE.
+;;;;
+
+(require "ng-japanese-romaji.scm")
+
+
+(define ja-azik-core-ruleset
+  '(
+    ((":") ("¡¼" "¡¼" "Ž°"))
+    ((";") ("¤Ã" "¥Ã" "Ž¯"))
+    (("b" "d") (("¤Ù" "¤ó") ("¥Ù" "¥ó") ("ŽÍ" "ŽÞ" "ŽÝ")))
+    (("b" "g" "a") (("¤Ó" "¤ã") ("¥Ó" "¥ã") ("ŽË" "ŽÞ" "Ž¬")))
+    (("b" "g" "d") (("¤Ó" "¤§" "¤ó") ("¥Ó" "¥§" "¥ó") ("ŽË" "ŽÞ" "Žª" "ŽÝ")))
+    (("b" "g" "e") (("¤Ó" "¤§") ("¥Ó" "¥§") ("ŽË" "ŽÞ" "Žª")))
+    (("b" "g" "h") (("¤Ó" "¤å" "¤¦") ("¥Ó" "¥å" "¥¦") ("ŽË" "ŽÞ" "Ž­" "Ž³")))
+    (("b" "g" "j") (("¤Ó" "¤å" "¤ó") ("¥Ó" "¥å" "¥ó") ("ŽË" "ŽÞ" "Ž­" "ŽÝ")))
+    (("b" "g" "l") (("¤Ó" "¤ç" "¤ó") ("¥Ó" "¥ç" "¥ó") ("ŽË" "ŽÞ" "Ž®" "ŽÝ")))
+    (("b" "g" "n") (("¤Ó" "¤ã" "¤ó") ("¥Ó" "¥ã" "¥ó") ("ŽË" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("b" "g" "o") (("¤Ó" "¤ç") ("¥Ó" "¥ç") ("ŽË" "ŽÞ" "Ž®")))
+    (("b" "g" "p") (("¤Ó" "¤ç" "¤¦") ("¥Ó" "¥ç" "¥¦") ("ŽË" "ŽÞ" "Ž®" "Ž³")))
+    (("b" "g" "q") (("¤Ó" "¤ã" "¤¤") ("¥Ó" "¥ã" "¥¤") ("ŽË" "ŽÞ" "Ž¬" "Ž²")))
+    (("b" "g" "u") (("¤Ó" "¤å") ("¥Ó" "¥å") ("ŽË" "ŽÞ" "Ž­")))
+    (("b" "g" "w") (("¤Ó" "¤§" "¤¤") ("¥Ó" "¥§" "¥¤") ("ŽË" "ŽÞ" "Žª" "Ž²")))
+    (("b" "g" "z") (("¤Ó" "¤ã" "¤ó") ("¥Ó" "¥ã" "¥ó") ("ŽË" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("b" "h") (("¤Ö" "¤¦") ("¥Ö" "¥¦") ("ŽÌ" "ŽÞ" "Ž³")))
+    (("b" "j") (("¤Ö" "¤ó") ("¥Ö" "¥ó") ("ŽÌ" "ŽÞ" "ŽÝ")))
+    (("b" "k") (("¤Ó" "¤ó") ("¥Ó" "¥ó") ("ŽË" "ŽÞ" "ŽÝ")))
+    (("b" "l") (("¤Ü" "¤ó") ("¥Ü" "¥ó") ("ŽÎ" "ŽÞ" "ŽÝ")))
+    (("b" "n") (("¤Ð" "¤ó") ("¥Ð" "¥ó") ("ŽÊ" "ŽÞ" "ŽÝ")))
+    (("b" "p") (("¤Ü" "¤¦") ("¥Ü" "¥¦") ("ŽÎ" "ŽÞ" "Ž³")))
+    (("b" "q") (("¤Ð" "¤¤") ("¥Ð" "¥¤") ("ŽÊ" "ŽÞ" "Ž²")))
+    (("b" "t") (("¤Ó" "¤È") ("¥Ó" "¥È") ("ŽË" "ŽÞ" "ŽÄ")))
+    (("b" "w") (("¤Ù" "¤¤") ("¥Ù" "¥¤") ("ŽÍ" "ŽÞ" "Ž²")))
+    (("b" "y" "d") (("¤Ó" "¤§" "¤ó") ("¥Ó" "¥§" "¥ó") ("ŽË" "ŽÞ" "Žª" "ŽÝ")))
+    (("b" "y" "h") (("¤Ó" "¤å" "¤¦") ("¥Ó" "¥å" "¥¦") ("ŽË" "ŽÞ" "Ž­" "Ž³")))
+    (("b" "y" "j") (("¤Ó" "¤å" "¤ó") ("¥Ó" "¥å" "¥ó") ("ŽË" "ŽÞ" "Ž­" "ŽÝ")))
+    (("b" "y" "l") (("¤Ó" "¤ç" "¤ó") ("¥Ó" "¥ç" "¥ó") ("ŽË" "ŽÞ" "Ž®" "ŽÝ")))
+    (("b" "y" "n") (("¤Ó" "¤ã" "¤ó") ("¥Ó" "¥ã" "¥ó") ("ŽË" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("b" "y" "p") (("¤Ó" "¤ç" "¤¦") ("¥Ó" "¥ç" "¥¦") ("ŽË" "ŽÞ" "Ž®" "Ž³")))
+    (("b" "y" "q") (("¤Ó" "¤ã" "¤¤") ("¥Ó" "¥ã" "¥¤") ("ŽË" "ŽÞ" "Ž¬" "Ž²")))
+    (("b" "y" "w") (("¤Ó" "¤§" "¤¤") ("¥Ó" "¥§" "¥¤") ("ŽË" "ŽÞ" "Žª" "Ž²")))
+    (("b" "y" "z") (("¤Ó" "¤ã" "¤ó") ("¥Ó" "¥ã" "¥ó") ("ŽË" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("b" "z") (("¤Ð" "¤ó") ("¥Ð" "¥ó") ("ŽÊ" "ŽÞ" "ŽÝ")))
+    (("c" "a") (("¤Á" "¤ã") ("¥Á" "¥ã") ("ŽÁ" "Ž¬")))
+    (("c" "d") (("¤Á" "¤§" "¤ó") ("¥Á" "¥§" "¥ó") ("ŽÁ" "Žª" "ŽÝ")))
+    (("c" "e") (("¤Á" "¤§") ("¥Á" "¥§") ("ŽÁ" "Žª")))
+    (("c" "h") (("¤Á" "¤å" "¤¦") ("¥Á" "¥å" "¥¦") ("ŽÁ" "Ž­" "Ž³")))
+    (("c" "j") (("¤Á" "¤å" "¤ó") ("¥Á" "¥å" "¥ó") ("ŽÁ" "Ž­" "ŽÝ")))
+    (("c" "l") (("¤Á" "¤ç" "¤ó") ("¥Á" "¥ç" "¥ó") ("ŽÁ" "Ž®" "ŽÝ")))
+    (("c" "n") (("¤Á" "¤ã" "¤ó") ("¥Á" "¥ã" "¥ó") ("ŽÁ" "Ž¬" "ŽÝ")))
+    (("c" "o") (("¤Á" "¤ç") ("¥Á" "¥ç") ("ŽÁ" "Ž®")))
+    (("c" "p") (("¤Á" "¤ç" "¤¦") ("¥Á" "¥ç" "¥¦") ("ŽÁ" "Ž®" "Ž³")))
+    (("c" "q") (("¤Á" "¤ã" "¤¤") ("¥Á" "¥ã" "¥¤") ("ŽÁ" "Ž¬" "Ž²")))
+    (("c" "u") (("¤Á" "¤å") ("¥Á" "¥å") ("ŽÁ" "Ž­")))
+    (("c" "w") (("¤Á" "¤§" "¤¤") ("¥Á" "¥§" "¥¤") ("ŽÁ" "Žª" "Ž²")))
+    (("c" "y" "a") (("¤Á" "¤ã") ("¥Á" "¥ã") ("ŽÁ" "Ž¬")))
+    (("c" "y" "e") (("¤Á" "¤§") ("¥Á" "¥§") ("ŽÁ" "Žª")))
+    (("c" "y" "i") (("¤Á" "¤£") ("¥Á" "¥£") ("ŽÁ" "Ž¨")))
+    (("c" "y" "o") (("¤Á" "¤ç") ("¥Á" "¥ç") ("ŽÁ" "Ž®")))
+    (("c" "y" "u") (("¤Á" "¤å") ("¥Á" "¥å") ("ŽÁ" "Ž­")))
+    (("c" "z") (("¤Á" "¤ã" "¤ó") ("¥Á" "¥ã" "¥ó") ("ŽÁ" "Ž¬" "ŽÝ")))
+    (("d" "c" "i") (("¤Ç" "¤£") ("¥Ç" "¥£") ("ŽÃ" "ŽÞ" "Ž¨")))
+    (("d" "c" "u") (("¤É" "¤¥") ("¥É" "¥¥") ("ŽÄ" "ŽÞ" "Ž©")))
+    (("d" "d") (("¤Ç" "¤ó") ("¥Ç" "¥ó") ("ŽÃ" "ŽÞ" "ŽÝ")))
+    (("d" "f") ("¤Ç" "¥Ç" "ŽÃ" "ŽÞ"))
+    (("d" "g" "i") (("¤Ç" "¤£") ("¥Ç" "¥£") ("ŽÃ" "ŽÞ" "Ž¨")))
+    (("d" "g" "u") (("¤É" "¤¥") ("¥É" "¥¥") ("ŽÄ" "ŽÞ" "Ž©")))
+    (("d" "h") (("¤Å" "¤¦") ("¥Å" "¥¦") ("ŽÂ" "ŽÞ" "Ž³")))
+    (("d" "j") (("¤Å" "¤ó") ("¥Å" "¥ó") ("ŽÂ" "ŽÞ" "ŽÝ")))
+    (("d" "k") (("¤Â" "¤ó") ("¥Â" "¥ó") ("ŽÁ" "ŽÞ" "ŽÝ")))
+    (("d" "l") (("¤É" "¤ó") ("¥É" "¥ó") ("ŽÄ" "ŽÞ" "ŽÝ")))
+    (("d" "m") (("¤Ç" "¤â") ("¥Ç" "¥â") ("ŽÃ" "ŽÞ" "ŽÓ")))
+    (("d" "n") (("¤À" "¤ó") ("¥À" "¥ó") ("ŽÀ" "ŽÞ" "ŽÝ")))
+    (("d" "p") (("¤É" "¤¦") ("¥É" "¥¦") ("ŽÄ" "ŽÞ" "Ž³")))
+    (("d" "q") (("¤À" "¤¤") ("¥À" "¥¤") ("ŽÀ" "ŽÞ" "Ž²")))
+    (("d" "s") (("¤Ç" "¤¹") ("¥Ç" "¥¹") ("ŽÃ" "ŽÞ" "Ž½")))
+    (("d" "t") (("¤À" "¤Á") ("¥À" "¥Á") ("ŽÀ" "ŽÞ" "ŽÁ")))
+    (("d" "w") (("¤Ç" "¤¤") ("¥Ç" "¥¤") ("ŽÃ" "ŽÞ" "Ž²")))
+    (("d" "z") (("¤À" "¤ó") ("¥À" "¥ó") ("ŽÀ" "ŽÞ" "ŽÝ")))
+    (("f" "d") (("¤Õ" "¤§" "¤ó") ("¥Õ" "¥§" "¥ó") ("ŽÌ" "Žª" "ŽÝ")))
+    (("f" "h") (("¤Õ" "¤¦") ("¥Õ" "¥¦") ("ŽÌ" "Ž³")))
+    (("f" "j") (("¤Õ" "¤ó") ("¥Õ" "¥ó") ("ŽÌ" "ŽÝ")))
+    (("f" "k") (("¤Õ" "¤£" "¤ó") ("¥Õ" "¥£" "¥ó") ("ŽÌ" "Ž¨" "ŽÝ")))
+    (("f" "l") (("¤Õ" "¤©" "¤ó") ("¥Õ" "¥©" "¥ó") ("ŽÌ" "Ž«" "ŽÝ")))
+    (("f" "n") (("¤Õ" "¤¡" "¤ó") ("¥Õ" "¥¡" "¥ó") ("ŽÌ" "Ž§" "ŽÝ")))
+    (("f" "p") (("¤Õ" "¤©" "¡¼") ("¥Õ" "¥©" "¡¼") ("ŽÌ" "Ž«" "Ž°")))
+    (("f" "q") (("¤Õ" "¤¡" "¤¤") ("¥Õ" "¥¡" "¥¤") ("ŽÌ" "Ž§" "Ž²")))
+    (("f" "w") (("¤Õ" "¤§" "¤¤") ("¥Õ" "¥§" "¥¤") ("ŽÌ" "Žª" "Ž²")))
+    (("f" "z") (("¤Õ" "¤¡" "¤ó") ("¥Õ" "¥¡" "¥ó") ("ŽÌ" "Ž§" "ŽÝ")))
+    (("g" "d") (("¤²" "¤ó") ("¥²" "¥ó") ("Ž¹" "ŽÞ" "ŽÝ")))
+    (("g" "g" "a") (("¤®" "¤ã") ("¥®" "¥ã") ("Ž·" "ŽÞ" "Ž¬")))
+    (("g" "g" "u") (("¤®" "¤å") ("¥®" "¥å") ("Ž·" "ŽÞ" "Ž­")))
+    (("g" "g" "e") (("¤®" "¤§") ("¥®" "¥§") ("Ž·" "ŽÞ" "Žª")))
+    (("g" "g" "o") (("¤®" "¤ç") ("¥®" "¥ç") ("Ž·" "ŽÞ" "Ž®")))
+    (("g" "g" "z") (("¤®" "¤ã" "¤ó") ("¥®" "¥ã" "¥ó") ("Ž·" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("g" "g" "n") (("¤®" "¤ã" "¤ó") ("¥®" "¥ã" "¥ó") ("Ž·" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("g" "g" "j") (("¤®" "¤å" "¤ó") ("¥®" "¥å" "¥ó") ("Ž·" "ŽÞ" "Ž­" "ŽÝ")))
+    (("g" "g" "d") (("¤®" "¤§" "¤ó") ("¥®" "¥§" "¥ó") ("Ž·" "ŽÞ" "Žª" "ŽÝ")))
+    (("g" "g" "l") (("¤®" "¤ç" "¤ó") ("¥®" "¥ç" "¥ó") ("Ž·" "ŽÞ" "Ž®" "ŽÝ")))
+    (("g" "g" "q") (("¤®" "¤ã" "¤¤") ("¥®" "¥ã" "¥¤") ("Ž·" "ŽÞ" "Ž¬" "Ž²")))
+    (("g" "g" "h") (("¤®" "¤å" "¤¦") ("¥®" "¥å" "¥¦") ("Ž·" "ŽÞ" "Ž­" "Ž³")))
+    (("g" "g" "w") (("¤®" "¤§" "¤¤") ("¥®" "¥§" "¥¤") ("Ž·" "ŽÞ" "Žª" "Ž²")))
+    (("g" "g" "p") (("¤®" "¤ç" "¤¦") ("¥®" "¥ç" "¥¦") ("Ž·" "ŽÞ" "Ž®" "Ž³")))
+    (("g" "h") (("¤°" "¤¦") ("¥°" "¥¦") ("Ž¸" "ŽÞ" "Ž³")))
+    (("g" "j") (("¤°" "¤ó") ("¥°" "¥ó") ("Ž¸" "ŽÞ" "ŽÝ")))
+    (("g" "k") (("¤®" "¤ó") ("¥®" "¥ó") ("Ž·" "ŽÞ" "ŽÝ")))
+    (("g" "l") (("¤´" "¤ó") ("¥´" "¥ó") ("Žº" "ŽÞ" "ŽÝ")))
+    (("g" "n") (("¤¬" "¤ó") ("¥¬" "¥ó") ("Ž¶" "ŽÞ" "ŽÝ")))
+    (("g" "p") (("¤´" "¤¦") ("¥´" "¥¦") ("Žº" "ŽÞ" "Ž³")))
+    (("g" "q") (("¤¬" "¤¤") ("¥¬" "¥¤") ("Ž¶" "ŽÞ" "Ž²")))
+    (("g" "r") (("¤¬" "¤é") ("¥¬" "¥é") ("Ž¶" "ŽÞ" "Ž×")))
+    (("g" "t") (("¤´" "¤È") ("¥´" "¥È") ("Žº" "ŽÞ" "ŽÄ")))
+    (("g" "w") (("¤²" "¤¤") ("¥²" "¥¤") ("Ž¹" "ŽÞ" "Ž²")))
+    (("g" "w" "a") (("¤°" "¤¡") ("¥°" "¥¡") ("Ž¸" "ŽÞ" "Ž§")))
+    (("g" "w" "e") (("¤°" "¤§") ("¥°" "¥§") ("Ž¸" "ŽÞ" "Žª")))
+    (("g" "w" "i") (("¤°" "¤£") ("¥°" "¥£") ("Ž¸" "ŽÞ" "Ž¨")))
+    (("g" "w" "o") (("¤°" "¤©") ("¥°" "¥©") ("Ž¸" "ŽÞ" "Ž«")))
+    (("g" "w" "u") (("¤°" "¤¥") ("¥°" "¥¥") ("Ž¸" "ŽÞ" "Ž©")))
+    (("g" "y" "d") (("¤®" "¤§" "¤ó") ("¥®" "¥§" "¥ó") ("Ž·" "ŽÞ" "Žª" "ŽÝ")))
+    (("g" "y" "h") (("¤®" "¤å" "¤¦") ("¥®" "¥å" "¥¦") ("Ž·" "ŽÞ" "Ž­" "Ž³")))
+    (("g" "y" "j") (("¤®" "¤å" "¤ó") ("¥®" "¥å" "¥ó") ("Ž·" "ŽÞ" "Ž­" "ŽÝ")))
+    (("g" "y" "l") (("¤®" "¤ç" "¤ó") ("¥®" "¥ç" "¥ó") ("Ž·" "ŽÞ" "Ž®" "ŽÝ")))
+    (("g" "y" "n") (("¤®" "¤ã" "¤ó") ("¥®" "¥ã" "¥ó") ("Ž·" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("g" "y" "p") (("¤®" "¤ç" "¤¦") ("¥®" "¥ç" "¥¦") ("Ž·" "ŽÞ" "Ž®" "Ž³")))
+    (("g" "y" "q") (("¤®" "¤ã" "¤¤") ("¥®" "¥ã" "¥¤") ("Ž·" "ŽÞ" "Ž¬" "Ž²")))
+    (("g" "y" "w") (("¤®" "¤§" "¤¤") ("¥®" "¥§" "¥¤") ("Ž·" "ŽÞ" "Žª" "Ž²")))
+    (("g" "y" "z") (("¤®" "¤ã" "¤ó") ("¥®" "¥ã" "¥ó") ("Ž·" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("g" "z") (("¤¬" "¤ó") ("¥¬" "¥ó") ("Ž¶" "ŽÞ" "ŽÝ")))
+    (("h" "d") (("¤Ø" "¤ó") ("¥Ø" "¥ó") ("ŽÍ" "ŽÝ")))
+    (("h" "g" "a") (("¤Ò" "¤ã") ("¥Ò" "¥ã") ("ŽË" "Ž¬")))
+    (("h" "g" "d") (("¤Ò" "¤§" "¤ó") ("¥Ò" "¥§" "¥ó") ("ŽË" "Žª" "ŽÝ")))
+    (("h" "g" "e") (("¤Ò" "¤§") ("¥Ò" "¥§") ("ŽË" "Žª")))
+    (("h" "g" "h") (("¤Ò" "¤å" "¤¦") ("¥Ò" "¥å" "¥¦") ("ŽË" "Ž­" "Ž³")))
+    (("h" "g" "j") (("¤Ò" "¤å" "¤ó") ("¥Ò" "¥å" "¥ó") ("ŽË" "Ž­" "ŽÝ")))
+    (("h" "g" "l") (("¤Ò" "¤ç" "¤ó") ("¥Ò" "¥ç" "¥ó") ("ŽË" "Ž®" "ŽÝ")))
+    (("h" "g" "n") (("¤Ò" "¤ã" "¤ó") ("¥Ò" "¥ã" "¥ó") ("ŽË" "Ž¬" "ŽÝ")))
+    (("h" "g" "o") (("¤Ò" "¤ç") ("¥Ò" "¥ç") ("ŽË" "Ž®")))
+    (("h" "g" "p") (("¤Ò" "¤ç" "¤¦") ("¥Ò" "¥ç" "¥¦") ("ŽË" "Ž®" "Ž³")))
+    (("h" "g" "q") (("¤Ò" "¤ã" "¤¤") ("¥Ò" "¥ã" "¥¤") ("ŽË" "Ž¬" "Ž²")))
+    (("h" "g" "u") (("¤Ò" "¤å") ("¥Ò" "¥å") ("ŽË" "Ž­")))
+    (("h" "g" "w") (("¤Ò" "¤§" "¤¤") ("¥Ò" "¥§" "¥¤") ("ŽË" "Žª" "Ž²")))
+    (("h" "g" "z") (("¤Ò" "¤ã" "¤ó") ("¥Ò" "¥ã" "¥ó") ("ŽË" "Ž¬" "ŽÝ")))
+    (("h" "h") (("¤Õ" "¤¦") ("¥Õ" "¥¦") ("ŽÌ" "Ž³")))
+    (("h" "j") (("¤Õ" "¤ó") ("¥Õ" "¥ó") ("ŽÌ" "ŽÝ")))
+    (("h" "k") (("¤Ò" "¤ó") ("¥Ò" "¥ó") ("ŽË" "ŽÝ")))
+    (("h" "l") (("¤Û" "¤ó") ("¥Û" "¥ó") ("ŽÎ" "ŽÝ")))
+    (("h" "n") (("¤Ï" "¤ó") ("¥Ï" "¥ó") ("ŽÊ" "ŽÝ")))
+    (("h" "p") (("¤Û" "¤¦") ("¥Û" "¥¦") ("ŽÎ" "Ž³")))
+    (("h" "q") (("¤Ï" "¤¤") ("¥Ï" "¥¤") ("ŽÊ" "Ž²")))
+    (("h" "t") (("¤Ò" "¤È") ("¥Ò" "¥È") ("ŽË" "ŽÄ")))
+    (("h" "w") (("¤Ø" "¤¤") ("¥Ø" "¥¤") ("ŽÍ" "Ž²")))
+    (("h" "y" "d") (("¤Ò" "¤§" "¤ó") ("¥Ò" "¥§" "¥ó") ("ŽË" "Žª" "ŽÝ")))
+    (("h" "y" "h") (("¤Ò" "¤å" "¤¦") ("¥Ò" "¥å" "¥¦") ("ŽË" "Ž­" "Ž³")))
+    (("h" "y" "j") (("¤Ò" "¤å" "¤ó") ("¥Ò" "¥å" "¥ó") ("ŽË" "Ž­" "ŽÝ")))
+    (("h" "y" "l") (("¤Ò" "¤ç" "¤ó") ("¥Ò" "¥ç" "¥ó") ("ŽË" "Ž®" "ŽÝ")))
+    (("h" "y" "n") (("¤Ò" "¤ã" "¤ó") ("¥Ò" "¥ã" "¥ó") ("ŽË" "Ž¬" "ŽÝ")))
+    (("h" "y" "p") (("¤Ò" "¤ç" "¤¦") ("¥Ò" "¥ç" "¥¦") ("ŽË" "Ž®" "Ž³")))
+    (("h" "y" "q") (("¤Ò" "¤ã" "¤¤") ("¥Ò" "¥ã" "¥¤") ("ŽË" "Ž¬" "Ž²")))
+    (("h" "y" "w") (("¤Ò" "¤§" "¤¤") ("¥Ò" "¥§" "¥¤") ("ŽË" "Žª" "Ž²")))
+    (("h" "y" "z") (("¤Ò" "¤ã" "¤ó") ("¥Ò" "¥ã" "¥ó") ("ŽË" "Ž¬" "ŽÝ")))
+    (("h" "z") (("¤Ï" "¤ó") ("¥Ï" "¥ó") ("ŽÊ" "ŽÝ")))
+    (("j" "d") (("¤¸" "¤§" "¤ó") ("¥¸" "¥§" "¥ó") ("Ž¼" "ŽÞ" "Žª" "ŽÝ")))
+    (("j" "f") (("¤¸" "¤å") ("¥¸" "¥å") ("Ž¼" "ŽÞ" "Ž­")))
+    (("j" "h") (("¤¸" "¤å" "¤¦") ("¥¸" "¥å" "¥¦") ("Ž¼" "ŽÞ" "Ž­" "Ž³")))
+    (("j" "j") (("¤¸" "¤å" "¤ó") ("¥¸" "¥å" "¥ó") ("Ž¼" "ŽÞ" "Ž­" "ŽÝ")))
+    (("j" "k") (("¤¸" "¤ó") ("¥¸" "¥ó") ("Ž¼" "ŽÞ" "ŽÝ")))
+    (("j" "l") (("¤¸" "¤ç" "¤ó") ("¥¸" "¥ç" "¥ó") ("Ž¼" "ŽÞ" "Ž®" "ŽÝ")))
+    (("j" "n") (("¤¸" "¤ã" "¤ó") ("¥¸" "¥ã" "¥ó") ("Ž¼" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("j" "p") (("¤¸" "¤ç" "¤¦") ("¥¸" "¥ç" "¥¦") ("Ž¼" "ŽÞ" "Ž®" "Ž³")))
+    (("j" "q") (("¤¸" "¤ã" "¤¤") ("¥¸" "¥ã" "¥¤") ("Ž¼" "ŽÞ" "Ž¬" "Ž²")))
+    (("j" "w") (("¤¸" "¤§" "¤¤") ("¥¸" "¥§" "¥¤") ("Ž¼" "ŽÞ" "Žª" "Ž²")))
+    (("j" "y" "a") (("¤¸" "¤ã") ("¥¸" "¥ã") ("Ž¼" "ŽÞ" "Ž¬")))
+    (("j" "y" "e") (("¤¸" "¤§") ("¥¸" "¥§") ("Ž¼" "ŽÞ" "Žª")))
+    (("j" "y" "i") (("¤¸" "¤£") ("¥¸" "¥£") ("Ž¼" "ŽÞ" "Ž¨")))
+    (("j" "y" "o") (("¤¸" "¤ç") ("¥¸" "¥ç") ("Ž¼" "ŽÞ" "Ž®")))
+    (("j" "y" "u") (("¤¸" "¤å") ("¥¸" "¥å") ("Ž¼" "ŽÞ" "Ž­")))
+    (("j" "z") (("¤¸" "¤ã" "¤ó") ("¥¸" "¥ã" "¥ó") ("Ž¼" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("k" "d") (("¤±" "¤ó") ("¥±" "¥ó") ("Ž¹" "ŽÝ")))
+    (("k" "f") ("¤­" "¥­" "Ž·"))
+    (("k" "g" "a") (("¤­" "¤ã") ("¥­" "¥ã") ("Ž·" "Ž¬")))
+    (("k" "g" "d") (("¤­" "¤§" "¤ó") ("¥­" "¥§" "¥ó") ("Ž·" "Žª" "ŽÝ")))
+    (("k" "g" "e") (("¤­" "¤§") ("¥­" "¥§") ("Ž·" "Žª")))
+    (("k" "g" "h") (("¤­" "¤å" "¤¦") ("¥­" "¥å" "¥¦") ("Ž·" "Ž­" "Ž³")))
+    (("k" "g" "j") (("¤­" "¤å" "¤ó") ("¥­" "¥å" "¥ó") ("Ž·" "Ž­" "ŽÝ")))
+    (("k" "g" "l") (("¤­" "¤ç" "¤ó") ("¥­" "¥ç" "¥ó") ("Ž·" "Ž®" "ŽÝ")))
+    (("k" "g" "n") (("¤­" "¤ã" "¤ó") ("¥­" "¥ã" "¥ó") ("Ž·" "Ž¬" "ŽÝ")))
+    (("k" "g" "o") (("¤­" "¤ç") ("¥­" "¥ç") ("Ž·" "Ž®")))
+    (("k" "g" "p") (("¤­" "¤ç" "¤¦") ("¥­" "¥ç" "¥¦") ("Ž·" "Ž®" "Ž³")))
+    (("k" "g" "q") (("¤­" "¤ã" "¤¤") ("¥­" "¥ã" "¥¤") ("Ž·" "Ž¬" "Ž²")))
+    (("k" "g" "u") (("¤­" "¤å") ("¥­" "¥å") ("Ž·" "Ž­")))
+    (("k" "g" "w") (("¤­" "¤§" "¤¤") ("¥­" "¥§" "¥¤") ("Ž·" "Žª" "Ž²")))
+    (("k" "g" "z") (("¤­" "¤ã" "¤ó") ("¥­" "¥ã" "¥ó") ("Ž·" "Ž¬" "ŽÝ")))
+    (("k" "h") (("¤¯" "¤¦") ("¥¯" "¥¦") ("Ž¸" "Ž³")))
+    (("k" "j") (("¤¯" "¤ó") ("¥¯" "¥ó") ("Ž¸" "ŽÝ")))
+    (("k" "k") (("¤­" "¤ó") ("¥­" "¥ó") ("Ž·" "ŽÝ")))
+    (("k" "l") (("¤³" "¤ó") ("¥³" "¥ó") ("Žº" "ŽÝ")))
+    (("k" "m") (("¤«" "¤â") ("¥«" "¥â") ("Ž¶" "ŽÓ")))
+    (("k" "n") (("¤«" "¤ó") ("¥«" "¥ó") ("Ž¶" "ŽÝ")))
+    (("k" "p") (("¤³" "¤¦") ("¥³" "¥¦") ("Žº" "Ž³")))
+    (("k" "q") (("¤«" "¤¤") ("¥«" "¥¤") ("Ž¶" "Ž²")))
+    (("k" "r") (("¤«" "¤é") ("¥«" "¥é") ("Ž¶" "Ž×")))
+    (("k" "t") (("¤³" "¤È") ("¥³" "¥È") ("Žº" "ŽÄ")))
+    (("k" "w") (("¤±" "¤¤") ("¥±" "¥¤") ("Ž¹" "Ž²")))
+    (("k" "y" "d") (("¤­" "¤§" "¤ó") ("¥­" "¥§" "¥ó") ("Ž·" "Žª" "ŽÝ")))
+    (("k" "y" "h") (("¤­" "¤å" "¤¦") ("¥­" "¥å" "¥¦") ("Ž·" "Ž­" "Ž³")))
+    (("k" "y" "j") (("¤­" "¤å" "¤ó") ("¥­" "¥å" "¥ó") ("Ž·" "Ž­" "ŽÝ")))
+    (("k" "y" "l") (("¤­" "¤ç" "¤ó") ("¥­" "¥ç" "¥ó") ("Ž·" "Ž®" "ŽÝ")))
+    (("k" "y" "n") (("¤­" "¤ã" "¤ó") ("¥­" "¥ã" "¥ó") ("Ž·" "Ž¬" "ŽÝ")))
+    (("k" "y" "p") (("¤­" "¤ç" "¤¦") ("¥­" "¥ç" "¥¦") ("Ž·" "Ž®" "Ž³")))
+    (("k" "y" "q") (("¤­" "¤ã" "¤¤") ("¥­" "¥ã" "¥¤") ("Ž·" "Ž¬" "Ž²")))
+    (("k" "y" "w") (("¤­" "¤§" "¤¤") ("¥­" "¥§" "¥¤") ("Ž·" "Žª" "Ž²")))
+    (("k" "y" "z") (("¤­" "¤ã" "¤ó") ("¥­" "¥ã" "¥ó") ("Ž·" "Ž¬" "ŽÝ")))
+    (("k" "z") (("¤«" "¤ó") ("¥«" "¥ó") ("Ž¶" "ŽÝ")))
+    (("l" "a") ("¤¡" "¥¡" "Ž§"))
+    (("l" "e") ("¤§" "¥§" "Žª"))
+    (("l" "i") ("¤£" "¥£" "Ž¨"))
+    (("l" "o") ("¤©" "¥©" "Ž«"))
+    (("l" "u") ("¤¥" "¥¥" "Ž©"))
+    (("l" "y" "a") ("¤ã" "¥ã" "Ž¬"))
+    (("l" "y" "e") (("¤ê" "¤§") ("¥ê" "¥§") ("ŽØ" "Žª")))
+    (("l" "y" "i") (("¤ê" "¤£") ("¥ê" "¥£") ("ŽØ" "Ž¨")))
+    (("l" "y" "o") ("¤ç" "¥ç" "Ž®"))
+    (("l" "y" "u") ("¤å" "¥å" "Ž­"))
+    (("m" "d") (("¤á" "¤ó") ("¥á" "¥ó") ("ŽÒ" "ŽÝ")))
+    (("m" "g" "a") (("¤ß" "¤ã") ("¥ß" "¥ã") ("ŽÐ" "Ž¬")))
+    (("m" "g" "d") (("¤ß" "¤§" "¤ó") ("¥ß" "¥§" "¥ó") ("ŽÐ" "Žª" "ŽÝ")))
+    (("m" "g" "e") (("¤ß" "¤§") ("¥ß" "¥§") ("ŽÐ" "Žª")))
+    (("m" "g" "h") (("¤ß" "¤å" "¤¦") ("¥ß" "¥å" "¥¦") ("ŽÐ" "Ž­" "Ž³")))
+    (("m" "g" "j") (("¤ß" "¤å" "¤ó") ("¥ß" "¥å" "¥ó") ("ŽÐ" "Ž­" "ŽÝ")))
+    (("m" "g" "l") (("¤ß" "¤ç" "¤ó") ("¥ß" "¥ç" "¥ó") ("ŽÐ" "Ž®" "ŽÝ")))
+    (("m" "g" "n") (("¤ß" "¤ã" "¤ó") ("¥ß" "¥ã" "¥ó") ("ŽÐ" "Ž¬" "ŽÝ")))
+    (("m" "g" "o") (("¤ß" "¤ç") ("¥ß" "¥ç") ("ŽÐ" "Ž®")))
+    (("m" "g" "p") (("¤ß" "¤ç" "¤¦") ("¥ß" "¥ç" "¥¦") ("ŽÐ" "Ž®" "Ž³")))
+    (("m" "g" "q") (("¤ß" "¤ã" "¤¤") ("¥ß" "¥ã" "¥¤") ("ŽÐ" "Ž¬" "Ž²")))
+    (("m" "g" "u") (("¤ß" "¤å") ("¥ß" "¥å") ("ŽÐ" "Ž­")))
+    (("m" "g" "w") (("¤ß" "¤§" "¤¤") ("¥ß" "¥§" "¥¤") ("ŽÐ" "Žª" "Ž²")))
+    (("m" "g" "z") (("¤ß" "¤ã" "¤ó") ("¥ß" "¥ã" "¥ó") ("ŽÐ" "Ž¬" "ŽÝ")))
+    (("m" "f") ("¤à" "¥à" "ŽÑ"))
+    (("m" "h") (("¤à" "¤¦") ("¥à" "¥¦") ("ŽÑ" "Ž³")))
+    (("m" "j") (("¤à" "¤ó") ("¥à" "¥ó") ("ŽÑ" "ŽÝ")))
+    (("m" "k") (("¤ß" "¤ó") ("¥ß" "¥ó") ("ŽÐ" "ŽÝ")))
+    (("m" "l") (("¤â" "¤ó") ("¥â" "¥ó") ("ŽÓ" "ŽÝ")))
+    (("m" "n") (("¤â" "¤Î") ("¥â" "¥Î") ("ŽÓ" "ŽÉ")))
+    (("m" "p") (("¤â" "¤¦") ("¥â" "¥¦") ("ŽÓ" "Ž³")))
+    (("m" "q") (("¤Þ" "¤¤") ("¥Þ" "¥¤") ("ŽÏ" "Ž²")))
+    (("m" "s") (("¤Þ" "¤¹") ("¥Þ" "¥¹") ("ŽÏ" "Ž½")))
+    (("m" "t") (("¤Þ" "¤¿") ("¥Þ" "¥¿") ("ŽÏ" "ŽÀ")))
+    (("m" "w") (("¤á" "¤¤") ("¥á" "¥¤") ("ŽÒ" "Ž²")))
+    (("m" "y" "d") (("¤ß" "¤§" "¤ó") ("¥ß" "¥§" "¥ó") ("ŽÐ" "Žª" "ŽÝ")))
+    (("m" "y" "h") (("¤ß" "¤å" "¤¦") ("¥ß" "¥å" "¥¦") ("ŽÐ" "Ž­" "Ž³")))
+    (("m" "y" "j") (("¤ß" "¤å" "¤ó") ("¥ß" "¥å" "¥ó") ("ŽÐ" "Ž­" "ŽÝ")))
+    (("m" "y" "l") (("¤ß" "¤ç" "¤ó") ("¥ß" "¥ç" "¥ó") ("ŽÐ" "Ž®" "ŽÝ")))
+    (("m" "y" "n") (("¤ß" "¤ã" "¤ó") ("¥ß" "¥ã" "¥ó") ("ŽÐ" "Ž¬" "ŽÝ")))
+    (("m" "y" "p") (("¤ß" "¤ç" "¤¦") ("¥ß" "¥ç" "¥¦") ("ŽÐ" "Ž®" "Ž³")))
+    (("m" "y" "q") (("¤ß" "¤ã" "¤¤") ("¥ß" "¥ã" "¥¤") ("ŽÐ" "Ž¬" "Ž²")))
+    (("m" "y" "w") (("¤ß" "¤§" "¤¤") ("¥ß" "¥§" "¥¤") ("ŽÐ" "Žª" "Ž²")))
+    (("m" "y" "z") (("¤ß" "¤ã" "¤ó") ("¥ß" "¥ã" "¥ó") ("ŽÐ" "Ž¬" "ŽÝ")))
+    (("m" "z") (("¤Þ" "¤ó") ("¥Þ" "¥ó") ("ŽÏ" "ŽÝ")))
+    (("n") ("¤ó" "¥ó" "ŽÝ"))
+    (("n" "b") (("¤Í" "¤Ð") ("¥Í" "¥Ð") ("ŽÈ" "ŽÊ" "ŽÞ")))
+    (("n" "d") (("¤Í" "¤ó") ("¥Í" "¥ó") ("ŽÈ" "ŽÝ")))
+    (("n" "g" "a") (("¤Ë" "¤ã") ("¥Ë" "¥ã") ("ŽÆ" "Ž¬")))
+    (("n" "g" "d") (("¤Ë" "¤§" "¤ó") ("¥Ë" "¥§" "¥ó") ("ŽÆ" "Žª" "ŽÝ")))
+    (("n" "g" "e") (("¤Ë" "¤§") ("¥Ë" "¥§") ("ŽÆ" "Žª")))
+    (("n" "g" "h") (("¤Ë" "¤å" "¤¦") ("¥Ë" "¥å" "¥¦") ("ŽÆ" "Ž­" "Ž³")))
+    (("n" "g" "j") (("¤Ë" "¤å" "¤ó") ("¥Ë" "¥å" "¥ó") ("ŽÆ" "Ž­" "ŽÝ")))
+    (("n" "g" "l") (("¤Ë" "¤ç" "¤ó") ("¥Ë" "¥ç" "¥ó") ("ŽÆ" "Ž®" "ŽÝ")))
+    (("n" "g" "n") (("¤Ë" "¤ã" "¤ó") ("¥Ë" "¥ã" "¥ó") ("ŽÆ" "Ž¬" "ŽÝ")))
+    (("n" "g" "o") (("¤Ë" "¤ç") ("¥Ë" "¥ç") ("ŽÆ" "Ž®")))
+    (("n" "g" "p") (("¤Ë" "¤ç" "¤¦") ("¥Ë" "¥ç" "¥¦") ("ŽÆ" "Ž®" "Ž³")))
+    (("n" "g" "q") (("¤Ë" "¤ã" "¤¤") ("¥Ë" "¥ã" "¥¤") ("ŽÆ" "Ž¬" "Ž²")))
+    (("n" "g" "u") (("¤Ë" "¤å") ("¥Ë" "¥å") ("ŽÆ" "Ž­")))
+    (("n" "g" "w") (("¤Ë" "¤§" "¤¤") ("¥Ë" "¥§" "¥¤") ("ŽÆ" "Žª" "Ž²")))
+    (("n" "g" "z") (("¤Ë" "¤ã" "¤ó") ("¥Ë" "¥ã" "¥ó") ("ŽÆ" "Ž¬" "ŽÝ")))
+    (("n" "h") (("¤Ì" "¤¦") ("¥Ì" "¥¦") ("ŽÇ" "Ž³")))
+    (("n" "j") (("¤Ì" "¤ó") ("¥Ì" "¥ó") ("ŽÇ" "ŽÝ")))
+    (("n" "k") (("¤Ë" "¤ó") ("¥Ë" "¥ó") ("ŽÆ" "ŽÝ")))
+    (("n" "l") (("¤Î" "¤ó") ("¥Î" "¥ó") ("ŽÉ" "ŽÝ")))
+    (("n" "p") (("¤Î" "¤¦") ("¥Î" "¥¦") ("ŽÉ" "Ž³")))
+    (("n" "q") (("¤Ê" "¤¤") ("¥Ê" "¥¤") ("ŽÅ" "Ž²")))
+    (("n" "r") (("¤Ê" "¤ë") ("¥Ê" "¥ë") ("ŽÅ" "ŽÙ")))
+    (("n" "t") (("¤Ë" "¤Á") ("¥Ë" "¥Á") ("ŽÆ" "ŽÁ")))
+    (("n" "w") (("¤Í" "¤¤") ("¥Í" "¥¤") ("ŽÈ" "Ž²")))
+    (("n" "y" "d") (("¤Ë" "¤§" "¤ó") ("¥Ë" "¥§" "¥ó") ("ŽÆ" "Žª" "ŽÝ")))
+    (("n" "y" "h") (("¤Ë" "¤å" "¤¦") ("¥Ë" "¥å" "¥¦") ("ŽÆ" "Ž­" "Ž³")))
+    (("n" "y" "j") (("¤Ë" "¤å" "¤ó") ("¥Ë" "¥å" "¥ó") ("ŽÆ" "Ž­" "ŽÝ")))
+    (("n" "y" "l") (("¤Ë" "¤ç" "¤ó") ("¥Ë" "¥ç" "¥ó") ("ŽÆ" "Ž®" "ŽÝ")))
+    (("n" "y" "n") (("¤Ë" "¤ã" "¤ó") ("¥Ë" "¥ã" "¥ó") ("ŽÆ" "Ž¬" "ŽÝ")))
+    (("n" "y" "p") (("¤Ë" "¤ç" "¤¦") ("¥Ë" "¥ç" "¥¦") ("ŽÆ" "Ž®" "Ž³")))
+    (("n" "y" "q") (("¤Ë" "¤ã" "¤¤") ("¥Ë" "¥ã" "¥¤") ("ŽÆ" "Ž¬" "Ž²")))
+    (("n" "y" "w") (("¤Ë" "¤§" "¤¤") ("¥Ë" "¥§" "¥¤") ("ŽÆ" "Žª" "Ž²")))
+    (("n" "y" "z") (("¤Ë" "¤ã" "¤ó") ("¥Ë" "¥ã" "¥ó") ("ŽÆ" "Ž¬" "ŽÝ")))
+    (("n" "z") (("¤Ê" "¤ó") ("¥Ê" "¥ó") ("ŽÅ" "ŽÝ")))
+    (("p" "d") (("¤Ú" "¤ó") ("¥Ú" "¥ó") ("ŽÍ" "Žß" "ŽÝ")))
+    (("p" "g" "a") (("¤Ô" "¤ã") ("¥Ô" "¥ã") ("ŽË" "Žß" "Ž¬")))
+    (("p" "g" "d") (("¤Ô" "¤§" "¤ó") ("¥Ô" "¥§" "¥ó") ("ŽË" "Žß" "Žª" "ŽÝ")))
+    (("p" "g" "e") (("¤Ô" "¤§") ("¥Ô" "¥§") ("ŽË" "Žß" "Žª")))
+    (("p" "g" "h") (("¤Ô" "¤å" "¤¦") ("¥Ô" "¥å" "¥¦") ("ŽË" "Žß" "Ž­" "Ž³")))
+    (("p" "g" "j") (("¤Ô" "¤å" "¤ó") ("¥Ô" "¥å" "¥ó") ("ŽË" "Žß" "Ž­" "ŽÝ")))
+    (("p" "g" "l") (("¤Ô" "¤ç" "¤ó") ("¥Ô" "¥ç" "¥ó") ("ŽË" "Žß" "Ž®" "ŽÝ")))
+    (("p" "g" "n") (("¤Ô" "¤ã" "¤ó") ("¥Ô" "¥ã" "¥ó") ("ŽË" "Žß" "Ž¬" "ŽÝ")))
+    (("p" "g" "o") (("¤Ô" "¤ç") ("¥Ô" "¥ç") ("ŽË" "Žß" "Ž®")))
+    (("p" "g" "p") (("¤Ô" "¤ç" "¤¦") ("¥Ô" "¥ç" "¥¦") ("ŽË" "Žß" "Ž®" "Ž³")))
+    (("p" "g" "q") (("¤Ô" "¤ã" "¤¤") ("¥Ô" "¥ã" "¥¤") ("ŽË" "Žß" "Ž¬" "Ž²")))
+    (("p" "g" "u") (("¤Ô" "¤å") ("¥Ô" "¥å") ("ŽË" "Žß" "Ž­")))
+    (("p" "g" "w") (("¤Ô" "¤§" "¤¤") ("¥Ô" "¥§" "¥¤") ("ŽË" "Žß" "Žª" "Ž²")))
+    (("p" "g" "z") (("¤Ô" "¤ã" "¤ó") ("¥Ô" "¥ã" "¥ó") ("ŽË" "Žß" "Ž¬" "ŽÝ")))
+    (("p" "h") (("¤×" "¤¦") ("¥×" "¥¦") ("ŽÌ" "Žß" "Ž³")))
+    (("p" "j") (("¤×" "¤ó") ("¥×" "¥ó") ("ŽÌ" "Žß" "ŽÝ")))
+    (("p" "k") (("¤Ô" "¤ó") ("¥Ô" "¥ó") ("ŽË" "Žß" "ŽÝ")))
+    (("p" "l") (("¤Ý" "¤ó") ("¥Ý" "¥ó") ("ŽÎ" "Žß" "ŽÝ")))
+    (("p" "n") (("¤Ñ" "¤ó") ("¥Ñ" "¥ó") ("ŽÊ" "Žß" "ŽÝ")))
+    (("p" "p") (("¤Ý" "¤¦") ("¥Ý" "¥¦") ("ŽÎ" "Žß" "Ž³")))
+    (("p" "q") (("¤Ñ" "¤¤") ("¥Ñ" "¥¤") ("ŽÊ" "Žß" "Ž²")))
+    (("p" "w") (("¤Ú" "¤¤") ("¥Ú" "¥¤") ("ŽÍ" "Žß" "Ž²")))
+    (("p" "y" "d") (("¤Ô" "¤§" "¤ó") ("¥Ô" "¥§" "¥ó") ("ŽË" "Žß" "Žª" "ŽÝ")))
+    (("p" "y" "h") (("¤Ô" "¤å" "¤¦") ("¥Ô" "¥å" "¥¦") ("ŽË" "Žß" "Ž­" "Ž³")))
+    (("p" "y" "j") (("¤Ô" "¤å" "¤ó") ("¥Ô" "¥å" "¥ó") ("ŽË" "Žß" "Ž­" "ŽÝ")))
+    (("p" "y" "l") (("¤Ô" "¤ç" "¤ó") ("¥Ô" "¥ç" "¥ó") ("ŽË" "Žß" "Ž®" "ŽÝ")))
+    (("p" "y" "n") (("¤Ô" "¤ã" "¤ó") ("¥Ô" "¥ã" "¥ó") ("ŽË" "Žß" "Ž¬" "ŽÝ")))
+    (("p" "y" "p") (("¤Ô" "¤ç" "¤¦") ("¥Ô" "¥ç" "¥¦") ("ŽË" "Žß" "Ž®" "Ž³")))
+    (("p" "y" "q") (("¤Ô" "¤ã" "¤¤") ("¥Ô" "¥ã" "¥¤") ("ŽË" "Žß" "Ž¬" "Ž²")))
+    (("p" "y" "w") (("¤Ô" "¤§" "¤¤") ("¥Ô" "¥§" "¥¤") ("ŽË" "Žß" "Žª" "Ž²")))
+    (("p" "y" "z") (("¤Ô" "¤ã" "¤ó") ("¥Ô" "¥ã" "¥ó") ("ŽË" "Žß" "Ž¬" "ŽÝ")))
+    (("p" "z") (("¤Ñ" "¤ó") ("¥Ñ" "¥ó") ("ŽÊ" "Žß" "ŽÝ")))
+    (("q") ("¤ó" "¥ó" "ŽÝ"))
+    (("r" "d") (("¤ì" "¤ó") ("¥ì" "¥ó") ("ŽÚ" "ŽÝ")))
+    (("r" "g" "a") (("¤ê" "¤ã") ("¥ê" "¥ã") ("ŽØ" "Ž¬")))
+    (("r" "g" "d") (("¤ê" "¤§" "¤ó") ("¥ê" "¥§" "¥ó") ("ŽØ" "Žª" "ŽÝ")))
+    (("r" "g" "e") (("¤ê" "¤§") ("¥ê" "¥§") ("ŽØ" "Žª")))
+    (("r" "g" "h") (("¤ê" "¤å" "¤¦") ("¥ê" "¥å" "¥¦") ("ŽØ" "Ž­" "Ž³")))
+    (("r" "g" "j") (("¤ê" "¤å" "¤ó") ("¥ê" "¥å" "¥ó") ("ŽØ" "Ž­" "ŽÝ")))
+    (("r" "g" "l") (("¤ê" "¤ç" "¤ó") ("¥ê" "¥ç" "¥ó") ("ŽØ" "Ž®" "ŽÝ")))
+    (("r" "g" "n") (("¤ê" "¤ã" "¤ó") ("¥ê" "¥ã" "¥ó") ("ŽØ" "Ž¬" "ŽÝ")))
+    (("r" "g" "o") (("¤ê" "¤ç") ("¥ê" "¥ç") ("ŽØ" "Ž®")))
+    (("r" "g" "p") (("¤ê" "¤ç" "¤¦") ("¥ê" "¥ç" "¥¦") ("ŽØ" "Ž®" "Ž³")))
+    (("r" "g" "q") (("¤ê" "¤ã" "¤¤") ("¥ê" "¥ã" "¥¤") ("ŽØ" "Ž¬" "Ž²")))
+    (("r" "g" "u") (("¤ê" "¤å") ("¥ê" "¥å") ("ŽØ" "Ž­")))
+    (("r" "g" "w") (("¤ê" "¤§" "¤¤") ("¥ê" "¥§" "¥¤") ("ŽØ" "Žª" "Ž²")))
+    (("r" "g" "z") (("¤ê" "¤ã" "¤ó") ("¥ê" "¥ã" "¥ó") ("ŽØ" "Ž¬" "ŽÝ")))
+    (("r" "h") (("¤ë" "¤¦") ("¥ë" "¥¦") ("ŽÙ" "Ž³")))
+    (("r" "j") (("¤ë" "¤ó") ("¥ë" "¥ó") ("ŽÙ" "ŽÝ")))
+    (("r" "k") (("¤ê" "¤ó") ("¥ê" "¥ó") ("ŽØ" "ŽÝ")))
+    (("r" "l") (("¤í" "¤ó") ("¥í" "¥ó") ("ŽÛ" "ŽÝ")))
+    (("r" "n") (("¤é" "¤ó") ("¥é" "¥ó") ("Ž×" "ŽÝ")))
+    (("r" "p") (("¤í" "¤¦") ("¥í" "¥¦") ("ŽÛ" "Ž³")))
+    (("r" "q") (("¤é" "¤¤") ("¥é" "¥¤") ("Ž×" "Ž²")))
+    (("r" "r") (("¤é" "¤ì") ("¥é" "¥ì") ("Ž×" "ŽÚ")))
+    (("r" "w") (("¤ì" "¤¤") ("¥ì" "¥¤") ("ŽÚ" "Ž²")))
+    (("r" "y" "d") (("¤ê" "¤§" "¤ó") ("¥ê" "¥§" "¥ó") ("ŽØ" "Žª" "ŽÝ")))
+    (("r" "y" "h") (("¤ê" "¤å" "¤¦") ("¥ê" "¥å" "¥¦") ("ŽØ" "Ž­" "Ž³")))
+    (("r" "y" "j") (("¤ê" "¤å" "¤ó") ("¥ê" "¥å" "¥ó") ("ŽØ" "Ž­" "ŽÝ")))
+    (("r" "y" "l") (("¤ê" "¤ç" "¤ó") ("¥ê" "¥ç" "¥ó") ("ŽØ" "Ž®" "ŽÝ")))
+    (("r" "y" "n") (("¤ê" "¤ã" "¤ó") ("¥ê" "¥ã" "¥ó") ("ŽØ" "Ž¬" "ŽÝ")))
+    (("r" "y" "p") (("¤ê" "¤ç" "¤¦") ("¥ê" "¥ç" "¥¦") ("ŽØ" "Ž®" "Ž³")))
+    (("r" "y" "q") (("¤ê" "¤ã" "¤¤") ("¥ê" "¥ã" "¥¤") ("ŽØ" "Ž¬" "Ž²")))
+    (("r" "y" "w") (("¤ê" "¤§" "¤¤") ("¥ê" "¥§" "¥¤") ("ŽØ" "Žª" "Ž²")))
+    (("r" "y" "z") (("¤ê" "¤ã" "¤ó") ("¥ê" "¥ã" "¥ó") ("ŽØ" "Ž¬" "ŽÝ")))
+    (("r" "z") (("¤é" "¤ó") ("¥é" "¥ó") ("Ž×" "ŽÝ")))
+    (("s" "d") (("¤»" "¤ó") ("¥»" "¥ó") ("Ž¾" "ŽÝ")))
+    (("s" "f") (("¤µ" "¤¤") ("¥µ" "¥¤") ("Ž»" "Ž²")))
+    (("s" "h") (("¤¹" "¤¦") ("¥¹" "¥¦") ("Ž½" "Ž³")))
+    (("s" "j") (("¤¹" "¤ó") ("¥¹" "¥ó") ("Ž½" "ŽÝ")))
+    (("s" "k") (("¤·" "¤ó") ("¥·" "¥ó") ("Ž¼" "ŽÝ")))
+    (("s" "l") (("¤½" "¤ó") ("¥½" "¥ó") ("Ž¿" "ŽÝ")))
+    (("s" "n") (("¤µ" "¤ó") ("¥µ" "¥ó") ("Ž»" "ŽÝ")))
+    (("s" "p") (("¤½" "¤¦") ("¥½" "¥¦") ("Ž¿" "Ž³")))
+    (("s" "q") (("¤µ" "¤¤") ("¥µ" "¥¤") ("Ž»" "Ž²")))
+    (("s" "r") (("¤¹" "¤ë") ("¥¹" "¥ë") ("Ž½" "ŽÙ")))
+    (("s" "s") (("¤»" "¤¤") ("¥»" "¥¤") ("Ž¾" "Ž²")))
+    (("s" "t") (("¤·" "¤¿") ("¥·" "¥¿") ("Ž¼" "ŽÀ")))
+    (("s" "w") (("¤»" "¤¤") ("¥»" "¥¤") ("Ž¾" "Ž²")))
+    (("s" "y" "d") (("¤·" "¤§" "¤ó") ("¥·" "¥§" "¥ó") ("Ž¼" "Žª" "ŽÝ")))
+    (("s" "y" "h") (("¤·" "¤å" "¤¦") ("¥·" "¥å" "¥¦") ("Ž¼" "Ž­" "Ž³")))
+    (("s" "y" "j") (("¤·" "¤å" "¤ó") ("¥·" "¥å" "¥ó") ("Ž¼" "Ž­" "ŽÝ")))
+    (("s" "y" "l") (("¤·" "¤ç" "¤ó") ("¥·" "¥ç" "¥ó") ("Ž¼" "Ž®" "ŽÝ")))
+    (("s" "y" "n") (("¤·" "¤ã" "¤ó") ("¥·" "¥ã" "¥ó") ("Ž¼" "Ž¬" "ŽÝ")))
+    (("s" "y" "p") (("¤·" "¤ç" "¤¦") ("¥·" "¥ç" "¥¦") ("Ž¼" "Ž®" "Ž³")))
+    (("s" "y" "q") (("¤·" "¤ã" "¤¤") ("¥·" "¥ã" "¥¤") ("Ž¼" "Ž¬" "Ž²")))
+    (("s" "y" "w") (("¤·" "¤§" "¤¤") ("¥·" "¥§" "¥¤") ("Ž¼" "Žª" "Ž²")))
+    (("s" "y" "z") (("¤·" "¤ã" "¤ó") ("¥·" "¥ã" "¥ó") ("Ž¼" "Ž¬" "ŽÝ")))
+    (("s" "z") (("¤µ" "¤ó") ("¥µ" "¥ó") ("Ž»" "ŽÝ")))
+    (("t" "b") (("¤¿" "¤Ó") ("¥¿" "¥Ó") ("ŽÀ" "ŽË" "ŽÞ")))
+    (("t" "c" "h") ("¤Ã" "¥Ã" "Ž¯"))
+    (("t" "d") (("¤Æ" "¤ó") ("¥Æ" "¥ó") ("ŽÃ" "ŽÝ")))
+    (("t" "g" "i") (("¤Æ" "¤£") ("¥Æ" "¥£") ("ŽÃ" "Ž¨")))
+    (("t" "g" "u") (("¤È" "¤¥") ("¥È" "¥¥") ("ŽÄ" "Ž©")))
+    (("t" "h") (("¤Ä" "¤¦") ("¥Ä" "¥¦") ("ŽÂ" "Ž³")))
+    (("t" "j") (("¤Ä" "¤ó") ("¥Ä" "¥ó") ("ŽÂ" "ŽÝ")))
+    (("t" "k") (("¤Á" "¤ó") ("¥Á" "¥ó") ("ŽÁ" "ŽÝ")))
+    (("t" "l") (("¤È" "¤ó") ("¥È" "¥ó") ("ŽÄ" "ŽÝ")))
+    (("t" "m") (("¤¿" "¤á") ("¥¿" "¥á") ("ŽÀ" "ŽÒ")))
+    (("t" "n") (("¤¿" "¤ó") ("¥¿" "¥ó") ("ŽÀ" "ŽÝ")))
+    (("t" "p") (("¤È" "¤¦") ("¥È" "¥¦") ("ŽÄ" "Ž³")))
+    (("t" "q") (("¤¿" "¤¤") ("¥¿" "¥¤") ("ŽÀ" "Ž²")))
+    (("t" "r") (("¤¿" "¤é") ("¥¿" "¥é") ("ŽÀ" "Ž×")))
+    (("t" "s" "a") (("¤Ä" "¤¡") ("¥Ä" "¥¡") ("ŽÂ" "Ž§")))
+    (("t" "s" "e") (("¤Ä" "¤§") ("¥Ä" "¥§") ("ŽÂ" "Žª")))
+    (("t" "s" "i") (("¤Ä" "¤£") ("¥Ä" "¥£") ("ŽÂ" "Ž¨")))
+    (("t" "s" "o") (("¤Ä" "¤©") ("¥Ä" "¥©") ("ŽÂ" "Ž«")))
+    (("t" "t") (("¤¿" "¤Á") ("¥¿" "¥Á") ("ŽÀ" "ŽÁ")))
+    (("t" "w") (("¤Æ" "¤¤") ("¥Æ" "¥¤") ("ŽÃ" "Ž²")))
+    (("t" "y" "d") (("¤Á" "¤§" "¤ó") ("¥Á" "¥§" "¥ó") ("ŽÁ" "Žª" "ŽÝ")))
+    (("t" "y" "h") (("¤Á" "¤å" "¤¦") ("¥Á" "¥å" "¥¦") ("ŽÁ" "Ž­" "Ž³")))
+    (("t" "y" "j") (("¤Á" "¤å" "¤ó") ("¥Á" "¥å" "¥ó") ("ŽÁ" "Ž­" "ŽÝ")))
+    (("t" "y" "l") (("¤Á" "¤ç" "¤ó") ("¥Á" "¥ç" "¥ó") ("ŽÁ" "Ž®" "ŽÝ")))
+    (("t" "y" "n") (("¤Á" "¤ã" "¤ó") ("¥Á" "¥ã" "¥ó") ("ŽÁ" "Ž¬" "ŽÝ")))
+    (("t" "y" "p") (("¤Á" "¤ç" "¤¦") ("¥Á" "¥ç" "¥¦") ("ŽÁ" "Ž®" "Ž³")))
+    (("t" "y" "q") (("¤Á" "¤ã" "¤¤") ("¥Á" "¥ã" "¥¤") ("ŽÁ" "Ž¬" "Ž²")))
+    (("t" "y" "w") (("¤Á" "¤§" "¤¤") ("¥Á" "¥§" "¥¤") ("ŽÁ" "Žª" "Ž²")))
+    (("t" "y" "z") (("¤Á" "¤ã" "¤ó") ("¥Á" "¥ã" "¥ó") ("ŽÁ" "Ž¬" "ŽÝ")))
+    (("t" "z") (("¤¿" "¤ó") ("¥¿" "¥ó") ("ŽÀ" "ŽÝ")))
+    (("w" "d") (("¤¦" "¤§" "¤ó") ("¥¦" "¥§" "¥ó") ("Ž³" "Žª" "ŽÝ")))
+    (("w" "k") (("¤¦" "¤£" "¤ó") ("¥¦" "¥£" "¥ó") ("Ž³" "Ž¨" "ŽÝ")))
+    (("w" "l") (("¤¦" "¤©" "¤ó") ("¥¦" "¥©" "¥ó") ("Ž³" "Ž«" "ŽÝ")))
+    (("w" "n") (("¤ï" "¤ó") ("¥ï" "¥ó") ("ŽÜ" "ŽÝ")))
+    (("w" "p") (("¤¦" "¤©" "¡¼") ("¥¦" "¥©" "¡¼") ("Ž³" "Ž«" "Ž°")))
+    (("w" "q") (("¤ï" "¤¤") ("¥ï" "¥¤") ("ŽÜ" "Ž²")))
+    (("w" "r") (("¤ï" "¤ì") ("¥ï" "¥ì") ("ŽÜ" "ŽÚ")))
+    (("w" "s" "o") (("¤¦" "¤©") ("¥¦" "¥©") ("Ž³" "Ž«")))
+    (("w" "t") (("¤ï" "¤¿") ("¥ï" "¥¿") ("ŽÜ" "ŽÀ")))
+    (("w" "u") ("¤¦" "¥¦" "Ž³"))
+    (("w" "z") (("¤ï" "¤ó") ("¥ï" "¥ó") ("ŽÜ" "ŽÝ")))
+    (("x" "a") (("¤·" "¤ã") ("¥·" "¥ã") ("Ž¼" "Ž¬")))
+    (("x" "d") (("¤·" "¤§" "¤ó") ("¥·" "¥§" "¥ó") ("Ž¼" "Žª" "ŽÝ")))
+    (("x" "e") (("¤·" "¤§") ("¥·" "¥§") ("Ž¼" "Žª")))
+    (("x" "h") (("¤·" "¤å" "¤¦") ("¥·" "¥å" "¥¦") ("Ž¼" "Ž­" "Ž³")))
+    (("x" "j") (("¤·" "¤å" "¤ó") ("¥·" "¥å" "¥ó") ("Ž¼" "Ž­" "ŽÝ")))
+    (("x" "l") (("¤·" "¤ç" "¤ó") ("¥·" "¥ç" "¥ó") ("Ž¼" "Ž®" "ŽÝ")))
+    (("x" "n") (("¤·" "¤ã" "¤ó") ("¥·" "¥ã" "¥ó") ("Ž¼" "Ž¬" "ŽÝ")))
+    (("x" "o") (("¤·" "¤ç") ("¥·" "¥ç") ("Ž¼" "Ž®")))
+    (("x" "p") (("¤·" "¤ç" "¤¦") ("¥·" "¥ç" "¥¦") ("Ž¼" "Ž®" "Ž³")))
+    (("x" "q") (("¤·" "¤ã" "¤¤") ("¥·" "¥ã" "¥¤") ("Ž¼" "Ž¬" "Ž²")))
+    (("x" "u") (("¤·" "¤å") ("¥·" "¥å") ("Ž¼" "Ž­")))
+    (("x" "x" "a") ("¤¡" "¥¡" "Ž§"))
+    (("x" "x" "i") ("¤£" "¥£" "Ž¨"))
+    (("x" "x" "u") ("¤¥" "¥¥" "Ž©"))
+    (("x" "x" "e") ("¤§" "¥§" "Žª"))
+    (("x" "x" "o") ("¤©" "¥©" "Ž«"))
+    (("x" "x" "w" "a") ("¤î" "¥î" "ŽÜ"))
+    (("x" "x" "w" "i") ("¤ð" "¥ð" "Ž¨"))
+    (("x" "x" "w" "e") ("¤ñ" "¥ñ" "Žª"))
+    (("x" "x" "h") ("¢«" "¢«" ""))
+    (("x" "x" "j") ("¢­" "¢­" ""))
+    (("x" "x" "k") ("¢¬" "¢¬" ""))
+    (("x" "x" "l") ("¢ª" "¢ª" ""))
+    (("x" "w") (("¤·" "¤§" "¤¤") ("¥·" "¥§" "¥¤") ("Ž¼" "Žª" "Ž²")))
+    (("x" "z") (("¤·" "¤ã" "¤ó") ("¥·" "¥ã" "¥ó") ("Ž¼" "Ž¬" "ŽÝ")))
+    (("y" "e") (("¤¤" "¤§") ("¥¤" "¥§") ("Ž²" "Žª")))
+    (("y" "h") (("¤æ" "¤¦") ("¥æ" "¥¦") ("ŽÕ" "Ž³")))
+    (("y" "i") ("¤¤" "¥¤" "Ž²"))
+    (("y" "j") (("¤æ" "¤ó") ("¥æ" "¥ó") ("ŽÕ" "ŽÝ")))
+    (("y" "l") (("¤è" "¤ó") ("¥è" "¥ó") ("ŽÖ" "ŽÝ")))
+    (("y" "n") (("¤ä" "¤ó") ("¥ä" "¥ó") ("ŽÔ" "ŽÝ")))
+    (("y" "p") (("¤è" "¤¦") ("¥è" "¥¦") ("ŽÖ" "Ž³")))
+    (("y" "q") (("¤ä" "¤¤") ("¥ä" "¥¤") ("ŽÔ" "Ž²")))
+    (("y" "r") (("¤è" "¤ë") ("¥è" "¥ë") ("ŽÖ" "ŽÙ")))
+    (("y" "w") (("¤¤" "¤§" "¤¤") ("¥¤" "¥§" "¥¤") ("Ž²" "Žª" "Ž²")))
+    (("y" "z") (("¤ä" "¤ó") ("¥ä" "¥ó") ("ŽÔ" "ŽÝ")))
+    (("z" "c") ("¤¶" "¥¶" "Ž»" "ŽÞ"))
+    (("z" "d") (("¤¼" "¤ó") ("¥¼" "¥ó") ("Ž¾" "ŽÞ" "ŽÝ")))
+    (("z" "f") ("¤¼" "¥¼" "Ž¾" "ŽÞ"))
+    (("z" "g" "a") (("¤¸" "¤ã") ("¥¸" "¥ã") ("Ž¼" "ŽÞ" "Ž¬")))
+    (("z" "g" "d") (("¤¸" "¤§" "¤ó") ("¥¸" "¥§" "¥ó") ("Ž¼" "ŽÞ" "Žª" "ŽÝ")))
+    (("z" "g" "e") (("¤¸" "¤§") ("¥¸" "¥§") ("Ž¼" "ŽÞ" "Žª")))
+    (("z" "g" "h") (("¤¸" "¤å" "¤¦") ("¥¸" "¥å" "¥¦") ("Ž¼" "ŽÞ" "Ž­" "Ž³")))
+    (("z" "g" "j") (("¤¸" "¤å" "¤ó") ("¥¸" "¥å" "¥ó") ("Ž¼" "ŽÞ" "Ž­" "ŽÝ")))
+    (("z" "g" "l") (("¤¸" "¤ç" "¤ó") ("¥¸" "¥ç" "¥ó") ("Ž¼" "ŽÞ" "Ž®" "ŽÝ")))
+    (("z" "g" "n") (("¤¸" "¤ã" "¤ó") ("¥¸" "¥ã" "¥ó") ("Ž¼" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("z" "g" "o") (("¤¸" "¤ç") ("¥¸" "¥ç") ("Ž¼" "ŽÞ" "Ž®")))
+    (("z" "g" "p") (("¤¸" "¤ç" "¤¦") ("¥¸" "¥ç" "¥¦") ("Ž¼" "ŽÞ" "Ž®" "Ž³")))
+    (("z" "g" "q") (("¤¸" "¤ã" "¤¤") ("¥¸" "¥ã" "¥¤") ("Ž¼" "ŽÞ" "Ž¬" "Ž²")))
+    (("z" "g" "u") (("¤¸" "¤å") ("¥¸" "¥å") ("Ž¼" "ŽÞ" "Ž­")))
+    (("z" "g" "w") (("¤¸" "¤§" "¤¤") ("¥¸" "¥§" "¥¤") ("Ž¼" "ŽÞ" "Žª" "Ž²")))
+    (("z" "g" "z") (("¤¸" "¤ã" "¤ó") ("¥¸" "¥ã" "¥ó") ("Ž¼" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("z" "h") (("¤º" "¤¦") ("¥º" "¥¦") ("Ž½" "ŽÞ" "Ž³")))
+    (("z" "j") (("¤º" "¤ó") ("¥º" "¥ó") ("Ž½" "ŽÞ" "ŽÝ")))
+    (("z" "k") (("¤¸" "¤ó") ("¥¸" "¥ó") ("Ž¼" "ŽÞ" "ŽÝ")))
+    (("z" "l") (("¤¾" "¤ó") ("¥¾" "¥ó") ("Ž¿" "ŽÞ" "ŽÝ")))
+    (("z" "n") (("¤¶" "¤ó") ("¥¶" "¥ó") ("Ž»" "ŽÞ" "ŽÝ")))
+    (("z" "p") (("¤¾" "¤¦") ("¥¾" "¥¦") ("Ž¿" "ŽÞ" "Ž³")))
+    (("z" "q") (("¤¶" "¤¤") ("¥¶" "¥¤") ("Ž»" "ŽÞ" "Ž²")))
+    (("z" "r") (("¤¶" "¤ë") ("¥¶" "¥ë") ("Ž»" "ŽÞ" "ŽÙ")))
+    (("z" "v") (("¤¶" "¤¤") ("¥¶" "¥¤") ("Ž»" "ŽÞ" "Ž²")))
+    (("z" "w") (("¤¼" "¤¤") ("¥¼" "¥¤") ("Ž¾" "ŽÞ" "Ž²")))
+    (("z" "x") (("¤¼" "¤¤") ("¥¼" "¥¤") ("Ž¾" "ŽÞ" "Ž²")))
+    (("z" "y" "d") (("¤¸" "¤§" "¤ó") ("¥¸" "¥§" "¥ó") ("Ž¼" "ŽÞ" "Žª" "ŽÝ")))
+    (("z" "y" "h") (("¤¸" "¤å" "¤¦") ("¥¸" "¥å" "¥¦") ("Ž¼" "ŽÞ" "Ž­" "Ž³")))
+    (("z" "y" "j") (("¤¸" "¤å" "¤ó") ("¥¸" "¥å" "¥ó") ("Ž¼" "ŽÞ" "Ž­" "ŽÝ")))
+    (("z" "y" "l") (("¤¸" "¤ç" "¤ó") ("¥¸" "¥ç" "¥ó") ("Ž¼" "ŽÞ" "Ž®" "ŽÝ")))
+    (("z" "y" "n") (("¤¸" "¤ã" "¤ó") ("¥¸" "¥ã" "¥ó") ("Ž¼" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("z" "y" "p") (("¤¸" "¤ç" "¤¦") ("¥¸" "¥ç" "¥¦") ("Ž¼" "ŽÞ" "Ž®" "Ž³")))
+    (("z" "y" "q") (("¤¸" "¤ã" "¤¤") ("¥¸" "¥ã" "¥¤") ("Ž¼" "ŽÞ" "Ž¬" "Ž²")))
+    (("z" "y" "w") (("¤¸" "¤§" "¤¤") ("¥¸" "¥§" "¥¤") ("Ž¼" "ŽÞ" "Žª" "Ž²")))
+    (("z" "y" "z") (("¤¸" "¤ã" "¤ó") ("¥¸" "¥ã" "¥ó") ("Ž¼" "ŽÞ" "Ž¬" "ŽÝ")))
+    (("z" "z") (("¤¶" "¤ó") ("¥¶" "¥ó") ("Ž»" "ŽÞ" "ŽÝ")))
+    ))
+
+(define ja-azik-ruleset-name-list
+  '(core))
+
+(ja-define-dedicated-rulesets 'ja-azik ja-azik-ruleset-name-list)
+
+
+;; may be replaced with more efficient way for ruleset composition
+(define ja-azik-hiragana-ruleset
+  (append
+   ja-fullwidth-space-ruleset
+   ja-fullwidth-kana-period-ruleset
+   ja-fullwidth-kana-comma-ruleset
+   ja-fullwidth-basic-symbol-ruleset
+   ja-fullwidth-number-ruleset
+   ja-fullwidth-alphabet-ruleset
+   ja-romaji-hiragana-basic-ruleset
+   ;;ja-romaji-hiragana-double-consonant-guide-ruleset
+   ;;ja-romaji-hiragana-basic-double-consonant-ruleset
+   ;;ja-romaji-hiragana-x-prefixed-small-kana-ruleset
+   ;;ja-romaji-hiragana-l-prefixed-small-kana-ruleset
+   ;;ja-romaji-hiragana-minor-ruleset
+   ;;ja-romaji-hiragana-minor-contracted-ruleset
+   ;;ja-romaji-hiragana-minor-contracted-double-consonant-ruleset
+   ;;ja-romaji-hiragana-hepburn-ruleset
+   ;;ja-romaji-hiragana-hepburn-double-consonant-ruleset
+   ;;ja-romaji-hiragana-hepburn-n-ruleset
+   ;;ja-romaji-hiragana-hepburn-oh-ruleset
+   ;;ja-romaji-hiragana-hepburn-irregular-double-consonant-guide-ruleset
+   ;;ja-romaji-hiragana-hepburn-irregular-double-consonant-ruleset
+   ;;ja-romaji-hiragana-skk-like-symbol-ruleset
+   ja-azik-hiragana-basic-ruleset
+   ))
+
+(define ja-azik-katakana-ruleset
+  (append
+   ja-fullwidth-space-ruleset
+   ja-fullwidth-kana-period-ruleset
+   ja-fullwidth-kana-comma-ruleset
+   ja-fullwidth-basic-symbol-ruleset
+   ja-fullwidth-number-ruleset
+   ja-fullwidth-alphabet-ruleset
+   ja-romaji-katakana-basic-ruleset
+   ;;ja-romaji-katakana-double-consonant-guide-ruleset
+   ;;ja-romaji-katakana-basic-double-consonant-ruleset
+   ;;ja-romaji-katakana-x-prefixed-small-kana-ruleset
+   ;;ja-romaji-katakana-l-prefixed-small-kana-ruleset
+   ;;ja-romaji-katakana-minor-ruleset
+   ;;ja-romaji-katakana-minor-contracted-ruleset
+   ;;ja-romaji-katakana-minor-contracted-double-consonant-ruleset
+   ;;ja-romaji-katakana-hepburn-ruleset
+   ;;ja-romaji-katakana-hepburn-double-consonant-ruleset
+   ;;ja-romaji-katakana-hepburn-n-ruleset
+   ;;ja-romaji-katakana-hepburn-oh-ruleset
+   ;;ja-romaji-katakana-hepburn-irregular-double-consonant-guide-ruleset
+   ;;ja-romaji-katakana-hepburn-irregular-double-consonant-ruleset
+   ;;ja-romaji-katakana-skk-like-symbol-ruleset
+   ja-azik-katakana-basic-ruleset
+   ))
+
+(define ja-azik-halfkana-ruleset
+  (append
+   ja-halfwidth-space-ruleset
+   ja-halfwidth-kana-period-ruleset
+   ja-halfwidth-kana-comma-ruleset
+   ja-halfwidth-basic-symbol-ruleset
+   ja-halfwidth-number-ruleset
+   ja-halfwidth-alphabet-ruleset
+   ja-romaji-halfkana-basic-ruleset
+   ;;ja-romaji-halfkana-double-consonant-guide-ruleset
+   ;;ja-romaji-halfkana-basic-double-consonant-ruleset
+   ;;ja-romaji-halfkana-x-prefixed-small-kana-ruleset
+   ;;ja-romaji-halfkana-l-prefixed-small-kana-ruleset
+   ;;ja-romaji-halfkana-minor-ruleset
+   ;;ja-romaji-halfkana-minor-contracted-ruleset
+   ;;ja-romaji-halfkana-minor-contracted-double-consonant-ruleset
+   ;;ja-romaji-halfkana-hepburn-ruleset
+   ;;ja-romaji-halfkana-hepburn-double-consonant-ruleset
+   ;;ja-romaji-halfkana-hepburn-n-ruleset
+   ;;ja-romaji-halfkana-hepburn-oh-ruleset
+   ;;ja-romaji-halfkana-hepburn-irregular-double-consonant-guide-ruleset
+   ;;ja-romaji-halfkana-hepburn-irregular-double-consonant-ruleset
+   ;;ja-romaji-halfkana-skk-like-symbol-ruleset
+   ja-azik-halfkana-basic-ruleset
+   ))

Added: branches/composer/scm/ng-japanese-kana.scm
===================================================================
--- branches/composer/scm/ng-japanese-kana.scm	2005-02-24 00:59:57 UTC (rev 707)
+++ branches/composer/scm/ng-japanese-kana.scm	2005-02-24 01:26:18 UTC (rev 708)
@@ -0,0 +1,271 @@
+;;; ng-japanese-kana.scm: Kana composition rulesets for Japanese
+;;;
+;;; Copyright (c) 2004-2005 uim Project http://uim.freedesktop.org/
+;;;
+;;; All rights reserved.
+;;;
+;;; Redistribution and use in source and binary forms, with or without
+;;; modification, are permitted provided that the following conditions
+;;; are met:
+;;; 1. Redistributions of source code must retain the above copyright
+;;;    notice, this list of conditions and the following disclaimer.
+;;; 2. Redistributions in binary form must reproduce the above copyright
+;;;    notice, this list of conditions and the following disclaimer in the
+;;;    documentation and/or other materials provided with the distribution.
+;;; 3. Neither the name of authors nor the names of its contributors
+;;;    may be used to endorse or promote products derived from this software
+;;;    without specific prior written permission.
+;;;
+;;; THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+;;; ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+;;; SUCH DAMAGE.
+;;;;
+
+
+(require "ng-japanese.scm")
+(require "physical-key.scm")
+
+
+;; character sensitive version
+(define ja-kana-char-sensitive-core-ruleset
+  '(
+    (("3")      ("¤¢" "¥¢" "Ž±"))
+    (("e")      ("¤¤" "¥¤" "Ž²"))
+    (("4")      ("¤¦" "¥¦" "Ž³"))
+    (("5")      ("¤¨" "¥¨" "Ž´"))
+    (("6")      ("¤ª" "¥ª" "Žµ"))
+
+    (("t")      ("¤«" "¥«" "Ž¶"))
+    (("g")      ("¤­" "¥­" "Ž·"))
+    (("h")      ("¤¯" "¥¯" "Ž¸"))
+    ((":")      ("¤±" "¥±" "Ž¹"))
+    (("b")      ("¤³" "¥³" "Žº"))
+
+    (("x")      ("¤µ" "¥µ" "Ž»"))
+    (("d")      ("¤·" "¥·" "Ž¼"))
+    (("r")      ("¤¹" "¥¹" "Ž½"))
+    (("p")      ("¤»" "¥»" "Ž¾"))
+    (("c")      ("¤½" "¥½" "Ž¿"))
+
+    (("q")      ("¤¿" "¥¿" "ŽÀ"))
+    (("a")      ("¤Á" "¥Á" "ŽÁ"))
+    (("z")      ("¤Ä" "¥Ä" "ŽÂ"))
+    (("w")      ("¤Æ" "¥Æ" "ŽÃ"))
+    (("s")      ("¤È" "¥È" "ŽÄ"))
+
+    (("u")      ("¤Ê" "¥Ê" "ŽÅ"))
+    (("i")      ("¤Ë" "¥Ë" "ŽÆ"))
+    (("1")      ("¤Ì" "¥Ì" "ŽÇ"))
+    ((",")      ("¤Í" "¥Í" "ŽÈ"))
+    (("k")      ("¤Î" "¥Î" "ŽÉ"))
+
+    (("f")      ("¤Ï" "¥Ï" "ŽÊ"))
+    (("v")      ("¤Ò" "¥Ò" "ŽË"))
+    (("2")      ("¤Õ" "¥Õ" "ŽÌ"))
+    (("^")      ("¤Ø" "¥Ø" "ŽÍ"))
+    (("-")      ("¤Û" "¥Û" "ŽÎ"))
+
+    (("j")      ("¤Þ" "¥Þ" "ŽÏ"))
+    (("n")      ("¤ß" "¥ß" "ŽÐ"))
+    (("]")      ("¤à" "¥à" "ŽÑ"))  ;; be careful
+    (("/")      ("¤á" "¥á" "ŽÒ"))
+    (("m")      ("¤â" "¥â" "ŽÓ"))
+
+    (("7")      ("¤ä" "¥ä" "ŽÔ"))
+    (("8")      ("¤æ" "¥æ" "ŽÕ"))
+    (("9")      ("¤è" "¥è" "ŽÖ"))
+
+    (("o")      ("¤é" "¥é" "Ž×"))
+    (("l")      ("¤ê" "¥ê" "ŽØ"))
+    ((".")      ("¤ë" "¥ë" "ŽÙ"))
+    ((";")      ("¤ì" "¥ì" "ŽÚ"))
+    (("\\")     ("¤í" "¥í" "ŽÛ"))  ;; be careful
+
+    (("0")      ("¤ï" "¥ï" "ŽÜ"))
+    (("~")      ("¤ò" "¥ò" "Ž¦"))  ;; not proper key
+    (("y")      ("¤ó" "¥ó" "ŽÝ"))
+
+    (("4" "@")  (("¤¦" "¡«") "¥ô" ("Ž³" "ŽÞ")))
+
+    (("t" "@")  ("¤¬" "¥¬" ("Ž¶" "ŽÞ")))
+    (("g" "@")  ("¤®" "¥®" ("Ž·" "ŽÞ")))
+    (("h" "@")  ("¤°" "¥°" ("Ž¸" "ŽÞ")))
+    ((":" "@")  ("¤²" "¥²" ("Ž¹" "ŽÞ")))
+    (("b" "@")  ("¤´" "¥´" ("Žº" "ŽÞ")))
+
+    (("x" "@")  ("¤¶" "¥¶" ("Ž»" "ŽÞ")))
+    (("d" "@")  ("¤¸" "¥¸" ("Ž¼" "ŽÞ")))
+    (("r" "@")  ("¤º" "¥º" ("Ž½" "ŽÞ")))
+    (("p" "@")  ("¤¼" "¥¼" ("Ž¾" "ŽÞ")))
+    (("c" "@")  ("¤¾" "¥¾" ("Ž¿" "ŽÞ")))
+
+    (("q" "@")  ("¤À" "¥À" ("ŽÀ" "ŽÞ")))
+    (("a" "@")  ("¤Â" "¥Â" ("ŽÁ" "ŽÞ")))
+    (("z" "@")  ("¤Å" "¥Å" ("ŽÂ" "ŽÞ")))
+    (("w" "@")  ("¤Ç" "¥Ç" ("ŽÃ" "ŽÞ")))
+    (("s" "@")  ("¤É" "¥É" ("ŽÄ" "ŽÞ")))
+
+    (("f" "@")  ("¤Ð" "¥Ð" ("ŽÊ" "ŽÞ")))
+    (("v" "@")  ("¤Ó" "¥Ó" ("ŽË" "ŽÞ")))
+    (("2" "@")  ("¤Ö" "¥Ö" ("ŽÌ" "ŽÞ")))
+    (("^" "@")  ("¤Ù" "¥Ù" ("ŽÍ" "ŽÞ")))
+    (("-" "@")  ("¤Ü" "¥Ü" ("ŽÎ" "ŽÞ")))
+
+    (("f" "[")  ("¤Ñ" "¥Ñ" ("ŽÊ" "Žß")))
+    (("v" "[")  ("¤Ô" "¥Ô" ("ŽË" "Žß")))
+    (("2" "[")  ("¤×" "¥×" ("ŽÌ" "Žß")))
+    (("^" "[")  ("¤Ú" "¥Ú" ("ŽÍ" "Žß")))
+    (("-" "[")  ("¤Ý" "¥Ý" ("ŽÎ" "Žß")))
+
+    (("#")      ("¤¡" "¥¡" "Ž§"))
+    (("E")      ("¤£" "¥£" "Ž¨"))
+    (("$")      ("¤¥" "¥¥" "Ž©"))
+    (("%")      ("¤§" "¥§" "Žª"))
+    (("&")      ("¤©" "¥©" "Ž«"))
+
+    (("'")      ("¤ã" "¥ã" "Ž¬"))
+    (("(")      ("¤å" "¥å" "Ž­"))
+    ((")")      ("¤ç" "¥ç" "Ž®"))
+
+    (("Z")      ("¤Ã" "¥Ã" "Ž¯"))
+
+    (("@")      ("¡«" "¡«" "ŽÞ"))
+    (("[")      ("¡¬" "¡¬" "Žß"))
+    (("|")      ("¡¼" "¡¼" "Ž°"))  ;; be careful, not proper key
+    ((">")      ("¡£" "¡£" "Ž¡"))
+    (("<")      ("¡¢" "¡¢" "Ž¤"))
+    (("?")      ("¡¦" "¡¦" "Ž¥"))
+    (("{")      ("¡Ö" "¡Ö" "Ž¢"))
+    (("}")      ("¡×" "¡×" "Ž£"))
+    ))
+
+;; physical key sensitive version
+(define ja-kana-core-ruleset
+  '(
+    ((pkey_jp106_3)            ("¤¢" "¥¢" "Ž±"))
+    ((pkey_jp106_e)            ("¤¤" "¥¤" "Ž²"))
+    ((pkey_jp106_4)            ("¤¦" "¥¦" "Ž³"))
+    ((pkey_jp106_5)            ("¤¨" "¥¨" "Ž´"))
+    ((pkey_jp106_6)            ("¤ª" "¥ª" "Žµ"))
+
+    ((pkey_jp106_t)            ("¤«" "¥«" "Ž¶"))
+    ((pkey_jp106_g)            ("¤­" "¥­" "Ž·"))
+    ((pkey_jp106_h)            ("¤¯" "¥¯" "Ž¸"))
+    ((pkey_jp106_colon)        ("¤±" "¥±" "Ž¹"))
+    ((pkey_jp106_b)            ("¤³" "¥³" "Žº"))
+
+    ((pkey_jp106_x)            ("¤µ" "¥µ" "Ž»"))
+    ((pkey_jp106_d)            ("¤·" "¥·" "Ž¼"))
+    ((pkey_jp106_r)            ("¤¹" "¥¹" "Ž½"))
+    ((pkey_jp106_p)            ("¤»" "¥»" "Ž¾"))
+    ((pkey_jp106_c)            ("¤½" "¥½" "Ž¿"))
+
+    ((pkey_jp106_q)            ("¤¿" "¥¿" "ŽÀ"))
+    ((pkey_jp106_a)            ("¤Á" "¥Á" "ŽÁ"))
+    ((pkey_jp106_z)            ("¤Ä" "¥Ä" "ŽÂ"))
+    ((pkey_jp106_w)            ("¤Æ" "¥Æ" "ŽÃ"))
+    ((pkey_jp106_s)            ("¤È" "¥È" "ŽÄ"))
+
+    ((pkey_jp106_u)            ("¤Ê" "¥Ê" "ŽÅ"))
+    ((pkey_jp106_i)            ("¤Ë" "¥Ë" "ŽÆ"))
+    ((pkey_jp106_1)            ("¤Ì" "¥Ì" "ŽÇ"))
+    ((pkey_jp106_comma)        ("¤Í" "¥Í" "ŽÈ"))
+    ((pkey_jp106_k)            ("¤Î" "¥Î" "ŽÉ"))
+
+    ((pkey_jp106_f)            ("¤Ï" "¥Ï" "ŽÊ"))
+    ((pkey_jp106_v)            ("¤Ò" "¥Ò" "ŽË"))
+    ((pkey_jp106_2)            ("¤Õ" "¥Õ" "ŽÌ"))
+    ((pkey_jp106_asciicircum)  ("¤Ø" "¥Ø" "ŽÍ"))
+    ((pkey_jp106_minus)        ("¤Û" "¥Û" "ŽÎ"))
+
+    ((pkey_jp106_j)            ("¤Þ" "¥Þ" "ŽÏ"))
+    ((pkey_jp106_n)            ("¤ß" "¥ß" "ŽÐ"))
+    ((pkey_jp106_bracketright) ("¤à" "¥à" "ŽÑ"))  ;; be careful
+    ((pkey_jp106_slash)        ("¤á" "¥á" "ŽÒ"))
+    ((pkey_jp106_m)            ("¤â" "¥â" "ŽÓ"))
+
+    ((pkey_jp106_7)            ("¤ä" "¥ä" "ŽÔ"))
+    ((pkey_jp106_8)            ("¤æ" "¥æ" "ŽÕ"))
+    ((pkey_jp106_9)            ("¤è" "¥è" "ŽÖ"))
+
+    ((pkey_jp106_o)            ("¤é" "¥é" "Ž×"))
+    ((pkey_jp106_l)            ("¤ê" "¥ê" "ŽØ"))
+    ((pkey_jp106_period)       ("¤ë" "¥ë" "ŽÙ"))
+    ((pkey_jp106_semicolon)    ("¤ì" "¥ì" "ŽÚ"))
+    ((pkey_jp106_backslash)    ("¤í" "¥í" "ŽÛ"))  ;; be careful
+
+    ((pkey_jp106_0)            ("¤ï" "¥ï" "ŽÜ"))
+    ((pkey_jp106_0 mod_shift)  ("¤ò" "¥ò" "Ž¦"))
+    ((pkey_jp106_y)            ("¤ó" "¥ó" "ŽÝ"))
+
+    ((pkey_jp106_4           pkey_jp106_at) (("¤¦" "¡«") "¥ô" ("Ž³" "ŽÞ")))
+
+    ((pkey_jp106_t           pkey_jp106_at) ("¤¬" "¥¬" ("Ž¶" "ŽÞ")))
+    ((pkey_jp106_g           pkey_jp106_at) ("¤®" "¥®" ("Ž·" "ŽÞ")))
+    ((pkey_jp106_h           pkey_jp106_at) ("¤°" "¥°" ("Ž¸" "ŽÞ")))
+    ((pkey_jp106_colon       pkey_jp106_at) ("¤²" "¥²" ("Ž¹" "ŽÞ")))
+    ((pkey_jp106_b           pkey_jp106_at) ("¤´" "¥´" ("Žº" "ŽÞ")))
+
+    ((pkey_jp106_x           pkey_jp106_at) ("¤¶" "¥¶" ("Ž»" "ŽÞ")))
+    ((pkey_jp106_d           pkey_jp106_at) ("¤¸" "¥¸" ("Ž¼" "ŽÞ")))
+    ((pkey_jp106_r           pkey_jp106_at) ("¤º" "¥º" ("Ž½" "ŽÞ")))
+    ((pkey_jp106_p           pkey_jp106_at) ("¤¼" "¥¼" ("Ž¾" "ŽÞ")))
+    ((pkey_jp106_c           pkey_jp106_at) ("¤¾" "¥¾" ("Ž¿" "ŽÞ")))
+
+    ((pkey_jp106_q           pkey_jp106_at) ("¤À" "¥À" ("ŽÀ" "ŽÞ")))
+    ((pkey_jp106_a           pkey_jp106_at) ("¤Â" "¥Â" ("ŽÁ" "ŽÞ")))
+    ((pkey_jp106_z           pkey_jp106_at) ("¤Å" "¥Å" ("ŽÂ" "ŽÞ")))
+    ((pkey_jp106_w           pkey_jp106_at) ("¤Ç" "¥Ç" ("ŽÃ" "ŽÞ")))
+    ((pkey_jp106_s           pkey_jp106_at) ("¤É" "¥É" ("ŽÄ" "ŽÞ")))
+
+    ((pkey_jp106_f           pkey_jp106_at) ("¤Ð" "¥Ð" ("ŽÊ" "ŽÞ")))
+    ((pkey_jp106_v           pkey_jp106_at) ("¤Ó" "¥Ó" ("ŽË" "ŽÞ")))
+    ((pkey_jp106_2           pkey_jp106_at) ("¤Ö" "¥Ö" ("ŽÌ" "ŽÞ")))
+    ((pkey_jp106_asciicircum pkey_jp106_at) ("¤Ù" "¥Ù" ("ŽÍ" "ŽÞ")))
+    ((pkey_jp106_minus       pkey_jp106_at) ("¤Ü" "¥Ü" ("ŽÎ" "ŽÞ")))
+
+    ((pkey_jp106_f           pkey_jp106_bracketleft) ("¤Ñ" "¥Ñ" ("ŽÊ" "Žß")))
+    ((pkey_jp106_v           pkey_jp106_bracketleft) ("¤Ô" "¥Ô" ("ŽË" "Žß")))
+    ((pkey_jp106_2           pkey_jp106_bracketleft) ("¤×" "¥×" ("ŽÌ" "Žß")))
+    ((pkey_jp106_asciicircum pkey_jp106_bracketleft) ("¤Ú" "¥Ú" ("ŽÍ" "Žß")))
+    ((pkey_jp106_minus       pkey_jp106_bracketleft) ("¤Ý" "¥Ý" ("ŽÎ" "Žß")))
+
+    ((pkey_jp106_3           mod_shift)     ("¤¡" "¥¡" "Ž§"))
+    ((pkey_jp106_e           mod_shift)     ("¤£" "¥£" "Ž¨"))
+    ((pkey_jp106_4           mod_shift)     ("¤¥" "¥¥" "Ž©"))
+    ((pkey_jp106_5           mod_shift)     ("¤§" "¥§" "Žª"))
+    ((pkey_jp106_6           mod_shift)     ("¤©" "¥©" "Ž«"))
+
+    ((pkey_jp106_7           mod_shift)     ("¤ã" "¥ã" "Ž¬"))
+    ((pkey_jp106_8           mod_shift)     ("¤å" "¥å" "Ž­"))
+    ((pkey_jp106_9           mod_shift)     ("¤ç" "¥ç" "Ž®"))
+
+    ((pkey_jp106_z           mod_shift)     ("¤Ã" "¥Ã" "Ž¯"))
+
+    ((pkey_jp106_at)                        ("¡«" "¡«" "ŽÞ"))
+    ((pkey_jp106_bracketleft)               ("¡¬" "¡¬" "Žß"))
+    ((pkey_jp106_yen)                       ("¡¼" "¡¼" "Ž°"))  ;; be careful
+    ((pkey_jp106_period       mod_shift)    ("¡£" "¡£" "Ž¡"))
+    ((pkey_jp106_comma        mod_shift)    ("¡¢" "¡¢" "Ž¤"))
+    ((pkey_jp106_slash        mod_shift)    ("¡¦" "¡¦" "Ž¥"))
+    ((pkey_jp106_bracketleft  mod_shift)    ("¡Ö" "¡Ö" "Ž¢"))
+    ((pkey_jp106_bracketright mod_shift)    ("¡×" "¡×" "Ž£"))  ;; be careful
+    ))
+
+(define ja-kana-ruleset-name-list
+  '(char-sensitive-core
+    core))
+
+(ja-define-dedicated-rulesets 'ja-kana ja-kana-ruleset-name-list)
+
+(define ja-kana-hiragana-ruleset ja-kana-hiragana-core-ruleset)
+(define ja-kana-katakana-ruleset ja-kana-katakana-core-ruleset)
+(define ja-kana-halfkana-ruleset ja-kana-halfkana-core-ruleset)

Added: branches/composer/scm/ng-japanese-romaji.scm
===================================================================
--- branches/composer/scm/ng-japanese-romaji.scm	2005-02-24 00:59:57 UTC (rev 707)
+++ branches/composer/scm/ng-japanese-romaji.scm	2005-02-24 01:26:18 UTC (rev 708)
@@ -0,0 +1,675 @@
+;;; ng-japanese-romaji.scm: Romaji composition rulesets for Japanese
+;;;
+;;; Copyright (c) 2004-2005 uim Project http://uim.freedesktop.org/
+;;;
+;;; All rights reserved.
+;;;
+;;; Redistribution and use in source and binary forms, with or without
+;;; modification, are permitted provided that the following conditions
+;;; are met:
+;;; 1. Redistributions of source code must retain the above copyright
+;;;    notice, this list of conditions and the following disclaimer.
+;;; 2. Redistributions in binary form must reproduce the above copyright
+;;;    notice, this list of conditions and the following disclaimer in the
+;;;    documentation and/or other materials provided with the distribution.
+;;; 3. Neither the name of authors nor the names of its contributors
+;;;    may be used to endorse or promote products derived from this software
+;;;    without specific prior written permission.
+;;;
+;;; THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+;;; ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+;;; SUCH DAMAGE.
+;;;;
+
+;; See following pages for further information about romaji.
+;;
+;; http://en.wikipedia.org/wiki/Romaji
+;; http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%9E%E5%AD%97
+
+(require "ng-japanese.scm")
+
+
+;;
+;; double consonant: Â¥²»
+;;
+
+;;    (("k" "k")     (("¤Ã" "k")))
+;;    (("k" "k" "a") (("¤Ã" "¤«")))
+;;    ...
+;;    (("k" "k" "o") (("¤Ã" "¤³")))
+;;    (("k" "k" "z") ("you can use any kk* sequence"))
+
+(define ja-romaji-double-consonant-alist
+  (map (lambda (c)
+	 (cons c ja-kana-xtsu))
+       '("k" "g" "s" "z" "j" "t" "c" "d" "h" "f" "b" "p"
+	 ;;"m"  ;; rk contains this rule
+	 "y" "r" "v" "w")))
+
+(define ja-romaji-generate-double-consonant-ruleset
+  (lambda (romaji-ruleset)
+    (append-map (lambda (entry)
+		  (let ((letter (car entry))
+			(kana (cdr entry)))
+		    (filter-map (lambda (rule)
+				  (let* ((seq (evmap-rule-event-seq rule))
+					 (res (evmap-rule-action-seq rule))
+					 (listified (if (list? (car res))
+							res
+							(map list res))))
+				    (and (string=? letter
+						   (car seq))
+					 (list (cons letter seq)
+					       (map cons kana listified)))))
+				romaji-ruleset)))
+		ja-romaji-double-consonant-alist)))
+
+(define ja-romaji-double-consonant-guide-ruleset
+  (map (lambda (entry)
+	 (let ((letter (car entry))
+	       (kana (cdr entry)))
+	   (list (list letter letter)
+		 (map cons
+		      kana
+		      (make-list (length kana)
+				 (list letter))))))
+       ja-romaji-double-consonant-alist))
+
+;;
+;; the rulesets
+;;
+
+(define ja-romaji-basic-ruleset
+  '(
+    ;; ¤¢¹Ô
+    (("a")         ("¤¢" "¥¢" "Ž±"))
+    (("i")         ("¤¤" "¥¤" "Ž²"))
+    (("u")         ("¤¦" "¥¦" "Ž³"))
+    (("e")         ("¤¨" "¥¨" "Ž´"))
+    (("o")         ("¤ª" "¥ª" "Žµ"))
+
+    ;; ¤«¹Ô
+    (("k" "a")     ("¤«" "¥«" "Ž¶"))
+    (("k" "i")     ("¤­" "¥­" "Ž·"))
+    (("k" "u")     ("¤¯" "¥¯" "Ž¸"))
+    (("k" "e")     ("¤±" "¥±" "Ž¹"))
+    (("k" "o")     ("¤³" "¥³" "Žº"))
+
+    (("k" "y" "a") (("¤­" "¤ã") ("¥­" "¥ã") ("Ž·" "Ž¬")))
+    (("k" "y" "i") (("¤­" "¤£") ("¥­" "¥£") ("Ž·" "Ž¨")))
+    (("k" "y" "u") (("¤­" "¤å") ("¥­" "¥å") ("Ž·" "Ž­")))
+    (("k" "y" "e") (("¤­" "¤§") ("¥­" "¥§") ("Ž·" "Žª")))
+    (("k" "y" "o") (("¤­" "¤ç") ("¥­" "¥ç") ("Ž·" "Ž®")))
+
+    (("g" "a")     ("¤¬" "¥¬" ("Ž¶" "ŽÞ")))
+    (("g" "i")     ("¤®" "¥®" ("Ž·" "ŽÞ")))
+    (("g" "u")     ("¤°" "¥°" ("Ž¸" "ŽÞ")))
+    (("g" "e")     ("¤²" "¥²" ("Ž¹" "ŽÞ")))
+    (("g" "o")     ("¤´" "¥´" ("Žº" "ŽÞ")))
+
+    (("g" "y" "a") (("¤®" "¤ã") ("¥®" "¥ã") ("Ž·" "ŽÞ" "Ž¬")))
+    (("g" "y" "i") (("¤®" "¤£") ("¥®" "¥£") ("Ž·" "ŽÞ" "Ž¨")))
+    (("g" "y" "u") (("¤®" "¤å") ("¥®" "¥å") ("Ž·" "ŽÞ" "Ž­")))
+    (("g" "y" "e") (("¤®" "¤§") ("¥®" "¥§") ("Ž·" "ŽÞ" "Žª")))
+    (("g" "y" "o") (("¤®" "¤ç") ("¥®" "¥ç") ("Ž·" "ŽÞ" "Ž®")))
+
+    ;; ¤µ¹Ô
+    (("s" "a")     ("¤µ" "¥µ" "Ž»"))
+    (("s" "i")     ("¤·" "¥·" "Ž¼"))
+    (("s" "u")     ("¤¹" "¥¹" "Ž½"))
+    (("s" "e")     ("¤»" "¥»" "Ž¾"))
+    (("s" "o")     ("¤½" "¥½" "Ž¿"))
+
+    (("s" "y" "a") (("¤·" "¤ã") ("¥·" "¥ã") ("Ž¼" "Ž¬")))
+    (("s" "y" "i") (("¤·" "¤£") ("¥·" "¥£") ("Ž¼" "Ž¨")))
+    (("s" "y" "u") (("¤·" "¤å") ("¥·" "¥å") ("Ž¼" "Ž­")))
+    (("s" "y" "e") (("¤·" "¤§") ("¥·" "¥§") ("Ž¼" "Žª")))
+    (("s" "y" "o") (("¤·" "¤ç") ("¥·" "¥ç") ("Ž¼" "Ž®")))
+
+    (("z" "a")     ("¤¶" "¥¶" ("Ž»" "ŽÞ")))
+    (("z" "i")     ("¤¸" "¥¸" ("Ž¼" "ŽÞ")))
+    (("z" "u")     ("¤º" "¥º" ("Ž½" "ŽÞ")))
+    (("z" "e")     ("¤¼" "¥¼" ("Ž¾" "ŽÞ")))
+    (("z" "o")     ("¤¾" "¥¾" ("Ž¿" "ŽÞ")))
+
+    (("z" "y" "a") (("¤¸" "¤ã") ("¥¸" "¥ã") ("Ž¼" "ŽÞ" "Ž¬")))
+    (("z" "y" "i") (("¤¸" "¤£") ("¥¸" "¥£") ("Ž¼" "ŽÞ" "Ž¨")))
+    (("z" "y" "u") (("¤¸" "¤å") ("¥¸" "¥å") ("Ž¼" "ŽÞ" "Ž­")))
+    (("z" "y" "e") (("¤¸" "¤§") ("¥¸" "¥§") ("Ž¼" "ŽÞ" "Žª")))
+    (("z" "y" "o") (("¤¸" "¤ç") ("¥¸" "¥ç") ("Ž¼" "ŽÞ" "Ž®")))
+
+    ;; ¤¿¹Ô
+    (("t" "a")     ("¤¿" "¥¿" "ŽÀ"))
+    (("t" "i")     ("¤Á" "¥Á" "ŽÁ"))
+    (("t" "u")     ("¤Ä" "¥Ä" "ŽÂ"))
+    (("t" "e")     ("¤Æ" "¥Æ" "ŽÃ"))
+    (("t" "o")     ("¤È" "¥È" "ŽÄ"))
+
+    (("t" "y" "a") (("¤Á" "¤ã") ("¥Á" "¥ã") ("ŽÁ" "Ž¬")))
+    (("t" "y" "i") (("¤Á" "¤£") ("¥Á" "¥£") ("ŽÁ" "Ž¨")))
+    (("t" "y" "u") (("¤Á" "¤å") ("¥Á" "¥å") ("ŽÁ" "Ž­")))
+    (("t" "y" "e") (("¤Á" "¤§") ("¥Á" "¥§") ("ŽÁ" "Žª")))
+    (("t" "y" "o") (("¤Á" "¤ç") ("¥Á" "¥ç") ("ŽÁ" "Ž®")))
+
+    (("d" "a")     ("¤À" "¥À" ("ŽÀ" "ŽÞ")))
+    (("d" "i")     ("¤Â" "¥Â" ("ŽÁ" "ŽÞ")))
+    (("d" "u")     ("¤Å" "¥Å" ("ŽÂ" "ŽÞ")))
+    (("d" "e")     ("¤Ç" "¥Ç" ("ŽÃ" "ŽÞ")))
+    (("d" "o")     ("¤É" "¥É" ("ŽÄ" "ŽÞ")))
+
+    (("d" "y" "a") (("¤Â" "¤ã") ("¥Â" "¥ã") ("ŽÁ" "ŽÞ" "Ž¬")))
+    (("d" "y" "i") (("¤Â" "¤£") ("¥Â" "¥£") ("ŽÁ" "ŽÞ" "Ž¨")))
+    (("d" "y" "u") (("¤Â" "¤å") ("¥Â" "¥å") ("ŽÁ" "ŽÞ" "Ž­")))
+    (("d" "y" "e") (("¤Â" "¤§") ("¥Â" "¥§") ("ŽÁ" "ŽÞ" "Žª")))
+    (("d" "y" "o") (("¤Â" "¤ç") ("¥Â" "¥ç") ("ŽÁ" "ŽÞ" "Ž®")))
+
+    ;; ¤Ê¹Ô
+    (("n" "a")     ("¤Ê" "¥Ê" "ŽÅ"))
+    (("n" "i")     ("¤Ë" "¥Ë" "ŽÆ"))
+    (("n" "u")     ("¤Ì" "¥Ì" "ŽÇ"))
+    (("n" "e")     ("¤Í" "¥Í" "ŽÈ"))
+    (("n" "o")     ("¤Î" "¥Î" "ŽÉ"))
+
+    (("n" "y" "a") (("¤Ë" "¤ã") ("¥Ë" "¥ã") ("ŽÆ" "Ž¬")))
+    (("n" "y" "i") (("¤Ë" "¤£") ("¥Ë" "¥£") ("ŽÆ" "Ž¨")))
+    (("n" "y" "u") (("¤Ë" "¤å") ("¥Ë" "¥å") ("ŽÆ" "Ž­")))
+    (("n" "y" "e") (("¤Ë" "¤§") ("¥Ë" "¥§") ("ŽÆ" "Žª")))
+    (("n" "y" "o") (("¤Ë" "¤ç") ("¥Ë" "¥ç") ("ŽÆ" "Ž®")))
+
+    ;; ¤Ï¹Ô
+    (("h" "a")     ("¤Ï" "¥Ï" "ŽÊ"))
+    (("h" "i")     ("¤Ò" "¥Ò" "ŽË"))
+    (("h" "u")     ("¤Õ" "¥Õ" "ŽÌ"))
+    (("h" "e")     ("¤Ø" "¥Ø" "ŽÍ"))
+    (("h" "o")     ("¤Û" "¥Û" "ŽÎ"))
+
+    (("h" "y" "a") (("¤Ò" "¤ã") ("¥Ò" "¥ã") ("ŽË" "Ž¬")))
+    (("h" "y" "i") (("¤Ò" "¤£") ("¥Ò" "¥£") ("ŽË" "Ž¨")))
+    (("h" "y" "u") (("¤Ò" "¤å") ("¥Ò" "¥å") ("ŽË" "Ž­")))
+    (("h" "y" "e") (("¤Ò" "¤§") ("¥Ò" "¥§") ("ŽË" "Žª")))
+    (("h" "y" "o") (("¤Ò" "¤ç") ("¥Ò" "¥ç") ("ŽË" "Ž®")))
+
+    (("f" "a")     (("¤Õ" "¤¡") ("¥Õ" "¥¡") ("ŽÌ" "Ž§")))
+    (("f" "i")     (("¤Õ" "¤£") ("¥Õ" "¥£") ("ŽÌ" "Ž¨")))
+    (("f" "e")     (("¤Õ" "¤§") ("¥Õ" "¥§") ("ŽÌ" "Žª")))
+    (("f" "o")     (("¤Õ" "¤©") ("¥Õ" "¥©") ("ŽÌ" "Ž«")))
+
+    (("b" "a")     ("¤Ð" "¥Ð" ("ŽÊ" "ŽÞ")))
+    (("b" "i")     ("¤Ó" "¥Ó" ("ŽË" "ŽÞ")))
+    (("b" "u")     ("¤Ö" "¥Ö" ("ŽÌ" "ŽÞ")))
+    (("b" "e")     ("¤Ù" "¥Ù" ("ŽÍ" "ŽÞ")))
+    (("b" "o")     ("¤Ü" "¥Ü" ("ŽÎ" "ŽÞ")))
+
+    (("b" "y" "a") (("¤Ó" "¤ã") ("¥Ó" "¥ã") ("ŽË" "ŽÞ" "Ž¬")))
+    (("b" "y" "i") (("¤Ó" "¤£") ("¥Ó" "¥£") ("ŽË" "ŽÞ" "Ž¨")))
+    (("b" "y" "u") (("¤Ó" "¤å") ("¥Ó" "¥å") ("ŽË" "ŽÞ" "Ž­")))
+    (("b" "y" "e") (("¤Ó" "¤§") ("¥Ó" "¥§") ("ŽË" "ŽÞ" "Žª")))
+    (("b" "y" "o") (("¤Ó" "¤ç") ("¥Ó" "¥ç") ("ŽË" "ŽÞ" "Ž®")))
+
+    (("p" "a")     ("¤Ñ" "¥Ñ" ("ŽÊ" "Žß")))
+    (("p" "i")     ("¤Ô" "¥Ô" ("ŽË" "Žß")))
+    (("p" "u")     ("¤×" "¥×" ("ŽÌ" "Žß")))
+    (("p" "e")     ("¤Ú" "¥Ú" ("ŽÍ" "Žß")))
+    (("p" "o")     ("¤Ý" "¥Ý" ("ŽÎ" "Žß")))
+
+    (("p" "y" "a") (("¤Ô" "¤ã") ("¥Ô" "¥ã") ("ŽË" "Žß" "Ž¬")))
+    (("p" "y" "i") (("¤Ô" "¤£") ("¥Ô" "¥£") ("ŽË" "Žß" "Ž¨")))
+    (("p" "y" "u") (("¤Ô" "¤å") ("¥Ô" "¥å") ("ŽË" "Žß" "Ž­")))
+    (("p" "y" "e") (("¤Ô" "¤§") ("¥Ô" "¥§") ("ŽË" "Žß" "Žª")))
+    (("p" "y" "o") (("¤Ô" "¤ç") ("¥Ô" "¥ç") ("ŽË" "Žß" "Ž®")))
+
+    ;; ¤Þ¹Ô
+    (("m" "a")     ("¤Þ" "¥Þ" "ŽÏ"))
+    (("m" "i")     ("¤ß" "¥ß" "ŽÐ"))
+    (("m" "u")     ("¤à" "¥à" "ŽÑ"))
+    (("m" "e")     ("¤á" "¥á" "ŽÒ"))
+    (("m" "o")     ("¤â" "¥â" "ŽÓ"))
+
+    (("m" "y" "a") (("¤ß" "¤ã") ("¥ß" "¥ã") ("ŽÐ" "Ž¬")))
+    (("m" "y" "i") (("¤ß" "¤£") ("¥ß" "¥£") ("ŽÐ" "Ž¨")))
+    (("m" "y" "u") (("¤ß" "¤å") ("¥ß" "¥å") ("ŽÐ" "Ž­")))
+    (("m" "y" "e") (("¤ß" "¤§") ("¥ß" "¥§") ("ŽÐ" "Žª")))
+    (("m" "y" "o") (("¤ß" "¤ç") ("¥ß" "¥ç") ("ŽÐ" "Ž®")))
+
+    ;; ¤ä¹Ô
+    (("y" "a")     ("¤ä" "¥ä" "ŽÔ"))
+    (("y" "i")     ("¤¤" "¥¤" "Ž²"))  ;; rk does not contain this rule
+    (("y" "u")     ("¤æ" "¥æ" "ŽÕ"))
+    (("y" "e")     (("¤¤" "¤§") ("¥¤" "¥§") ("Ž²" "Žª")))
+    (("y" "o")     ("¤è" "¥è" "ŽÖ"))
+
+    ;; ¤é¹Ô
+    (("r" "a")     ("¤é" "¥é" "Ž×"))
+    (("r" "i")     ("¤ê" "¥ê" "ŽØ"))
+    (("r" "u")     ("¤ë" "¥ë" "ŽÙ"))
+    (("r" "e")     ("¤ì" "¥ì" "ŽÚ"))
+    (("r" "o")     ("¤í" "¥í" "ŽÛ"))
+
+    (("r" "y" "a") (("¤ê" "¤ã") ("¥ê" "¥ã") ("ŽØ" "Ž¬")))
+    (("r" "y" "i") (("¤ê" "¤£") ("¥ê" "¥£") ("ŽØ" "Ž¨")))
+    (("r" "y" "u") (("¤ê" "¤å") ("¥ê" "¥å") ("ŽØ" "Ž­")))
+    (("r" "y" "e") (("¤ê" "¤§") ("¥ê" "¥§") ("ŽØ" "Žª")))
+    (("r" "y" "o") (("¤ê" "¤ç") ("¥ê" "¥ç") ("ŽØ" "Ž®")))
+
+    ;; ¤ï¹Ô
+    (("w" "a")     ("¤ï" "¥ï" "ŽÜ"))
+    (("w" "i")     (("¤¦" "¤£") ("¥¦" "¥£") ("Ž³" "Ž¨")))
+    (("w" "u")     ("¤¦" "¥¦" "Ž³"))
+    (("w" "e")     (("¤¦" "¤§") ("¥¦" "¥§") ("Ž³" "Žª")))
+    (("w" "o")     ("¤ò" "¥ò" "Ž¦"))
+
+    ;; ¤¦¡«
+    (("v" "a")     (("¤¦" "¡«" "¤¡") ("¥ô" "¥¡") ("Ž³" "ŽÞ" "Ž§")))
+    (("v" "i")     (("¤¦" "¡«" "¤£") ("¥ô" "¥£") ("Ž³" "ŽÞ" "Ž¨")))
+    (("v" "u")     (("¤¦" "¡«") "¥ô" ("Ž³" "ŽÞ")))
+    (("v" "e")     (("¤¦" "¡«" "¤§") ("¥ô" "¥§") ("Ž³" "ŽÞ" "Žª")))
+    (("v" "o")     (("¤¦" "¡«" "¤©") ("¥ô" "¥©") ("Ž³" "ŽÞ" "Ž«")))
+
+    (("v" "y" "a") (("¤¦" "¡«" "¤ã") ("¥ô" "¥ã") ("Ž³" "ŽÞ" "Ž¬")))
+    (("v" "y" "u") (("¤¦" "¡«" "¤å") ("¥ô" "¥å") ("Ž³" "ŽÞ" "Ž­")))
+    (("v" "y" "o") (("¤¦" "¡«" "¤ç") ("¥ô" "¥ç") ("Ž³" "ŽÞ" "Ž®")))
+
+    ;; ¤ó
+    (("n" "n")                        ("¤ó" "¥ó" "ŽÝ"))
+    (("n" (char-nonvowel press peek)) (("¤ó" ($3 loopback))
+				       ("¥ó" ($3 loopback))
+				       ("ŽÝ"  ($3 loopback))))
+
+    ;; µ­¹æ
+    (("-")         ("¡¼" "¡¼" "Ž°"))
+    (("[")         ("¡Ö" "¡Ö" "Ž¢"))
+    (("]")         ("¡×" "¡×" "Ž£"))
+    ))
+
+(define ja-romaji-basic-double-consonant-ruleset
+  (ja-romaji-generate-double-consonant-ruleset
+   ja-romaji-basic-ruleset))
+
+(define ja-romaji-x-prefixed-small-kana-ruleset
+  '((("x" "a")         ("¤¡" "¥¡" "Ž§"))
+    (("x" "i")         ("¤£" "¥£" "Ž¨"))
+    (("x" "u")         ("¤¥" "¥¥" "Ž©"))
+    (("x" "e")         ("¤§" "¥§" "Žª"))
+    (("x" "o")         ("¤©" "¥©" "Ž«"))
+
+    (("x" "y" "a")     ("¤ã" "¥ã" "Ž¬"))
+    (("x" "y" "i")     ("¤£" "¥£" "Ž¨"))
+    (("x" "y" "u")     ("¤å" "¥å" "Ž­"))
+    (("x" "y" "e")     ("¤§" "¥§" "Žª"))
+    (("x" "y" "o")     ("¤ç" "¥ç" "Ž®"))
+
+    (("x" "t" "u")     ("¤Ã" "¥Ã" "Ž¯"))
+    (("x" "t" "s" "u") ("¤Ã" "¥Ã" "Ž¯"))))
+
+(define ja-romaji-l-prefixed-small-kana-ruleset
+  '((("l" "a")         ("¤¡" "¥¡" "Ž§"))
+    (("l" "i")         ("¤£" "¥£" "Ž¨"))
+    (("l" "u")         ("¤¥" "¥¥" "Ž©"))
+    (("l" "e")         ("¤§" "¥§" "Žª"))
+    (("l" "o")         ("¤©" "¥©" "Ž«"))
+
+    ;; rk does not contain these rules
+    (("l" "y" "a")     ("¤ã" "¥ã" "Ž¬"))
+    (("l" "y" "i")     ("¤£" "¥£" "Ž¨"))
+    (("l" "y" "u")     ("¤å" "¥å" "Ž­"))
+    (("l" "y" "e")     ("¤§" "¥§" "Žª"))
+    (("l" "y" "o")     ("¤ç" "¥ç" "Ž®"))
+
+    (("l" "t" "u")     ("¤Ã" "¥Ã" "Ž¯"))
+    (("l" "t" "s" "u") ("¤Ã" "¥Ã" "Ž¯"))))
+
+;; rk contains these rules
+(define ja-romaji-minor-ruleset
+  '(
+    (("d" "s" "u") ("¤Å" "¥Å" ("ŽÂ" "ŽÞ")))
+
+    (("x" "w" "a") ("¤î" "¥î" "ŽÜ"))
+    (("x" "w" "i") ("¤ð" "¥ð" "Ž¨"))
+    (("x" "w" "e") ("¤ñ" "¥ñ" "Žª"))
+		   
+    ;; "°ì¥ö·î", "10¥õ¾ò"
+    (("x" "c" "a") ("¥õ" "¥õ" ""))
+    (("x" "k" "a") ("¥õ" "¥õ" ""))
+    (("x" "k" "e") ("¥ö" "¥ö" ""))
+    ))
+
+;; Ù¹²»
+(define ja-romaji-minor-contracted-ruleset
+  '(
+    (("j" "y" "a") (("¤¸" "¤ã") ("¥¸" "¥ã") ("Ž¼" "ŽÞ" "Ž¬")))
+    (("j" "y" "i") (("¤¸" "¤£") ("¥¸" "¥£") ("Ž¼" "ŽÞ" "Ž¨")))
+    (("j" "y" "u") (("¤¸" "¤å") ("¥¸" "¥å") ("Ž¼" "ŽÞ" "Ž­")))
+    (("j" "y" "e") (("¤¸" "¤§") ("¥¸" "¥§") ("Ž¼" "ŽÞ" "Žª")))
+    (("j" "y" "o") (("¤¸" "¤ç") ("¥¸" "¥ç") ("Ž¼" "ŽÞ" "Ž®")))
+
+    (("t" "s" "a") (("¤Ä" "¤¡") ("¥Ä" "¥¡") ("ŽÂ" "Ž§")))
+    (("t" "s" "i") (("¤Ä" "¤£") ("¥Ä" "¥£") ("ŽÂ" "Ž¨")))
+    (("t" "s" "e") (("¤Ä" "¤§") ("¥Ä" "¥§") ("ŽÂ" "Žª")))
+    (("t" "s" "o") (("¤Ä" "¤©") ("¥Ä" "¥©") ("ŽÂ" "Ž«")))
+
+    (("c" "y" "a") (("¤Á" "¤ã") ("¥Á" "¥ã") ("ŽÁ" "Ž¬")))
+    (("c" "y" "i") (("¤Á" "¤£") ("¥Á" "¥£") ("ŽÁ" "Ž¨")))
+    (("c" "y" "u") (("¤Á" "¤å") ("¥Á" "¥å") ("ŽÁ" "Ž­")))
+    (("c" "y" "e") (("¤Á" "¤§") ("¥Á" "¥§") ("ŽÁ" "Žª")))
+    (("c" "y" "o") (("¤Á" "¤ç") ("¥Á" "¥ç") ("ŽÁ" "Ž®")))
+
+    (("f" "y" "a") (("¤Õ" "¤ã") ("¥Õ" "¥ã") ("ŽÌ" "Ž¬")))
+    (("f" "y" "i") (("¤Õ" "¤£") ("¥Õ" "¥£") ("ŽÌ" "Ž¨")))
+    (("f" "y" "u") (("¤Õ" "¤å") ("¥Õ" "¥å") ("ŽÌ" "Ž­")))
+    (("f" "y" "e") (("¤Õ" "¤§") ("¥Õ" "¥§") ("ŽÌ" "Žª")))
+    (("f" "y" "o") (("¤Õ" "¤ç") ("¥Õ" "¥ç") ("ŽÌ" "Ž®")))
+
+    ;; rk contains these rules. but it conflicts with
+    ;; ja-romaji-l-prefixed-small-kana-ruleset
+    ;;(("l" "y" "a") (("¤ê" "¤ã") ("¥ê" "¥ã") ("ŽØ" "Ž¬")))
+    ;;(("l" "y" "i") (("¤ê" "¤£") ("¥ê" "¥£") ("ŽØ" "Ž¨")))
+    ;;(("l" "y" "u") (("¤ê" "¤å") ("¥ê" "¥å") ("ŽØ" "Ž­")))
+    ;;(("l" "y" "e") (("¤ê" "¤§") ("¥ê" "¥§") ("ŽØ" "Žª")))
+    ;;(("l" "y" "o") (("¤ê" "¤ç") ("¥ê" "¥ç") ("ŽØ" "Ž®")))
+
+    (("w" "h" "a") (("¤¦" "¤¡") ("¥¦" "¥¡") ("Ž³" "Ž§")))
+    (("w" "h" "i") (("¤¦" "¤£") ("¥¦" "¥£") ("Ž³" "Ž¨")))
+    (("w" "h" "u") ("¤¦" "¥¦" "Ž³"))
+    (("w" "h" "e") (("¤¦" "¤§") ("¥¦" "¥§") ("Ž³" "Žª")))
+    (("w" "h" "o") (("¤¦" "¤©") ("¥¦" "¥©") ("Ž³" "Ž«")))
+
+    (("d" "h" "a") (("¤Ç" "¤ã") ("¥Ç" "¥ã") ("ŽÃ" "ŽÞ" "Ž¬")))
+    (("d" "h" "i") (("¤Ç" "¤£") ("¥Ç" "¥£") ("ŽÃ" "ŽÞ" "Ž¨")))
+    (("d" "h" "u") (("¤Ç" "¤å") ("¥Ç" "¥å") ("ŽÃ" "ŽÞ" "Ž­")))
+    (("d" "h" "e") (("¤Ç" "¤§") ("¥Ç" "¥§") ("ŽÃ" "ŽÞ" "Žª")))
+    (("d" "h" "o") (("¤Ç" "¤ç") ("¥Ç" "¥ç") ("ŽÃ" "ŽÞ" "Ž®")))
+
+    (("d" "w" "a") (("¤É" "¤¡") ("¥É" "¥¡") ("ŽÄ" "ŽÞ" "Ž§")))
+    (("d" "w" "i") (("¤É" "¤£") ("¥É" "¥£") ("ŽÄ" "ŽÞ" "Ž¨")))
+    (("d" "w" "u") (("¤É" "¤¥") ("¥É" "¥¥") ("ŽÄ" "ŽÞ" "Ž©")))
+    (("d" "w" "e") (("¤É" "¤§") ("¥É" "¥§") ("ŽÄ" "ŽÞ" "Žª")))
+    (("d" "w" "o") (("¤É" "¤©") ("¥É" "¥©") ("ŽÄ" "ŽÞ" "Ž«")))
+
+    (("k" "w" "a") (("¤¯" "¤¡") ("¥¯" "¥¡") ("Ž¸" "Ž§")))
+    (("k" "w" "i") (("¤¯" "¤£") ("¥¯" "¥£") ("Ž¸" "Ž¨")))
+    (("k" "w" "u") (("¤¯" "¤¥") ("¥¯" "¥¥") ("Ž¸" "Ž©")))
+    (("k" "w" "e") (("¤¯" "¤§") ("¥¯" "¥§") ("Ž¸" "Žª")))
+    (("k" "w" "o") (("¤¯" "¤©") ("¥¯" "¥©") ("Ž¸" "Ž«")))
+
+    (("s" "w" "a") (("¤¹" "¤¡") ("¥¹" "¥¡") ("Ž½" "Ž§")))
+    (("s" "w" "i") (("¤¹" "¤£") ("¥¹" "¥£") ("Ž½" "Ž¨")))
+    (("s" "w" "u") (("¤¹" "¤¥") ("¥¹" "¥¥") ("Ž½" "Ž©")))
+    (("s" "w" "e") (("¤¹" "¤§") ("¥¹" "¥§") ("Ž½" "Žª")))
+    (("s" "w" "o") (("¤¹" "¤©") ("¥¹" "¥©") ("Ž½" "Ž«")))
+
+    (("t" "w" "a") (("¤È" "¤¡") ("¥È" "¥¡") ("ŽÄ" "Ž§")))
+    (("t" "w" "i") (("¤È" "¤£") ("¥È" "¥£") ("ŽÄ" "Ž¨")))
+    (("t" "w" "u") (("¤È" "¤¥") ("¥È" "¥¥") ("ŽÄ" "Ž©")))
+    (("t" "w" "e") (("¤È" "¤§") ("¥È" "¥§") ("ŽÄ" "Žª")))
+    (("t" "w" "o") (("¤È" "¤©") ("¥È" "¥©") ("ŽÄ" "Ž«")))
+
+    (("t" "h" "a") (("¤Æ" "¤ã") ("¥Æ" "¥ã") ("ŽÃ" "Ž¬")))
+    (("t" "h" "i") (("¤Æ" "¤£") ("¥Æ" "¥£") ("ŽÃ" "Ž¨")))
+    (("t" "h" "u") (("¤Æ" "¤å") ("¥Æ" "¥å") ("ŽÃ" "Ž­")))
+    (("t" "h" "e") (("¤Æ" "¤§") ("¥Æ" "¥§") ("ŽÃ" "Žª")))
+    (("t" "h" "o") (("¤Æ" "¤ç") ("¥Æ" "¥ç") ("ŽÃ" "Ž®")))
+
+    (("h" "w" "a") (("¤Õ" "¤¡") ("¥Õ" "¥¡") ("ŽÌ" "Ž§")))
+    (("h" "w" "i") (("¤Õ" "¤£") ("¥Õ" "¥£") ("ŽÌ" "Ž¨")))
+    (("h" "w" "e") (("¤Õ" "¤§") ("¥Õ" "¥§") ("ŽÌ" "Žª")))
+    (("h" "w" "o") (("¤Õ" "¤©") ("¥Õ" "¥©") ("ŽÌ" "Ž«")))
+
+    (("f" "w" "a") (("¤Õ" "¤¡") ("¥Õ" "¥¡") ("ŽÌ" "Ž§")))
+    (("f" "w" "i") (("¤Õ" "¤£") ("¥Õ" "¥£") ("ŽÌ" "Ž¨")))
+    (("f" "w" "u") (("¤Õ" "¤¥") ("¥Õ" "¥¥") ("ŽÌ" "Ž©")))
+    (("f" "w" "e") (("¤Õ" "¤§") ("¥Õ" "¥§") ("ŽÌ" "Žª")))
+    (("f" "w" "o") (("¤Õ" "¤©") ("¥Õ" "¥©") ("ŽÌ" "Ž«")))
+
+    (("q" "w" "a") (("¤¯" "¤¡") ("¥¯" "¥¡") ("Ž¸" "Ž§")))
+    (("q" "w" "i") (("¤¯" "¤£") ("¥¯" "¥£") ("Ž¸" "Ž¨")))
+    (("q" "w" "u") (("¤¯" "¤¥") ("¥¯" "¥¥") ("Ž¸" "Ž©")))
+    (("q" "w" "e") (("¤¯" "¤§") ("¥¯" "¥§") ("Ž¸" "Žª")))
+    (("q" "w" "o") (("¤¯" "¤©") ("¥¯" "¥©") ("Ž¸" "Ž«")))
+
+    (("q" "y" "a") (("¤¯" "¤ã") ("¥¯" "¥ã") ("Ž¸" "Ž¬")))
+    (("q" "y" "i") (("¤¯" "¤£") ("¥¯" "¥£") ("Ž¸" "Ž¨")))
+    (("q" "y" "u") (("¤¯" "¤å") ("¥¯" "¥å") ("Ž¸" "Ž­")))
+    (("q" "y" "e") (("¤¯" "¤§") ("¥¯" "¥§") ("Ž¸" "Žª")))
+    (("q" "y" "o") (("¤¯" "¤ç") ("¥¯" "¥ç") ("Ž¸" "Ž®")))
+
+    (("g" "w" "a") (("¤°" "¤¡") ("¥°" "¥¡") ("Ž¸" "ŽÞ" "Ž§")))
+    (("g" "w" "i") (("¤°" "¤£") ("¥°" "¥£") ("Ž¸" "ŽÞ" "Ž¨")))
+    (("g" "w" "u") (("¤°" "¤¥") ("¥°" "¥¥") ("Ž¸" "ŽÞ" "Ž©")))
+    (("g" "w" "e") (("¤°" "¤§") ("¥°" "¥§") ("Ž¸" "ŽÞ" "Žª")))
+    (("g" "w" "o") (("¤°" "¤©") ("¥°" "¥©") ("Ž¸" "ŽÞ" "Ž«")))
+    ))
+
+(define ja-romaji-minor-contracted-double-consonant-ruleset
+  (ja-romaji-generate-double-consonant-ruleset
+   ja-romaji-minor-contracted-ruleset))
+
+(define ja-romaji-skk-like-symbol-ruleset
+  '((("z" "k") ("¢¬" "¢¬" ""))
+    (("z" "j") ("¢­" "¢­" ""))
+    (("z" "h") ("¢«" "¢«" ""))
+    (("z" "l") ("¢ª" "¢ª" ""))
+    (("z" "-") ("¡Á" "¡Á" ""))
+    (("z" "[") ("¡Ø" "¡Ø" ""))
+    (("z" "]") ("¡Ù" "¡Ù" ""))
+    (("z" ",") ("¡Å" "¡Å" ("Ž¥" "Ž¥")))
+    (("z" ".") ("¡Ä" "¡Ä" ("Ž¥" "Ž¥" "Ž¥")))
+    (("z" "/") ("¡¦" "¡¦" "Ž¥"))))
+
+;;
+;; Hepburn style romaji: ¥Ø¥Ü¥ó¼°¥í¡¼¥Þ»ú
+;;
+
+(define ja-romaji-hepburn-ruleset
+  '(
+    (("s" "h" "a") (("¤·" "¤ã") ("¥·" "¥ã") ("Ž¼" "Ž¬")))
+    (("s" "h" "i") ("¤·" "¥·" "Ž¼"))
+    (("s" "h" "u") (("¤·" "¤å") ("¥·" "¥å") ("Ž¼" "Ž­")))
+    (("s" "h" "e") (("¤·" "¤§") ("¥·" "¥§") ("Ž¼" "Žª")))
+    (("s" "h" "o") (("¤·" "¤ç") ("¥·" "¥ç") ("Ž¼" "Ž®")))
+		   
+    (("j" "a")     (("¤¸" "¤ã") ("¥¸" "¥ã") ("Ž¼" "ŽÞ" "Ž¬")))
+    (("j" "i")     ("¤¸" "¥¸" ("Ž¼" "ŽÞ")))
+    (("j" "u")     (("¤¸" "¤å") ("¥¸" "¥å") ("Ž¼" "ŽÞ" "Ž­")))
+    (("j" "e")     (("¤¸" "¤§") ("¥¸" "¥§") ("Ž¼" "ŽÞ" "Žª")))
+    (("j" "o")     (("¤¸" "¤ç") ("¥¸" "¥ç") ("Ž¼" "ŽÞ" "Ž®")))
+
+    (("t" "s" "u") ("¤Ä" "¥Ä" "ŽÂ"))
+
+    (("c" "h" "a") (("¤Á" "¤ã") ("¥Á" "¥ã") ("ŽÁ" "Ž¬")))
+    (("c" "h" "i") ("¤Á" "¥Á" "ŽÁ"))
+    (("c" "h" "u") (("¤Á" "¤å") ("¥Á" "¥å") ("ŽÁ" "Ž­")))
+    (("c" "h" "e") (("¤Á" "¤§") ("¥Á" "¥§") ("ŽÁ" "Žª")))
+    (("c" "h" "o") (("¤Á" "¤ç") ("¥Á" "¥ç") ("ŽÁ" "Ž®")))
+		   
+    (("f" "u")     ("¤Õ" "¥Õ" "ŽÌ"))
+    ))
+
+(define ja-romaji-hepburn-double-consonant-ruleset
+  (ja-romaji-generate-double-consonant-ruleset
+   ja-romaji-hepburn-ruleset))
+
+;; ¤ó
+(define ja-romaji-hepburn-n-ruleset
+  '(
+    ;; "namba" ¢ª "¤Ê¤ó¤Ð"
+    (("m" ("b" press peek)) (("¤ó" ($3 loopback))
+			     ("¥ó" ($3 loopback))
+			     ("ŽÝ"  ($3 loopback))))
+
+    ;; "homma" ¢ª "¤Û¤ó¤Þ"
+    (("m" ("m" press peek)) (("¤ó" ($3 loopback))
+			     ("¥ó" ($3 loopback))
+			     ("ŽÝ"  ($3 loopback))))
+
+    ;; "kampo" ¢ª "¤«¤ó¤Ý"
+    (("m" ("p" press peek)) (("¤ó" ($3 loopback))
+			     ("¥ó" ($3 loopback))
+			     ("ŽÝ"  ($3 loopback))))))
+
+;; ¤ª¤ª¡¢¤ª¤¦ (experimental)
+(define ja-romaji-hepburn-oh-ruleset
+  '((("o" "h"     (char-nonvowel press peek)) (("¤ª" "¤ª" ($5 loopback))
+					       ("¥ª" "¥ª" ($5 loopback))
+					       ("Žµ" "Žµ"   ($5 loopback))))
+    (("k" "o" "h" (char-nonvowel press peek)) (("¤³" "¤¦" ($7 loopback))
+					       ("¥³" "¥¦" ($7 loopback))
+					       ("Žº" "Ž³"   ($7 loopback))))
+    (("g" "o" "h" (char-nonvowel press peek)) (("¤´" "¤¦" ($7 loopback))
+					       ("¥´" "¥¦" ($7 loopback))
+					       ("Žº" "ŽÞ" "Ž³" ($7 loopback))))
+    (("s" "o" "h" (char-nonvowel press peek)) (("¤½" "¤¦" ($7 loopback))
+					       ("¥½" "¥¦" ($7 loopback))
+					       ("Ž¿" "Ž³"   ($7 loopback))))
+    (("z" "o" "h" (char-nonvowel press peek)) (("¤¾" "¤¦" ($7 loopback))
+					       ("¥¾" "¥¦" ($7 loopback))
+					       ("Ž¿" "ŽÞ" "Ž³" ($7 loopback))))
+    (("j" "o" "h" (char-nonvowel press peek)) (("¤¸" "¤ç" "¤¦" ($7 loopback))
+					       ("¥¸" "¥ç" "¥¦" ($7 loopback))
+					       ("Ž¼" "ŽÞ" "Ž®" "Ž³" ($7 loopback))))
+    (("t" "o" "h" (char-nonvowel press peek)) (("¤È" "¤¦" ($7 loopback))
+					       ("¥È" "¥¦" ($7 loopback))
+					       ("ŽÄ" "Ž³"   ($7 loopback))))
+    (("d" "o" "h" (char-nonvowel press peek)) (("¤É" "¤¦" ($7 loopback))
+					       ("¥É" "¥¦" ($7 loopback))
+					       ("ŽÄ" "ŽÞ" "Ž³" ($7 loopback))))
+    (("n" "o" "h" (char-nonvowel press peek)) (("¤Î" "¤¦" ($7 loopback))
+					       ("¥Î" "¥¦" ($7 loopback))
+					       ("ŽÉ" "Ž³"   ($7 loopback))))
+    (("h" "o" "h" (char-nonvowel press peek)) (("¤Û" "¤¦" ($7 loopback))
+					       ("¥Û" "¥¦" ($7 loopback))
+					       ("ŽÎ" "Ž³"   ($7 loopback))))
+;;    (("f" "o" "h" (char-nonvowel press peek)) (("¤Õ" "¤©" "¤¦" ($7 loopback))
+;;					       ("¥Õ" "¥©" "¥¦" ($7 loopback))
+;;					       ("ŽÌ" "Ž«" "Ž³"    ($7 loopback))))
+    (("b" "o" "h" (char-nonvowel press peek)) (("¤Ü" "¤¦" ($7 loopback))
+					       ("¥Ü" "¥¦" ($7 loopback))
+					       ("ŽÎ" "ŽÞ" "Ž³" ($7 loopback))))
+    (("p" "o" "h" (char-nonvowel press peek)) (("¤Ý" "¤¦" ($7 loopback))
+					       ("¥Ý" "¥¦" ($7 loopback))
+					       ("ŽÎ" "Žß" "Ž³" ($7 loopback))))
+    (("m" "o" "h" (char-nonvowel press peek)) (("¤â" "¤¦" ($7 loopback))
+					       ("¥â" "¥¦" ($7 loopback))
+					       ("ŽÓ" "Ž³"   ($7 loopback))))
+    (("y" "o" "h" (char-nonvowel press peek)) (("¤è" "¤¦" ($7 loopback))
+					       ("¥è" "¥¦" ($7 loopback))
+					       ("ŽÖ" "Ž³"   ($7 loopback))))
+    (("r" "o" "h" (char-nonvowel press peek)) (("¤í" "¤¦" ($7 loopback))
+					       ("¥í" "¥¦" ($7 loopback))
+					       ("ŽÛ" "Ž³"   ($7 loopback))))))
+
+;; Êѧ¥²» ÊÑ´¹Ãæɽ¼¨
+(define ja-romaji-hepburn-irregular-double-consonant-guide-ruleset
+  '((("t" "c")         (("¤Ã" "c") ("¥Ã" "c") ("Ž¯" "c")))))
+
+;; Êѧ¥²»
+(define ja-romaji-hepburn-irregular-double-consonant-ruleset
+  '((("t" "c" "h" "a") (("¤Ã" "¤Á" "¤ã") ("¥Ã" "¥Á" "¥ã") ("Ž¯" "ŽÁ" "Ž¬")))
+    (("t" "c" "h" "i") (("¤Ã" "¤Á" "¤£") ("¥Ã" "¥Á" "¥£") ("Ž¯" "ŽÁ" "Ž¨")))
+    (("t" "c" "h" "u") (("¤Ã" "¤Á" "¤å") ("¥Ã" "¥Á" "¥å") ("Ž¯" "ŽÁ" "Ž­")))
+    ;;(("t" "c" "h" "e") (("¤Ã" "¤Á" "¤§") ("¥Ã" "¥Á" "¥§") ("Ž¯" "ŽÁ" "Žª")))
+    (("t" "c" "h" "o") (("¤Ã" "¤Á" "¤ç") ("¥Ã" "¥Á" "¥ç") ("Ž¯" "ŽÁ" "Ž®")))))
+
+
+;; separate romaji rulesets into 3 parts dedicated for hiragana,
+;; katakana and halfkana
+(define ja-romaji-ruleset-name-list
+  '(double-consonant-guide
+    basic
+    basic-double-consonant
+    x-prefixed-small-kana
+    l-prefixed-small-kana
+    minor
+    minor-contracted
+    minor-contracted-double-consonant
+    skk-like-symbol
+    hepburn
+    hepburn-double-consonant
+    hepburn-n
+    hepburn-oh
+    hepburn-irregular-double-consonant-guide
+    hepburn-irregular-double-consonant))
+
+(ja-define-dedicated-rulesets 'ja-romaji ja-romaji-ruleset-name-list)
+		      
+
+;; may be replaced with more efficient way for ruleset composition(merging)
+(define ja-romaji-hiragana-ruleset
+  (append
+   ja-fullwidth-space-ruleset
+   ja-fullwidth-kana-period-ruleset
+   ja-fullwidth-kana-comma-ruleset
+   ja-fullwidth-basic-symbol-ruleset
+   ja-fullwidth-number-ruleset
+   ja-fullwidth-alphabet-ruleset
+   ja-romaji-hiragana-basic-ruleset
+   ja-romaji-hiragana-double-consonant-guide-ruleset
+   ja-romaji-hiragana-basic-double-consonant-ruleset
+   ja-romaji-hiragana-x-prefixed-small-kana-ruleset
+   ja-romaji-hiragana-l-prefixed-small-kana-ruleset
+   ja-romaji-hiragana-minor-ruleset
+   ja-romaji-hiragana-minor-contracted-ruleset
+   ja-romaji-hiragana-minor-contracted-double-consonant-ruleset
+   ja-romaji-hiragana-hepburn-ruleset
+   ja-romaji-hiragana-hepburn-double-consonant-ruleset
+   ja-romaji-hiragana-hepburn-n-ruleset
+   ja-romaji-hiragana-hepburn-oh-ruleset
+   ja-romaji-hiragana-hepburn-irregular-double-consonant-guide-ruleset
+   ja-romaji-hiragana-hepburn-irregular-double-consonant-ruleset
+   ja-romaji-hiragana-skk-like-symbol-ruleset))
+
+(define ja-romaji-katakana-ruleset
+  (append
+   ja-fullwidth-space-ruleset
+   ja-fullwidth-kana-period-ruleset
+   ja-fullwidth-kana-comma-ruleset
+   ja-fullwidth-basic-symbol-ruleset
+   ja-fullwidth-number-ruleset
+   ja-fullwidth-alphabet-ruleset
+   ja-romaji-katakana-basic-ruleset
+   ja-romaji-katakana-double-consonant-guide-ruleset
+   ja-romaji-katakana-basic-double-consonant-ruleset
+   ja-romaji-katakana-x-prefixed-small-kana-ruleset
+   ja-romaji-katakana-l-prefixed-small-kana-ruleset
+   ja-romaji-katakana-minor-ruleset
+   ja-romaji-katakana-minor-contracted-ruleset
+   ja-romaji-katakana-minor-contracted-double-consonant-ruleset
+   ja-romaji-katakana-hepburn-ruleset
+   ja-romaji-katakana-hepburn-double-consonant-ruleset
+   ja-romaji-katakana-hepburn-n-ruleset
+   ja-romaji-katakana-hepburn-oh-ruleset
+   ja-romaji-katakana-hepburn-irregular-double-consonant-guide-ruleset
+   ja-romaji-katakana-hepburn-irregular-double-consonant-ruleset
+   ja-romaji-katakana-skk-like-symbol-ruleset))
+
+(define ja-romaji-halfkana-ruleset
+  (append
+   ja-halfwidth-space-ruleset
+   ja-halfwidth-kana-period-ruleset
+   ja-halfwidth-kana-comma-ruleset
+   ja-halfwidth-basic-symbol-ruleset
+   ja-halfwidth-number-ruleset
+   ja-halfwidth-alphabet-ruleset
+   ja-romaji-halfkana-basic-ruleset
+   ja-romaji-halfkana-double-consonant-guide-ruleset
+   ja-romaji-halfkana-basic-double-consonant-ruleset
+   ja-romaji-halfkana-x-prefixed-small-kana-ruleset
+   ja-romaji-halfkana-l-prefixed-small-kana-ruleset
+   ja-romaji-halfkana-minor-ruleset
+   ja-romaji-halfkana-minor-contracted-ruleset
+   ja-romaji-halfkana-minor-contracted-double-consonant-ruleset
+   ja-romaji-halfkana-hepburn-ruleset
+   ja-romaji-halfkana-hepburn-double-consonant-ruleset
+   ja-romaji-halfkana-hepburn-n-ruleset
+   ja-romaji-halfkana-hepburn-oh-ruleset
+   ja-romaji-halfkana-hepburn-irregular-double-consonant-guide-ruleset
+   ja-romaji-halfkana-hepburn-irregular-double-consonant-ruleset
+   ja-romaji-halfkana-skk-like-symbol-ruleset))
+

Added: branches/composer/scm/ng-japanese.scm
===================================================================
--- branches/composer/scm/ng-japanese.scm	2005-02-24 00:59:57 UTC (rev 707)
+++ branches/composer/scm/ng-japanese.scm	2005-02-24 01:26:18 UTC (rev 708)
@@ -0,0 +1,453 @@
+;;; ng-japanese.scm: Character composition rulesets for Japanese
+;;;
+;;; Copyright (c) 2004-2005 uim Project http://uim.freedesktop.org/
+;;;
+;;; All rights reserved.
+;;;
+;;; Redistribution and use in source and binary forms, with or without
+;;; modification, are permitted provided that the following conditions
+;;; are met:
+;;; 1. Redistributions of source code must retain the above copyright
+;;;    notice, this list of conditions and the following disclaimer.
+;;; 2. Redistributions in binary form must reproduce the above copyright
+;;;    notice, this list of conditions and the following disclaimer in the
+;;;    documentation and/or other materials provided with the distribution.
+;;; 3. Neither the name of authors nor the names of its contributors
+;;;    may be used to endorse or promote products derived from this software
+;;;    without specific prior written permission.
+;;;
+;;; THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+;;; ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+;;; SUCH DAMAGE.
+;;;;
+
+(require "util.scm")
+(require "ng-key.scm")
+(require "evmap.scm")
+
+
+;;
+;; kana definitions
+;;
+
+(define-record 'ja-kana
+  '((hiragana "")
+    (katakana "")
+    (halfkana "")  ;; JIS X 0201 kana
+    ;;(manyou   "")  ;; Manyou-gana
+    ;;(kusachu  "")  ;; kana representations for a closed community
+    ;;(gal      "")  ;; kana representations for a closed community
+    ))
+
+(define-record 'ja-kana-props
+  '((id            #f)
+    (extractor     #f)
+    (indication-id #f)
+    (label         "")
+    (short-desc    "")))
+
+(define ja-kana-props-alist
+  (list
+   (list 'hiragana
+	 ja-kana-hiragana
+	 'figure_ja_hiragana
+	 "Hiragana"
+	 "")
+   (list 'katakana
+	 ja-kana-katakana
+	 'figure_ja_katakana
+	 "Katakana"
+	 "")
+   (list 'halfkana
+	 ja-kana-halfkana
+	 'figure_ja_halfkana
+	 "Halfwidth katakana"
+	 "")
+;;   (list 'manyou
+;;	 ja-kana-manyou
+;;	 'figure_ja_manyou
+;;	 "Manyou-gana"
+;;	 "")
+;;   (list 'kusachu
+;;	 ja-kana-kusachu
+;;	 'figure_ja_kusachu
+;;	 "Kusachu ideographs"
+;;	 "")
+;;   (list 'gal
+;;	 ja-kana-gal
+;;	 'figure_ja_gal
+;;	 "Gal ideographs"
+;;	 "")
+   ))
+
+;; Japanese kana composition rulesets will be rewritten using
+;; following symbolic kana references in future version of uim to
+;; modify kana representations easily, reduce memory consumptions, and
+;; to prevent human errors when copying each definitions into
+;; rulesets.
+
+;; ¤¢¹Ô
+(define ja-kana-a    '("¤¢" "¥¢" "Ž±"))
+(define ja-kana-i    '("¤¤" "¥¤" "Ž²"))
+(define ja-kana-u    '("¤¦" "¥¦" "Ž³"))
+(define ja-kana-e    '("¤¨" "¥¨" "Ž´"))
+(define ja-kana-o    '("¤ª" "¥ª" "Žµ"))
+
+;;¤«¹Ô		     
+(define ja-kana-ka   '("¤«" "¥«" "Ž¶"))
+(define ja-kana-ki   '("¤­" "¥­" "Ž·"))
+(define ja-kana-ku   '("¤¯" "¥¯" "Ž¸"))
+(define ja-kana-ke   '("¤±" "¥±" "Ž¹"))
+(define ja-kana-ko   '("¤³" "¥³" "Žº"))
+
+(define ja-kana-kya  '(("¤­" "¤ã") ("¥­" "¥ã") ("Ž·" "Ž¬")))
+(define ja-kana-kyi  '(("¤­" "¤£") ("¥­" "¥£") ("Ž·" "Ž¨")))
+(define ja-kana-kyu  '(("¤­" "¤å") ("¥­" "¥å") ("Ž·" "Ž­")))
+(define ja-kana-kye  '(("¤­" "¤§") ("¥­" "¥§") ("Ž·" "Žª")))
+(define ja-kana-kyo  '(("¤­" "¤ç") ("¥­" "¥ç") ("Ž·" "Ž®")))
+
+(define ja-kana-ga   '("¤¬" "¥¬" ("Ž¶" "ŽÞ")))
+(define ja-kana-gi   '("¤®" "¥®" ("Ž·" "ŽÞ")))
+(define ja-kana-gu   '("¤°" "¥°" ("Ž¸" "ŽÞ")))
+(define ja-kana-ge   '("¤²" "¥²" ("Ž¹" "ŽÞ")))
+(define ja-kana-go   '("¤´" "¥´" ("Žº" "ŽÞ")))
+
+(define ja-kana-gya  '(("¤®" "¤ã") ("¥®" "¥ã") ("Ž·" "ŽÞ" "Ž¬")))
+(define ja-kana-gyi  '(("¤®" "¤£") ("¥®" "¥£") ("Ž·" "ŽÞ" "Ž¨")))
+(define ja-kana-gyu  '(("¤®" "¤å") ("¥®" "¥å") ("Ž·" "ŽÞ" "Ž­")))
+(define ja-kana-gye  '(("¤®" "¤§") ("¥®" "¥§") ("Ž·" "ŽÞ" "Žª")))
+(define ja-kana-gyo  '(("¤®" "¤ç") ("¥®" "¥ç") ("Ž·" "ŽÞ" "Ž®")))
+
+(define ja-kana-xtsu '("¤Ã" "¥Ã" "Ž¯"))
+
+;; Can be extended as follows if you want
+;;(define ja-kana-sa '("¤µ" "¥µ" "Ž»" "º¸" "¡Þ" "¡Þ"))
+;;(define ja-kana-de '("¤Ç" "¥Ç" ("ŽÃ" "ŽÞ") "Å¥" "¤Æ~" "¦Ó¡·"))
+
+;;
+;; Japanese ruleset generator
+;;
+
+(define ja-extract-dedicated-ruleset
+  (lambda (ruleset kana-extractor)
+    (map (lambda (rule)
+	   (let ((kana (kana-extractor (evmap-rule-action-seq rule))))
+	     (list (evmap-rule-event-seq rule)
+		   (if (list? kana)
+		       kana
+		       (list kana)))))
+	 ruleset)))
+
+(define ja-define-dedicated-ruleset
+  (lambda (prefix name kana)
+    (let* ((ruleset-name (symbolconc prefix '- kana '- name '-ruleset))
+	   (src-ruleset-name (symbolconc prefix '- name '-ruleset))
+	   (src-ruleset (symbol-value src-ruleset-name))
+	   (kana-extractor (ja-kana-props-extractor
+			    (assq kana ja-kana-props-alist)))
+	   (extracted-ruleset (ja-extract-dedicated-ruleset
+			       src-ruleset
+			       kana-extractor)))
+      (eval (list 'define ruleset-name (list 'quote extracted-ruleset))
+	    toplevel-env))))
+
+(define ja-define-dedicated-rulesets
+  (lambda (prefix ruleset-name-list)
+    (for-each (lambda (ruleset-name)
+		(for-each (lambda (kana)
+			    (ja-define-dedicated-ruleset
+			     prefix ruleset-name kana))
+			  (map ja-kana-props-id ja-kana-props-alist)))
+	      ruleset-name-list)))
+
+
+;;
+;; symbols and punctuations
+;;
+
+;; space
+(define ja-halfwidth-space-ruleset
+  '(((" ") (" "))))
+
+(define ja-fullwidth-space-ruleset
+  '(((" ") ("¡¡"))))
+
+;; hyphen
+(define ja-halfwidth-hyphen-ruleset
+  '((("-") ("-"))))
+
+(define ja-fullwidth-hyphen-ruleset
+  '((("-") ("¡Ý"))))
+
+;; comma
+;; Should be replaced with more elaborated configuration method.
+(define ja-halfwidth-comma-ruleset
+  '(((",") (","))))
+
+(define ja-fullwidth-comma-ruleset
+  '(((",") ("¡¤"))))
+
+(define ja-fullwidth-kana-comma-ruleset
+  '(((",") ("¡¢"))))
+
+(define ja-halfwidth-kana-comma-ruleset
+  '(((",") ("Ž¤"))))
+
+;; period
+;; Should be replaced with more elaborated configuration method.
+(define ja-halfwidth-period-ruleset
+  '(((".") ("."))))
+
+(define ja-fullwidth-period-ruleset
+  '(((".") ("¡¥"))))
+
+(define ja-fullwidth-kana-period-ruleset
+  '(((".") ("¡£"))))
+
+(define ja-halfwidth-kana-period-ruleset
+  '(((".") ("Ž¡"))))
+
+;; basic symbols
+;; separate these entries into appropriate classes on demand.
+;;   (map (compose print (lambda (s) (list s s)) list charcode->string)
+;;        (append (iota 48 33) (iota 65 58) (iota 97 91)  (iota 127 123)))
+(define ja-halfwidth-basic-symbol-ruleset
+  '(
+    ;;((" ") (" "))
+    (("!")  ("!"))
+    (("\"") ("\""))
+    (("#")  ("#"))
+    (("$")  ("$"))
+    (("%")  ("%"))
+    (("&")  ("&"))
+    (("'")  ("'"))
+    (("(")  ("("))
+    ((")")  (")"))
+    (("*")  ("*"))
+    (("+")  ("+"))
+    ;;((",")  (","))
+    ;;(("-")  ("-"))
+    ;;((".")  ("."))
+    (("/")  ("/"))
+    ((":")  (":"))
+    ((";")  (";"))
+    (("<")  ("<"))
+    (("=")  ("="))
+    ((">")  (">"))
+    (("?")  ("?"))
+    (("@")  ("@"))
+    (("[")  ("["))
+    (("\\") ("\\"))
+    (("]")  ("]"))
+    (("^")  ("^"))
+    (("_")  ("_"))
+    (("`")  ("`"))
+    (("{")  ("{"))
+    (("|")  ("|"))
+    (("}")  ("}"))
+    (("~")  ("~"))
+    ))
+
+(define ja-fullwidth-basic-symbol-ruleset
+  '(
+    ;;((" ")  ("¡¡"))
+    (("!")  ("¡ª"))
+    (("\"") ("¡É"))
+    (("#")  ("¡ô"))
+    (("$")  ("¡ð"))
+    (("%")  ("¡ó"))
+    (("&")  ("¡õ"))
+    (("'")  ("¡Ç"))
+    (("(")  ("¡Ê"))
+    ((")")  ("¡Ë"))
+    (("*")  ("¡ö"))
+    (("+")  ("¡Ü"))
+    ;;((",")  ("¡¤"))
+    ;;(("-")  ("¡Ý"))
+    ;;((".")  ("¡¥"))
+    (("/")  ("¡¿"))
+    ((":")  ("¡§"))
+    ((";")  ("¡¨"))
+    (("<")  ("¡ã"))
+    (("=")  ("¡á"))
+    ((">")  ("¡ä"))
+    (("?")  ("¡©"))
+    (("@")  ("¡÷"))
+    (("[")  ("¡Î"))
+    (("\\") ("¡À"))
+    (("]")  ("¡Ï"))
+    (("^")  ("¡°"))
+    (("_")  ("¡²"))
+    (("`")  ("¡Æ"))
+    (("{")  ("¡Ð"))
+    (("|")  ("¡Ã"))
+    (("}")  ("¡Ñ"))
+    (("~")  ("¡Á"))
+    ))
+
+;; numbers
+(define ja-halfwidth-number-ruleset
+  '((("1") ("1"))
+    (("2") ("2"))
+    (("3") ("3"))
+    (("4") ("4"))
+    (("5") ("5"))
+    (("6") ("6"))
+    (("7") ("7"))
+    (("8") ("8"))
+    (("9") ("9"))
+    (("0") ("0"))))
+
+(define ja-fullwidth-number-ruleset
+  '((("1") ("£±"))
+    (("2") ("£²"))
+    (("3") ("£³"))
+    (("4") ("£´"))
+    (("5") ("£µ"))
+    (("6") ("£¶"))
+    (("7") ("£·"))
+    (("8") ("£¸"))
+    (("9") ("£¹"))
+    (("0") ("£°"))))
+
+;; alphabets
+(define ja-halfwidth-alphabet-ruleset
+  '((("a") ("a"))
+    (("b") ("b"))
+    (("c") ("c"))
+    (("d") ("d"))
+    (("e") ("e"))
+    (("f") ("f"))
+    (("g") ("g"))
+    (("h") ("h"))
+    (("i") ("i"))
+    (("j") ("j"))
+    (("k") ("k"))
+    (("l") ("l"))
+    (("m") ("m"))
+    (("n") ("n"))
+    (("o") ("o"))
+    (("p") ("p"))
+    (("q") ("q"))
+    (("r") ("r"))
+    (("s") ("s"))
+    (("t") ("t"))
+    (("u") ("u"))
+    (("v") ("v"))
+    (("w") ("w"))
+    (("x") ("x"))
+    (("y") ("y"))
+    (("z") ("z"))
+
+    (("A") ("A"))
+    (("B") ("B"))
+    (("C") ("C"))
+    (("D") ("D"))
+    (("E") ("E"))
+    (("F") ("F"))
+    (("G") ("G"))
+    (("H") ("H"))
+    (("I") ("I"))
+    (("J") ("J"))
+    (("K") ("K"))
+    (("L") ("L"))
+    (("M") ("M"))
+    (("N") ("N"))
+    (("O") ("O"))
+    (("P") ("P"))
+    (("Q") ("Q"))
+    (("R") ("R"))
+    (("S") ("S"))
+    (("T") ("T"))
+    (("U") ("U"))
+    (("V") ("V"))
+    (("W") ("W"))
+    (("X") ("X"))
+    (("Y") ("Y"))
+    (("Z") ("Z"))))
+
+(define ja-fullwidth-alphabet-ruleset
+  '((("a") ("£á"))
+    (("b") ("£â"))
+    (("c") ("£ã"))
+    (("d") ("£ä"))
+    (("e") ("£å"))
+    (("f") ("£æ"))
+    (("g") ("£ç"))
+    (("h") ("£è"))
+    (("i") ("£é"))
+    (("j") ("£ê"))
+    (("k") ("£ë"))
+    (("l") ("£ì"))
+    (("m") ("£í"))
+    (("n") ("£î"))
+    (("o") ("£ï"))
+    (("p") ("£ð"))
+    (("q") ("£ñ"))
+    (("r") ("£ò"))
+    (("s") ("£ó"))
+    (("t") ("£ô"))
+    (("u") ("£õ"))
+    (("v") ("£ö"))
+    (("w") ("£÷"))
+    (("x") ("£ø"))
+    (("y") ("£ù"))
+    (("z") ("£ú"))
+
+    (("A") ("£Á"))
+    (("B") ("£Â"))
+    (("C") ("£Ã"))
+    (("D") ("£Ä"))
+    (("E") ("£Å"))
+    (("F") ("£Æ"))
+    (("G") ("£Ç"))
+    (("H") ("£È"))
+    (("I") ("£É"))
+    (("J") ("£Ê"))
+    (("K") ("£Ë"))
+    (("L") ("£Ì"))
+    (("M") ("£Í"))
+    (("N") ("£Î"))
+    (("O") ("£Ï"))
+    (("P") ("£Ð"))
+    (("Q") ("£Ñ"))
+    (("R") ("£Ò"))
+    (("S") ("£Ó"))
+    (("T") ("£Ô"))
+    (("U") ("£Õ"))
+    (("V") ("£Ö"))
+    (("W") ("£×"))
+    (("X") ("£Ø"))
+    (("Y") ("£Ù"))
+    (("Z") ("£Ú"))))
+
+;; This ruleset will not be used in ordinary input method. Direct
+;; input mode passes through almost of key events instead of using
+;; this ruleset.
+(define ja-halfwidth-alphanumeric-ruleset
+  (append
+   ja-halfwidth-space-ruleset
+   ja-halfwidth-hyphen-ruleset
+   ja-halfwidth-comma-ruleset
+   ja-halfwidth-period-ruleset
+   ja-halfwidth-basic-symbol-ruleset
+   ja-halfwidth-number-ruleset
+   ja-halfwidth-alphabet-ruleset))
+
+(define ja-fullwidth-alphanumeric-ruleset
+  (append
+   ja-fullwidth-space-ruleset
+   ja-fullwidth-hyphen-ruleset
+   ja-fullwidth-comma-ruleset
+   ja-fullwidth-period-ruleset
+   ja-fullwidth-basic-symbol-ruleset
+   ja-fullwidth-number-ruleset
+   ja-fullwidth-alphabet-ruleset))



More information about the Uim-commit mailing list