From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Kierin Bell Newsgroups: gmane.emacs.bugs Subject: bug#74170: [PATCH] Add input methods for Northern Iroquoian Date: Sun, 03 Nov 2024 17:11:45 -0500 Message-ID: <87cyjcnf1a.fsf@fernseed.me> References: <87froas6s7.fsf@fernseed.me> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10642"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 74170@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Nov 03 23:13:20 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1t7iqV-0002dg-Q6 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 03 Nov 2024 23:13:20 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t7iqI-0006Dk-KU; Sun, 03 Nov 2024 17:13:07 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t7iqE-0006BX-B0 for bug-gnu-emacs@gnu.org; Sun, 03 Nov 2024 17:13:03 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1t7iqE-0005tf-1z for bug-gnu-emacs@gnu.org; Sun, 03 Nov 2024 17:13:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:In-Reply-To:From:To:References:Subject; bh=522I/3DMgwL2axs9X9F5FNRRtnHtGHRR9ajid9MeUsk=; b=XQApJEUpDHLHxOsLKP5mfHLNrzMfSayiRaAkY3ljrkS0ToLiwPUYFkxCERj/1gWxsPy0Su2We25s79yjBviUP0GzqvsqKD6KBEhmfNrB4HSmNNXCTvR8F54XfeCr/Q4PHTr8Bbse8f1eDce7Ddu3mms2GJugWMPKAkXoh1sWsqnj2emr65y5kn93wk1nxJhb7TKArl5JyZwbIq/1rhlOVY8pfblSTVFzm7Qet0s8UiOCFAhQ02W0TksDn7ZQ77/jXQa5gVwB15jWPKItYoWlHDyfo263yAFuu/Yp9KP1qpmP4tqUJzdal84gfVqHaSqIA10OiNMJDoZzU+Uffoam9Q==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1t7iqD-0007Tl-SP for bug-gnu-emacs@gnu.org; Sun, 03 Nov 2024 17:13:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Kierin Bell Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Nov 2024 22:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74170 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 74170-submit@debbugs.gnu.org id=B74170.173067192828709 (code B ref 74170); Sun, 03 Nov 2024 22:13:01 +0000 Original-Received: (at 74170) by debbugs.gnu.org; 3 Nov 2024 22:12:08 +0000 Original-Received: from localhost ([127.0.0.1]:35155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t7ipK-0007Sy-FO for submit@debbugs.gnu.org; Sun, 03 Nov 2024 17:12:08 -0500 Original-Received: from mout-p-101.mailbox.org ([80.241.56.151]:48772) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t7ipF-0007SM-UR for 74170@debbugs.gnu.org; Sun, 03 Nov 2024 17:12:04 -0500 Original-Received: from smtp2.mailbox.org (smtp2.mailbox.org [IPv6:2001:67c:2050:b231:465::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4XhTN80G28z9sPq; Sun, 3 Nov 2024 23:11:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fernseed.me; s=MBO0001; t=1730671912; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to; bh=lIOuPKUTf2ak7TBzsTJGpgq6ECDRnrAatqX1lmlqjLM=; b=j4pLdBtaSvIwa6pkQp1HTOCqxCiGgR5D2+u/4AqraJFQzRKCB5yF+kv47y0OJ4MHNqb7Jm NhGK+Wt2le3Jgtt/EkuTIDLaSNJh83mKQoke0gJINpfBsX8boxtDjz2zXF/iCjygxt2fMx VUB1vBiG4iYXUUNcpUtbdrHhwAOA8oGKxtT2Qy4/ht1kaUgl5nUk6i5xvOzOoLeShKtaNh opRFa0T2wTDDLDmzp34ZszEK9WMnAUzb71zWhrSo7tsUJIv5GmTra7JWs0gaHywTz0ZOKq 3iIhwESlXY75RFqbRJYIu5Er6Lw/qm1WHBF1ASOPAGlxDZm+C6IyNC3KL5nESQ== In-Reply-To: Kierin Bell's message of "(unknown date)" X-Rspamd-Queue-Id: 4XhTN80G28z9sPq X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:294822 Archived-At: --=-=-= Content-Type: text/plain Resending a revised patch again. I find it easier to just reformat against master, and I apologize if there is some other workflow that is preferred. In testing, I found one more area for improvement: we should try to use precomposed characters when they exist instead of strings containing base letters and combining characters. That meant doing away the the automatic concatenation of vowels and combining diacritics permutations in favor of just specifying all permutations manually (like most Quail packages do). That is more error-prone, but I've double checked and tested it and it looks good. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-Add-input-methods-for-Northern-Iroquoian-languages.patch Content-Transfer-Encoding: quoted-printable >From 556025db0460097428d32dc445c05d35b88bdbe2 Mon Sep 17 00:00:00 2001 From: Kierin Bell Date: Sun, 3 Nov 2024 15:19:09 -0500 Subject: [PATCH] Add input methods for Northern Iroquoian languages --- etc/NEWS | 11 + lisp/leim/quail/iroquoian.el | 926 +++++++++++++++++++++++++++++++++++ 2 files changed, 937 insertions(+) create mode 100644 lisp/leim/quail/iroquoian.el diff --git a/etc/NEWS b/etc/NEWS index 41a76d1cd95..bf6322f1a47 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -177,6 +177,17 @@ characters. *** New language-environment and input method for Tifinagh. The Tifinagh script is used to write the Berber languages. =20 +--- +*** New input methods for Northern Iroquoian languages. +Input methods are now implemented for Haudenosaunee languages in the +Northern Iroquoian language family: 'mohawk-postfix' (Mohawk +[Kanien=E2=80=99k=C3=A9ha / Onkwehonwe=E2=80=99n=C3=A9ha]), 'oneida-postfi= x' (Oneida [On=CA=8Cyota:k=C3=A1: +/ Ukwehuwehn=C3=A9ha]), 'cayuga-postfix' (Cayuga [Gayogo=CC=B1ho:n=C7=ABhn= =C3=A9ha:=CB=80]), +'onondaga-postfix (Onondaga [[On=C5=B3da=CA=94geg=C3=A1=CA=94]), and `sene= ca-postfix' +[On=C3=B6dow=C3=A1=E2=80=99ga:=E2=80=99]). Additionally, there is a gener= al-purpose +'haudenosaunee-postfix' input method to facilitate writing in the +orthographies of the five languages simultaneously. + --- ** 'visual-wrap-prefix-mode' now supports variable-pitch fonts. When using 'visual-wrap-prefix-mode' in buffers with variable-pitch diff --git a/lisp/leim/quail/iroquoian.el b/lisp/leim/quail/iroquoian.el new file mode 100644 index 00000000000..1739453b5e4 --- /dev/null +++ b/lisp/leim/quail/iroquoian.el @@ -0,0 +1,926 @@ +;;; iroquoian.el --- Quail packages for inputting Iroquoian languages -*-= lexical-binding: t; coding: utf-8; -*- + +;; Copyright (C) 2024 Free Software Foundation, Inc. + +;; Author: Kierin Bell +;; Keywords: i18n + +;; This file is part of GNU Emacs. + +;; 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 3 of the License, 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 this program. If not, see . + +;;; Commentary: + +;; This file implements input methods for Northern Iroquoian languages. + +;; Input methods are implemented for all Five Nations Iroquois +;; languages: + +;; - Mohawk (Kanien=E2=80=99k=C3=A9ha / Onkwehonwe=E2=80=99n=C3=A9ha) +;; - Oneida (On=CA=8Cyota:k=C3=A1: / Ukwehuwehn=C3=A9ha) +;; - Onondaga (On=C5=B3da=CA=94geg=C3=A1=CA=94) +;; - Cayuga (Gayogo=CC=B1ho:n=C7=ABhn=C3=A9ha:=CB=80) +;; - Seneca (On=C3=B6dow=C3=A1=E2=80=99ga:=E2=80=99) + +;; A composite input method for all of the languages above is also +;; defined: `haudenosaunee-postfix'. + +;; Input methods are not yet implemented for the remaining Northern +;; Iroquoian languages, including: + +;; - Tuscarora (Skar=C3=B9:r=C4=99=CA=94) +;; - Wendat (Huron) / Wyandot + +;;; Code: + +(require 'quail) +(require 'seq) +(require 'pcase) + + +;;; Mohawk + +;; +;; There are several orthographies used today to write Mohawk in +;; different communities, but differences are small and mainly involve +;; differences in representation of the palatal glide [j] (written +;; in Eastern/Central dialects and in Western dialects). The +;; following input method should work for all of variants. +;; +;; Reference work for orthographies used by speakers of Eastern +;; (Kahnaw=C3=A0:ke, Kanehsat=C3=A0:ke, W=C3=A1hta) and Central (Ahkwesahs= ne) dialects +;; of Mohawk: +;; +;; Lazore, Dorothy Karihw=C3=A9nhawe. 1993. The Mohawk language +;; Standardisation Project, Conference Report. Ontario: Literacy +;; Ontario. +;; +;; Reference work for the orthography commonly used by speakers of +;; Western dialects of Mohawk (Tyendinaga, Ohsw=C3=A9:ken): +;; +;; Brian Maracle. 2021. 1st Year Adult Immersion Program 2020-21. +;; Ohsweken, ON, Canada: Onkwawenna Kentyohkwa. Unpublished curriculum +;; document written by staff for the Okwawenna Kentyohkwa adult +;; immersion program. +;; + +(defconst iroquoian-mohawk-modifier-alist nil + "Alist of rules for modifier letters in Mohawk input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-mohawk-vowel-alist + '(("a'" ?=C3=A1) + ("a`" ?=C3=A0) + ("A'" ?=C3=81) + ("A`" ?=C3=80) + ("e'" ?=C3=A9) + ("e`" ?=C3=A8) + ("E'" ?=C3=89) + ("E`" ?=C3=88) + ("i'" ?=C3=AD) + ("i`" ?=C3=AC) + ("I'" ?=C3=8D) + ("I`" ?=C3=8C) + ("o'" ?=C3=B3) + ("o`" ?=C3=B2) + ("O'" ?=C3=93) + ("O`" ?=C3=92)) + "Alist of rules for vowel letters in Mohawk input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-mohawk-consonant-alist + '((";;" ?\N{RIGHT SINGLE QUOTATION MARK})) + "Alist of rules for consonant letters in Mohawk input methods. +Entries are as with rules in `quail-define-rules'.") + +(quail-define-package + "mohawk-postfix" "Mohawk" "MOH<" nil + "Mohawk (Kanien=E2=80=99k=C3=A9ha) input method with postfix modifiers + +Modifiers: + +| Key | Translation | Description | +|-----+-------------+--------------| +| : | : | Vowel length | + +Stress diacritics: + +| Key | Description | Example | +|------+--------------+---------| +| \\=3D' | Acute accent | a' -> a=CC=81 | +| \\=3D` | Grave accent | a` -> a=CC=80 | + +Vowels: + +a, e, i, and o are bound to a single key. + +Consonants: + +| Key | Translation | Description | +|-----+-------------+--------------| +| ;; | \\=3D=E2=80=99 | Glottal stop | + +h, k, n, r, s, t, w, and y are bound to a single key. + +b, m, and p are used rarely in ideophones and loan words. They are also +each bound to a single key. + +Alternatively, an apostrophe can represent a glottal stop. To enter an +apostrophe directly after a vowel without adding an acute accent to that +vowel, first use \\\\[quail-select-current] to t= erminate the translation and then type the +apostrophe." + nil t nil nil nil nil nil nil nil nil t) + +(pcase-dolist (`(,key ,trans) + (append iroquoian-mohawk-modifier-alist + iroquoian-mohawk-consonant-alist + iroquoian-mohawk-vowel-alist)) + (quail-defrule key trans)) + + +;;; Oneida + +;; +;; There are slight variations in the orthographies used today to write +;; Oneida. The differences mainly involve in representation of vowel +;; length and glottal stops. +;; +;; Reference work for Oneida orthography: +;; +;; Michelson, K., Doxtator, M. and Doxtator, M.A.. 2002. +;; Oneida-English/English-Oneida dictionary. Toronto: University of +;; Toronto Press. +;; +;; Orthographic variation from personal familiarity with community +;; language programs and curricula. +;; + +(defconst iroquoian-oneida-modifier-alist + '(("::" ?\N{MIDDLE DOT})) + "Alist of rules for modifier letters in Oneida input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-oneida-vowel-alist + '(("a'" ?=C3=A1) + ("A'" ?=C3=81) + ("e'" ?=C3=A9) + ("E'" ?=C3=89) + ("i'" ?=C3=AD) + ("I'" ?=C3=8D) + ("o'" ?=C3=B3) + ("O'" ?=C3=93) + ("u'" ?=C3=BA) + ("U'" ?=C3=9A) + ("e/" ?=CA=8C) + ("e/'" ["=CA=8C=CC=81"]) + ("E/" ?=C9=85) + ("E/'" ["=C9=85=CC=81"])) + "Alist of rules for vowel letters in Oneida input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-oneida-consonant-alist + '((";;" ?\N{MODIFIER LETTER GLOTTAL STOP}) + (";'" ?\N{RIGHT SINGLE QUOTATION MARK})) + "Alist of rules for consonant letters in Oneida input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-oneida-devoicing-alist + '(("_" ?\N{COMBINING LOW LINE}) + ("__" ?_)) + "Alist of rules for devoicing characters in Oneida input methods. +Entries are as with rules in `quail-define-rules'.") + +(quail-define-package + "oneida-postfix" "Oneida" "ONE<" nil + "Oneida (On=CA=8Cyota:k=C3=A1:) input method with postfix modifiers + +Modifiers: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| :: | =C2=B7 | Vowel length | +| : | : | Vowel length (alternate) | + +Stress diacritics: + +| Key | Description | Example | +|------+--------------+---------| +| \\=3D' | Acute accent | a' -> a=CC=81| + +Vowels: + +| Key | Translation | Description | +|-----+-------------+-----------------------------------| +| e/ | =CA=8C | Mid central nasal vowel | +| E/ | =C9=85 | Mid central nasal vowel (capital) | + +a, e, i, o, and u are bound to a single key. + +Consonants: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| ;; | =CB=80 | Glottal stop | +| ;\\=3D' | \\=3D=E2=80=99 | Glottal stop (alternate) | + +h, k, l, n, s, t, w, and y are bound to a single key. + +Alternatively, an apostrophe can represent a glottal stop. To enter an +apostrophe directly after a vowel without adding an acute accent to that +vowel, first use \\\\[quail-select-current] to t= erminate the translation and then type the +apostrophe. + +Devoicing: + +| Key | Description | Example | +|-----+--------------------+----------| +| _ | Combining low line | a_ -> a=CC=B2 | + +Note: Not all fonts can properly display a combining low line on all +letters. + +Underlining is commonly used in Oneida to indicate devoiced syllables on +pre-pausal forms (also called utterance-final forms). Alternatively, +markup or other methods can be used to create an underlining effect. + +To enter a plain underscore, type _ twice." + nil t nil nil nil nil nil nil nil nil t) + +(pcase-dolist (`(,key ,trans) + (append iroquoian-oneida-modifier-alist + iroquoian-oneida-consonant-alist + iroquoian-oneida-vowel-alist + iroquoian-oneida-devoicing-alist)) + (quail-defrule key trans)) + + +;;; Onondaga + +;; +;; There are three main orthographies for Onondaga in contemporary use: +;; the community orthography used at Six Nations of the Grand River, the +;; community orthography used at Onondaga Nation in New York, and the +;; orthography used by Hanni Woodbury in her 2003 dictionary (see +;; below). The latter is included because of its adoption in academia +;; and also by some contemporary second-language learners. +;; Additionally, Woodbury's dictionary provides a helpful description of +;; the community orthographies that is still applicable today. +;; +;; The differences between the orthographies are small, involving +;; representation of nasal vowels (e=CC=A8and o=CC=A8at Six Nations of the= Grand +;; River, e=C3=B1 and o=C3=B1 at Onondaga in New York, and e=CC=A8and u=CC= =A8following +;; Woodbury's dictionary), the low front rounded vowel (a=CC=88at Six Nati= ons +;; and Onondaga Nation and =C3=A6 following Woodbury), vowel length (: +;; [colon] after a vowel in community orthographies and =C2=B7 [middle dot] +;; following Woodbury), and glottal stops (=E2=80=99 [right single quotati= on +;; mark] in community orthographies and =CA=94 [latin letter glottal stop] +;; following Woodbury). The input method here aims to accommodate all +;; three of these orthographies. +;; +;; Reference work for Onondaga orthography: +;; +;; Hanni Woodbury. 2003. Onondaga-English/English-Onondaga +;; Dictionary. Toronto: University of Toronto Press. +;; + +(defconst iroquoian-onondaga-modifier-alist + '(("::" ?\N{MIDDLE DOT})) + "Alist of rules for modifier letters in Onondaga input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-onondaga-vowel-alist + '(("a'" ?=C3=A1) + ("A'" ?=C3=81) + ("e'" ?=C3=A9) + ("E'" ?=C3=89) + ("i'" ?=C3=AD) + ("I'" ?=C3=8D) + ("o'" ?=C3=B3) + ("O'" ?=C3=93) + ("e," ?=C4=99) + ("e,'" ["=C4=99=CC=81"]) + ("E," ?=C4=98) + ("E,'" ["=C4=98=CC=81"]) + ("o," ?=C7=AB) + ("o,'" ["=C7=AB=CC=81"]) + ("O," ?=C7=AA) + ("O,'" ["=C7=AA=CC=81"]) + ("a\"" ?=C3=A4) + ("a\"'" ["=C3=A4=CC=81"]) + ("A\"" ?=C3=84) + ("A\"'" ["=C3=84=CC=81"]) + ;; From Woodbury (2003) orthography: + ("a/" ?=C3=A6) + ("a/'" ["=C3=A6=CC=81"]) + ("A/" ?=C3=86) + ("A/'" ["=C3=86=CC=81"]) + ("u," ?=C5=B3) + ("u,'" ["=C5=B3=CC=81"]) + ("U," ?=C5=B2) + ("U,'" ["=C5=B2=CC=81"])) + "Alist of rules for vowel letters in Onondaga input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-onondaga-consonant-alist + '((";;" ?\N{RIGHT SINGLE QUOTATION MARK}) + (";:" ?\N{LATIN LETTER GLOTTAL STOP})) + "Alist of rules for consonant letters in Onondaga input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-onondaga-nasal-alist + '(("n-" ?=C3=B1) + ("N-" ?=C3=91)) + "Alist of rules for nasal modifier letters in Onondaga input methods. +Entries are as with rules in `quail-define-rules'.") + +(quail-define-package + "onondaga-postfix" "Onondaga" "ONO<" nil + "Onondaga (On=C5=B3da=CA=94geg=C3=A1=CA=94) input method with postfix mod= ifiers + +Modifiers: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| : | : | Vowel length | +| :: | =C2=B7 | Vowel length (alternate) | + +Stress diacritics: + +| Key | Description | Example | +|------+--------------+---------| +| \\=3D' | Acute accent | a' -> a=CC=81| + +Vowels: + +| Key | Translation | Description | +|-----+-------------+---------------------------------------| +| Six Nations of the Grand River orthography | +|-----------------------------------------------------------| +| e, | =C4=99 | Mid front nasal vowel | +| E, | =C4=98 | Mid front nasal vowel (capital) | +| o, | =C7=AB | Back high nasal vowel | +| O, | =C7=AA | Back high nasal vowel (capital) | +| a\" | =C3=A4 | Low front rounded vowel | +| A\" | =C3=84 | Low front rounded vowel (capital) | +|-----------------------------------------------------------| +| Onondaga Nation, New York orthography | +|-----------------------------------------------------------| +| en- | e=C3=B1 | Mid front nasal vowel | +| EN- | E=C3=91 | Mid front nasal vowel (capital) | +| on- | o=C3=B1 | Back high nasal vowel | +| ON- | O=C3=91 | Back high nasal vowel (capital) | +| a\" | =C3=A4 | Low front rounded vowel | +| A\" | =C3=84 | Low front rounded vowel (capital) | +|-----------------------------------------------------------| +| Dictionary orthography (Hanni Woodbury, 2003) | +|-----------------------------------------------------------| +| e, | =C4=99 | Mid front nasal vowel | +| E, | =C4=98 | Mid front nasal vowel (capital) | +| u, | =C5=B3 | Back high nasal vowel | +| U, | =C5=B2 | Back high nasal vowel (capital) | +| a/ | =C3=A6 | Low front rounded vowel | +| A/ | =C3=86 | Low front rounded vowel (capital) | + +a, e, i, and o are bound to a single key. + +Consonants: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| ;; | \\=3D=E2=80=99 | Glottal stop | +| ;: | =CA=94 | Glottal stop (alternate) | + +c, d, g, h, j, k, n, s, t, w, and y are bound to a single key. + +Alternatively, an apostrophe can represent a glottal stop. To enter an +apostrophe directly after a vowel without adding an acute accent to that +vowel, first use \\\\[quail-select-current] to t= erminate the translation and then type the +apostrophe." + nil t nil nil nil nil nil nil nil nil t) + +(pcase-dolist (`(,key ,trans) + (append iroquoian-onondaga-modifier-alist + iroquoian-onondaga-consonant-alist + iroquoian-onondaga-nasal-alist + iroquoian-onondaga-vowel-alist)) + (quail-defrule key trans)) + + +;;; Cayuga + +;; +;; The primary community orthography used for the Cayuga language is +;; called the Henry orthography, after important language revitalist +;; Reginald Henry. There are slight variations, particularly in which +;; letter is used to represent the glottal stop. While the most common +;; seems to be <=CB=80> [modifier letter glottal stop], this input method +;; provides mappings for other glottal stop letters in common use. +;; Other common orthographies should be covered by this input method as +;; well. +;; +;; Reference work for Cayuga orthography: +;; +;; Carrie Dyck, Frances Froman, Alfred Keye & Lottie Keye. 2024. A +;; grammar and dictionary of Gayogo=CC=B1h=C3=B3:n=C7=AB=CB=80 (Cayuga) (E= studios de +;; Ling=C3=BC=C3=ADstica Amerindia 1). Berlin: Language Science Press. +;; + +(defconst iroquoian-cayuga-modifier-alist nil + "Alist of rules for modifier letters in Cayuga input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-cayuga-vowel-alist + '(("a'" ?=C3=A1) + ("a-" ["a=CC=B1"]) + ("A'" ?=C3=81) + ("A-" ["A=CC=B1"]) + ("e'" ?=C3=A9) + ("e-" ["e=CC=B1"]) + ("E'" ?=C3=89) + ("E-" ["E=CC=B1"]) + ("i'" ?=C3=AD) + ("i-" ["i=CC=B1"]) + ("I'" ?=C3=8D) + ("I-" ["I=CC=B1"]) + ("o'" ?=C3=B3) + ("o-" ["o=CC=B1"]) + ("O'" ?=C3=93) + ("O-" ["O=CC=B1"]) + ("u'" ?=C3=BA) + ("u-" ["u=CC=B1"]) + ("U'" ?=C3=9A) + ("U-" ["U=CC=B1"]) + ("e," ?=C4=99) + ("e,'" ["=C4=99=CC=81"]) + ("e,-" ["=C4=99=CC=B1"]) + ("E," ?=C4=98) + ("E,'" ["=C4=98=CC=81"]) + ("E,-" ["=C4=98=CC=B1"]) + ("o," ?=C7=AB) + ("o,'" ["=C7=AB=CC=81"]) + ("o,-" ["=C7=AB=CC=B1"]) + ("O," ?=C7=AA) + ("O,'" ["=C7=AA=CC=81"]) + ("O,-" ["=C7=AA=CC=B1"])) + "Alist of rules for vowel letters in Cayuga input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-cayuga-consonant-alist + '((";;" ?\N{MODIFIER LETTER GLOTTAL STOP}) + (";'" ?\N{RIGHT SINGLE QUOTATION MARK})) + "Alist of rules for consonant letters in Cayuga input methods. +Entries are as with rules in `quail-define-rules'.") + +(quail-define-package + "cayuga-postfix" "Cayuga" "CAY<" nil + "Cayuga (Gayogo=CC=B1ho:n=C7=ABhn=C3=A9ha:=CB=80) input method with postf= ix modifiers + +Modifiers: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| : | : | Vowel length | + +Stress diacritics: + +| Key | Description | Example | +|------+--------------+---------| +| \\=3D' | Acute accent | a' -> a=CC=81| + +Vowels: + +| Key | Translation | Description | +|-----+-------------+---------------------------------| +| e, | =C4=99 | Mid front nasal vowel | +| E, | =C4=98 | Mid front nasal vowel (capital) | +| o, | =C7=AB | Mid back nasal vowel | +| O, | =C7=AA | Mid back nasal vowel (capital) | + +a, e, i, o, and u are bound to a single key. + +Consonants: + +| Key | Translation | Description | +|-------+-------------+--------------------------| +| ;; | =CB=80 | Glottal stop | +| ;\\=3D' | \\=3D=E2=80=99 | Glottal stop (alternate) | + +d, g, h, j, k, n, r, s, t, w, y, and f are bound to a single key. + +Alternatively, an apostrophe can represent a glottal stop. To enter an +apostrophe directly after a vowel without adding an acute accent to that +vowel, first use \\\\[quail-select-current] to t= erminate the translation and then type the +apostrophe. + +Devoicing: + +| Key | Description | Example | +|-----+------------------------+----------| +| - | Combining macron below | a- -> a=CC=B1 | + +Note: Not all fonts can properly display a combining macron low on all +vowels. + +To enter a plain hyphen after a vowel, first use \\\\[quail-select-current] to terminate the +translation and then type the hyphen." + nil t nil nil nil nil nil nil nil nil t) + +(pcase-dolist (`(,key ,trans) + (append iroquoian-cayuga-modifier-alist + iroquoian-cayuga-consonant-alist + iroquoian-cayuga-vowel-alist)) + (quail-defrule key trans)) + + +;;; Seneca + +;; +;; The orthography for the Seneca language is fairly stable with only +;; minor variations (for example, <=C5=A1> vs. for the voiceless +;; postalveolar fricative). +;; +;; Reference works for Seneca orthography: +;; +;; Phyllis E. Wms. Bardeau. 2002. Onondowa'ga:' Gawe:no': New Reference +;; Edition. Salamanca, NY: The Seneca Nation of Indians Allegany +;; Education Department. +;; +;; Wallace Chafe. 2015. A Grammar of the Seneca Language. Oakland, CA: +;; University of California Press. +;; + +(defconst iroquoian-seneca-modifier-alist nil + "Alist of rules for modifier letters in Seneca input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-seneca-vowel-alist + '(("a'" ?=C3=A1) + ("a`" ?=C3=A0) + ("A'" ?=C3=81) + ("A`" ?=C3=80) + ("e'" ?=C3=A9) + ("e`" ?=C3=A8) + ("E'" ?=C3=89) + ("E`" ?=C3=88) + ("i'" ?=C3=AD) + ("i`" ?=C3=AC) + ("I'" ?=C3=8D) + ("I`" ?=C3=8C) + ("o'" ?=C3=B3) + ("o`" ?=C3=B2) + ("O'" ?=C3=93) + ("O`" ?=C3=92) + ("a\"" ?=C3=A4) + ("a\"'" ["=C3=A4=CC=81"]) + ("a\"`" ["=C3=A4=CC=80"]) + ("A\"" ?=C3=84) + ("A\"'" ["=C3=84=CC=81"]) + ("A\"`" ["=C3=84=CC=80"]) + ("e\"" ?=C3=AB) + ("e\"'" ["=C3=AB=CC=81"]) + ("e\"`" ["=C3=AB=CC=80"]) + ("E\"" ?=C3=8B) + ("E\"'" ["=C3=8B=CC=81"]) + ("E\"`" ["=C3=8B=CC=80"]) + ("o\"" ?=C3=B6) + ("o\"'" ["=C3=B6=CC=81"]) + ("o\"`" ["=C3=B6=CC=80"]) + ("O\"" ?=C3=96) + ("O\"'" ["=C3=96=CC=81"]) + ("O\"`" ["=C3=96=CC=80"]) + ;; Rare (e.g., niw=C3=BA=E2=80=99u:h 'it is tiny' [Chafe 2015]): + ("u'" ?=C3=BA) + ("u`" ?=C3=B9) + ("U'" ?=C3=9A) + ("U`" ?=C3=99)) + "Alist of rules for vowel letters in Seneca input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-seneca-consonant-alist + '((";;" ?\N{RIGHT SINGLE QUOTATION MARK}) + ("s/" ?=C5=A1) + ("S/" ?=C5=A0)) + "Alist of rules for consonant letters in Seneca input methods. +Entries are as with rules in `quail-define-rules'.") + +(quail-define-package + "seneca-postfix" "Seneca" "SEE<" nil + "Seneca (On=C3=B6dow=C3=A1=E2=80=99ga:=E2=80=99) input method with postfi= x modifiers + +Modifiers: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| : | : | Vowel length | + +Stress diacritics: + +| Key | Description | Example | +|------+--------------+---------| +| \\=3D' | Acute accent | a' -> a=CC=81| +| \\=3D` | Grave accent | a` -> a=CC=80| + +Vowels: + +| Key | Translation | Description | +|-----+-------------+------------------------------------| +| e\" | =C3=AB | Mid front nasal vowel | +| E\" | =C3=8B | Mid front nasal vowel (capital) | +| o\" | =C3=B6 | Low-mid back nasal vowel | +| O\" | =C3=96 | Low-mid back nasal vowel (capital) | +| a\" | =C3=A4 | Low front vowel | +| A\" | =C3=84 | Low front vowel (capital) | + +a, e, i, o, and u are bound to a single key. + +Consonants: + +| Key | Translation | Description | +|-------+-------------+--------------------------------------------| +| ;; | \\=3D=E2=80=99 | Glottal stop = | +| s/ | =C5=A1 | Voiceless postalveolar fricative | +| S/ | =C5=A0 | Voiceless postalveolar fricative (capital) | + +d, g, h, j, k, n, s, t, w, y, and z are bound to a single key. + +b, m, and p are used rarely in ideophones and nicknames. They are also +each bound to a single key. + +Alternatively, an apostrophe can represent a glottal stop. To enter an +apostrophe directly after a vowel without adding an acute accent to that +vowel, first use \\\\[quail-select-current] to t= erminate the translation and then type the +apostrophe." + nil t nil nil nil nil nil nil nil nil t) + +(pcase-dolist (`(,key ,trans) + (append iroquoian-seneca-modifier-alist + iroquoian-seneca-consonant-alist + iroquoian-seneca-vowel-alist)) + (quail-defrule key trans)) + + +;;; Haudenosaunee (composite Northern Iroquoian) + +;; +;; This input method represents a composite input method for all of the +;; Northern Iroquoian languages included above. +;; +;; Although the "Iroquoian languages" is a standard term employed by +;; linguists and scholars, some believe the term "Iroquois" to be of +;; derogatory origin (see Dyck 2024). Hence, some prefer to refer to +;; what are collectively termed by linguists the "Five Nations Iroquois" +;; languages (Mohawk, Oneida, Onondaga, Cayuga, Seneca) by the autonym +;; "Haudenosaunee" (e.g., "Haudenosaunee languages"). +;; +;; However, it should be noted that the term "Haudenosaunee" is itself +;; an Anglicized form, probably from Seneca Hodi=CC=81n=C3=B6hs=C3=B6:ni:h= 'they make +;; houses' or Hodi=CC=81n=C3=B6h=C5=A1o:ni:h 'People of the Long House'. = Speakers of +;; Cayuga may prefer the word Hodin=C7=ABhs=C7=AB:nih, and speakers of Moh= awk may +;; prefer Rotinonhs=C3=B3n:ni or Rotinonhsi=CC=81=C3=B3n:ni. These terms = themselves +;; collectively relate to the confederacy of Indigenous nations that has +;; existed in what is now known as New York State in Northeastern North +;; America for many centuries, the founding of which is retold in oral +;; tradition in the story of The Peacemaker. +;; +;; It should also be noted that while Tuscarora and Wendat languages are +;; both sometimes included under the "Haudenosaunee languages" umbrella +;; (and by implication, those groups as a part of the Haudenosaunee +;; Confederacy), the exact extent of what defines "Haudenosaunee" has +;; occasionally caused controversy. +;; +;; Additionally, some prefer to collectively refer to the "Haudenosaunee +;; languages" using the terms Onkwehonwe=E2=80=99n=C3=A9ha (Mohawk), Ukweh= uwehn=C3=A9ha +;; (Oneida), =C7=AAgweh=C7=ABwekh=C3=A1=E2=80=99 (Onondaga), =C7=AAgweh=C7= =ABwe=CC=81hneha:=CB=80 (Cayuga), and +;; =C3=96gwe=CC=81=E2=80=99=C3=B6we:ka:=E2=80=99 (Seneca), which all mean = 'in the manner of the Original +;; People'. +;; +;; Bearing all of this in mind, I have opted to retain the term +;; "Iroquoian" in the name of this file (`iroquoian.el') (and hence, in +;; the symbol names in its namespace), while using "Haudenosaunee" in +;; the name of the input method that encompasses all of the languages so +;; far implemented: "haudenosaunee-postfix" --- this is the name shown +;; as a completion candidate after users enter M-x set-input-method RET. +;; Note that those searching for input methods for the individual +;; languages should have no problem finding them knowing only their +;; Anglicized names (e.g., Mohawk, Oneida, etc.), as these have been +;; retained in the names of the corresponding input methods. +;; +;; Above all, I hope that these decisions help those who wish to speak, +;; read, and write Onkwehonwe=E2=80=99n=C3=A9ha. +;; +;; Iorihow=C3=A1:nen ne ai=C3=B3nhnheke=E2=80=99 ne raotiw=C3=A9n:na=E2=80= =99! +;; It is important that the language continues to live! +;; + +(defconst iroquoian-haudenosaunee-modifier-alist + (seq-uniq (append iroquoian-mohawk-modifier-alist + iroquoian-oneida-modifier-alist + iroquoian-onondaga-modifier-alist + iroquoian-cayuga-modifier-alist + iroquoian-seneca-modifier-alist))) + +(defconst iroquoian-haudenosaunee-vowel-alist + (seq-uniq (append iroquoian-mohawk-vowel-alist + iroquoian-oneida-vowel-alist + iroquoian-onondaga-vowel-alist + iroquoian-cayuga-vowel-alist + iroquoian-seneca-vowel-alist))) + +(defconst iroquoian-haudenosaunee-consonant-alist + (seq-uniq (append + '((";;" ?\N{RIGHT SINGLE QUOTATION MARK}) + (";'" ?\N{MODIFIER LETTER GLOTTAL STOP}) + (";:" ?\N{LATIN LETTER GLOTTAL STOP})) + iroquoian-mohawk-consonant-alist + iroquoian-oneida-consonant-alist + iroquoian-onondaga-consonant-alist + iroquoian-cayuga-consonant-alist + iroquoian-seneca-consonant-alist) + (lambda (c1 c2) + (equal (car c1) (car c2))))) + +(defconst iroquoian-haudenosaunee-devoicing-alist + '(("_" ?\N{COMBINING LOW LINE}) + ("__" ?_))) + +(defconst iroquoian-haudenosaunee-nasal-alist + ;; Use ~ modifier instead of - (in contrast with `onondaga-postfix'), + ;; because the obtrusiveness of not being able to input literal + ;; hyphens after n outweighs benefits of being able to type a + ;; relatively obscure orthography easily. + '(("n~" ?=C3=B1) + ("N~" ?=C3=91))) + +(quail-define-package + "haudenosaunee-postfix" "Haudenosaunee" "HOD<" nil + "Composite input method for Haudenosaunee (Northern Iroquoian) languages + +This input method can be used to enter the following languages: + +- Mohawk (Kanien=E2=80=99k=C3=A9ha / Onkwehonwe=E2=80=99n=C3=A9ha) +- Oneida (On=CA=8Cyota:k=C3=A1: / Ukwehuwehn=C3=A9ha) +- Cayuga (Gayogo=CC=B1ho:n=C7=ABhn=C3=A9ha:=CB=80) +- Onondaga (On=C5=B3da=CA=94geg=C3=A1=CA=94) +- Seneca (On=C3=B6dow=C3=A1=E2=80=99ga:=E2=80=99) + +Modifiers: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| : | : | Vowel length | +| :: | =C2=B7 | Vowel length (alternate) | + +Stress diacritics: + +| Key | Description | Example | +|------+--------------+---------| +| \\=3D' | Acute accent | a' -> a=CC=81| +| \\=3D` | Grave accent | a` -> a=CC=80| + +Vowels: + +| Key | Translation | Description | +|----------------------------------------------------------------------| +| Mohawk | +| -------------------------------------------------------------------- | +| Single-key vowels: a e i o | +|----------------------------------------------------------------------| +| Oneida | +| -------------------------------------------------------------------- | +| e/ | =CA=8C | Mid central nasal vowel = | +| E/ | =C9=85 | Mid central nasal vowel (capital) = | +| Single-key vowels: a e i o u | +|----------------------------------------------------------------------| +| Onondaga | +| (Six Nations of the Grand River) | +| -------------------------------------------------------------------- | +| e, | =C4=99 | Mid front nasal vowel = | +| E, | =C4=98 | Mid front nasal vowel (capital) = | +| o, | =C7=AB | Back high nasal vowel = | +| O, | =C7=AA | Back high nasal vowel (capital) = | +| a\" | =C3=A4 | Low front rounded vowel = | +| A\" | =C3=84 | Low front rounded vowel (capital) = | +| -------------------------------------------------------------------- | +| (Onondaga Nation, New York) | +| -------------------------------------------------------------------- | +| en~ | e=C3=B1 | Mid front nasal vowel = | +| EN~ | E=C3=91 | Mid front nasal vowel (capital) = | +| on~ | o=C3=B1 | Back high nasal vowel = | +| ON~ | O=C3=91 | Back high nasal vowel (capital) = | +| a\" | =C3=A4 | Low front rounded vowel = | +| A\" | =C3=84 | Low front rounded vowel (capital) = | +| -------------------------------------------------------------------- | +| (Hanni Woodbury, 2003) | +| -------------------------------------------------------------------- | +| e, | =C4=99 | Mid front nasal vowel = | +| E, | =C4=98 | Mid front nasal vowel (capital) = | +| u, | =C5=B3 | Back high nasal vowel = | +| U, | =C5=B2 | Back high nasal vowel (capital) = | +| a/ | =C3=A6 | Low front rounded vowel = | +| A/ | =C3=86 | Low front rounded vowel (capital) = | +| -------------------------------------------------------------------- | +| (all) | +| -------------------------------------------------------------------- | +| Single-key vowels: a e i o | +|----------------------------------------------------------------------| +| Cayuga | +| -------------------------------------------------------------------- | +| e, | =C4=99 | Mid front nasal vowel = | +| E, | =C4=98 | Mid front nasal vowel (capital) = | +| o, | =C7=AB | Mid back nasal vowel = | +| O, | =C7=AA | Mid back nasal vowel (capital) = | +| Single-key vowels: a e i o u | +|----------------------------------------------------------------------| +| Seneca | +| -------------------------------------------------------------------- | +| e\" | =C3=AB | Mid front nasal vowel = | +| E\" | =C3=8B | Mid front nasal vowel (capital) = | +| o\" | =C3=B6 | Low-mid back nasal vowel = | +| O\" | =C3=96 | Low-mid back nasal vowel (capital) = | +| a\" | =C3=A4 | Low front vowel = | +| A\" | =C3=84 | Low front vowel (capital) = | +| Single-key vowels: a e i o u | + +Consonants: + +| Key | Translation | Description | +|----------------------------------------------------------------------| +| Mohawk | +| -------------------------------------------------------------------- | +| ;; | \\=3D=E2=80=99 | Glottal stop = | +| Single-key consonants: h k n r s t w y (b m p) | +|----------------------------------------------------------------------| +| Oneida | +| -------------------------------------------------------------------- | +| ;\\=3D' | =CB=80 | Glottal stop = | +| ;; | \\=3D=E2=80=99 | Glottal stop (alternate) = | +| Single-key consonants: h k l n s t w y | +|----------------------------------------------------------------------| +| Onondaga | +| -------------------------------------------------------------------- | +| ;; | \\=3D=E2=80=99 | Glottal stop = | +| ;: | =CA=94 | Glottal stop (alternate) = | +| Single-key consonants: c d g h j k n s t w y | +|----------------------------------------------------------------------| +| Cayuga | +| -------------------------------------------------------------------- | +| ;\\=3D' | =CB=80 | Glottal stop = | +| ;; | \\=3D=E2=80=99 | Glottal stop (alternate) = | +| Single-key consonants: d g h j k n r s t w y (f) | +|----------------------------------------------------------------------| +| Seneca | +| -------------------------------------------------------------------- | +| ;; | \\=3D=E2=80=99 | Glottal stop = | +| s/ | =C5=A1 | Voiceless postalveolar fricative = | +| S/ | =C5=A0 | Voiceless postalveolar fricative (capital) = | +| Single-key consonants: d g h j k n s t w y z (b m p) | + +Alternatively, an apostrophe can represent a glottal stop. To enter an +apostrophe directly after a vowel without adding an acute accent to that +vowel, first use \\\\[quail-select-current] to t= erminate the translation and then type the +apostrophe. + +Devoicing: + +| Key | Description | Examples | +|-----+------------------------+------------------------------| +| _ | Combining low line | a_ -> a=CC=B2, =C2=B7 -> =C2=B7=CC=B2 = | +| - | Combining macron below | a- -> a=CC=B1(after vowels only) | + +Note: Not all fonts can properly display a combining low line on all +letters and a combining macron below on all vowels. + +Underlining is commonly used in Oneida to indicate devoiced syllables on +pre-pausal forms (also called utterance-final forms). Alternatively, +markup or other methods can be used to create an underlining effect. + +To enter a plain underscore, type _ twice. + +Macron below is commonly used in Cayuga to indicate devoiced vowels. + +To enter a plain hyphen after a vowel, first use \\\\[quail-select-current] to terminate the +translation and then type the hyphen. After any other character, simply +type a hyphen (it will not be translated into a combining macron below)." + nil t nil nil nil nil nil nil nil nil t) + +(pcase-dolist (`(,key ,trans) + (append iroquoian-haudenosaunee-modifier-alist + iroquoian-haudenosaunee-consonant-alist + iroquoian-haudenosaunee-nasal-alist + iroquoian-haudenosaunee-vowel-alist + iroquoian-haudenosaunee-devoicing-alist)) + (quail-defrule key trans)) + +(provide 'iroquoian) +;;; iroquoian.el ends here --=20 2.46.0 --=-=-= Content-Type: text/plain Thanks, Kierin --=-=-=--