From kehoea@parhasard.net Wed Dec 31 05:41:46 2008 Received: (at submit) by emacsbugs.donarmstrong.com; 31 Dec 2008 13:41:46 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=0.1 required=4.0 tests=FOURLA,MURPHY_DRUGS_REL8 autolearn=no version=3.2.5-bugs.debian.org_2005_01_02 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id mBVDfca4008068 for ; Wed, 31 Dec 2008 05:41:40 -0800 Received: from mx10.gnu.org ([199.232.76.166]:38158) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1LI1JI-0000eW-SC for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 08:40:33 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1LI1KF-0006mU-1c for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 08:41:35 -0500 Received: from daedalus.ipv4.asclepian.ie ([213.133.100.226]:56357 helo=daedalus.asclepian.ie) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LI1KE-0006ls-09 for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 08:41:30 -0500 Received: by daedalus.asclepian.ie (Postfix, from userid 1002) id 22A10B82D; Wed, 31 Dec 2008 13:41:45 +0000 (GMT) From: Aidan Kehoe MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="wNNNfbStpN" Message-ID: <18779.30356.834146.410474@parhasard.net> Date: Wed, 31 Dec 2008 13:41:40 +0000 To: emacs-pretest-bug@gnu.org Subject: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. X-Mailer: VM 8.0.12-devo-585 under 21.5 (beta28) "fuki" 69a1eda3da06+ XEmacs Lucid (i386-apple-darwin8.11.1) X-NS5-file-as-sent: t X-Echelon-distraction: militia colonel Waco, Texas Marxist Vince Foster Legion of Doom Content-Transfer-Encoding: 7bit X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. --wNNNfbStpN Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit I was asked to resend this after the release; see http://mid.gmane.org/17834.14174.503231.877601@parhasard.net and http://thread.gmane.org/gmane.emacs.pretest.bugs/16625 for the associated thread. --wNNNfbStpN Content-Type: message/rfc822 Content-Description: forwarded message Content-Transfer-Encoding: 7bit MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on icarus.asclepian.ie X-Spam-Level: X-Spam-Status: No, score=-2.0 required=4.7 tests=AWL,BAYES_00,NO_RELAYS autolearn=ham version=3.1.3 X-Original-To: aidan@icarus.conall.net Delivered-To: aidan@icarus.conall.net Received: by icarus.asclepian.ie (Postfix, from userid 1003) id 841338008C; Sun, 14 Jan 2007 13:56:56 +0000 (GMT) Message-ID: <17834.14174.503231.877601@parhasard.net> X-NS5-file-as-sent: t X-Generated-By: Patcher version 3.8 From: Aidan Kehoe To: emacs-pretest-bug@gnu.org Subject: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. Date: Sun, 14 Jan 2007 14:59:58 +0100 Content-Transfer-Encoding: quoted-printable There are two widely-used mappings from ASCII to the International Phonet= ic Alphabet used on Usenet and in the online linguistics community generally. The extant ipa.el uses its own convention to map from ASCII to the IPA; this patch addes support for the more-widely used ones to it, wi= th two new input methods, kirshenbaum-ipa and x-sampa-ipa, following the nam= es of the two conventions. It also moves the file encoding to UTF-8, since Kirshenbaum and X-SAMPA require more character codes than are provided by the Mule IPA character set, and since UTF-8 is more compatible with other applications.=20 In the event that my mailer or yours trashes the character encoding of th= e patch, I=E2=80=99ve made a bzip2=E2=80=99d version of the full file avail= able at http://www.parhasard.net/ipa-20070114.el.bz2 .=20 leim/ChangeLog addition: 2007-01-14 Aidan Kehoe * quail/ipa.el: Recode the file as UTF-8, for better interoperability with other applications.=20 * quail/ipa.el ("kirshenbaum-ipa"): * quail/ipa.el ("x-sampa-ipa"): * quail/ipa.el (x-sampa-prepend-to-keymap-entry): New function. * quail/ipa.el (x-sampa-implosive-submap): New Quail submap. * quail/ipa.el (x-sampa-underscore-implosive): New function. Two new input methods, both following widely-used Usenet conventions for mapping ASCII to the IPA. Kirshenbaum is common in sci.lang and alt.usage.english, X-SAMPA in various (mostly European) non-English language fora. X-SAMPA is slightly more complex to support in Quail that Kirshenbaum, whence the two extra function and one extra submap to support it.=20 GNU Emacs Trunk source patch: Diff command: cvs -q diff -Nu Files affected: leim/quail/ipa.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS Index: leim/quail/ipa.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /sources/emacs/emacs/leim/quail/ipa.el,v retrieving revision 1.8 diff -u -u -r1.8 ipa.el --- leim/quail/ipa.el 13 Dec 2006 01:13:56 -0000 1.8 +++ leim/quail/ipa.el 14 Jan 2007 13:41:57 -0000 @@ -1,8 +1,10 @@ -;;; ipa.el --- Quail package for inputting IPA characters -*-coding: is= o-2022-7bit;-*- - +;;; quail/ipa.el -- Quail package for inputting IPA. -*- coding: utf-8 -= *-=20 +;;;=20 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2= 006 ;; National Institute of Advanced Industrial Science and Technology (A= IST) ;; Registration Number H14PRO021 +;; Licensed to the Free Software Foundation. +;; Copyright (C) 2006 Free Software Foundation, Inc. =20 ;; Keywords: multilingual, input method, IPA =20 @@ -23,11 +25,10 @@ ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. =20 -;;; Commentary: - ;;; Code: =20 (require 'quail) +(eval-when-compile (require 'cl)) =20 (quail-define-package "ipa" "IPA" "IPA" t @@ -37,77 +38,473 @@ nil t nil nil nil nil nil nil nil nil t) =20 (quail-define-rules - ("i" ?=1B,0 =1B(B) - ("I" ?=1B,0!=1B(B) - ("e" ?=1B,0"=1B(B) - ("/3" ?=1B,0#=1B(B) - ("E" ?=1B,0#=1B(B) - ("ae" ?=1B,0$=1B(B) - ("a" ?=1B,0%=1B(B) - ("i-" ?=1B,0&=1B(B) - ("/e" ?=1B,0'=1B(B) - ("/a" ?=1B,0(=1B(B) - ("/m" ?=1B,0)=1B(B) - ("&" ?=1B,0*=1B(B) - ("/v" ?=1B,0+=1B(B) - ("A" ?=1B,0,=1B(B) - ("o|" ?=1B,0,=1B(B) - ("y" ?=1B,0-=1B(B) - ("Y" ?=1B,0.=1B(B) - ("o/" ?=1B,0/=1B(B) - ("oe" ?=1B,00=1B(B) - ("OE" ?=1B,01=1B(B) - ("u-" ?=1B,02=1B(B) - ("o-" ?=1B,03=1B(B) - ("u" ?=1B,04=1B(B) - ("U" ?=1B,05=1B(B) - ("o" ?=1B,06=1B(B) - ("/c" ?=1B,07=1B(B) - ("/A" ?=1B,08=1B(B) - ("|o" ?=1B,08=1B(B) - ("e-" ?=1B,0:=1B(B) - ("e|" ?=1B,0:=1B(B) - ("/3~" ?=1B,0;=1B(B) - ("E~" ?=1B,0;=1B(B) - ("A~" ?=1B,0<=1B(B) - ("oe~" ?=1B,0=3D=1B(B) - ("/c~" ?=1B,0>=1B(B) - ("p" ?=1B,0@=1B(B) - ("b" ?=1B,0A=1B(B) - ("t" ?=1B,0B=1B(B) - ("d" ?=1B,0C=1B(B) - ("k" ?=1B,0D=1B(B) - ("g" ?=1B,0E=1B(B) - ("f" ?=1B,0F=1B(B) - ("v" ?=1B,0G=1B(B) - ("th" ?=1B,0H=1B(B) - ("dh" ?=1B,0I=1B(B) - ("s" ?=1B,0J=1B(B) - ("z" ?=1B,0K=1B(B) - ("sh" ?=1B,0L=1B(B) - ("zh" ?=1B,0M=1B(B) - ("3" ?=1B,0M=1B(B) - ("c," ?=1B,0N=1B(B) - ("x" ?=1B,0O=1B(B) - ("/R" ?=1B,0P=1B(B) - ("h" ?=1B,0Q=1B(B) - ("m" ?=1B,0R=1B(B) - ("n" ?=1B,0S=1B(B) - ("gn" ?=1B,0T=1B(B) - ("ng" ?=1B,0U=1B(B) - ("r" ?=1B,0V=1B(B) - ("R" ?=1B,0W=1B(B) - ("/r" ?=1B,0X=1B(B) - ("j" ?=1B,0Y=1B(B) - ("l" ?=1B,0Z=1B(B) - ("/y" ?=1B,0[=1B(B) - ("L" ?=1B,0\=1B(B) - ("/h" ?=1B,0]=1B(B) - ("w" ?=1B,0^=1B(B) - ("M" ?=1B,0_=1B(B) - ("'" ?=1B,0p=1B(B) - ("`" ?=1B,0q=1B(B) - (":" ?=1B,0r=1B(B)) + ("i" ?i) + ("I" ?=C9=AA) + ("e" ?e) + ("/3" ?=C9=9B) + ("E" ?=C9=9B) + ("ae" ?=C3=A6) + ("a" ?a) + ("i-" ?=C9=A8) + ("/e" ?=C9=99) + ("/a" ?=C9=90) + ("/m" ?=C9=AF) + ("&" ?=C9=A4) + ("/v" ?=CA=8C) + ("A" ?=C9=91) + ("o|" ?=C9=91) + ("y" ?y) + ("Y" ?=CA=8F) + ("o/" ?=C3=B8) + ("oe" ?=C5=93) + ("OE" ?=C9=B6) + ("u-" ?=CA=89) + ("o-" ?=C9=B5) + ("u" ?u) + ("U" ?=CA=8A) + ("o" ?o) + ("/c" ?=C9=94) + ("/A" ?=C9=92) + ("|o" ?=C9=92) + ("e-" ?=C9=9A) + ("e|" ?=C9=9A) + ("p" ?p) + ("b" ?b) + ("t" ?t) + ("d" ?d) + ("k" ?k) + ("g" ?g) + ("f" ?f) + ("v" ?v) + ("th" ?=CE=B8) + ("dh" ?=C3=B0) + ("s" ?s) + ("z" ?z) + ("sh" ?=CA=83) + ("zh" ?=CA=92) + ("3" ?=CA=92) + ("c," ?=C3=A7) + ("x" ?x) + ("/R" ?=CA=81) + ("h" ?h) + ("m" ?m) + ("n" ?n) + ("gn" ?=C9=B2) + ("ng" ?=C5=8B) + ("r" ?r) + ("R" ?=CA=80) + ("/r" ?=C9=B9) + ("j" ?j) + ("l" ?l) + ("/y" ?=CA=8E) + ("L" ?=CA=9F) + ("/h" ?=C9=A5) + ("w" ?w) + ("M" ?=CA=8D) + ("'" ?=CB=88) + ("`" ?=CB=8C) + (":" ?=CB=90)) + +(quail-define-package + "kirshenbaum-ipa" "IPA" "IPA-K" t + "The International Phonetic Alphabet, using Kirshenbaum ASCII translit.= =20 + +Kirshenbaum IPA is an ASCII transliteration of the phonetic alphabet, co= mmon +in the Usenet groups `sci.lang' and `alt.usage.english'. This input met= hod +allows you to type Kirshenbaum on your ASCII-capable keyboard, producing= the +corresponding actual IPA characters in your editor. + +See http://www.kirshenbaum.net/IPA/ascii-ipa.pdf for full details of the +transliteration. + +A caveat with regard to that document; while XEmacs currently preserves +Unicode diacritics on reading and emitting them, it displays them, +incorrectly, as separate from the modified glyphs. ") + +(quail-define-rules + ("r" "=C9=B9") ;; Alveolar approximant U+0279 + ("A" "=C9=91") ;; Low back unrounded vowel U+0251 + ("B" "=CE=B2") ;; Voiced bilabial fricative U+03B2 + ("C" "=C3=A7") ;; Voiced palatal fricative U+00E7 + ("D" "=C3=B0") ;; Voiced dental fricative U+00F0 + ("E" "=C9=9B") ;; Lower-mid front unrounded vowel U+025B + ("G" "=C9=A2") ;; Voiced uvular stop U+0262 + ("H" "=C4=A7") ;; Voiced pharyngeal fricative U+0127 + ("I" "=C9=AA") ;; Semi-high front unrounded vowel U+026A + ("J" "=C9=9F") ;; Voiced palatal stop U+025F + ("L" ["=C9=AB" ;; Voiced velar lateral U+026B + "=CA=9F" ;; Voiced velar lateral U+029F + "=C9=AC"]) ;; Voiced alveolar lateral fricative U+026C + ("M" "=C9=B1") ;; Labio-dental nasal U+0271 + ("N" "=C5=8B") ;; Velar nasal U+014B + ("O" "=C9=94") ;; Low-mid back rounded vowel U+0254 + ("P" "=CE=A6") ;; Voiceless bilabial fricative U+03A6 + ("Q" "=C9=A3") ;; Voiced velar fricative U+0263 + ("R" ["=CA=80" ;; Alveolar trill U+0280 + "=C9=9A"]) ;; Rhotacised schwa U+025A + ("@" "=C9=9A") ;; Mid central rhotacised vowel U+025A + ("S" "=CA=83") ;; Voiced postalveolar fricative U+0283 + ("T" "=CE=B8") ;; Voiced dental fricative U+03B8 + ("U" "=CA=8A") ;; Semi-high back rounded vowel U+028A + ("V" "=CA=8C") ;; Low-mid back unrounded vowel U+028C + ("W" "=C5=93") ;; Low-mid front rounded vowel U+0153 + ("X" "=CF=87") ;; Voiceless uvular fricative U+03C7 + ("Y" "=C3=B8") ;; Upper-mid front rounded vowel U+00F8 + ("Z" "=CA=92") ;; Voiced postalveolar fricative U+0292 + ("?" "=CA=94") ;; Glottal stop U+0294 + ("@" "=C9=99") ;; Mid central unrounded vowel (schwa) U+0259 + ("&" "=C3=A6") ;; Low front unrounded vowel U+00E6 + ("*" "=C9=BE") ;; Voiced alveolar flap U+027E + + ("a~" "=C3=A3") ;; Low central unrounded vowel, nasal U+00E3 + ("o~" "=C3=B5") ;; Upper-mid back rounded vowel, nasal U+00F5 + ("u~" "=C5=A9") ;; High back rounded vowel, nasal U+0169 + ("~" "=CC=83") ;; +Nasalised modifier U+0303 + (":" "=CB=90") ;; +Long modifier U+02D0 + ("-" "=CC=A9") ;; +Syllabic modifier U+0329 + ("." "=CC=A3") ;; +Retroflex modifier U+0323 + ("`" "=CA=BC") ;; +Ejective modifier U+02BC + ("[" "=CC=AA") ;; +Dental modifier U+032A + (";" "=CA=B2") ;; +Palatalised modifier U+02B2 + ("" "=CC=B4") ;; +Pharyngealised modifier U+0334 + ("" "=CA=B0") ;; +Aspirated modifier U+02B0 + ("" ["=CC=A5" ;; +Voiceless modifier U+0325 + "=CB=9A"]) ;; +Unexploded modifier U+02DA + ("" "=CA=B3") ;; +Rhotacised modifier U+02B3 + ("" "=CA=B7") ;; +Labialised modifier U+02B7 + ("" "=CA=B1") ;; +Murmured modififer U+02B1 + + ("b" "=CA=99") ;; Bilabial trill U+0299 + ("b`" "=C9=93") ;; Bilabial implosive U+0253 + ("p!" "=CA=98") ;; Bilabial click U+0298 + ("r" "=CA=8B") ;; Labio-dental approximant U+028B + ("d`" "=C9=97") ;; Dental implosive U+0257 + ("t!" "=CA=87") ;; Dental click U+0287 + ("s" "=C9=AC") ;; Voiceless alveolar lateral fricative U+026C + ("z" "=C9=AE") ;; Voiced alveolar lateral fricative U+026E + ("r" "=CA=80") ;; Alveolar trill U+0280 + + ("*" "=C9=BA") ;; Voiced alveolar lateral flap U+027A + ("c!" "=CA=97") ;; Alveolar click U+0297 + ("l!" "=CA=96") ;; Alveolar lateral click U+0296 + ("n." "=C9=B3") ;; Retroflex nasal U+0273 + ("t." "=CA=88") ;; Voiceless retroflex stop U+0288 + ("d." "=C9=96") ;; Voiced retroflex stop U+0256 + ("s." "=CA=82") ;; Voiceless retroflex fricative U+0282 + ("z." "=CA=90") ;; Voiceless retroflex fricative U+0290 + ("r." "=C9=BB") ;; Retroflex approximant U+027B + ("l." "=C9=AD") ;; Retroflex lateral U+026D + ("*." "=C9=BD") ;; Retroflex flap U+027D + + ("C" "=CA=9D") ;; Voiced palatal fricative U+029D + ("j" "=C9=A5") ;; Rounded palatal approximant U+0265 + ("l^" "=CA=8E") ;; Palatal lateral U+028E + ("J`" "=CA=84") ;; Palatal implosive U+0284 + ("j" "=C9=B0") ;; Velar approximant U+0270 + ("g`" "=C9=A0") ;; Velar implosive U+0260 + ("k!" "=CA=9E") ;; Velar click U+029E +=20 + ("n" ["n=E2=81=80g"]) ;; Labio-velar nasal + ("t" ["k=E2=81=80p"]) ;; Voiceless labio-velar stop + + ;; "n for "gb" WITH U+2030 CHARACTER TIE was ambiguous and + ;; misleading. I _believe_ this is what was meant instead.=20 + ("d" ["g=E2=81=80b"]) ;; Voiced labio-velar stop.=20 + + ("w" "=CA=8D") ;; Voiceless labio-velar stop U+028D + ("n\"" "=C9=B4") ;; Uvular nasal U+0274 + ("g\"" "=CA=81") ;; Voiced uvular fricative U+0281 + ("r\"" "=CA=80") ;; Uvular trill U+0280 + ("G`" "=CA=9B") ;; Voiced uvular implosive U+029B + ("H" "=CA=95") ;; Voiced pharyngeal fricative U+0295 + + ("h" "=C9=A6") ;; Murmured glottal fricative U+0266 + ("I." "=CA=8F") ;; Semi-high front rounded vowel U+028F + ("&." "=C9=B6") ;; Low front unrounded vowel U+0276 + + ("i\"" "=C9=A8") ;; High central unrounded vowel U+0268 + ("u\"" "=CA=89") ;; High central rounded vowel U+0289 + ("@" "=C9=98") ;; Upper-mid central unrounded vowel U+0258 + + ("R" "=C9=9D") ;; Upper-mid central rhotacised vowel U+025D + + ("@." "=C9=B5") ;; Mid central rounded vowel U+0275 + ("V\"" "=C9=9C") ;; Lower-mid central unrounded vowel U+025C + ("O\"" "=C9=9E") ;; Lower-mid central rounded vowel U+025E + ("u-" "=C9=AF") ;; High back unrounded vowel U+026F + ("o-" "=C9=A4") ;; Upper-mid back unrounded vowel U+0264 + ("A." "=C9=92")) ;; Lower back rounded vowel U+0252 + +;; On XEmacs, with the supplied X-SAMPA data, this function is capably +;; implemented with:=20 +;; +;; (list (vector (concat to-prepend quail-keymap))) +;;=20 +;; Supporting GNU Emacs too makes it a good deal more complicated.=20 + +(defun x-sampa-prepend-to-keymap-entry (to-prepend quail-keymap) + "Return QUAIL-KEYMAP with TO-PREPEND at the beginning of each result. + +QUAIL-KEYMAP is a cons that satisfies `quail-map-p'; TO-PREPEND is a +string. " + (when (consp quail-keymap) (setq quail-keymap (cdr quail-keymap))) + (if (or (integerp quail-keymap)=20 + (and (fboundp 'characterp) (characterp quail-keymap))) + (setq quail-keymap (list (string quail-keymap))) + (if (stringp quail-keymap) + (setq quail-keymap (list quail-keymap)) + (assert (vectorp quail-keymap) t) + (setq quail-keymap (append quail-keymap nil)))) + (list=20 + (apply 'vector=20 + (mapcar=20 + '(lambda (entry) + (assert (char-or-string-p entry) t) + (format "%s%s" to-prepend=20 + (if (integerp entry) (string entry) entry))) + quail-keymap)))) + +(defconst x-sampa-implosive-submap=20 + '(("b_<" ?=C9=93) ;; Voiced bilabial implosive U+0253=20 + ("d_<" ?=C9=97) ;; Voiced alveolar implosive U+0257 + ("g_<" ?=C9=A0) ;; Voiced velar implosive U+0260 + ("G\\_<" ?=CA=9B) ;; Voiced uvular implosive U+029B + ("J\\_<" ?=CA=84)) ;; Voiced palatal implosive U+0284 + "A map from the X-SAMPA for some implosive consonants to characters. +This is used because their X-SAMPA syntax is quasi-diacritic, but the +corresponding Unicode characters themselves don't have diacritics, they = are +separate code points. So we need to implement some extra logic that isn= 't +normally provided by Quail. ") + +(defun x-sampa-underscore-implosive (input-string length) + "Return keymap with IPA implosives, for INPUT-STRING, length LENGTH. + +The implosive consonants in X-SAMPA are represented with more or less a +diacritic syntax, but the property +implosive in the IPA is expressed us= ing +separate characters, and not using a diacritic. This function works aro= und +the confusion that implies when generating IPA from X-SAMPA; it returns = a +Quail map that is a copy of the map for `_', but with all the DIACRITIC +entries changed to return the diacritic together with the base character= , +and with the map to the implosive added to its end. + +Like all `quail-defrule'-assigned functions, this will be called once fo= r +each particular sequence of keys, the first time the user types that +particular sequence of keys, and the result will be cached by Quail. " + (let* ((input-string (substring input-string 0 (or length))) + (underscore-map (copy-tree (quail-lookup-key "_"))) + (split-input (split-string input-string "_")) + (pre-underscore (car split-input)) + (pre-underscore-map (quail-lookup-key pre-underscore)) + (x-sampa-submap-entry=20 + (assoc (format "%s<" input-string) x-sampa-implosive-submap)) + underscore-map-entry) + (if (and (consp pre-underscore-map) (car pre-underscore-map)) + (setq pre-underscore-map (car pre-underscore-map)) + (setq pre-underscore-map pre-underscore)) + (unless (stringp pre-underscore-map) + (setq pre-underscore-map (string pre-underscore-map))) + (dolist (underscoring underscore-map) + (cond ((null underscoring)) + ((eq (length underscoring) 2) + (setq underscore-map-entry (second underscoring)) + (setcdr underscoring (x-sampa-prepend-to-keymap-entry=20 + pre-underscore-map underscore-map-entry))) + ((eq (length underscoring) 3) + (setq underscore-map-entry (second (third underscoring))) + (setcdr (third underscoring)=20 + (x-sampa-prepend-to-keymap-entry=20 + pre-underscore-map underscore-map-entry))) + (t=20 + (assert (null t) t=20 + "Can't handle subtrees of this level right now.")))) + (append underscore-map (list (list ?< (second x-sampa-submap-entry))= )))) + +(quail-define-package + "x-sampa-ipa" "IPA" "IPA-X" t + "The International Phonetic Alphabet, using J.C. Wells' X-SAMPA.=20 + +X-SAMPA is an ASCII transliteration of the IPA, normally used for data +exchange in environments where Unicode is not available. This input met= hod +uses this transliteration to allow you to produce the IPA in your editor +with a keyboard that's limited to ASCII. + +See http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf for a full definit= ion +of the mapping. A caveat with regard to that document; while XEmacs +currently preserves Unicode diacritics on reading and emitting them, it +displays them, incorrectly, as separate from the modified glyphs. " nil = t t) + +(quail-define-rules + ;; Table taken from http://en.wikipedia.org/wiki/X-SAMPA, checked with + ;; http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf + + ("d`" "=C9=96") ;; Voiced retroflex plosive U+0256 + + ;; In the Wikipedia article, they list ASCII g as mapping to U+0261, LA= TIN + ;; SMALL LETTER SCRIPT G. The typeset g is equally acceptable as the vo= iced + ;; velar plosive, however, and we don't override the identity mapping h= ere. + + ("h\\" "=C9=A6") ;; Voiced glottal fricative U+0266 + ("j\\" "=CA=9D") ;; Voiced palatal fricative U+029D + ("l`" "=C9=AD") ;; Retroflex lateral approximant U+026D + ("l\\" "=C9=BA") ;; Alveolar lateral flap U+027A + ("n`" "=C9=B3") ;; Retroflex nasal U+0273 + ("p\\" "=C9=B8") ;; Voiceless bilabial fricative U+0278 + ("r`" "=C9=BD") ;; Retroflex flap U+027D + ("r\\" "=C9=B9") ;; Alveolar approximant U+0279 + ("r\\`" "=C9=BB") ;; Retroflex approximant U+027B + ("s`" "=CA=82") ;; Voiceless retroflex fricative U+0282 + ("s\\" "=C9=95") ;; Voiceless alveolo-palatal fricative U+0255 + ("t`" "=CA=88") ;; Voiceless retroflex plosive U+0288 + ("v\\" "=CA=8B") ;; Labiodental approximant U+028B + ("x\\" "=C9=A7") ;; Voiceless palatal-velar fricative U+0267 + ("z`" "=CA=90") ;; Voiced retroflex fricative U+0290 + ("z\\" "=CA=91") ;; Voiced alveolo-palatal fricative U+0291 + ("A" "=C9=91") ;; Open back unrounded vowel U+0251 + ("B" "=CE=B2") ;; Voiced bilabial fricative U+03B2 + ("B\\" "=CA=99") ;; Bilabial trill U+0299 + ("C" "=C3=A7") ;; Voiceless palatal fricative U+00E7 + ("D" "=C3=B0") ;; Voiced dental fricative U+00F0 + ("E" "=C9=9B") ;; Open-mid front unrounded vowel U+025B + ("F" "=C9=B1") ;; Labiodental nasal U+0271 + ("G" "=C9=A3") ;; Voiced velar fricative U+0263 + ("G\\" "=C9=A2") ;; Voiced uvular plosive U+0262 + ("H" "=C9=A5") ;; Labial-palatal approximant U+0265 + ("H\\" "=CA=9C") ;; Voiceless epiglottal fricative U+029C + ("I" "=C9=AA") ;; Near-close near-front unrounded vowel U+026A + ("I\\" "=C6=97") ;; Central lax close unrounded vowel U+0197 + ("J" "=C9=B2") ;; Palatal nasal U+0272 + ("J\\" "=C9=9F") ;; Voiceless palatal plosive U+025F + ("K" "=C9=AC") ;; Voiceless alveolar lateral fricative U+026C + ("K\\" "=C9=AE") ;; Voiced alveolar lateral fricative U+026E + ("L" "=CA=8E") ;; Palatal lateral approximant U+028E + ("L\\" "=CA=9F") ;; Velar lateral approximant U+029F + ("M" "=C9=AF") ;; Close back unrounded vowel U+026F + ("M\\" "=C9=B0") ;; Velar approximant U+0270 + ("N" "=C5=8B") ;; Velar nasal U+014B + ("N\\" "=C9=B4") ;; Uvular nasal U+0274 + ("O" "=C9=94") ;; Open-mid back rounded vowel U+0254 + ("O\\" "=CA=98") ;; Bilabial click U+0298 + ("P" "=CA=8B") ;; Labiodental approximant U+028B + ("Q" "=C9=92") ;; Open back rounded vowel U+0252 + ("R" "=CA=81") ;; Voiced uvular fricative U+0281 + ("R\\" "=CA=80") ;; Uvular trill U+0280 + ("S" "=CA=83") ;; Voiceless postalveolar fricative U+0283 + ("T" "=CE=B8") ;; Voiceless dental fricative U+03B8 + ("U" "=CA=8A") ;; Near-close near-back rounded vowel U+028A + ("U\\" ["=CA=8A=CC=B5"]) ;; Central lax close rounded vowel, U+028A U+0= 335 + ("V" "=CA=8C") ;; Open-mid back unrounded vowel U+028C + ("W" "=CA=8D") ;; Voiceless labial-velar fricative U+028D + ("X" "=CF=87") ;; Voiceless uvular fricative U+03C7 + ("X\\" "=C4=A7") ;; Voiceless pharyngeal fricative U+0127 + ("Y" "=CA=8F") ;; Near-close near-front rounded vowel U+028F + ("Z" "=CA=92") ;; Voiced postalveolar fricative U+0292 + + ("\"" "=CB=88") ;; Primary stress U+02C8 + ("%" "=CB=8C") ;; Secondary stress U+02CC + (":" "=CB=90") ;; Long U+02D0 + (":\\" "=CB=91") ;; Half-long U+02D1 + ("@" "=C9=99") ;; Schwa U+0259 + ("@\\" "=C9=98") ;; Close-mid central unrounded vowel U+0258 + ("@`" "=C9=9A") ;; Rhotacised schwa U+025A + ("{" "=C3=A6") ;; Near-open front unrounded vowel U+00E6 + ("}" "=CA=89") ;; Close central rounded vowel U+0289 + ("1" "=C9=A8") ;; Close central unrounded vowel U+0268 + ("2" "=C3=B8") ;; Close-mid front rounded vowel U+00F8 + ("3" "=C9=9C") ;; Open-mid central unrounded vowel U+025C + ("3\\" "=C9=9E") ;; Open-mid central rounded vowel U+025E + ("4" "=C9=BE") ;; Alveolar flap U+027E + ("5" "=C9=AB") ;; Velarised alveolar lateral approximant U+026B + ("6" "=C9=90") ;; Near-open central vowel U+0250 + ("7" "=C9=A4") ;; Close-mid back unrounded vowel U+0264 + ("8" "=C9=B5") ;; Close-mid central rounded vowel U+0275 + ("9" "=C5=93") ;; Open-mid front rounded vowel U+0153 + ("&" "=C9=B6") ;; Open front rounded vowel U+0276 + ("?" "=CA=94") ;; Glottal stop U+0294 + ("?\\" "=CA=95") ;; Voiced pharyngeal fricative U+0295 + ;; The undefined escape character, ignored.=20 + ;; Indeterminacy in French vowels, ignored. + ;; Begin nonsegmental notation, ignored.=20 + ("<\\" "=CA=A2") ;; Voiced epiglottal fricative U+02A2 + ;; End nonsegmental notation, ignored.=20 + (">\\" "=CA=A1") ;; Epiglottal plosive U+02A1 + ("^" "=E2=86=91") ;; Upstep U+2191 + ("!" "=E2=86=93") ;; Downstep U+2193 + ("!\\" "=C7=83") ;; Postalveolal click U+01C3 + ("\\" "=C7=80") ;; Dental click U+01C0 + ("\\|\\" "=C7=81") ;; Lateral alveolar click U+01C1 + ("=3D\\" "=C7=82") ;; Palatal click U+01C2 + ("-\\" "=CC=AE") ;; Linking mark U+032E + + ;; Diacritics. Note that XEmacs doesn't yet have composed characters, s= o we + ;; can input them, but they won't display properly. If you send email u= sing + ;; them, and the recipient's client is capable, they will get through, + ;; though. + + ("_\"" "=CC=88") ;; Centralised U+0308 + ("_+" "=CC=9F") ;; Advanced U+031F + ("_-" "=CC=A0") ;; Retracted U+0320 + ("_/" "=CB=87") ;; Rising tone U+02C7 + ("_0" "=CC=A5") ;; Voiceless U+0325 + ("_=3D" "=CC=A9") ;; Syllabic U+0329 + ("=3D" "=CC=A9") ;; Syllabic U+0329 + ("_>" "=CA=BC") ;; Ejective U+02BC + ("_?\\" "=CB=A4") ;; Pharyngealised U+02E4 + ("_\\" "=CB=86") ;; Falling Tone U+02C6 + ("_^" "=CC=AF") ;; Non-syllabic U+032F + ("_}" "=CC=9A") ;; No audible release U+031A + ;; ` is alternatively; retroflexion in consonants + ("`" "=CB=9E") ;; Rhotacization in vowels U+02DE + ("_~" "=CC=83") ;; Nasalisation U+0303 + ("~" "=CC=83") ;; Nasalisation U+0303 + ("_A" "=CC=98") ;; Advanced tongue root U+0318 + ("_a" "=CC=BA") ;; Apical U+033A + ("_B" "=CC=8F") ;; Extra low tone U+030F + ;; _B_L omitted, no Unicode code point for "low rising tone." + ("_c" "=CC=9C") ;; Less rounded U+031C + ("_d" "=CC=AA") ;; Dental U+032A + ("_e" "=CC=B4") ;; Velarised or pharyngeal U+0334 + + ("" "=E2=86=99") ;; Global fall; SOUTH EAST ARROW; may be a bit smal= ler than + ;; intended. + ("_F" "=CC=82") ;; Falling tone U+0302 + ("_G" "=CB=A0") ;; Velarised U+02E0 + ("_H" "=CC=81") ;; High tone U+0301 + ;; "_H_T omitted, no Unicode code point for "high rising tone" + ("_h" "=CA=B0") ;; Aspirated U+02B0 + ("_j" "=CA=B2") ;; Palatalised U+02B2 + ("'" "=CA=B2") ;; Palatalised U+02B2 + ("_k" "=CC=B0") ;; Creaky voice U+0330 + ("_L" "=CC=80") ;; Low tone U+0300 + ("_l" "=CB=A1") ;; Lateral release U+02E1 + ("_M" "=CC=84") ;; Mid tone U+0304 + ("_m" "=CC=BB") ;; Laminal U+033B + ("_N" "=CC=BC") ;; Linguolabial U+033C + ("_n" "=E2=81=BF") ;; Nasal release U+207F + ("_O" "=CC=B9") ;; More rounded U+0339 + ("_o" "=CC=9E") ;; Lowered U+031E + ("_q" "=CC=99") ;; Retracted tongue root U+0319 + ("" "=E2=86=97") ;; NORTH EAST ARROW; may be a bit smaller than inte= nded.=20 + ("_R" "=CC=8C") ;; Ha=C4=8Dek, caron, rising tone. U+030C + ;; _R_F omitted, apparently there's no corresponding Unicode entry.=20 + ("_r" "=CC=9D") ;; Raised U+031D + ("_T" "=CC=8B") ;; Extra high tone U+030B + ("_t" "=CC=A4") ;; Breathy voice U+0324 + ("_v" "=CC=AC") ;; Voiced U+032C + ("_w" "=CA=B7") ;; Labialised U+02B7 + ("_X" "=CC=86") ;; Extra-short U+0306 + ("_x" "=CC=BD")) ;; Mid-centralised U+033D + +;; Putting in place rules for the implosives like for the others above +;; breaks the "_" rules for b, d, g, G and J a little--you ne= ed +;; to interrupt Quail before typing the underscore if you want the +;; diacritic. To avoid this, handle the input specially with the functio= n +;; x-sampa-underscore-implosive. + +(dolist (implosive-x-sampa (mapcar 'car x-sampa-implosive-submap)) + (setq implosive-x-sampa (car (split-string implosive-x-sampa "_"))) + (quail-defrule (format "%s_" implosive-x-sampa) + 'x-sampa-underscore-implosive)) =20 ;;; arch-tag: cf2614cc-ecce-4ef5-ba51-37faeed41691 ;;; ipa.el ends here + --=20 When I was in the scouts, the leader told me to pitch a tent. I couldn't find any pitch, so I used creosote. --wNNNfbStpN Content-Type: text/plain; charset=iso-8859-1 Content-Description: .signature Content-Transfer-Encoding: quoted-printable --=20 =BFD=F3nde estar=E1 ahora mi sobrino Yoghurtu Ngh=E9, que tuvo que huir precipitadamente de la aldea por culpa de la escasez de rinocerontes? --wNNNfbStpN-- From monnier@iro.umontreal.ca Wed Dec 31 10:41:02 2008 Received: (at submit) by emacsbugs.donarmstrong.com; 31 Dec 2008 18:41:02 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-0.4 required=4.0 tests=FOURLA,HAS_BUG_NUMBER, MURPHY_DRUGS_REL8,XIRONPORT autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id mBVIexHL020522 for ; Wed, 31 Dec 2008 10:41:00 -0800 Received: from mx10.gnu.org ([199.232.76.166]:48903) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1LI5z0-00081r-In for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 13:39:54 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1LI5zz-0000Vt-BE for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 13:40:56 -0500 Received: from ironport2-out.pppoe.ca ([206.248.154.182]:59190 helo=ironport2-out.teksavvy.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LI5zz-0000VX-1J for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 13:40:55 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqYEAANMW0lLd+aG/2dsb2JhbACBbMpuhkSBaQ X-IronPort-AV: E=Sophos;i="4.36,309,1228107600"; d="scan'208";a="31664024" Received: from 75-119-230-134.dsl.teksavvy.com (HELO pastel.home) ([75.119.230.134]) by ironport2-out.teksavvy.com with ESMTP; 31 Dec 2008 13:40:30 -0500 Received: by pastel.home (Postfix, from userid 20848) id BFF5C8CF4; Wed, 31 Dec 2008 13:40:29 -0500 (EST) From: Stefan Monnier To: Aidan Kehoe Cc: 1750@debbugs.gnu.org, emacs-pretest-bug@gnu.org Subject: Re: bug#1750: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. Message-ID: References: <18779.30356.834146.410474@parhasard.net> Date: Wed, 31 Dec 2008 13:40:29 -0500 In-Reply-To: <18779.30356.834146.410474@parhasard.net> (Aidan Kehoe's message of "Wed, 31 Dec 2008 13:41:40 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. > I was asked to resend this after the release; see > http://mid.gmane.org/17834.14174.503231.877601@parhasard.net and > http://thread.gmane.org/gmane.emacs.pretest.bugs/16625 for the associated > thread. I was tempted to switch to utf-8 already so as to split your patch into 2 steps where the second results in a cleaner patch. But I see that ipa.el contains some chars (IIUC there are 5 of those) that Emacs doesn't know how to encode into utf-8. E.g. the char associated with "/3~". Your patch seems to just remove that one. Can you explain what's going on with those? Stefan From kehoea@parhasard.net Wed Dec 31 11:51:47 2008 Received: (at submit) by emacsbugs.donarmstrong.com; 31 Dec 2008 19:51:47 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-0.4 required=4.0 tests=CT_IMAGE,FOURLA, HAS_BUG_NUMBER,MURPHY_DRUGS_REL8,PHONENUMBER autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id mBVJphpP005850 for ; Wed, 31 Dec 2008 11:51:44 -0800 Received: from mail.gnu.org ([199.232.76.166]:51588 helo=mx10.gnu.org) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1LI75S-0001OV-Rf for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 14:50:38 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1LI76Q-0000Yi-0o for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 14:51:42 -0500 Received: from daedalus.ipv4.asclepian.ie ([213.133.100.226]:58968 helo=daedalus.asclepian.ie) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LI76O-0000Xj-Gj for emacs-pretest-bug@gnu.org; Wed, 31 Dec 2008 14:51:37 -0500 Received: by daedalus.asclepian.ie (Postfix, from userid 1002) id B529CB834; Wed, 31 Dec 2008 19:51:58 +0000 (GMT) From: Aidan Kehoe MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Qt0oPxfCuE" Message-ID: <18779.52574.593394.579421@parhasard.net> Date: Wed, 31 Dec 2008 19:51:58 +0000 To: Stefan Monnier Cc: 1750@debbugs.gnu.org, emacs-pretest-bug@gnu.org Subject: Re: bug#1750: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. In-Reply-To: References: <18779.30356.834146.410474@parhasard.net> X-Mailer: VM 8.0.12 under 21.5 (beta28) "fuki" XEmacs Lucid (x86_64-unknown-freebsd7.0) X-Echelon-distraction: SWS ssa SRI Small Pox Covert Video speedbump Content-Transfer-Encoding: 7bit X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. --Qt0oPxfCuE Content-Type: text/plain; charset=utf-8 Content-Description: message body text Content-Transfer-Encoding: quoted-printable Ar an t-aon=C3=BA l=C3=A1 is triochad de m=C3=AD na Nollaig, scr=C3=ADob= h Stefan Monnier:=20 > > I was asked to resend this after the release; see > > http://mid.gmane.org/17834.14174.503231.877601@parhasard.net and > > http://thread.gmane.org/gmane.emacs.pretest.bugs/16625 for the assoc= iated > > thread. >=20 > I was tempted to switch to utf-8 already so as to split your patch int= o > 2 steps where the second results in a cleaner patch. But I see that > ipa.el contains some chars (IIUC there are 5 of those) that Emacs > doesn't know how to encode into utf-8. E.g. the char associated with > "/3~". Your patch seems to just remove that one. Can you explain > what's going on with those? Those characters are precomposed nasalised vowels (see the attached pic; = see also character code 54, which is just o, there is nothing special about t= he o in IPA versus its use in most Roman-alpahbet languages. The pic uses a font from https://launchpad.net/ubuntu/+source/xfonts-kappa20/0.396-1 .)=20 Nasalisation is indicated in the IPA with a combining tilde, U+0303--Unic= ode includes some vowels with precombined tildes, but not those. I was going to say that the mapping of "~" to U+0303 in the input method meant that equivalent text was input (with, for example "/3~" now giving "\u025b\u0303"), but now I double-check, the mapping of "~" to U+0303 is included in the other two input methods in the file, but not in that one.= It would be sensible to add it, though I hope people use the Kirshenbaum or X-SAMPA input methods instead, there=E2=80=99s no good reason to learn th= at ASCII-IPA mapping.=20 The change at http://mid.gmane.org/18779.31070.155006.447104@parhasard.ne= t would also be helpful. Here=E2=80=99s a patch to the file including both: --- ipa-20070114.el 2007-01-14 13:49:36.000000000 +0000 +++ ipa-20070114.el.new 2008-12-31 19:46:57.000000000 +0000 @@ -103,7 +103,8 @@ ("M" ?=CA=8D) ("'" ?=CB=88) ("`" ?=CB=8C) - (":" ?=CB=90)) + (":" ?=CB=90) + ("~" ?\u0303)) =20 (quail-define-package "kirshenbaum-ipa" "IPA" "IPA-K" t @@ -138,7 +139,7 @@ ("M" "=C9=B1") ;; Labio-dental nasal U+0271 ("N" "=C5=8B") ;; Velar nasal U+014B ("O" "=C9=94") ;; Low-mid back rounded vowel U+0254 - ("P" "=CE=A6") ;; Voiceless bilabial fricative U+03A6 + ("P" "=C9=B8") ;; Voiceless bilabial fricative U+0278 ("Q" "=C9=A3") ;; Voiced velar fricative U+0263 ("R" ["=CA=80" ;; Alveolar trill U+0280 "=C9=9A"]) ;; Rhotacised schwa U+025A --Qt0oPxfCuE Content-Type: image/png; name="ipa-characters.png" Content-Disposition: inline; filename="ipa-characters.png" Content-Transfer-Encoding: base64 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 Fokt0U7ykgbWg09OVu44ioZbJYlYebOVnceVKVRaV4ZysGQtSuc7j2Blcx1d04PTl7aS+Et4 b12IMrfsuR4rl6xsjPMY8wUrg5P1s5148k3mscC2sVJe0rATpY5iMHtwdmQZUqUO372V5+ki nY4CpZVfM7VTWSqxQk7nfXDV+GtiZTzVIcPJXNKQrZykbJ6Ds53KWJksVm5iJX3Hy//1WJl2 X+tsRwTL+H++//YIVi5q0mFl0cszKa1z8HZ1sfEpZl5j5RCu4rWX7isEyBAo3ypX0ecq4zLY Dd80VtJ8bfR74d4O61UsK/lpeAiT4djS+3FltbCVVgotuZTrq1ONXz7bYe4mK+fQtVDdrCWF QFm948huMd7HyjA6Y+E+eDqPqVk5h0t2WSiOdjjSSoG5ZPXCxMHnWitrnU5fdXN5bSvVwadp 5XJ1XzH7LOUXW1EyeOl3MtGWVnaOrwx/5Lhu5TTUKcbKeET59nbsvZ1auvWalEeNViJzD7iu uqm4ppU6kWFlT3X0JaSsBfm8UFUrK5gNN1aTsLJvfCW337Yyt0peRLHatBPP9dzO7Vb2VUeh E9c7VCNWVg/Sv81TZ3XetLD39o6vLFDjK0fKq3pmoh15MisXQrNKVFjZX90Xu3Le0fC6utsd M4XxlQtt6hOumLmqTRvwXFbeMdGXKeWRbaL5yHKpJFvKDdu0AddbSfr91Uum7uBUS9rglGhF SZ3HurTQ8NZJca2gatRtlCSdpMZmWejmaxxlpbmzndVOWSSyFr+zJKscfdmPlLcLJVmJyo1m JZIHgHUrRVnaynpVqiRZZ/Xg0y7KrK7MJE6u7BbJ9WQmMBq+G4WVc4MoP2piXs+ZE53jX9Ip D89SovmxlfjfLonmh66IqtWJCmuDeGJ7QyGkN0msbW7xfM1ZlyRWQHq+obZ0lEotEuXlJlHr 2Tq9JopD1uuxkq0hvQrk0rNa51nsUmTZrLzOxd6bF4DEE0fHWpmts8JgkqSZaF4UVtjZLCkV I9y1AgWJFGdlZRak0iZiyycbpaw0CtJLx1aTaSWxQsRvFSvzzIaVZ9UibmXZHPa2sLJIcNZW qn92m/ajYSUtWnluJDqLMqgSckiu652tzGGkaNRqK8vVpKwkvnJyZJ6rNK0sCtrISjKsJJ6g biULOp5iJRelZmU10blYR7lG1RF2WakL0j04L8lYkTl45yUsE6238iyKkrFSxVNlgFxPN1hZ BkhWnIqVrFlmD34+x8Ob9GKugt0wz3biYVXNynxUko/kjETnc979W4dni1bmBtWs5CnkJWtl JeUUprrsqKpxXFmsJtPKfLwcEsXiKrEyuWCsAraGjENrvn5SiExhrjzbyauAKVc5SD9XV8Ge mFeGyEjn/gJiROzcu1ZnrCaVyEqz/3qinkQhqd3P3dCmDZit7Pmm6q4vT0ciJNqCbisBuBsX K+3hVAAcCKwE/oCVwB+wEvgDVgJ/wEpwMO+ScRKsBAejpYSV4Gje33+ODPPvCVgJDma28vJq WJm+WnqxFCsJNT61JtoVmFl0tZS/z65WCpHZMvNrlrvbBzYlWPnDsLK1fSXXKnejla1qW0V3 7C8d88B+TFYOFyvfSyvFNzERlX/AJBdBYmL8+k3iaWLuoSwlF63n8WbmxuSKiuwxFPKUMbMs 0rBSLV7/Lgm2Z7TxIuWPH/ObkWKD8DDFZqmgFSamrwcxtz0vpSiaWjXwiYWA9kTRPKrPM5ch J4KVhzDJ+GOkbWUITEP6wKOPsHIQClhJBhmJctG6BkHyPoVeld22sjFPJGIN5M0G9+Zi5RCs fG9YWThTFNKw0koif8t8S+KoUFup9iYry3aCOzO6+ONHCJbzpIqVVHdmvZUsCSv6Sitj57+l lYiVRzJeOZcX0Ws9OO/aiv6Vd9bEsxRJWBc85CThW+DjfLOGmFzMK1oW6iBVu7KyeiErn9Qh Vh7JRcV328pX3CJmJwDuTri389O6t/N624SaH8G9aFkJwDHASuAPWAn8ASuBP2Al8EfDSpJ+ 7j5aDYBA3UrKb9hUSYdysBKspmYl5REY6eOQ79/sMVoNgMBSrFQ3ncUtceteNxk3qweRj8Vg aAkMFntwMeqMjY8Qd6JJJbl2tBoAHT24OK60rYwIKxv5hK8AKKqxkhrK9VnJkrBeH1aCRdZZ eYfRagDgKjpwCKwE/oCVwB+wEvgDVgJ/wErgD1gJ/LH2abJi2rbf1yYmb/GFa+Ki66q9TTxc blZVy7i6qqWGWOsvfy+SmMpz1L4LitoTVU3VMtvtbKyCdM+wuq6a4yutEnurbibpsLKVb9GK /OFKK9tpu+vfhPquQWIu28pqHpuhC28JtFBmRztrZQ6NZ+5bozPmFzHqzNrXSM6r7aNzO3Qp 7LYRS1mMgBMxSDai9YVrykri9VRvM+XaWb7KKhAx2spH8i5ZXAfigxgFKL8Qot9Kto4sg8zA ZEy0No5ZJuVRZXLjsAWyg7G00ljAJSvZB2sJ2JsypbVUZJbC8+mKjImifKrPUzWQfCtXtN5R xOqzt8xAVmFyU8p9w2h89p6VKcqpLU5pfLXaONPqZ+Ueqathi8nLlMsuay8/mWu3VmVXrAwN l9+iwp3Nw9RYSmt4W8XtgSdRFS1Z2ZiX0sRIrcvMQuhWyxeSbcllkppn6iGWSw4oYG8HkUGv ctEnFEUXy2fNE403J8ZJxfYjvSi2laLV7bXLK5csWimEL0solTOqWGtlT761VoY5ZJRZ1iAX U1hZ1Bc+EWt100pZslpoZWVrZRUbXZVdX6LFiV3br97O9vaz67jKSi2LajKPlT1LtcLK2Mlt YGWuxLLSONRlmlxnJQ9asmS10JaV9QsBxLOrsqkxbw8ri+ho5bPWbq3KjuPK8hjfPE+ZqzcP bVMxA18q4wpDkb0oeqBcjMiurKxevEgtSJ2uWD5rc5HMZ1xcGcxl543vsFL27rlMudDFuqJy ljxHG6zN0DVRns2VZy88t9VO2YNba5eoWKI1VjaizjMg9j2wD11r10j0st/JBivvQM/atdLg jiPwB6wE/oCVwB+wEvgDVgJ/XGll7UIaABuwaGVTPFgJ9qD+LQXsunyi/Xc6AdiGnh6c3ywq bu/doYXg9VgbK2El2J91x5WwEtyDdefgsBLcgxutxLUhsAO4ig78ASuBP2Al8AesBP6AlcAf sBL4A1YCfyw9TdZ3RbKVqPGQ5WLRdgLsNs/O8pO3HQ60kqz0sKtgaPnkLH93hnjm3foigvJJ djWeI+eIL4P46rLiexBYhjxyThYNLZ+bTivDrUb5kuBJBut7EYpHzMXwzPy9ZJbMojlEcjZ4 UnawUpTP9MofK0UbVsYf+X1hsPLJuZOV0ker6Oq3T5FRNKx8bu5mJR9rVCtaZWNxFFa+EB1W 6i/lsr9US35taDmLd+WmlfbZToqjsPKFuOo72dZI0ZtWh9nbywQPylXfybbKim7VukcQQ8pn B3ccgT9gJfAHrAT+gJXAH7AS+ANWAn/ASuAPWAn8cYyV5S1LADiHWGncLwcg022lObW4ZR5s k8OJxCcqUkNNYHBbrCTjpWGlHASHiAkqdFppPpNTDJdMLyRzDGUOMjIDkFnXg7PnaMpZxYxK 91z24LASGKy00pzdb6URW2ElUNzXSiM9rASKI2Kl0Y8DwNjLSntoOeWZy89hgJdlk6voN4Q9 SAk029zbuVpLSAkMMDoD+ANWAn/ASuAPWAn84cFK+z4meF0cWEnDgDHAgOPASgAKYCXwhwcr 8RQPkDiwEmPSQcGmVsrR59NQDiq+WBpP8YBltrSyeG7HGBVkPcVTTAJgSyvlczu5mJqVaRbG tQHJ9lbKj80TGT0aHVaCYUcrib9rPYWmhrCDl+cuVjbv3uApHlCyl5U9pzB4igfY7Gxl8wI5 nuIBNttfGboFSAlGtr+KfgOQEkw4uOMIQAGsBP6AlcAfsBL441Ar8cAOMDnSSjywA2wc9eD/ N3JQ3cAVsBL44+DjSt6Dw0oQOPi4ktcGK0Fgr+d2SMbBngd2YCUI7PXcjhqYvvzADqwEgb2e 22lZmWbLIWywEgTe39WkbcZXdoysLB7YgZUgwK0Mb7cd9dv/wA6sBIHRyh8z79tbueqBHVgJ Avta2U5ZnInDShDYzcrWcaX9wA6sBIENrbzl8juuDAHGllbe6DOsBIFNrbwNWAkCjqwEIAAr gT9gJfDHoVbiuR1gcqSVeG4H2KAHB/6AlcAfBx9XUjnwEoDDjytxZAkMtr/jqP6GBJ8YPvEU xsh18OJsPzpj2UoSKpaP8ACw/Ug2kiFTTBRpy1G/AAT2Gl+pPNRJYSWosLOVHc/twEpQsp+V QcilEekEK0HJns/t9DxHZp4bgRfnSCtDPMVJOChw9NwOAAFHz+0AEMDoDOAPWAn8ASuBP2Al 8IcHK/H4DpA4sBKP74ACB1YCUAArgT+Ot5LddgRg4nAr6+PdwMuy33M7dgL1+E4axgEzQWS/ 53bsFOrxHW4ltAQT+z23Q/xlEPN4lrkHj99FDS3BsPv4ynYAFD34TXWDp2JvKymdYlce34GV QHGHWNm+ewMrgeIuVrYyxCtD4mlc8Nrs+4zjMCz/2Z3QxeOhMpBw8tzOZiWAZ8DHczsb5QdP wuF3HAFQwErgD1gJ/AErgT88WImBbEDiwEoM+gUFDqwEoABWAn94sLJ1VxK8Ig6sxLAMULDj cztGOdaf3WGp6xnBS7HjcztLVsrrQaWh4IXZ7bmdPE5NqKee25FvoSUYdhxf2XO4SOo9rATD rn9vh01r/dkdM/2VTQDPwV2sbN69IZ0eVr44ez63s1QWT0N6EnhZdray47kdkQZWgsHpczuQ 8sXx+NwOpHx1HNxxBKAAVgJ/wErgj2Dl+AtWAifMVo5OwkrghcnKYe7Au600vzE1z21+5Pla g4uWG9Gaij3robnKyvbGrw4LWpHkaiuh5TMw9+Dviz14uP9SfHdaGq0mk6gBakP8clWePX2Q GeaUgyiLhv4k0PLxCWc77+/tsx22qdVt6zCRirT8Qyu7NaCNDzKioRjbsZAEVj4+nVeGmlbG 2CXTyoxUzS4jblERialmW8oksPLx2cLKIpulEJNIZ7EC4ZDi74KVKgmsfHzuZiU3aI2VS7FS JYGVj0/vvZ3ybIdfGypPc/TZjk7B5TRPZdLRorJyIQmsfHx2v+NoBMJdgZRPwP73wVXg3BVI +QxgdAbwB6wE/oCVwB+wEvgDVgJ/rLZS3iVspBPj1cqEvdkrfzZ87+zDRtnNhJ3Ziz+Z/lKx YtHKYm10r6N8VdvYsr3Zy5tBD5bdXFkrVp197+wFqFpJaV+t3BDkN3jEjRuRcpBf0bYyO4l3 d8uugvxV2fk6uCp7UfsLadnTg9vbK72Snj7w3q+2YTuyt7zYMXsahlTfpTqyt6zsyg4rr4mV xapVX95Cq7ywsusNfJfsFBvfbaWVfYWVdvZibcPKjPnJWrVkJaYst1HmYvb8ctfsauJV2fut 7MsOK2u0rTSi1bBiw5rZjU2ye/ZrrLwlVtrZqcgCK2uYVuaunmWtHByty14Wct/s6mHM1bUv Hj+syQ4rqzQ2UxMziiL7iuwvJOWNV9E70ttpkH1t9leSEnccgUNgJfAHrAT+gJXAH7AS+ANW An/ASuAPWAn8ASuBP2Al8AesBP6AlcAfsBL4A1YCf8BK4A9YCfwBK4E/YCXwB6wE/oCVwB+w EvgDVgJ/wErgD1gJ/AErgT9gJfAHrAT+gJXAH7AS+ANWAn/ASuAPWAn8ASuBP2Al8AesBP6A lcAfsBL4A1YCf8BK4A9YCfwBK4E/YCXwB6wE/oCVwB+wEvjjouJ7Yp4EK8HBvHPmSbASHAys BP6IKjJgJTgYWAn88f7+M52D/5wnwUpwMKOVQ7gwBCuBDy4uzlrOb0ZgJTiYUcapD59eJ2Al OJjZyuHHO6wEbphsvATL+WUCVoKDCVYOsBL4Ybby5/ATVgI36IvosBI4hE6no5sAQObvYTid YCXwxN/cyhMAHoCVwB9XWvkhXm7gc2WyhfQU39zcMlUAWanALkgricZ1T/PL6VS+Rj6mf/Fl 4jP8+hzprv1z+teYXbxbSD+ZU/fx4yPPa1prz6xpSXL1wN7bKWLlJOXplN/wn0zYvmwzJyvX Vd9WWFm5kH7BSj5rSyvlPFh5OzUr0ysZVhqxMhoZg9qoT1BIvITfKdMc+9i8MVt8+1m8XYqV NDcu/p52mg+264SJH+z3vDQfYkebZqYCcgkV3/KePMZMKjsWsB7DyhMlH8NvvaKN48rk3icT NPW8pyhV/Hxi7z7T28/TZzaWlfIpk1aQVjI9Was/8sz4ls0Oloo0qYSalUHE8AMnb8eyMnhZ xkoWXgRh0ie3hluZPT2d7A74s3CT5+HGLlFY+RE/1qwMETMuRWmyYWUMh+KXXE1pN8avq3/Z VrKd3urBTbPK4Bh/2Es2UOX+FFbKrKfrrJy9XIiVKWme3LKyWqu0EtzGdWc7muJsx7aSG6fz sz6+yPN5pZWnZSs/tJWre/DwC1ZuxlVXhgyKK0O6Bz/lUxclGD8f4j04O/HRmSzGZn7Ek5Xi XCUegpxi953Pdk45XfzNz3bCT20dxOPKU3pZbiho8lz3dgwfmpeAbi0c7MNzWWmYs5mVkPJ+ cCv/BsAJycqjGwJAYrLyTuPmAOgHVgJ/wErgD1gJ/AErgQP+kcBK4IB/5EdYCRwAK4E/hJX/ gpXAA9zKf/0BK4EHmJX/+ePfsBJ4IFs5SgkrgQeSlf9cpMRxJXBBtPK/o5Q4rgQuCFaOUv6J 40rgg9nKKCW+vxJ4YLLyf0HKP2El8MBo5Z9Ryj8GPJMCHPAPl/LfsBJ4oLgP/v+Q4S88EG4H 6gAAAABJRU5ErkJggg== --Qt0oPxfCuE Content-Type: text/plain; charset=iso-8859-1 Content-Description: .signature Content-Transfer-Encoding: quoted-printable --=20 =BFD=F3nde estar=E1 ahora mi sobrino Yoghurtu Ngh=E9, que tuvo que huir precipitadamente de la aldea por culpa de la escasez de rinocerontes? --Qt0oPxfCuE-- From cloos@jhcloos.com Wed Dec 31 11:58:30 2008 Received: (at 1750) by emacsbugs.donarmstrong.com; 31 Dec 2008 19:58:30 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-2.9 required=4.0 tests=FOURLA,HAS_BUG_NUMBER, MURPHY_DRUGS_REL8 autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from eagle.jhcloos.com (eagle.jhcloos.com [207.210.242.212]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id mBVJwQn0007071 for <1750@emacsbugs.donarmstrong.com>; Wed, 31 Dec 2008 11:58:28 -0800 Received: by eagle.jhcloos.com (Postfix, from userid 10) id F1FD24008D; Wed, 31 Dec 2008 19:58:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jhcloos.com; s=eagle; t=1230753506; bh=njjHC8ZjkMIvndCLP6QbpFvgkMsvfmGXrD+RDKYWb Vk=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type:Content-Transfer-Encoding; b=UtYFdQPBeF4 fF3E/G6HSjDUwTC0g6fsR+6TobBy8wbaeG0ly5Fe14npsYGTUF7k8CPkUGwhYV2s5Bu 2zZ2FCqHFftSgylzI97NTsPzBMHqqjwX+isw98o09ofm0tD1Lt6ReQwFXXs6yFcflCk /KrOuuwlYPw8yBTh5tIeFe/hvg= Received: by lugabout.jhcloos.org (Postfix, from userid 500) id 18E9252FB8; Wed, 31 Dec 2008 19:58:11 +0000 (UTC) From: James Cloos To: Stefan Monnier Cc: 1750@debbugs.gnu.org Subject: bug#1750: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. In-Reply-To: References: <18779.30356.834146.410474@parhasard.net> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAI1J REFUOE+lU9ESgCAIg64P1y+ngUdxhl5H8wFbbM0OmUiEhKkCYaZThXCo6KE5sCbA1DDX3genvO4d eBQgEMaM5qy6uWk4SfBYfdu9jvBN9nSVDOKRtwb+I3epboOsOX5pZbJNsBJFvmQQ05YMfieIBnYX FK2N6dOawd97r/e8RjkTLzmMsiVgrAoEugtviCM3v2WzjgAAAABJRU5ErkJggg== Copyright: Copyright 2008 James Cloos OpenPGP: ED7DAEA6; url=http://jhcloos.com/public_key/0xED7DAEA6.asc OpenPGP-Fingerprint: E9E9 F828 61A4 6EA9 0F2B 63E7 997A 9F17 ED7D AEA6 Date: Wed, 31 Dec 2008 14:57:47 -0500 Message-ID: Lines: 17 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Hashcash: 1:23:081231:monnier@iro.umontreal.ca::wI4sg+zJrzzZY+3K:0000000000000000000000000000000000000qINM X-Hashcash: 1:23:081231:1750@emacsbugs.donarmstrong.com::YjjC4RJJFD0cQ4dG:000000000000000000000000000000adhC Those Mule IPA characters exist in the UCS only as character sequences. The example you mentioned, \3~ (which C-uC-x= says is aka E~) is written with UCS characters as ɛ U+025B U+0303 (LATIN SMALL LETTER OPEN E followed by COMBINING TILDE). Ideally the quail ipa method would enter the two character sequences into the buffer for such cases. I beleive the quail ethiopic method lost a couple of chars of the same sort when unicode-2 was merged in; if quail can be convinced to enter a string then those, too, should be recovered. -JimC -- James Cloos OpenPGP: 1024D/ED7DAEA6 From rgm@gnu.org Sat Jan 3 18:08:04 2009 Received: (at control) by emacsbugs.donarmstrong.com; 4 Jan 2009 02:08:04 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-0.7 required=4.0 tests=MISSING_SUBJECT,NOSUBJECT, VALID_BTS_CONTROL,X_DEBBUGS_NO_ACK autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n04281Al027408 for ; Sat, 3 Jan 2009 18:08:02 -0800 Received: from rgm by fencepost.gnu.org with local (Exim 4.67) (envelope-from ) id 1LJIOD-0008IO-Nf; Sat, 03 Jan 2009 21:06:53 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18784.6589.638899.56291@fencepost.gnu.org> Date: Sat, 3 Jan 2009 21:06:53 -0500 From: Glenn Morris To: control X-Debbugs-No-Ack: yes reassign 1778 spam reassign 1777 spam reassign 1774 spam reassign 1773 spam reassign 1772 spam severity 1771 wishlist reassign 1769 spam reassign 1760 spam reassign 1759 spam reassign 1758 spam reassign 1663 emacs,ns reassign 1677 emacs,gnus reassign 1687 emacs,ns reassign 1693 emacs,gnus close 1698 tags 1702 moreinfo reassign 1729 emacs,cc-mode tags 1731 notabug severity 1750 wishlist reassign 1756 emacs,cc-mode From kehoea@parhasard.net Sun Jan 18 23:11:40 2009 Received: (at submit) by emacsbugs.donarmstrong.com; 19 Jan 2009 07:11:40 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-2.9 required=4.0 tests=FOURLA,HAS_BUG_NUMBER, MURPHY_DRUGS_REL8 autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n0J7BXW9005355 for ; Sun, 18 Jan 2009 23:11:34 -0800 Received: from mail.gnu.org ([199.232.76.166]:42672 helo=mx10.gnu.org) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1LOoGq-0006Ym-IN for emacs-pretest-bug@gnu.org; Mon, 19 Jan 2009 02:10:05 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1LOoI9-0005Nw-CL for emacs-pretest-bug@gnu.org; Mon, 19 Jan 2009 02:11:31 -0500 Received: from daedalus.ipv4.asclepian.ie ([213.133.100.226]:58896 helo=daedalus.asclepian.ie) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LOoI8-0005Nq-8J for emacs-pretest-bug@gnu.org; Mon, 19 Jan 2009 02:11:25 -0500 Received: by daedalus.asclepian.ie (Postfix, from userid 1002) id 10922B82D; Mon, 19 Jan 2009 07:11:40 +0000 (GMT) From: Aidan Kehoe MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="V0wqEiOxMR" Content-Transfer-Encoding: 7bit Message-ID: <18804.10155.343841.133931@parhasard.net> Date: Mon, 19 Jan 2009 07:11:39 +0000 To: Stefan Monnier , 1750@debbugs.gnu.org, emacs-pretest-bug@gnu.org CC: James Cloos Subject: Re: bug#1750: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. In-Reply-To: <18779.52574.593394.579421@parhasard.net> References: <18779.30356.834146.410474@parhasard.net> <18779.52574.593394.579421@parhasard.net> X-Mailer: VM 8.0.12 under 21.5 (beta28) "fuki" XEmacs Lucid (x86_64-unknown-freebsd7.1) X-Echelon-distraction: FALN DSNET3 Ft. Meade NAIAG DSNET2 Sayeret Tzanhanim X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. --V0wqEiOxMR Content-Type: text/plain; charset=utf-8 Content-Description: message body and .signature Content-Transfer-Encoding: quoted-printable Ar an t-aon=C3=BA l=C3=A1 is triochad de m=C3=AD na Nollaig, scr=C3=ADob= h Aidan Kehoe:=20 > [...] I=E2=80=99m not sure if you=E2=80=99re waiting for an updated patch from = me, or what. Here=E2=80=99s one, anyway, against the current file with the 2009 copyright year, and w= ith better handling of the precomposed Mule IPA nasals. I=E2=80=99ve also att= ached a compressed version of the new file, in case anyone=E2=80=99s mail client = does Bad Things with the encoding. James, see the entries below corresponding to /3~ for how to tell quail t= o insert a series of characters.=20 --- ipa.el.GNU-Emacs 2009-01-19 07:01:35.000000000 +0000 +++ ipa.el.new 2009-01-19 07:04:18.000000000 +0000 @@ -1,4 +1,4 @@ -;;; ipa.el --- Quail package for inputting IPA characters -*-coding: is= o-2022-7bit;-*- +;;; ipa.el --- Quail package for inputting IPA characters. -*- coding: u= tf-8 -*-=20 =20 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009 @@ -21,12 +21,16 @@ =20 ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . +;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN. +;; Copyright (C) 2006 Free Software Foundation, Inc. +;; Licensed to the Free Software Foundation. =20 ;;; Commentary: =20 ;;; Code: =20 (require 'quail) +(eval-when-compile (require 'cl)) =20 (quail-define-package "ipa" "IPA" "IPA" t @@ -36,77 +40,477 @@ nil t nil nil nil nil nil nil nil nil t) =20 (quail-define-rules - ("i" ?=1B,0 =1B(B) - ("I" ?=1B,0!=1B(B) - ("e" ?=1B,0"=1B(B) - ("/3" ?=1B,0#=1B(B) - ("E" ?=1B,0#=1B(B) - ("ae" ?=1B,0$=1B(B) - ("a" ?=1B,0%=1B(B) - ("i-" ?=1B,0&=1B(B) - ("/e" ?=1B,0'=1B(B) - ("/a" ?=1B,0(=1B(B) - ("/m" ?=1B,0)=1B(B) - ("&" ?=1B,0*=1B(B) - ("/v" ?=1B,0+=1B(B) - ("A" ?=1B,0,=1B(B) - ("o|" ?=1B,0,=1B(B) - ("y" ?=1B,0-=1B(B) - ("Y" ?=1B,0.=1B(B) - ("o/" ?=1B,0/=1B(B) - ("oe" ?=1B,00=1B(B) - ("OE" ?=1B,01=1B(B) - ("u-" ?=1B,02=1B(B) - ("o-" ?=1B,03=1B(B) - ("u" ?=1B,04=1B(B) - ("U" ?=1B,05=1B(B) - ("o" ?=1B,06=1B(B) - ("/c" ?=1B,07=1B(B) - ("/A" ?=1B,08=1B(B) - ("|o" ?=1B,08=1B(B) - ("e-" ?=1B,0:=1B(B) - ("e|" ?=1B,0:=1B(B) - ("/3~" ?=1B,0;=1B(B) - ("E~" ?=1B,0;=1B(B) - ("A~" ?=1B,0<=1B(B) - ("oe~" ?=1B,0=3D=1B(B) - ("/c~" ?=1B,0>=1B(B) - ("p" ?=1B,0@=1B(B) - ("b" ?=1B,0A=1B(B) - ("t" ?=1B,0B=1B(B) - ("d" ?=1B,0C=1B(B) - ("k" ?=1B,0D=1B(B) - ("g" ?=1B,0E=1B(B) - ("f" ?=1B,0F=1B(B) - ("v" ?=1B,0G=1B(B) - ("th" ?=1B,0H=1B(B) - ("dh" ?=1B,0I=1B(B) - ("s" ?=1B,0J=1B(B) - ("z" ?=1B,0K=1B(B) - ("sh" ?=1B,0L=1B(B) - ("zh" ?=1B,0M=1B(B) - ("3" ?=1B,0M=1B(B) - ("c," ?=1B,0N=1B(B) - ("x" ?=1B,0O=1B(B) - ("/R" ?=1B,0P=1B(B) - ("h" ?=1B,0Q=1B(B) - ("m" ?=1B,0R=1B(B) - ("n" ?=1B,0S=1B(B) - ("gn" ?=1B,0T=1B(B) - ("ng" ?=1B,0U=1B(B) - ("r" ?=1B,0V=1B(B) - ("R" ?=1B,0W=1B(B) - ("/r" ?=1B,0X=1B(B) - ("j" ?=1B,0Y=1B(B) - ("l" ?=1B,0Z=1B(B) - ("/y" ?=1B,0[=1B(B) - ("L" ?=1B,0\=1B(B) - ("/h" ?=1B,0]=1B(B) - ("w" ?=1B,0^=1B(B) - ("M" ?=1B,0_=1B(B) - ("'" ?=1B,0p=1B(B) - ("`" ?=1B,0q=1B(B) - (":" ?=1B,0r=1B(B)) + ("i" ?i) + ("I" ?=C9=AA) + ("e" ?e) + ("/3" ?=C9=9B) + ("E" ?=C9=9B) + ("ae" ?=C3=A6) + ("a" ?a) + ("i-" ?=C9=A8) + ("/e" ?=C9=99) + ("/a" ?=C9=90) + ("/m" ?=C9=AF) + ("&" ?=C9=A4) + ("/v" ?=CA=8C) + ("A" ?=C9=91) + ("o|" ?=C9=91) + ("y" ?y) + ("Y" ?=CA=8F) + ("o/" ?=C3=B8) + ("oe" ?=C5=93) + ("OE" ?=C9=B6) + ("u-" ?=CA=89) + ("o-" ?=C9=B5) + ("u" ?u) + ("U" ?=CA=8A) + ("o" ?o) + ("/c" ?=C9=94) + ("/A" ?=C9=92) + ("|o" ?=C9=92) + ("e-" ?=C9=9A) + ("e|" ?=C9=9A) + ("/3~" ["=C9=9B=CC=83"]) + ("E~" ["=C9=9B=CC=83"]) + ("A~" ["=C9=91=CC=83"]) + ("oe~" ["=C5=93=CC=83"]) + ("/c~" ["=C9=94=CC=83"]) + ("p" ?p) + ("b" ?b) + ("t" ?t) + ("d" ?d) + ("k" ?k) + ("g" ?g) + ("f" ?f) + ("v" ?v) + ("th" ?=CE=B8) + ("dh" ?=C3=B0) + ("s" ?s) + ("z" ?z) + ("sh" ?=CA=83) + ("zh" ?=CA=92) + ("3" ?=CA=92) + ("c," ?=C3=A7) + ("x" ?x) + ("/R" ?=CA=81) + ("h" ?h) + ("m" ?m) + ("n" ?n) + ("gn" ?=C9=B2) + ("ng" ?=C5=8B) + ("r" ?r) + ("R" ?=CA=80) + ("/r" ?=C9=B9) + ("j" ?j) + ("l" ?l) + ("/y" ?=CA=8E) + ("L" ?=CA=9F) + ("/h" ?=C9=A5) + ("w" ?w) + ("M" ?=CA=8D) + ("'" ?=CB=88) + ("`" ?=CB=8C) + (":" ?=CB=90)) =20 -;; arch-tag: cf2614cc-ecce-4ef5-ba51-37faeed41691 -;;; ipa.el ends here +(quail-define-package + "kirshenbaum-ipa" "IPA" "IPA-K" t + "The International Phonetic Alphabet, using Kirshenbaum ASCII translit.= =20 + +Kirshenbaum IPA is an ASCII transliteration of the phonetic alphabet, co= mmon +in the Usenet groups `sci.lang' and `alt.usage.english'. This input met= hod +allows you to type Kirshenbaum on your ASCII-capable keyboard, producing= the +corresponding actual IPA characters in your editor. + +See http://www.kirshenbaum.net/IPA/ascii-ipa.pdf for full details of the +transliteration. + +A caveat with regard to that document; while XEmacs currently preserves +Unicode diacritics on reading and emitting them, it displays them, +incorrectly, as separate from the modified glyphs. ") + +(quail-define-rules + ("r" "=C9=B9") ;; Alveolar approximant U+0279 + ("A" "=C9=91") ;; Low back unrounded vowel U+0251 + ("B" "=CE=B2") ; + ; Voiced bilabial fricative U+03B2 + ("C" "=C3=A7") ;; Voiced palatal fricative U+00E7 + ("D" "=C3=B0") ;; Voiced dental fricative U+00F0 + ("E" "=C9=9B") ;; Lower-mid front unrounded vowel U+025B + ("G" "=C9=A2") ;; Voiced uvular stop U+0262 + ("H" "=C4=A7") ;; Voiced pharyngeal fricative U+0127 + ("I" "=C9=AA") ;; Semi-high front unrounded vowel U+026A + ("J" "=C9=9F") ;; Voiced palatal stop U+025F + ("L" ["=C9=AB" ;; Voiced velar lateral U+026B + "=CA=9F" ;; Voiced velar lateral U+029F + "=C9=AC"]) ;; Voiced alveolar lateral fricative U+026C + ("M" "=C9=B1") ;; Labio-dental nasal U+0271 + ("N" "=C5=8B") ;; Velar nasal U+014B + ("O" "=C9=94") ;; Low-mid back rounded vowel U+0254 + ("P" "=C9=B8") ;; Voiceless bilabial fricative U+0278 + ("Q" "=C9=A3") ;; Voiced velar fricative U+0263 + ("R" ["=CA=80" ;; Alveolar trill U+0280 + "=C9=9A"]) ;; Rhotacised schwa U+025A + ("@" "=C9=9A") ;; Mid central rhotacised vowel U+025A + ("S" "=CA=83") ;; Voiced postalveolar fricative U+0283 + ("T" "=CE=B8") ;; Voiced dental fricative U+03B8 + ("U" "=CA=8A") ;; Semi-high back rounded vowel U+028A + ("V" "=CA=8C") ;; Low-mid back unrounded vowel U+028C + ("W" "=C5=93") ;; Low-mid front rounded vowel U+0153 + ("X" "=CF=87") ;; Voiceless uvular fricative U+03C7 + ("Y" "=C3=B8") ;; Upper-mid front rounded vowel U+00F8 + ("Z" "=CA=92") ;; Voiced postalveolar fricative U+0292 + ("?" "=CA=94") ;; Glottal stop U+0294 + ("@" "=C9=99") ;; Mid central unrounded vowel (schwa) U+0259 + ("&" "=C3=A6") ;; Low front unrounded vowel U+00E6 + ("*" "=C9=BE") ;; Voiced alveolar flap U+027E + + ("a~" "=C3=A3") ;; Low central unrounded vowel, nasal U+00E3 + ("o~" "=C3=B5") ;; Upper-mid back rounded vowel, nasal U+00F5 + ("u~" "=C5=A9") ;; High back rounded vowel, nasal U+0169 + ("~" "=CC=83") ;; +Nasalised modifier U+0303 + (":" "=CB=90") ;; +Long modifier U+02D0 + ("-" "=CC=A9") ;; +Syllabic modifier U+0329 + ("." "=CC=A3") ;; +Retroflex modifier U+0323 + ("`" "=CA=BC") ;; +Ejective modifier U+02BC + ("[" "=CC=AA") ;; +Dental modifier U+032A + (";" "=CA=B2") ;; +Palatalised modifier U+02B2 + ("" "=CC=B4") ;; +Pharyngealised modifier U+0334 + ("" "=CA=B0") ;; +Aspirated modifier U+02B0 + ("" ["=CC=A5" ;; +Voiceless modifier U+0325 + "=CB=9A"]) ;; +Unexploded modifier U+02DA + ("" "=CA=B3") ;; +Rhotacised modifier U+02B3 + ("" "=CA=B7") ;; +Labialised modifier U+02B7 + ("" "=CA=B1") ;; +Murmured modififer U+02B1 + + ("b" "=CA=99") ;; Bilabial trill U+0299 + ("b`" "=C9=93") ;; Bilabial implosive U+0253 + ("p!" "=CA=98") ;; Bilabial click U+0298 + ("r" "=CA=8B") ;; Labio-dental approximant U+028B + ("d`" "=C9=97") ;; Dental implosive U+0257 + ("t!" "=CA=87") ;; Dental click U+0287 + ("s" "=C9=AC") ;; Voiceless alveolar lateral fricative U+026C + ("z" "=C9=AE") ;; Voiced alveolar lateral fricative U+026E + ("r" "=CA=80") ;; Alveolar trill U+0280 + + ("*" "=C9=BA") ;; Voiced alveolar lateral flap U+027A + ("c!" "=CA=97") ;; Alveolar click U+0297 + ("l!" "=CA=96") ;; Alveolar lateral click U+0296 + ("n." "=C9=B3") ;; Retroflex nasal U+0273 + ("t." "=CA=88") ;; Voiceless retroflex stop U+0288 + ("d." "=C9=96") ;; Voiced retroflex stop U+0256 + ("s." "=CA=82") ;; Voiceless retroflex fricative U+0282 + ("z." "=CA=90") ;; Voiceless retroflex fricative U+0290 + ("r." "=C9=BB") ;; Retroflex approximant U+027B + ("l." "=C9=AD") ;; Retroflex lateral U+026D + ("*." "=C9=BD") ;; Retroflex flap U+027D + + ("C" "=CA=9D") ;; Voiced palatal fricative U+029D + ("j" "=C9=A5") ;; Rounded palatal approximant U+0265 + ("l^" "=CA=8E") ;; Palatal lateral U+028E + ("J`" "=CA=84") ;; Palatal implosive U+0284 + ("j" "=C9=B0") ;; Velar approximant U+0270 + ("g`" "=C9=A0") ;; Velar implosive U+0260 + ("k!" "=CA=9E") ;; Velar click U+029E +=20 + ("n" ["n=E2=81=80g"]) ;; Labio-velar nasal + ("t" ["k=E2=81=80p"]) ;; Voiceless labio-velar stop + + ;; "n for "gb" WITH U+2030 CHARACTER TIE was ambiguous and + ;; misleading. I _believe_ this is what was meant instead.=20 + ("d" ["g=E2=81=80b"]) ;; Voiced labio-velar stop.=20 + + ("w" "=CA=8D") ;; Voiceless labio-velar stop U+028D + ("n\"" "=C9=B4") ;; Uvular nasal U+0274 + ("g\"" "=CA=81") ;; Voiced uvular fricative U+0281 + ("r\"" "=CA=80") ;; Uvular trill U+0280 + ("G`" "=CA=9B") ;; Voiced uvular implosive U+029B + ("H" "=CA=95") ;; Voiced pharyngeal fricative U+0295 + + ("h" "=C9=A6") ;; Murmured glottal fricative U+0266 + ("I." "=CA=8F") ;; Semi-high front rounded vowel U+028F + ("&." "=C9=B6") ;; Low front unrounded vowel U+0276 + + ("i\"" "=C9=A8") ;; High central unrounded vowel U+0268 + ("u\"" "=CA=89") ;; High central rounded vowel U+0289 + ("@" "=C9=98") ;; Upper-mid central unrounded vowel U+0258 + + ("R" "=C9=9D") ;; Upper-mid central rhotacised vowel U+025D + + ("@." "=C9=B5") ;; Mid central rounded vowel U+0275 + ("V\"" "=C9=9C") ;; Lower-mid central unrounded vowel U+025C + ("O\"" "=C9=9E") ;; Lower-mid central rounded vowel U+025E + ("u-" "=C9=AF") ;; High back unrounded vowel U+026F + ("o-" "=C9=A4") ;; Upper-mid back unrounded vowel U+0264 + ("A." "=C9=92")) ;; Lower back rounded vowel U+0252 + +;; On XEmacs, with the supplied X-SAMPA data, this function is capably +;; implemented with:=20 +;; +;; (list (vector (concat to-prepend quail-keymap))) +;;=20 +;; Supporting GNU Emacs too makes it a good deal more complicated.=20 + +(defun x-sampa-prepend-to-keymap-entry (to-prepend quail-keymap) + "Return QUAIL-KEYMAP with TO-PREPEND at the beginning of each result. + +QUAIL-KEYMAP is a cons that satisfies `quail-map-p'; TO-PREPEND is a +string. " + (when (consp quail-keymap) (setq quail-keymap (cdr quail-keymap))) + (if (or (integerp quail-keymap)=20 + (and (fboundp 'characterp) (characterp quail-keymap))) + (setq quail-keymap (list (string quail-keymap))) + (if (stringp quail-keymap) + (setq quail-keymap (list quail-keymap)) + (assert (vectorp quail-keymap) t) + (setq quail-keymap (append quail-keymap nil)))) + (list=20 + (apply 'vector=20 + (mapcar=20 + #'(lambda (entry) + (assert (char-or-string-p entry) t) + (format "%s%s" to-prepend=20 + (if (integerp entry) (string entry) entry))) + quail-keymap)))) + +(defun x-sampa-underscore-implosive (input-string length) + "Return keymap with IPA implosives, for INPUT-STRING, length LENGTH. + +The implosive consonants in X-SAMPA are represented with more or less a +diacritic syntax, but the property +implosive in the IPA is expressed us= ing +separate characters, and not using a diacritic. This function works aro= und +the confusion that implies when generating IPA from X-SAMPA; it returns = a +Quail map that is a copy of the map for `_', but with all the DIACRITIC +entries changed to return the diacritic together with the base character= , +and with the map to the implosive added to its end. + +Like all `quail-defrule'-assigned functions, this will be called once fo= r +each particular sequence of keys, the first time the user types that +particular sequence of keys, and the result will be cached by Quail. " + (let* ((input-string (substring input-string 0 (or length))) + (underscore-map (copy-tree (quail-lookup-key "_"))) + (split-input (split-string input-string "_")) + (pre-underscore (car split-input)) + (pre-underscore-map (quail-lookup-key pre-underscore)) + (x-sampa-submap-entry=20 + (assoc (format "%s<" input-string) x-sampa-implosive-submap)) + underscore-map-entry) + (if (and (consp pre-underscore-map) (car pre-underscore-map)) + (setq pre-underscore-map (car pre-underscore-map)) + (setq pre-underscore-map pre-underscore)) + (unless (stringp pre-underscore-map) + (setq pre-underscore-map (string pre-underscore-map))) + (dolist (underscoring underscore-map) + (cond ((null underscoring)) + ((eq (length underscoring) 2) + (setq underscore-map-entry (second underscoring)) + (setcdr underscoring (x-sampa-prepend-to-keymap-entry=20 + pre-underscore-map underscore-map-entry))) + ((eq (length underscoring) 3) + (setq underscore-map-entry (second (third underscoring))) + (setcdr (third underscoring)=20 + (x-sampa-prepend-to-keymap-entry=20 + pre-underscore-map underscore-map-entry))) + (t=20 + (assert (null t) t=20 + "Can't handle subtrees of this level right now.")))) + (append underscore-map (list (list ?< (second x-sampa-submap-entry))= )))) + +(quail-define-package + "x-sampa-ipa" "IPA" "IPA-X" t + "The International Phonetic Alphabet, using J.C. Wells' X-SAMPA.=20 + +X-SAMPA is an ASCII transliteration of the IPA, normally used for data +exchange in environments where Unicode is not available. This input met= hod +uses this transliteration to allow you to produce the IPA in your editor +with a keyboard that's limited to ASCII. + +See http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf for a full definit= ion +of the mapping. A caveat with regard to that document; while XEmacs +currently preserves Unicode diacritics on reading and emitting them, it +displays them, incorrectly, as separate from the modified glyphs. " nil = t t) + +(quail-define-rules + ;; Table taken from http://en.wikipedia.org/wiki/X-SAMPA, checked with + ;; http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf + + ("d`" "=C9=96") ;; Voiced retroflex plosive U+0256 + + ;; In the Wikipedia article, they list ASCII g as mapping to U+0261, LA= TIN + ;; SMALL LETTER SCRIPT G. The typeset g is equally acceptable as the vo= iced + ;; velar plosive, however, and we don't override the identity mapping h= ere. + + ("h\\" "=C9=A6") ;; Voiced glottal fricative U+0266 + ("j\\" "=CA=9D") ;; Voiced palatal fricative U+029D + ("l`" "=C9=AD") ;; Retroflex lateral approximant U+026D + ("l\\" "=C9=BA") ;; Alveolar lateral flap U+027A + ("n`" "=C9=B3") ;; Retroflex nasal U+0273 + ("p\\" "=C9=B8") ;; Voiceless bilabial fricative U+0278 + ("r`" "=C9=BD") ;; Retroflex flap U+027D + ("r\\" "=C9=B9") ;; Alveolar approximant U+0279 + ("r\\`" "=C9=BB") ;; Retroflex approximant U+027B + ("s`" "=CA=82") ;; Voiceless retroflex fricative U+0282 + ("s\\" "=C9=95") ;; Voiceless alveolo-palatal fricative U+0255 + ("t`" "=CA=88") ;; Voiceless retroflex plosive U+0288 + ("v\\" "=CA=8B") ;; Labiodental approximant U+028B + ("x\\" "=C9=A7") ;; Voiceless palatal-velar fricative U+0267 + ("z`" "=CA=90") ;; Voiced retroflex fricative U+0290 + ("z\\" "=CA=91") ;; Voiced alveolo-palatal fricative U+0291 + ("A" "=C9=91") ;; Open back unrounded vowel U+0251 + ("B" "=CE=B2") ;; Voiced bilabial fricative U+03B2 + ("B\\" "=CA=99") ;; Bilabial trill U+0299 + ("C" "=C3=A7") ;; Voiceless palatal fricative U+00E7 + ("D" "=C3=B0") ;; Voiced dental fricative U+00F0 + ("E" "=C9=9B") ;; Open-mid front unrounded vowel U+025B + ("F" "=C9=B1") ;; Labiodental nasal U+0271 + ("G" "=C9=A3") ;; Voiced velar fricative U+0263 + ("G\\" "=C9=A2") ;; Voiced uvular plosive U+0262 + ("H" "=C9=A5") ;; Labial-palatal approximant U+0265 + ("H\\" "=CA=9C") ;; Voiceless epiglottal fricative U+029C + ("I" "=C9=AA") ;; Near-close near-front unrounded vowel U+026A + ("I\\" "=C6=97") ;; Central lax close unrounded vowel U+0197 + ("J" "=C9=B2") ;; Palatal nasal U+0272 + ("J\\" "=C9=9F") ;; Voiceless palatal plosive U+025F + ("K" "=C9=AC") ;; Voiceless alveolar lateral fricative U+026C + ("K\\" "=C9=AE") ;; Voiced alveolar lateral fricative U+026E + ("L" "=CA=8E") ;; Palatal lateral approximant U+028E + ("L\\" "=CA=9F") ;; Velar lateral approximant U+029F + ("M" "=C9=AF") ;; Close back unrounded vowel U+026F + ("M\\" "=C9=B0") ;; Velar approximant U+0270 + ("N" "=C5=8B") ;; Velar nasal U+014B + ("N\\" "=C9=B4") ;; Uvular nasal U+0274 + ("O" "=C9=94") ;; Open-mid back rounded vowel U+0254 + ("O\\" "=CA=98") ;; Bilabial click U+0298 + ("P" "=CA=8B") ;; Labiodental approximant U+028B + ("Q" "=C9=92") ;; Open back rounded vowel U+0252 + ("R" "=CA=81") ;; Voiced uvular fricative U+0281 + ("R\\" "=CA=80") ;; Uvular trill U+0280 + ("S" "=CA=83") ;; Voiceless postalveolar fricative U+0283 + ("T" "=CE=B8") ;; Voiceless dental fricative U+03B8 + ("U" "=CA=8A") ;; Near-close near-back rounded vowel U+028A + ("U\\" ["=CA=8A=CC=B5"]) ;; Central lax close rounded vowel, U+028A U+0= 335 + ("V" "=CA=8C") ;; Open-mid back unrounded vowel U+028C + ("W" "=CA=8D") ;; Voiceless labial-velar fricative U+028D + ("X" "=CF=87") ;; Voiceless uvular fricative U+03C7 + ("X\\" "=C4=A7") ;; Voiceless pharyngeal fricative U+0127 + ("Y" "=CA=8F") ;; Near-close near-front rounded vowel U+028F + ("Z" "=CA=92") ;; Voiced postalveolar fricative U+0292 + + ("\"" "=CB=88") ;; Primary stress U+02C8 + ("%" "=CB=8C") ;; Secondary stress U+02CC + (":" "=CB=90") ;; Long U+02D0 + (":\\" "=CB=91") ;; Half-long U+02D1 + ("@" "=C9=99") ;; Schwa U+0259 + ("@\\" "=C9=98") ;; Close-mid central unrounded vowel U+0258 + ("@`" "=C9=9A") ;; Rhotacised schwa U+025A + ("{" "=C3=A6") ;; Near-open front unrounded vowel U+00E6 + ("}" "=CA=89") ;; Close central rounded vowel U+0289 + ("1" "=C9=A8") ;; Close central unrounded vowel U+0268 + ("2" "=C3=B8") ;; Close-mid front rounded vowel U+00F8 + ("3" "=C9=9C") ;; Open-mid central unrounded vowel U+025C + ("3\\" "=C9=9E") ;; Open-mid central rounded vowel U+025E + ("4" "=C9=BE") ;; Alveolar flap U+027E + ("5" "=C9=AB") ;; Velarised alveolar lateral approximant U+026B + ("6" "=C9=90") ;; Near-open central vowel U+0250 + ("7" "=C9=A4") ;; Close-mid back unrounded vowel U+0264 + ("8" "=C9=B5") ;; Close-mid central rounded vowel U+0275 + ("9" "=C5=93") ;; Open-mid front rounded vowel U+0153 + ("&" "=C9=B6") ;; Open front rounded vowel U+0276 + ("?" "=CA=94") ;; Glottal stop U+0294 + ("?\\" "=CA=95") ;; Voiced pharyngeal fricative U+0295 + ;; The undefined escape character, ignored.=20 + ;; Indeterminacy in French vowels, ignored. + ;; Begin nonsegmental notation, ignored.=20 + ("<\\" "=CA=A2") ;; Voiced epiglottal fricative U+02A2 + ;; End nonsegmental notation, ignored.=20 + (">\\" "=CA=A1") ;; Epiglottal plosive U+02A1 + ("^" "=E2=86=91") ;; Upstep U+2191 + ("!" "=E2=86=93") ;; Downstep U+2193 + ("!\\" "=C7=83") ;; Postalveolal click U+01C3 + ("\\" "=C7=80") ;; Dental click U+01C0 + ("\\|\\" "=C7=81") ;; Lateral alveolar click U+01C1 + ("=3D\\" "=C7=82") ;; Palatal click U+01C2 + ("-\\" "=CC=AE") ;; Linking mark U+032E + + ;; Diacritics. Note that XEmacs doesn't yet have composed characters, s= o we + ;; can input them, but they won't display properly. If you send email u= sing + ;; them, and the recipient's client is capable, they will get through, + ;; though. + + ("_\"" "=CC=88") ;; Centralised U+0308 + ("_+" "=CC=9F") ;; Advanced U+031F + ("_-" "=CC=A0") ;; Retracted U+0320 + ("_/" "=CB=87") ;; Rising tone U+02C7 + ("_0" "=CC=A5") ;; Voiceless U+0325 + ("_=3D" "=CC=A9") ;; Syllabic U+0329 + ("=3D" "=CC=A9") ;; Syllabic U+0329 + ("_>" "=CA=BC") ;; Ejective U+02BC + ("_?\\" "=CB=A4") ;; Pharyngealised U+02E4 + ("_\\" "=CB=86") ;; Falling Tone U+02C6 + ("_^" "=CC=AF") ;; Non-syllabic U+032F + ("_}" "=CC=9A") ;; No audible release U+031A + ;; ` is alternatively; retroflexion in consonants + ("`" "=CB=9E") ;; Rhotacization in vowels U+02DE + ("_~" "=CC=83") ;; Nasalisation U+0303 + ("~" "=CC=83") ;; Nasalisation U+0303 + ("_A" "=CC=98") ;; Advanced tongue root U+0318 + ("_a" "=CC=BA") ;; Apical U+033A + ("_B" "=CC=8F") ;; Extra low tone U+030F + ;; _B_L omitted, no Unicode code point for "low rising tone." + ("_c" "=CC=9C") ;; Less rounded U+031C + ("_d" "=CC=AA") ;; Dental U+032A + ("_e" "=CC=B4") ;; Velarised or pharyngeal U+0334 + + ("" "=E2=86=99") ;; Global fall; SOUTH EAST ARROW; may be a bit smal= ler than + ;; intended. + ("_F" "=CC=82") ;; Falling tone U+0302 + ("_G" "=CB=A0") ;; Velarised U+02E0 + ("_H" "=CC=81") ;; High tone U+0301 + ;; "_H_T omitted, no Unicode code point for "high rising tone" + ("_h" "=CA=B0") ;; Aspirated U+02B0 + ("_j" "=CA=B2") ;; Palatalised U+02B2 + ("'" "=CA=B2") ;; Palatalised U+02B2 + ("_k" "=CC=B0") ;; Creaky voice U+0330 + ("_L" "=CC=80") ;; Low tone U+0300 + ("_l" "=CB=A1") ;; Lateral release U+02E1 + ("_M" "=CC=84") ;; Mid tone U+0304 + ("_m" "=CC=BB") ;; Laminal U+033B + ("_N" "=CC=BC") ;; Linguolabial U+033C + ("_n" "=E2=81=BF") ;; Nasal release U+207F + ("_O" "=CC=B9") ;; More rounded U+0339 + ("_o" "=CC=9E") ;; Lowered U+031E + ("_q" "=CC=99") ;; Retracted tongue root U+0319 + ("" "=E2=86=97") ;; NORTH EAST ARROW; may be a bit smaller than inte= nded.=20 + ("_R" "=CC=8C") ;; Ha=C4=8Dek, caron, rising tone. U+030C + ;; _R_F omitted, apparently there's no corresponding Unicode entry.=20 + ("_r" "=CC=9D") ;; Raised U+031D + ("_T" "=CC=8B") ;; Extra high tone U+030B + ("_t" "=CC=A4") ;; Breathy voice U+0324 + ("_v" "=CC=AC") ;; Voiced U+032C + ("_w" "=CA=B7") ;; Labialised U+02B7 + ("_X" "=CC=86") ;; Extra-short U+0306 + ("_x" "=CC=BD")) ;; Mid-centralised U+033D + +(defconst x-sampa-implosive-submap=20 + '(("b_<" ?=C9=93) ;; Voiced bilabial implosive U+0253=20 + ("d_<" ?=C9=97) ;; Voiced alveolar implosive U+0257 + ("g_<" ?=C9=A0) ;; Voiced velar implosive U+0260 + ("G\\_<" ?=CA=9B) ;; Voiced uvular implosive U+029B + ("J\\_<" ?=CA=84)) ;; Voiced palatal implosive U+0284 + "A map from the X-SAMPA for some implosive consonants to characters. +This is used because their X-SAMPA syntax is quasi-diacritic, but the +corresponding Unicode characters themselves don't have diacritics, they = are +separate code points. So we need to implement some extra logic that isn= 't +normally provided by Quail. ") + +;; Putting in place rules for the implosives like for the others above +;; breaks the "_" rules for b, d, g, G and J a little--you ne= ed +;; to interrupt Quail before typing the underscore if you want the +;; diacritic. To avoid this, handle the input specially with the functio= n +;; x-sampa-underscore-implosive. + +(dolist (implosive-x-sampa (mapcar 'car x-sampa-implosive-submap)) + (setq implosive-x-sampa (car (split-string implosive-x-sampa "_"))) + (quail-defrule (format "%s_" implosive-x-sampa) + 'x-sampa-underscore-implosive)) + +(provide 'ipa) --=20 =C2=BFD=C3=B3nde estar=C3=A1 ahora mi sobrino Yoghurtu Nghe, que tuvo que= huir precipitadamente de la aldea por culpa de la escasez de rinocerontes? --V0wqEiOxMR Content-Type: application/octet-stream; name="ipa.el.new.bz2" Content-Disposition: attachment; filename="ipa.el.new.bz2" Content-Transfer-Encoding: base64 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 +XEBHVIIAYIEuePFhD/F3JFOFCQf7nQtAA== --V0wqEiOxMR-- From kehoea@parhasard.net Mon Aug 10 13:30:14 2009 Received: (at 1750) by emacsbugs.donarmstrong.com; 10 Aug 2009 20:30:14 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=0.1 required=4.0 tests=FOURLA,MURPHY_DRUGS_REL8 autolearn=no version=3.2.5-bugs.debian.org_2005_01_02 Received: from daedalus.asclepian.ie (daedalus.ipv4.asclepian.ie [213.133.100.226]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n7AKUAEl028337 for <1750@emacsbugs.donarmstrong.com>; Mon, 10 Aug 2009 13:30:13 -0700 Received: by daedalus.asclepian.ie (Postfix, from userid 1002) id AD44BB83B; Mon, 10 Aug 2009 21:30:04 +0100 (IST) From: Aidan Kehoe MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <19072.33612.609778.383349@parhasard.net> Date: Mon, 10 Aug 2009 21:30:04 +0100 To: Oleksandr Gavenko CC: 1750@debbugs.gnu.org, emacs-pretest-bug@gnu.org Subject: Re: Status of IPA patch? In-Reply-To: <4A807E29.1030405@gmail.com> References: <4A807E29.1030405@gmail.com> X-Mailer: VM 8.0.12 under 21.5 (beta29) "garbanzo" 5a54ce6dc945+ XEmacs Lucid (x86_64-unknown-freebsd7.2) X-Echelon-distraction: gorilla MI-17 NMIC Retinal Fetish rs9512c l0ck Hi Oleksandr -- The omission of those two was intentional, since U+20A7 is equivalent to tʃ (note that that digraph doesn’t include the tie that would be necessary to have it as a phoneme distinct from /t/ followed by /ʃ/) and g is equivalent to U+0261 for the purposes of the IPA. I don’t know what’s happening with the application of the patch to GNU Emacs. I use and develop for XEmacs, it hasn’t been a problem for me; maybe the list can tell us if there are any problems with it. Ciao, Aidan Ar an deichiú lá de mí Lúnasa, scríobh Oleksandr Gavenko: > You make patch for IPA input method: > > http://thread.gmane.org/gmane.emacs.bugs/23612 > > I online browse source: > > http://cvs.savannah.gnu.org/viewvc/emacs/leim/quail/ipa.el?root=emacs&view=log > > and see that it not yet applyed. But it provide useful features. > It nicely if you try again ask developer to apply this patch. > > Also I mail you because have such question: > > There are two chars in English phonetic transcription: > ʧ (\u02A7 LATIN SMALL LETTER TESH DIGRAPH) > and ɡ (\u0261 LATIN SMALL LETTER SCRIPT G) > which used in English/Russian dictionaries and > they both do not present in your ipa.el file. > > TESH DIGRAPH can be typed as t and LATIN SMALL LETTER ESH. > SMALL LETTER SCRIPT G can be typed as g (\u0067) - but some fonts > display differ (see article http://en.wikipedia.org/wiki/G ). > > Can you comment question and if it have reason add support > for this chars? -- ¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir precipitadamente de la aldea por culpa de la escasez de rinocerontes? From rgm@gnu.org Mon Aug 10 13:55:48 2009 Received: (at control) by emacsbugs.donarmstrong.com; 10 Aug 2009 20:55:48 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-3.5 required=4.0 tests=AWL,ONEWORD autolearn=no version=3.2.5-bugs.debian.org_2005_01_02 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n7AKtkh9030770 for ; Mon, 10 Aug 2009 13:55:48 -0700 Received: from rgm by fencepost.gnu.org with local (Exim 4.67) (envelope-from ) id 1MabuD-0004wr-42; Mon, 10 Aug 2009 16:55:45 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <19072.35153.46871.538804@fencepost.gnu.org> Date: Mon, 10 Aug 2009 16:55:45 -0400 From: Glenn Morris To: control Subject: control merge 4082 3420 reassign 4084 notemacs tags 3420 unreproducible forcemerge 1750 4109 reassign 4092 emacs,ns reassign 4070 emacs,ns merge 4093 4081 From rgm@gnu.org Fri Aug 28 13:57:16 2009 Received: (at 1750-quiet) by emacsbugs.donarmstrong.com; 28 Aug 2009 20:57:17 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-3.8 required=4.0 tests=AWL,FAKE_REPLY_C,ONEWORD, X_DEBBUGS_NO_ACK autolearn=no version=3.2.5-bugs.debian.org_2005_01_02 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n7SKvFTS005732 for <1750-quiet@emacsbugs.donarmstrong.com>; Fri, 28 Aug 2009 13:57:16 -0700 Received: from rgm by fencepost.gnu.org with local (Exim 4.67) (envelope-from ) id 1Mh8VW-0000Ea-Tc; Fri, 28 Aug 2009 16:57:14 -0400 From: Glenn Morris To: 1750-quiet@debbugs.gnu.org Subject: Re: Bug#1750 X-Spook: cryptographic Afghanistan clandestine Bin Laden BRLO X-Ran: 3,~5VcJX;OAe@Cie85*mU6Jr3YHpkQ?S)n3q1ft@|[;.a]vXx2&s,p6*-Y2NGs=>sBS2q_ X-Hue: magenta X-Debbugs-No-Ack: yes X-Attribution: GM Date: Fri, 28 Aug 2009 16:57:14 -0400 Message-ID: <67iqg7wtat.fsf@fencepost.gnu.org> User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Discussion split to emacs-devel: http://lists.gnu.org/archive/html/emacs-devel/2009-08/msg01217.html From juri@jurta.org Sun Aug 30 16:35:49 2009 Received: (at 1750-done) by emacsbugs.donarmstrong.com; 30 Aug 2009 23:35:50 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-2.7 required=4.0 tests=AWL,HAS_BUG_NUMBER, MURPHY_DRUGS_REL8 autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from mx2.starman.ee (smtp-out2.starman.ee [85.253.0.4]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n7UNZmKE026698 for <1750-done@emacsbugs.donarmstrong.com>; Sun, 30 Aug 2009 16:35:49 -0700 X-Virus-Scanned: by Amavisd-New at mx2.starman.ee Received: from mail.starman.ee (82.131.28.7.cable.starman.ee [82.131.28.7]) by mx2.starman.ee (Postfix) with ESMTP id 9C42E3F41EE; Mon, 31 Aug 2009 02:35:39 +0300 (EEST) From: Juri Linkov To: Aidan Kehoe Cc: 1750-done@debbugs.gnu.org Subject: Re: bug#1750: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. Organization: JURTA References: <18779.30356.834146.410474@parhasard.net> Date: Mon, 31 Aug 2009 02:35:23 +0300 In-Reply-To: <18779.30356.834146.410474@parhasard.net> (Aidan Kehoe's message of "Wed, 31 Dec 2008 13:41:40 +0000") Message-ID: <87y6p050zo.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Thank you. -- Juri Linkov http://www.jurta.org/emacs/ From kehoea@parhasard.net Sun Aug 30 16:52:36 2009 Received: (at 1750-done) by emacsbugs.donarmstrong.com; 30 Aug 2009 23:52:37 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.5-bugs.debian.org_2005_01_02 (2008-06-10) on rzlab.ucr.edu X-Spam-Level: X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. X-Spam-Status: No, score=-1.4 required=4.0 tests=AWL,HAS_BUG_NUMBER, MURPHY_DRUGS_REL8 autolearn=ham version=3.2.5-bugs.debian.org_2005_01_02 Received: from daedalus.asclepian.ie (daedalus.ipv4.asclepian.ie [213.133.100.226]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n7UNqZZD029905 for <1750-done@emacsbugs.donarmstrong.com>; Sun, 30 Aug 2009 16:52:36 -0700 Received: by daedalus.asclepian.ie (Postfix, from userid 1002) id D5D3CB831; Mon, 31 Aug 2009 00:52:33 +0100 (IST) From: Aidan Kehoe MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <19099.4289.247715.408360@parhasard.net> Date: Mon, 31 Aug 2009 00:52:33 +0100 To: Juri Linkov Cc: 1750-done@debbugs.gnu.org Subject: Re: bug#1750: [PATCH] Support standard ASCII-IPA mappings in leim/quail/ipa.el. In-Reply-To: <87y6p050zo.fsf@mail.jurta.org> References: <18779.30356.834146.410474@parhasard.net> <87y6p050zo.fsf@mail.jurta.org> X-Mailer: VM 8.0.12 under 21.5 (beta29) "garbanzo" 2c64d2bbb316 XEmacs Lucid (x86_64-unknown-freebsd7.2) X-Echelon-distraction: FALN CDA 50BMG Edens c peapod You’re welcome! Ar an t-aonú lá is triochad de mí Lúnasa, scríobh Juri Linkov: > Thank you. > > -- > Juri Linkov > http://www.jurta.org/emacs/ -- ¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir precipitadamente de la aldea por culpa de la escasez de rinocerontes? From unknown Mon Aug 11 02:14:37 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 28 Sep 2009 14:24:12 +0000 User-Agent: Fakemail v42.6.9 # A New Hope # A long time ago, in a galaxy far, far away # something happened. # # Magically this resulted in the following # action being taken, but this fake control # message doesn't tell you why it happened # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator