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