unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* sisheng input method missing
@ 2004-05-09 20:13 Werner LEMBERG
  2004-05-13  8:23 ` Kenichi Handa
  0 siblings, 1 reply; 8+ messages in thread
From: Werner LEMBERG @ 2004-05-09 20:13 UTC (permalink / raw)



While there is support for the (Chinese) sisheng character set, a
proper input method is missing in Emacs.  Is this missing
accidentally?  If such a thing isn't available I can write one.


     Werner

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: sisheng input method missing
  2004-05-09 20:13 sisheng input method missing Werner LEMBERG
@ 2004-05-13  8:23 ` Kenichi Handa
  2004-05-14  7:09   ` Werner LEMBERG
  0 siblings, 1 reply; 8+ messages in thread
From: Kenichi Handa @ 2004-05-13  8:23 UTC (permalink / raw)
  Cc: emacs-devel

In article <20040509.221355.169227575.wl@gnu.org>, Werner LEMBERG <wl@gnu.org> writes:

> While there is support for the (Chinese) sisheng character set, a
> proper input method is missing in Emacs.  Is this missing
> accidentally?  If such a thing isn't available I can write one.

It's missing from the start.  Could you please contribute
it?

---
Ken'ichi HANDA
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: sisheng input method missing
  2004-05-13  8:23 ` Kenichi Handa
@ 2004-05-14  7:09   ` Werner LEMBERG
  2004-05-14  7:59     ` Kenichi Handa
  0 siblings, 1 reply; 8+ messages in thread
From: Werner LEMBERG @ 2004-05-14  7:09 UTC (permalink / raw)
  Cc: emacs-devel

[-- Attachment #1: Type: Text/Plain, Size: 17107 bytes --]


[This mail uses the sisheng font.]

> > While there is support for the (Chinese) sisheng character set, a
> > proper input method is missing in Emacs.  Is this missing
> > accidentally?  If such a thing isn't available I can write one.
> 
> It's missing from the start.  Could you please contribute it?

Appended below.  Note that this is a first draft only!  It lacks
proper documentation, copyright, correctly set quail flags, etc.

A longer time ago a very simple sisheng input method from Takahashi
Naoto floated around; it can be still found in the internet.  I've
decided against this simplistic approach because users often position
the tone accents on top of the wrong vocal (e.g. `gúi' instead of the
correct `guí') -- additionally, it is common to type `gui2' if no
sisheng font is available.  The package below thus contains all
possible syllable combinations for lower and uppercase:

    gui1 -> guī
    gui2 -> guí
    gui3 -> guǐ
    gui4 -> guì    
    Gui1 -> Guī
    Gui2 -> Guí
    Gui3 -> Guǐ
    Gui4 -> Guì    

With some lisp hackary (which I can't do unfortunately) the file size
can be reduced considerably, having just one `gui' entry, and lisp
code expands this to the eight variants for quail.

For the moment, I've selected `ǚ' as the mode indicator (letter `ü' is
assigned to `v'; unstressed lowercase syllables containing `ü' can be
accessed as the fifth tone, e.g. `lv5' -> `lü').  AFAIK, `ǚ' is only
used for Pīnyīn transliteration.

Finally, the code below neither covers additional transcriptions
needed for dialects (like `ḿ') nor the Bopomofo signs (`ㄅㄆㄇㄈ').
Honestly, I don't know how to access them in a sensible way.

BTW, there is a one-to-one relation between Pīnyīn and Bopomofo;
having functions `pinyin-to-bopomofo' and bopomofo-to-pinyin' (and
aliases called `pinyin-to-zhuyin' and `zhuyin-to-pinyin') would be
very nice.


    Werner


======================================================================


begin 644 sisheng.el.bz2
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
MW$1&^^^]558QBJJIF9QC&```F9G&,4VVDE550`VV`))MNJJL8Q@`F9F(B$DI
MF<8QB9F=]]ZJJWWWWQC&-]]Z22JJJJK???>9F9F922F9F9G7777???>9F9F9
MB(@`22`$DDDFVYF=]]]YF9QC&$DDDIF>W;M,S->?/GRV_].>>>0.?7KUZ`/7
MKUZ]>O7H"JJFVZJJ`,8Q41$555Z]>O3;]))>O7KUZ]>O3;]-M^O7K&,8F9F9
MF<8QZB(@`B(AMM))MM)*JK???>9F0``QC&)F9;;22F9H`;;`$DVW556,8P`3
M,RDE,S,S.NNM-O&,8QC&*JJQC%1$0`))`#;=55554VW550```%55-MMMI)55
M4`-M@"2YZ>WM[>T1$<\\\@$1$1$1$1`!$1$1$````1$0``$1$``!$1``````
M`````1$0``$1$``````````!$1$1$``!$1$1$1$0`1$1$1````$1$``!$1``
M`1$0``````````$1$``!$1```````````/VZ=.FFFFD1$;;;;`&WM[>P`DD`
M``!54P```(B(B(@`2222`````$D@!)(`22`&VP!):ZZZMM@&^^[`(B(;;`$D
M@!ML`;;`$D@!)(`B(A)(`22````;>NNNN,8P`;[[L`22````22````B(B(B`
M``22`&VP!MZZZZ[[[[@&^^^NNNN,8P```!OONP```(B(22`&VP!)(```!ML`
M``!)(`B(A)))))(`````22`$D@!)(`;;`$EKKKJVV`;[[L`B(AML`22`&VP!
MML`22`$D@"(B$D@!)(```!MZZZZXQC`!OONP!)(```!)(```"(B(B(``!)(`
M;;`&WKKKKOOON`;[[ZZZZXQC````&^^[``!=^_?O$1'S23;:2220``55<I)`
M``DDVVVVDDVV````DDDE$1"2222241$-MI)))-MI)))`:ZZZI)`#;>,8:23;
M;;:2220`DDVVDDVVVVDD`-MI)-MI)))))````))`"23;;;;;;;8`VVVVDDDD
MDDDDVV``"2220``1$0DDVVDDDD``#;:20``))-MMMI)-M@```))))1$0DDDD
MDE$1#;:2223;:22241$))`#;?COW[]_'CQX\>/'A)))(`22;;22;;;;22`&V
MTDFVTDDDDD@```$D@!))MMMMMMML`;;;;22222222;;``!)))(`>G3OW[]NW
M:(B(B(B(B(B(B(B(@```````````````XXX``````````````````!T73T]/
M'''5X%U=74``````'''````````````'''`````.[TW=OS^S];T.\K5;5N.W
MV^_]:[W;Z_P>O6_*B$?-_X"?\ZB$?-[?>CWH]Z/>DM+2TM*4I33333,S,S,`
M))`TTTTS,P))))----,S,"2223,S```#3333,S))))))))```#,S,S,DD`--
M--*4I22222E*4`----*4I22222E*4`,S,DDI2E```#3332E*4DDDDI2E`#33
M33,S,S,DDDD`*4I0``----,S,S,R20))`#3332E*4S,R20`#,S```TTTTS,S
M,S))`DD#,S))*4I0```S,S,S`DDDD``TTTTS,P))))----*4I0`DDI2E```#
M3333,S))))))))```I2E,S,`,S,DDI2E```"E*4#,S,S,DD`----*4I0))))
M----*4I0))))*4I0```TTTTS,S,S`"20----,S,"22233333,S`DDDDI2E``
M`#3332E*4DDDDDDDD```,S,S,R20`TTTTI2E))))*4I0`TTTTI2E))))*4I0
M`S,R22E*4```----*4I22222E*4`----,S,S,R2220>K<^?/FI2E```TTTTI
M2E,S,DD"20`TTTTI2E,S,DD`<[GSY\V9F``!IIIIF9F9F22!)(&9F224I2@`
M`!F9F9F!)))))(`::::9F8$DDDFFFFE*4H`224I2@``!IIIIF9DDDDDDDD@`
M`4I2F9F`&9F224I2@``!2E*!F9F9F22`&FFFE*4H$DDDFFFFE*4H$DDDE*4H
M```_3S:UX)$H*2@I$H*1*0]M&$4124BB2@H4%)1%(42E"D2DBB4%(E)%$H*$
MHBBA2)211*"D%(42DBBB424%"B*04A2*(HI)1)04E(4)1%%"DBD*2D4AE#`4
MB4D42DBDI%$E!24DI*12%(4)1%%"D2DBBA1)2%$E"42DBDI&S]-GT6?/9_U<
MI79.LVG7*53\IA\QZ3CCCCC333C#C##3)'&FG'&FF'&FG'&FF%/##PXXTPHP
MXPTI2R<8<>''&F''&&E*>&'%*63PPX])QIIQAAZ''H63P\/#PXXXX>'#CCC3
M"R:8:>''''#PX<<<:8613#PTTT8,*64XPTXXXXX>'#CCC3"F2FFFGAQQI@XP
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
:``.7(``.7+VM;5N5D03_\7<D4X4)"6!%P=``
`
end

[-- Attachment #2: Type: text/plain, Size: 141 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: sisheng input method missing
  2004-05-14  7:09   ` Werner LEMBERG
@ 2004-05-14  7:59     ` Kenichi Handa
  2004-05-14 13:16       ` Werner LEMBERG
  0 siblings, 1 reply; 8+ messages in thread
From: Kenichi Handa @ 2004-05-14  7:59 UTC (permalink / raw)
  Cc: emacs-devel

In article <20040514.090936.82116624.wl@gnu.org>, Werner LEMBERG <wl@gnu.org> writes:
>>  It's missing from the start.  Could you please
>> contribute it?

> Appended below.  Note that this is a first draft only!  It
> lacks proper documentation, copyright, correctly set quail
> flags, etc.

> A longer time ago a very simple sisheng input method from
> Takahashi Naoto floated around; it can be still found in
> the internet.  I've decided against this simplistic
> approach because users often position the tone accents on
> top of the wrong vocal (e.g. `gúi' instead of the correct
> `guí') -- additionally, it is common to type `gui2' if no
> sisheng font is available.  The package below thus
> contains all possible syllable combinations for lower and
> uppercase:

It seems that each rule has one of these forms:

  VOWEL TONE-NUMBER  -> PINYIN
  CONSONANT VOWEL TONE-NUMBER -> PINYIN
  
Can't we delete rules of the latter form?

---
Ken'ichi HANDA
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: sisheng input method missing
  2004-05-14  7:59     ` Kenichi Handa
@ 2004-05-14 13:16       ` Werner LEMBERG
  2004-05-16  0:56         ` Kenichi Handa
  0 siblings, 1 reply; 8+ messages in thread
From: Werner LEMBERG @ 2004-05-14 13:16 UTC (permalink / raw)
  Cc: emacs-devel

[-- Attachment #1: Type: Text/Plain, Size: 612 bytes --]

> It seems that each rule has one of these forms:
> 
>   VOWEL TONE-NUMBER  -> PINYIN
>   CONSONANT VOWEL TONE-NUMBER -> PINYIN
>   
> Can't we delete rules of the latter form?

Basically yes, but I suggest not to do it.  Reason is that not all
combinations actually do exist.  For example, it is possible in Pīnyīn
to have `xū' and `shū', but you can't have `shīn' while `xīn' is
valid.  Providing complete syllables is an aid to beginners to avoid
incorrect spellings, especially for people who are used to the
Wade-Giles transcription (which does have `shin' but no `xin').


    Werner

[-- Attachment #2: Type: text/plain, Size: 141 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: sisheng input method missing
  2004-05-14 13:16       ` Werner LEMBERG
@ 2004-05-16  0:56         ` Kenichi Handa
  2004-05-16 17:50           ` Werner LEMBERG
  0 siblings, 1 reply; 8+ messages in thread
From: Kenichi Handa @ 2004-05-16  0:56 UTC (permalink / raw)
  Cc: emacs-devel

In article <20040514.151635.166958789.wl@gnu.org>, Werner LEMBERG <wl@gnu.org> writes:

> [1  <text/plain; utf-8 (base64)>]
>>  It seems that each rule has one of these forms:
>>  
>>    VOWEL TONE-NUMBER  -> PINYIN
>>    CONSONANT VOWEL TONE-NUMBER -> PINYIN
>>    
>>  Can't we delete rules of the latter form?

> Basically yes, but I suggest not to do it.  Reason is that not all
> combinations actually do exist.  For example, it is possible in Pīnyīn
> to have `xū' and `shū', but you can't have `shīn' while `xīn' is
> valid.  Providing complete syllables is an aid to beginners to avoid
> incorrect spellings, especially for people who are used to the
> Wade-Giles transcription (which does have `shin' but no `xin').

Ok, then let's use your code as is.  Please send me the
final version.

---
Ken'ichi HANDA
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: sisheng input method missing
  2004-05-16  0:56         ` Kenichi Handa
@ 2004-05-16 17:50           ` Werner LEMBERG
  2004-05-17  0:27             ` Kenichi Handa
  0 siblings, 1 reply; 8+ messages in thread
From: Werner LEMBERG @ 2004-05-16 17:50 UTC (permalink / raw)
  Cc: emacs-devel

[-- Attachment #1: Type: Text/Plain, Size: 8802 bytes --]


> Ok, then let's use your code as is.  Please send me the
> final version.

Below.  I've finally decided to try my hands on Lisp...

Note that I've found a major deficiency of the sisheng character set
(and fonts).  It lacks at least the following (uppercase) characters:

  Ā, Á, Ǎ, À,
  Ē, É, Ě, È,
  Ō, Ó, Ǒ, Ò

Without them it is e.g. not possible to write `Lǐ Ānhuì'.

After some thinking I have decided to not use the latin part of the
chinese-sisheng character set, given that mule-unicode-0100-24ff
character set contains all of the necessary characters.

Please check whether my code is OK -- I've marked two places with XXX.


    Werner


======================================================================


;;; sisheng.el --- sisheng input method for Chinese pinyin transliteration

;; Copyright (C) 2004  Free Software Foundation, Inc.

;; Author: Werner LEMBERG <wl@gnu.org>

;; Keywords: multilingual, input method, Chinese, pinyin, sisheng

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING.  If not, write to
;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

;;; Commentary:

;;; Code:

(require 'quail)

; XXX: do we need this?
;
;(setq sisheng-orig-case-table (current-case-table))
;(set-case-table (standard-case-table))

(defconst sisheng-regexp
  "[āēīōūǖ]\\|üē")

;; First element is the key,
;; second element is the vowel used for the input sequence,
;; last four elements are the resulting tones.
;;
(defconst sisheng-vowel-table
  '(("ā" "a" "ā" "á" "ǎ" "à")
    ("ē" "e" "ē" "é" "ě" "è")
    ("ī" "i" "ī" "í" "ǐ" "ì")
    ("ō" "o" "ō" "ó" "ǒ" "ò")
    ("ū" "u" "ū" "ú" "ǔ" "ù")
    ("ǖ" "v" "ǖ" "ǘ" "ǚ" "ǜ")
    ("üē" "ve" "üē" "üé" "üě" "üè")))


;; All possible syllables in Mandarin Chinese, presented in the first
;; tone.  Note that make-sisheng-rules always constructs rules for all
;; four tones even if some of those tones aren't used in Mandarin.
;;
(defconst sisheng-syllable-table
  '("ā" "āi" "ān" "āng" "āo"

    "bā" "bāi" "bān" "bāng" "bāo"
    "bēi" "bēn" "bēng"
    "bī" "biān" "biāo" "biē" "bīn" "bīng"
    "bō"
    "bū"

    "cā" "cāi" "cān" "cāng" "cāo"
    "cē" "cēn" "cēng"
    "cī"
    "cōng" "cōu"
    "cū" "cuān" "cuī" "cūn" "cuō"

    "chā" "chāi" "chān" "chāng" "chāo"
    "chē" "chēn" "chēng"
    "chī"
    "chōng" "chōu"
    "chū" "chuā" "chuāi" "chuān" "chuāng" "chuī" "chūn" "chuō"

    "dā" "dāi" "dān" "dāng" "dāo"
    "dē" "dēi" "dēn" "dēng"
    "dī" "diān" "diāo" "diē" "dīng" "diū"
    "dōng" "dōu"
    "dū" "duān" "duī" "dūn" "duō"

    "ē" "ēi" "ēn" "ēng" "ēr"

    "fā" "fān" "fāng"
    "fēi" "fēn" "fēng"
    "fiāo"
    "fō" "fōu"
    "fū"

    "gā" "gāi" "gān" "gāng" "gāo"
    "gē" "gēi" "gēn" "gēng"
    "gōng" "gōu"
    "gū" "guā" "guāi" "guān" "guāng" "guī" "gūn" "guō"

    "hā" "hāi" "hān" "hāng" "hāo"
    "hē" "hēi" "hēn" "hēng"
    "hōng" "hōu"
    "hū" "huā" "huāi" "huān" "huāng" "huī" "hūn" "huō"

    "jī" "jiā" "jiān" "jiāng" "jiāo" "jiē" "jīn" "jīng" "jiōng" "jiū"
    "jū" "juān" "juē" "jūn"

    "kā" "kāi" "kān" "kāng" "kāo"
    "kē" "kēi" "kēn" "kēng"
    "kōng" "kōu"
    "kū" "kuā" "kuāi" "kuān" "kuāng" "kuī" "kūn" "kuō"

    "lā" "lāi" "lān" "lāng" "lāo"
    "lē" "lēi" "lēng"
    "lī" "liā" "liān" "liāng" "liāo" "liē" "līn" "līng" "liū"
    "lōng" "lōu"
    "lū" "luān" "lūn" "luō"
    "lǖ" "lüē"

    "mā" "māi" "mān" "māng" "māo"
    "mē" "mēi" "mēn" "mēng"
    "mī" "miān" "miāo" "miē" "mīn" "mīng" "miū"
    "mō" "mōu"
    "mū"

    "nā" "nāi" "nān" "nāng" "nāo"
    "nē" "nēi" "nēn" "nēng"
    "nī" "niān" "niāng" "niāo" "niē" "nīn" "nīng" "niū"
    "nōng" "nōu"
    "nū" "nuān" "nuō"
    "nǖ" "nüē"

    "ō" "ōu"

    "pā" "pāi" "pān" "pāng" "pāo"
    "pēi" "pēn" "pēng"
    "pī" "piān" "piāo" "piē" "pīn" "pīng"
    "pō" "pōu"
    "pū"

    "qī" "qiā" "qiān" "qiāng" "qiāo" "qiē" "qīn" "qīng" "qiōng" "qiū"
    "qū" "quān" "quē" "qūn"

    "rān" "rāng" "rāo"
    "rē" "rēn" "rēng"
    "rī"
    "rōng" "rōu"
    "rū" "ruā" "ruān" "ruī" "rūn" "ruō"

    "sā" "sāi" "sān" "sāng" "sāo"
    "sē" "sēn" "sēng"
    "sī"
    "sōng" "sōu"
    "sū" "suān" "suī" "sūn" "suō"

    "shā" "shāi" "shān" "shāng" "shāo"
    "shē" "shēi" "shēn" "shēng"
    "shī"
    "shōu"
    "shū" "shuā" "shuāi" "shuān" "shuāng" "shuī" "shūn" "shuō"

    "tā" "tāi" "tān" "tāng" "tāo"
    "tē" "tēi" "tēng"
    "tī" "tiān" "tiāo" "tiē" "tīng"
    "tōng" "tōu"
    "tū" "tuān" "tuī" "tūn" "tuō"

    "wā" "wāi" "wān" "wāng"
    "wēi" "wēn" "wēng"
    "wō"
    "wū"

    "xī" "xiā" "xiān" "xiāng" "xiāo" "xiē" "xīn" "xīng" "xiōng" "xiū"
    "xū" "xuān" "xuē" "xūn"

    "yā" "yān" "yāng" "yāo"
    "yē"
    "yī" "yīn" "yīng"
    "yō" "yōng" "yōu"
    "yū" "yuān" "yuē" "yūn"

    "zā" "zāi" "zān" "zāng" "zāo"
    "zē" "zēi" "zēn" "zēng"
    "zī"
    "zōng" "zōu"
    "zū" "zuān" "zuī" "zūn" "zuō"

    "zhā" "zhāi" "zhān" "zhāng" "zhāo"
    "zhē" "zhēi" "zhēn" "zhēng"
    "zhī"
    "zhōng" "zhōu"
    "zhū" "zhuā" "zhuāi" "zhuān" "zhuāng" "zhuī" "zhūn" "zhuō"))

;; This function converts e.g.
;;
;;   "zhuō"
;;
;; into
;;
;;   (("zhuo4" ["zhuò"])
;;    ("zhuo3" ["zhuǒ"])
;;    ("zhuo2" ["zhuó"])
;;    ("zhuo1" ["zhuō"]))
;;
(defun make-sisheng-rules (syllable)
  (let ((case-fold-search t)
	vowel-match
	vowel-list
	input-vowel
	base-key
	key
	value
	key-value-list
	(i 1))
    (string-match sisheng-regexp syllable)
    (setq vowel-match (downcase (match-string 0 syllable)))
    (setq vowel-list
	  (cdr (assoc-string vowel-match sisheng-vowel-table)))
    (setq input-vowel (car vowel-list))
    (setq base-key (replace-match input-vowel nil nil syllable))
    (while (<= i 4)
      (setq key (concat base-key (number-to-string i)))
      (setq value (vector (replace-match (nth i vowel-list) nil nil syllable)))
      (push (list key value) key-value-list)
      (setq i (1+ i)))
    key-value-list))

;; Set up sisheng input method.
;;
(quail-define-package
 "chinese-sisheng"			; name
 "Chinese"				; language
 "ǚ"					; title
 t					; guidance
 "Sìshēng input method for pīnyīn transliteration of Chinese.

Examples: shuang1 -> shuāng
          Lv3     -> Lǚ
          AN4     -> ÀN

Use the fifth (unstressed) tone for syllables containing `ü'
without a tone mark.

Example:  nve5    -> nüe
"					; docstring
 nil					; translation-keys
 t					; forget-last-selection
 nil					; deterministic
 nil					; kbd-translate
 nil					; show-layout
 nil					; create-decode-map
 nil					; maximum-shortest
 nil					; overlay-plist
 nil					; update-translation-function
 nil					; conversion-keys
 t					; simple
 )

;; Call make-sisheng-rules for all syllables in sisheng-syllable-table.
;;
(let (sisheng-list)
  (dolist (syllable sisheng-syllable-table)
    (setq sisheng-list
	  (append (make-sisheng-rules syllable)
		  sisheng-list)))

  (dolist (syllable sisheng-syllable-table)
    (setq sisheng-list
	  (append (make-sisheng-rules (upcase-initials syllable))
		  sisheng-list)))

  (dolist (syllable sisheng-syllable-table)
    (setq sisheng-list
	  (append (make-sisheng-rules (upcase syllable))
		  sisheng-list)))

  (eval `(quail-define-rules
	  ,@sisheng-list
	
	  ("lv5" ["lü"])
	  ("lve5" ["lüe"])
	  ("nv5" ["nü"])
	  ("nve5" ["nüe"])

	  ("Lv5" ["Lü"])
	  ("Lve5" ["Lüe"])
	  ("Nv5" ["Nü"])
	  ("Nve5" ["Nüe"])

	  ("LV5" ["LÜ"])
	  ("LVE5" ["LÜE"])
	  ("NV5" ["NÜ"])
	  ("NVE5" ["NÜE"]))))

; XXX: do we need this?
;
;(set-case-table sisheng-orig-case-table)

;; Local Variables:
;; coding: utf-8
;; End:

[-- Attachment #2: Type: text/plain, Size: 141 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: sisheng input method missing
  2004-05-16 17:50           ` Werner LEMBERG
@ 2004-05-17  0:27             ` Kenichi Handa
  0 siblings, 0 replies; 8+ messages in thread
From: Kenichi Handa @ 2004-05-17  0:27 UTC (permalink / raw)
  Cc: emacs-devel

In article <20040516.195003.193696924.wl@gnu.org>, Werner LEMBERG <wl@gnu.org> writes:
> Below.  I've finally decided to try my hands on Lisp...

Thank you.  I've just installed a slightly modified version
with changes to leim/Makefile.in and etc/NEWS.

> Note that I've found a major deficiency of the sisheng character set
> (and fonts).  It lacks at least the following (uppercase) characters:

>   Ā, Á, Ǎ, À,
>   Ē, É, Ě, È,
>   Ō, Ó, Ǒ, Ò

> Without them it is e.g. not possible to write `Lǐ Ānhuì'.

> After some thinking I have decided to not use the latin part of the
> chinese-sisheng character set, given that mule-unicode-0100-24ff
> character set contains all of the necessary characters.

I agree with that.

> Please check whether my code is OK -- I've marked two places with XXX.

I installed this kind of code:

;; Call quail-make-sisheng-rules for all syllables in sisheng-syllable-table.
;;
(let ((case-table-save (current-case-table))
      sisheng-list)
  (set-case-table (standard-case-table))
  ...
  (set-case-table case-table-save))

---
Ken'ichi HANDA
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2004-05-17  0:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-09 20:13 sisheng input method missing Werner LEMBERG
2004-05-13  8:23 ` Kenichi Handa
2004-05-14  7:09   ` Werner LEMBERG
2004-05-14  7:59     ` Kenichi Handa
2004-05-14 13:16       ` Werner LEMBERG
2004-05-16  0:56         ` Kenichi Handa
2004-05-16 17:50           ` Werner LEMBERG
2004-05-17  0:27             ` Kenichi Handa

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).