Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         Korean Input Method Enhancement
    1.2. Name of Document Author/Supplier:
         Author:  Aijin Kim
    1.3  Date of This Document:
        09 February, 2008
4. Technical Description
ntroduction
   1.1. Project/Component Working Name:
        Korean Input Method Enhancement

   1.2. Name of Document Author/Supplier:
        Aijin Kim (Aijin.Kim at Sun.COM)

2. Project Summary
   2.1. Project Description:
         
        This project enhances user experience and functionality of the Korean 
input method 
        on Solaris by implementing a new Korean LE(Language Engine),HangulLE 
        and replacing the existing KOLE.
  
        HangulLE imports libhangul which is an open sourced library for hangul 
processing.
        Please see 4.1.2 for more detail about libhangul.

        In Nevada, KOLE will be replaced with HangulLE, while in S10URs, KOLE 
will be kept
        and HangulLE will be added to the existing package so that we can 
guarantee 
        safety in user experience perspective during S10URs with a transition 
stage 
        of the replacement.

        Once the implementationis completed, HangulLE will also be open sourced 
to openi18n.org.
        http://www.openi18n.org

        The OSR numbers related with the projects are as below:
             - OSR 7595 : in-bound of Libhangul
             - OSR 7747 : out-bound of HangulLE

   2.2. Risks and Assumptions:

        As this project is specific to Korean, engineer should have basic 
        knowledge of Korean language and understand the functions of Korean
        input method.

        Libhangul is an open sourced library and the latest version is 0.0.6.
        Further maintaining work may be required according to the upgrade 
        of libhangul. 

        There are some changes in user's usage between KOLE and HangulLE and 
all the
        changes will be mentioned in Korean User Guide and OLH of HangulLE.
        Please see 4.1.6 for more detail about usage compatibility.

        As KOLE won't be delivered any more in Navada, EOFs of KOLE and Hanja 
Tool which
        is used for user-defined Hangul-Hanja dictionary in KOLE are needed. 
        More specifically, EOF announcement is planned at the next available
        S10UR and EOF execution is planned at Solaris Nevada. 

3. Business Summary
   3.1. Problem Area:

        Currently, KOLE's UI is still based on Motif while other LEs (e.g. CLE,
        TWLE,HKLE) were upgraded to be based on GTK+ in IIIMF r12. It causes 
        UI inconsistency of input methods on Solaris.     
        In the aspect of implementation, KOLE is not upgraded to use Common-LE 
API 
        and it may cause difficulty with code maintenance.
      
        Current KOLE has limited functionality for the major functions 
        compared to other major input methods such as Microsoft Korean IME 
        and SCIM(Smart Common Input Method).
              
        Major functions which should be improved are as below:
             - Hangul(Korean) input 
             - Hangul/Hanja(Korean/Chinese) conversion
             - keyboard layout selection

   3.5. Opportunity Window/Exposure:

        Solaris Nevada
        Solaris 10U6

   3.6. How will you know when you are done?:
          
        HangulLE replaces KOLE's all features and is integrated to 
        Solaris Nevada and Solaris 10U6.
 
4. Technical Description:
   4.1. Details:
           
        4.1.1. Basic concept of Korean language

        Hangul is the native alphabet of the Korean language. 
        One hangul syllable character is composed of two or three phonemic 
        elements by composition rule. 

            Syllable = Leading consonant + Vowel (+ Trailing consonant)

        4.1.2. External technology - Libhangul
       
        Libhangul is a generalized and portable library for hangul processing. 
        It is developed by Choe Hwanjin(choe.hwanjin at gmail.com) as
        Open Hangul Project under GNU LGPL. Currently, libhangul is imported to
        several Korean input methods. Libhangul supports various kinds of
        keyboard layout automata and also provides Hanja dictionary. 
        http://kldp.net/projects/hangul/

        4.1.3. Structure of HangulLE
         
        HangulLE imports libhangul as an IME(Input Method Engine). 
        During IME initialization, LE checks if libhangul is installed 
previously.
        If libhangul.so is not found, IME can not be started. Hanja dictionary 
is also 
        loaded during IME registration.

             +-------------+
             |  HangulLE   |
             +-------------+
                    |                  +--------------+
             +-------------+           | libhangul.so |
             | Hangul IME  |<--------- +--------------+
             +-------------+           |  hanja.txt   |
                                       +--------------+

        
        4.1.4. Functionality
          
        (1) Hangul input
        Hangul input is the most basic function of Korean input method. HangulLE
        provides enhanced user conveniences for Hangul input.

        Generally, user should use 'Shift+single consonant' to input a double 
        consonant. HangulLE supports the double consonant input by pressing 
        single consonant key twice and it's more convenient than using Shift 
key.
        For example, if user want to input '???', (s)he can input '???' twice 
as well
        as 'Shift+???'.
              - Shift + '???' -> '???'
              - '???' + '???' -> '???'

        Vowel can't be the first of Hangul syllable in the composition rule of
        Korean. If user makes a mistake with input order, input characters are 
not
        composited to a syllable. Then user should delete them and input with 
        correct sequence again. It often annoys users.
              - '???' + '???' -> '???'         : correct order
              - '???' + '???' -> '???''???'     : incorrect order

        HangulLE provides auto composition function which automatically corrects
        input sequence and composites to a syllable. Even if user inputs a vowel
        first and then inputs a consonant, (s)he doesn't have to delete and 
re-input.
              - '???' + '???' -> '???'          
              - '???' + '???' -> '???'   

        User is still able to input intended character sequence even if it's 
        an invalid order of syllable.
          
        (2) Hangul/Hanja conversion
        Hanja dictionary of libhangul has not only Hanja character candidates 
but also
        meaning and pronunciation information of each character. All the 
information
        is displayed in the candidate list and it provides much convenience 
        during Hanja input. 
        To input Hanja, user should input Hangul syllables first and convert 
them to 
        proper Hanja characters by selecting a candidate from the candidate 
list. 
        Hangul/Hanja conversion is executed by shortcut key or icon on the
        auxiliary window. Hanja key is used as a shortcut key.

        (3) Keyboard layout selection
        Keyboard layout for Korean is switched in the properties window. 
HangulLE
        supports below keyboard layouts:
              - dubeol
              - sebeol final
              - sebeol 390
              - sebeol sunarea

        Default value is dubeol layout which is most commonly used. And
        User can switch keyboard layout in the properties window.

        4.1.5. User Interface - Auxiliary window 

        Auxiliary window is an additional GUI For CJK LEs. User can switch 
        input methods and change properties of LE via the auxiliary window.
        The layout of HangulLE's auxiliary window as below:

              
+-----------------------------------------------------------------+
              | Mode Switch | Full/Half | Hanja | Virtual Keyboard | Properties 
|
              
+-----------------------------------------------------------------+
          
               - IM Switch: Input mode switching
               - Full/Half: Full/Half width switching
               - Hanja: hangul/hanja conversion
               - Virtual Keyboard: Virtual Keyboard window
               - Properties: properties setting
        
        4.1.6. Usage Compatibility

        All the features of existing KOLE will be replaced by HangulLE or 
alternative 
        ways. However, there are some changes in user's usage.

        (1) Input Mode
        KOLE has four different input modes, which are exclusive each other:
             - Hangul
             - Hex(KS X 1001)
             - Hex(UTF-8)
             - Symbol  

        Hangul and Hex(KS X 1001) mode is kept in HangulLE.
        Hex(UTF-8) mode will be covered by UNICODE engine of IIIMF.
        Instead of exclusive symbol input mode, HangulLE provides a feature of 
symbol input 
        with virtual keyboard, which is consistent with CLE,TWLE. It allows 
user to input 
        hangul and symbols without switching input modes. And also 
'consonant+Hanja key' 
        is supported for symbol input just like Windows IME and SCIM-hangul.

        (2) Shorcut Key Definition
        KOLE is using several shortcut keys with 'Ctrl+', which are already 
defined 
        in some applications. It causes conflicts between KOLE and applications 
and
        this issue was already reported as CR6267800. 
        HangulLE doesn't use 'Ctrl+' key sequences to avoid conflicts with 
applications.
        Instead, HangulLE defines shortcut keys to be similar with Windows IME 
and SCIM.
         
        (3) User-defined Hangul-Hanja Dictionary
        As all the hangul/hanja processings and hanja dictionary are managed by 
libhangul, 
        the existing Hanja Tool won't be used for user-defined Hangul-Hanja 
dictionary 
        in HangulLE. 
        libhangul doesn't support the feature of user-defined dictionary in the 
        current version. However, community discussions are currently in 
progress 
        to support the feeature in libhangul. Once the feature is provided in 
the new
        version of libhangul, it will replace Hanja Tool. 

        4.1.7. Selection of A Language Engine in S10UR

        In S10UR, HangulLE will be the default Korean language engine. When 
users switch
        to Korean input mode with 'Ctrl+Space' or 'Hangul/English' key, 
HangulLE will
        be luanched.

        Users can select a language engine easily with below steps:
             - Left-click the Input Method icon on the gnome-terminal.
             - From the language list, select 'Korean' and preferred language 
engine.        

   4.2. Bug/RFE Number(s):   

        4903905   Hex input mode algorithm needs to be revised
        4919114   Sebul keyinput needs separated automata
        6267800   shortkey for hanja conversion can not work in some gnome
                  application, such as gedit

   4.3. In Scope:
        N/A

   4.4. Out of Scope:
        N/A

   4.5. Interfaces:
        
        - Interface Imported:

          Interface                            Stability          Note
          
-----------------------------------------------------------------------------------
          IIIM protocol and libraries          Committed,         PSARC/2005/525
                                               Consolidation        
                                               Private, and
                                               Project Private 

        - Interfaces exported including to be Obsoleted: 

          Interface                            Stability            Note
          
-----------------------------------------------------------------------------------
          HangulLE GUI and behavior            Uncommitted        GUI and 
methods of
                                                                  new Hangul 
engine
          /usr/lib/iiim/le/hangul/             Consolidation      Hangul 
directory where 
                                               Private            various 
Hangul engines and
                                                                  their files 
reside
          /usr/lib/libhangul.so.0.0.0          Volatile           libhangul 
library
          /usr/share/libhangul/hanja/hanja.txt Volatile           Hanja 
dictionary
          KOLE GUI and behavior                Obsolete           GUI and 
methods of the 
                                               Uncommitted        current 
Hangul engine
          /usr/lib/iiim/le/kole/*              Obsolete           The current 
KOLE and 
                                               Consolidation      its directory
                                               Private        
          /usr/dt/bin/sdthanja                 Obsolete           Hanja Tool
                                               Uncommitted
          /usr/lib/mle/{ko,ko.UTF-8}/syshjd    Obsolete           System Hanja 
dictionary
                                               Consolidation    
                                               Private
          $HOME/.usrhjd                        Obsolete           User Hanja 
dictionary
                                               Consolidation    
                                               Private

          /usr/dt/app-defaults/                Obsolete           Hanja Tool 
resource files
          {ko,ko.UTF-8}/Sdthanja               Consolidation    
                                               Private          

          /usr/openwin/lib/locale/{ko,         Obsolete           Hanja Tool 
L10N files
          ko.UTF-8}/LC_MESSAGES/sdthanja.cat   Consolidation    
                                               Private

        - Release binding:
          Project team asks for Micro/Patch release binding for newly exported
          interfaces. For the interfaces to be obsoleted, the project team ask 
for
          EOF announcement at Micro/Patch (i.e., S10UR) and EOF execution at 
Minor
          (i.e., Nevada).
            
        
   4.6. Doc Impact:

        OLH of Korean Input Method
        Korean Solaris User's Guide
        EOF announcement into Release Notes

   4.7. Admin/Config Impact:
        N/A

   4.8. HA Impact:
        N/A

   4.9. I18N/L10N Impact:    
        This project is a part of internationalization effort.

   4.10. Packaging & Delivery:     
         For S10UR, both KOLE and HangulLE will be delivered in the existing 
package.     
         SUNWkleu         Korean locale core package

         For Nevada, HangulLE will be delivered as a new package and KOLE will 
be removed.
         The name of the new package is not decided yet.

   4.11. Security Impact:
         N/A

   4.12. Dependencies:
         N/A

5. Reference Documents:

         PSARC 2005/525 IIIMF upgrade to revision 12
         Internet/Intranet Input Method Architecture:
         http://www.openi18n.org/subgroups/im/iiimf/whitepaper/whitepaper.html

         Internet-Intranet Input Method Protocol (IIIMP) specification:
         http://www.openi18n.org/subgroups/im/iiimf/protocol/spec.html

         ASARC 1999/276 /usr/lib/im directory for platform independent Input 
Method Systems
         ASARC 1998/515 Multi Script Input Support in UTF-8 locales
         ASARC 1998/422 IIIMP - Internet/Intranet Input Method Protocol
         ASARC 1997/359 Multilingual Input Method Server for X/Java/Corba

6. Resources and Schedule:
   6.1. Project Availability:
        03/24/2008, Nevada build 86
        S10U6 build 1

   6.3. Cost of Capital Resources
        G11nws.sfbay as repository server. Existing
        Desktop development machine. Existing

   6.5. ARC review type: 
        FastTrack

7. Prototype Availability:
   7.1. Prototype Availability:
        09/30/2007
     
   7.2. Prototype Cost
        15 person.days

6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                Globalization
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to