hangul_syllable_to_jaso() 추가
authorChoe Hwanjin <choe.hwanjin@gmail.com>
Sun, 14 Jan 2007 12:29:54 +0000 (21:29 +0900)
committerChoe Hwanjin <choe.hwanjin@gmail.com>
Sun, 14 Jan 2007 12:29:54 +0000 (21:29 +0900)
git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@115 8f00fcd2-89fc-0310-932e-b01be5b65e01

hangul/hangul.h
hangul/hangulctype.c

index a981709..13094ff 100644 (file)
@@ -56,6 +56,10 @@ void    hangul_jongseong_dicompose(ucschar ch, ucschar* jong, ucschar* cho);
 ucschar hangul_jaso_to_syllable(ucschar choseong,
                                ucschar jungseong,
                                ucschar jongseong);
+void    hangul_syllable_to_jaso(ucschar syllable,
+                               ucschar* choseong,
+                               ucschar* jungseong,
+                               ucschar* jongseong);
 
 /* hangulinputcontext.c */
 typedef struct _HangulKeyboard        HangulKeyboard;
index 104c83a..e861aff 100644 (file)
 
 #include "hangul.h"
 
+static const ucschar hangul_base    = 0xac00;
+static const ucschar choseong_base  = 0x1100;
+static const ucschar jungseong_base = 0x1161;
+static const ucschar jongseong_base = 0x11a7;
+static const int njungseong = 21;
+static const int njongseong = 28;
+
 /**
  * @brief check for a choseong
  * @param c ucs4 code value
@@ -347,12 +354,6 @@ hangul_jongseong_dicompose(ucschar c, ucschar* jong, ucschar* cho)
 ucschar
 hangul_jaso_to_syllable(ucschar choseong, ucschar jungseong, ucschar jongseong)
 {
-    static const ucschar hangul_base    = 0xac00;
-    static const ucschar choseong_base  = 0x1100;
-    static const ucschar jungseong_base = 0x1161;
-    static const ucschar jongseong_base = 0x11a7;
-    static const int njungseong = 21;
-    static const int njongseong = 28;
     ucschar c;
 
     /* we use 0x11a7 like a Jongseong filler */
@@ -381,28 +382,20 @@ hangul_syllable_to_jaso(ucschar syllable,
                        ucschar* jungseong,
                        ucschar* jongseong)
 {
-    static const ucschar hangul_base    = 0xac00;
-    static const ucschar choseong_base  = 0x1100;
-    static const ucschar jungseong_base = 0x1161;
-    static const ucschar jongseong_base = 0x11a7;
-    static const int njungseong = 21;
-    static const int njongseong = 28;
-
-    if (!hangul_is_syllable(syllable)) {
-       if (jongseong != NULL)
-           *jongseong = 0;
-       if (jungseong != NULL)
-           *jungseong = 0;
-       if (choseong != NULL)
-           *choseong = 0;
-
+    if (jongseong != NULL)
+       *jongseong = 0;
+    if (jungseong != NULL)
+       *jungseong = 0;
+    if (choseong != NULL)
+       *choseong = 0;
+
+    if (!hangul_is_syllable(syllable))
        return;
-    }
 
     syllable -= hangul_base;
-
     if (jongseong != NULL) {
-       *jongseong = jongseong_base + syllable % njongseong;
+       if (syllable % njongseong != 0)
+           *jongseong = jongseong_base + syllable % njongseong;
     }
     syllable /= njongseong;