马耳他语字母式中古汉语拼音:修订间差异

来自个人维基
跳转到导航 跳转到搜索
FebSnow2233留言 | 贡献
无编辑摘要
FebSnow2233留言 | 贡献
无编辑摘要
 
(未显示同一用户的15个中间版本)
第1行: 第1行:
<source lang="java">
== 简介 ==
/* 馬爾他語字母式中古漢語拼音
马耳他语字母式中古汉语拼音方案,简称'''马式中古拼音'''(英文:Maltese Alphabetic Medieval Chinese Phonetics,简称'''MAMCP'''),由@万里风霜101于2023年8月制定,目前已更新至2.0.2版本。
 
== 内容 ==
该方案的内容详情可查阅[https://zhuanlan.zhihu.com/p/650421860?utm_id=0 https://zhuanlan.zhihu.com/p/650421860]。
 
== 代码实现 ==
可复制以下代码到切韵音系自动推导器中,即可实现效果。
<source lang="javascript">
 
/* 马耳他语字母式中古汉语拼音v2.0.2
  *
  *
  *基於 https://zh.wikipedia.org/wiki/User:Polyhedron/中古漢語拼音 改編。
  * @author 万里风霜101 改编自 @unt《切韵拼音》(https://zhuanlan.zhihu.com/p/478751152)
*
* @author 万里风霜101
  */
  */


if (!音韻地位) return [ // 模型可選 '早期中古漢語' 或 '晚期中古漢語',預設值為 '早期中古漢語'
if (!音韻地位) return [];
  ['模型', [2, '早期中古漢語', '晚期中古漢語']]];


const is = (...x) => 音韻地位.屬於(...x);
const is = (...x) => 音韻地位.屬於(...x);
const when = (...x) => 音韻地位.判斷(...x);


音韻地位 = Qieyun.適配分析體系('ytenx')(音韻地位);
// 正則化之前需保留該信息
const is脣音咍韻 = is`脣音 咍韻`;


function 聲母規則() {
const 正則化 = {
   switch (音韻地位.母) {
   標準: 'v2',
    case '幫': return 'p';
  寬鬆: 'v2lenient',
    case '滂': return 'ph';
}[選項.模式] || 'v2Strict';
    case '並': return 'b';
音韻地位 = Qieyun.適配分析體系[正則化](音韻地位);
    case '明': return 'm';
    case '端': return 't';
    case '透': return 'th';
    case '定': return 'd';
    case '泥': return 'n';
    case '知': return 'tr';
    case '徹': return 'thr';
    case '澄': return 'dr';
    case '孃': return 'nr';
    case '精': return 'c';
    case '清': return 'ch';
    case '從': return 'z';
    case '心': return 's';
    case '邪': return 'ż';
    case '莊': return 'cr';
    case '初': return 'chr';
    case '崇': return 'zr';
    case '生': return 'sr';
    case '俟': return 'żr';
    case '章': return 'ċ';
    case '昌': return 'ċh';
    case '常': return 'ġ';
    case '書': return 'x';
    case '船': return 'j';
    case '見': return 'k';
    case '溪': return 'kh';
    case '羣': return 'g';
    case '疑': return 'ng';
    case '影': return 'għ';
    case '曉': return 'h';
    case '匣': return 'ħ';
    case '云': return '';
    case '以': return 'y';
    case '來': return 'l';
    case '日': return 'ny';
    default: throw new Error('無聲母規則');
  }
}


function 韻母規則() {
// 恢復脣音咍韻信息
  // 通攝
if (is脣音咍韻 && !選項.脣音咍韻歸灰韻) {
  if (is('東韻 一等')) return 'ung';
   音韻地位 = 音韻地位.調整({ 韻: '' });
   if (is('東韻 三等')) return 'iung';
  if (is('冬韻')) return 'ong';
  if (is('鍾韻')) return 'iong';
  // 江攝
  if (is('江韻')) return 'rung';
  // 止攝
  if (is('支韻 合口')) return is('重紐A類') ? 'yue' : 'üe';
  if (is('支韻')) return is('重紐A類') ? 'yie' : 'ie';
  if (is('脂韻 合口')) return is('重紐A類') ? 'yui' : 'üi';
  if (is('脂韻')) return is('重紐A類') ? 'yi' : 'iy';
  if (is('之韻')) return 'i';
  if (is('微韻 開口')) return 'ioi';
  if (is('微韻')) return 'üoi';
  // 遇攝
  if (is('魚韻')) return 'io';
  if (is('虞韻')) return 'üo';
  if (is('模韻')) return 'o';
  // 蟹攝
  if (is('齊韻 合口')) return 'ue';
  if (is('齊韻')) return 'e';
  if (is('祭韻 合口')) return 'üey';
  if (is('祭韻')) return is('重紐A類') ? 'yey' : 'iey';
  if (is('泰韻 合口')) return 'uay';
  if (is('泰韻')) return 'ay';
  if (is('佳韻 合口')) return 'rue';
  if (is('佳韻')) return 're';
  if (is('皆韻 合口')) return 'ruai';
  if (is('皆韻')) return 'rai';
  if (is('夬韻 合口')) return 'ruay';
  if (is('夬韻')) return 'ray';
  if (is('咍韻')) return 'ai';
  if (is('灰韻')) return 'uai';
  if (is('廢韻 開口')) return 'iay';
  if (is('廢韻')) return 'üay';
  // 臻攝
  if (is('眞韻 合口')) return is('重紐A類') ? 'yun' : 'ün';
  if (is('眞韻')) return is('重紐A類') ? 'yin' : 'in';
  if (is('臻韻')) return 'in';
  if (is('欣韻')) return 'ion';
  if (is('文韻')) return 'üon';
  if (is('元韻 開口')) return 'ian';
  if (is('元韻')) return 'üan';
  if (is('痕韻')) return 'on';
  if (is('魂韻')) return 'uon';
  // 山攝
  if (is('寒韻 開口')) return 'an';
  if (is('寒韻')) return 'uan';
  if (is('刪韻 合口')) return 'ruan';
  if (is('刪韻')) return 'ran';
  if (is('山韻 合口')) return 'ruen';
  if (is('山韻')) return 'ren';
  if (is('仙韻 合口')) return is('重紐A類') ? 'yuen' : 'üen';
  if (is('仙韻')) return is('重紐A類') ? 'yen' : 'ien';
  if (is('先韻 合口')) return 'uen';
  if (is('先韻')) return 'en';
  // 效攝
  if (is('蕭韻')) return 'eu';
  if (is('宵韻')) return is('重紐A類') ? 'yeu' : 'ieu';
  if (is('肴韻')) return 'rau';
  if (is('豪韻')) return 'au';
  // 果攝
  if (is('歌韻 一等 開口')) return 'a';
  if (is('歌韻 一等')) return 'ua';
  if (is('歌韻 三等 開口')) return 'ia';
  if (is('歌韻 三等')) return 'üa';
  // 假攝
  if (is('麻韻 二等 合口')) return 'rua';
  if (is('麻韻 二等')) return 'ra';
  if (is('麻韻 三等')) return 'ia';
  // 宕攝
  if (is('陽韻 開口')) return 'iang';
  if (is('陽韻')) return 'üang';
  if (is('唐韻 合口')) return 'uang';
  if (is('唐韻')) return 'ang';
  // 梗攝
  if (is('庚韻 二等 合口')) return 'ruang';
  if (is('庚韻 二等')) return 'rang';
  if (is('庚韻 三等 合口')) return 'üeng';
  if (is('庚韻 三等')) return 'ieng';
  if (is('耕韻 合口')) return 'rueng';
  if (is('耕韻')) return 'reng';
  if (is('清韻 合口')) return is('重紐A類') ? 'yueng' : 'üeng';
  if (is('清韻')) return is('重紐A類') ? 'yeng' : 'ieng';
  if (is('青韻 合口')) return 'ueng';
  if (is('青韻')) return 'eng';
  // 曾攝
  if (is('蒸韻 合口')) return 'üng';
  if (is('蒸韻')) return 'ing';
  if (is('登韻 合口')) return 'uöng';
  if (is('登韻')) return 'öng';
  // 流攝
  if (is('尤韻')) return 'iu';
  if (is('侯韻')) return 'u';
  if (is('幽韻')) return 'ü';
  // 深攝
  if (is('侵韻')) return is('重紐A類') ? 'yim' : 'im';
  // 咸攝
  if (is('覃韻')) return 'om';
  if (is('談韻')) return 'am';
  if (is('鹽韻')) return is('重紐A類') ? 'yem' : 'iem';
  if (is('添韻')) return 'em';
  if (is('咸韻')) return 'rem';
  if (is('銜韻')) return 'ram';
  if (is('嚴韻')) return 'iam';
  if (is('凡韻')) return 'üam';
  throw new Error('無韻母規則');
}
}


function 聲調規則() {
function get聲母() {
   if (is('平入聲')) return '';
   return {
   if (is('上聲')) return 's';
    幫: 'p',  滂: 'ph',  並: 'b',  明: 'm',
  if (is('去聲')) return 'q';
    端: 't',  透: 'th',  定: 'd',  泥: 'n',  來: 'l',
  throw new Error('無聲調規則');
    知: 'tr', 徹: 'thr', 澄: 'dr', 孃: 'nr',
    見: 'k',  溪: 'kh',  羣: 'g',  疑: 'ng', 云: '',
    影: 'għ',  曉: 'h',   匣: 'ħ',
    精: 'c',  清: 'ch',  從: 'z',  心: 's',  邪: 'ż',
    莊: 'cr', 初: 'chr', 崇: 'zr', 生: 'sr', 俟: 'żr',
    章: 'ċ',  昌: 'ċh',  常: 'ġ',  書: 'x', 船: 'j', 日: 'ny', 以: 'y',
  }[音韻地位.母];
}
}


let 聲母 = 聲母規則();
function get韻母() {
let 隔音符號 = "'";
  // 爲了方便推導,對韻類稍作調整
let 韻母 = 韻母規則();
  const 韻 = when([
let 聲調 = 聲調規則();
    ['蒸韻 (重紐B類 或 幫組 或 合口)', '冰'],
    ['東韻 三等', '終'],
    ['清韻', '庚'],
    ['陽韻', '唐'],
    ['臻韻 或 莊組 欣韻 上聲', '眞'],
    ['凡韻', '嚴'],
    ['', 音韻地位.韻],
  ]);
  const 韻到韻尾 = [
    ['脂之尤侯  佳 模  支魚虞 麻歌', ''],
    ['冰蒸終東 青耕登冬江   鍾 庚唐', 'ng', 'k'],
    [' 微微  齊皆咍灰  祭廢廢 夬泰', 'y'],
    ['眞欣文  先山痕魂  仙元元 刪寒', 'n', 't'],
    ['幽    蕭     宵   肴豪', 'w'],
    ['侵    添咸 覃  鹽嚴嚴 銜談', 'm', 'p'],
  ];
  const 元音列表 = [
    'i',      'ï',  'ů', 'u',
    'e', 'ë', 'ø', 'o', 'ö',
    'e',      'ïo', 'uo',
        'ä', 'a',
  ];


if (is('入聲')) {
   let 匹配行 = 韻到韻尾.find(=> 行[0].includes(韻));
   if (韻母.endsWith('m')) 韻母 = `${韻母.slice(0, -1)}p`;
   let 元音 = 元音列表[匹配行[0].replace(/ /g, '')[is`開口` ? 'indexOf' : 'lastIndexOf']()];
   else if (韻母.endsWith('n')) 韻母 = `${韻母.slice(0, -1)}t`;
   let 韻尾 = 匹配行[1 + is`入聲`];
   else if (韻母.endsWith('ng')) 韻母 = `${韻母.slice(0, -2)}k`;
}


if (韻母.endsWith('y')) {
  // 添加三等 C 介音(僅歌陽韻需要處理)
   聲調 = '';
  if (is`三等` && 元音 === 'a') {
    // 重紐A類用於𩦠小韻
    元音 = (is`脣音 重紐A類` ? 'i' : is`開口` ? 'ï' : 'u') + 元音;
  }
  // 添加三等 A、B 介音
  if (is`三等` && ['i', 'e', 'ä'].includes(元音)) {
    if (is`重紐B類 或 云母 或 莊組 或 庚蒸韻 或 幽韻 幫組`) {
      元音 = (is`合口` ? 'u' : 'ï') + 元音;
    } else if (is `日以母` && 元音 !== 'i') {
      // 日以母拼三等 A 类韵省去 i
      元音 = '' + 元音;
    } else if (元音 !== 'i') {
      // 拼莊組以外的銳音一律視爲 A 類(同《切韻》清韻、《廣韻》諄韻的獨立條件)
      元音 = 'i' + 元音;
    }
  }
  // 添加合口介音
   if (is`合口` && !['u', 'o'].includes(元音[0])) {
    元音 = 'w' + 元音;
  }
  return 元音 + 韻尾;
}
}


if (聲母.endsWith('r') && 韻母.startsWith('r')) {
function get聲調() {
  韻母 = 韻母.slice(1);
  return { 上: 'q', 去: 's' }[音韻地位.聲] || '';
}
}


if (is`章組 或 日以母` && 韻母.startsWith('i') && [...'aeou'].some((x) => 韻母.includes(x))) {
return get聲母() + get韻母() + get聲調();
  韻母 = 韻母.slice(1);
}


if (is(`幫組 一二三四等 \
</source>
或 端組 一四等 \
或 知組 二三等 \
或 精組 一三四等 \
或 莊組 二三等 \
或 章組 三等 \
或 見溪疑母 一二三四等 \
或 羣母 二三等 \
或 影曉母 一二三四等 \
或 匣母 一二四等 \
或 云以母 三等 \
或 來母 一二三四等 \
或 日母 三等`)) {
  隔音符號 = '';
}


if (is('云母 一二四等')) 聲母 = 'i'; // 如 1444 倄小韻 i'uaix


if (is('端組 三等') && !韻母.startsWith('r')) {
== 文件资料 ==
  隔音符號 = ''; // 如 2237 地小韻 diih
[[文件:马耳他语字母式中古汉语拼音音节一览表.txt]]
}
[[文件:马式中古拼音、切韵拼音和unt拟音对照.txt]]


if (選項.模型 === '晚期中古漢語') {
[[category:语言]][[category:汉语]]
  if (is('幫母 東鍾微虞廢文元陽尤凡韻 三等') && `三等`) return 'f' + 韻母.slice(1) + 聲調;
  if (is('滂母 東鍾微虞廢文元陽尤凡韻 三等') && `三等`) return 'fh' + 韻母.slice(1) + 聲調;
  if (is('並母 東鍾微虞廢文元陽尤凡韻 三等') && `三等`) return 'v' + 韻母.slice(1) + 聲調;
  if (is('明母 微虞文元陽凡韻 三等') && `三等`) return 'w' + 韻母.slice(1) + 聲調;
}
 
return 聲母 + 隔音符號 + 韻母 + 聲調;
 
</source>

2023年8月23日 (三) 07:41的最新版本

简介

马耳他语字母式中古汉语拼音方案,简称马式中古拼音(英文:Maltese Alphabetic Medieval Chinese Phonetics,简称MAMCP),由@万里风霜101于2023年8月制定,目前已更新至2.0.2版本。

内容

该方案的内容详情可查阅https://zhuanlan.zhihu.com/p/650421860

代码实现

可复制以下代码到切韵音系自动推导器中,即可实现效果。

/* 马耳他语字母式中古汉语拼音v2.0.2
 *
 * @author 万里风霜101 改编自 @unt《切韵拼音》(https://zhuanlan.zhihu.com/p/478751152)
 */

if (!音韻地位) return [];

const is = (...x) => 音韻地位.屬於(...x);
const when = (...x) => 音韻地位.判斷(...x);

// 正則化之前需保留該信息
const is脣音咍韻 = is`脣音 咍韻`;

const 正則化 = {
  標準: 'v2',
  寬鬆: 'v2lenient',
}[選項.模式] || 'v2Strict';
音韻地位 = Qieyun.適配分析體系[正則化](音韻地位);

// 恢復脣音咍韻信息
if (is脣音咍韻 && !選項.脣音咍韻歸灰韻) {
  音韻地位 = 音韻地位.調整({ 韻: '咍' });
}

function get聲母() {
  return {
    幫: 'p',  滂: 'ph',  並: 'b',  明: 'm',
    端: 't',  透: 'th',  定: 'd',  泥: 'n',  來: 'l',
    知: 'tr', 徹: 'thr', 澄: 'dr', 孃: 'nr',
    見: 'k',  溪: 'kh',  羣: 'g',  疑: 'ng', 云: '',
    影: 'għ',  曉: 'h',   匣: 'ħ',
    精: 'c',  清: 'ch',  從: 'z',  心: 's',  邪: 'ż',
    莊: 'cr', 初: 'chr', 崇: 'zr', 生: 'sr', 俟: 'żr',
    章: 'ċ',  昌: 'ċh',  常: 'ġ',  書: 'x', 船: 'j', 日: 'ny', 以: 'y',
  }[音韻地位.母];
}

function get韻母() {
  // 爲了方便推導,對韻類稍作調整
  const 韻 = when([
    ['蒸韻 (重紐B類 或 幫組 或 合口)', '冰'],
    ['東韻 三等', '終'],
    ['清韻', '庚'],
    ['陽韻', '唐'],
    ['臻韻 或 莊組 欣韻 上聲', '眞'],
    ['凡韻', '嚴'],
    ['', 音韻地位.韻],
  ]);
  const 韻到韻尾 = [
    ['脂之尤侯  佳 模  支魚虞 麻歌', ''],
    ['冰蒸終東 青耕登冬江   鍾 庚唐', 'ng', 'k'],
    [' 微微  齊皆咍灰  祭廢廢 夬泰', 'y'],
    ['眞欣文  先山痕魂  仙元元 刪寒', 'n', 't'],
    ['幽    蕭     宵   肴豪', 'w'],
    ['侵    添咸 覃  鹽嚴嚴 銜談', 'm', 'p'],
  ];
  const 元音列表 = [
    'i',       'ï',  'ů', 'u',
    'e', 'ë', 'ø', 'o', 'ö',
    'e',       'ïo', 'uo',
         'ä', 'a',
  ];

  let 匹配行 = 韻到韻尾.find(行 => 行[0].includes(韻));
  let 元音 = 元音列表[匹配行[0].replace(/ /g, '')[is`開口` ? 'indexOf' : 'lastIndexOf'](韻)];
  let 韻尾 = 匹配行[1 + is`入聲`];

  // 添加三等 C 介音(僅歌陽韻需要處理)
  if (is`三等` && 元音 === 'a') {
    // 重紐A類用於𩦠小韻
    元音 = (is`脣音 重紐A類` ? 'i' : is`開口` ? 'ï' : 'u') + 元音;
  }
  // 添加三等 A、B 介音
  if (is`三等` && ['i', 'e', 'ä'].includes(元音)) {
    if (is`重紐B類 或 云母 或 莊組 或 庚蒸韻 或 幽韻 幫組`) {
      元音 = (is`合口` ? 'u' : 'ï') + 元音;
    } else if (is `日以母` && 元音 !== 'i') {
      // 日以母拼三等 A 类韵省去 i
      元音 = '' + 元音;
    } else if (元音 !== 'i') {
      // 拼莊組以外的銳音一律視爲 A 類(同《切韻》清韻、《廣韻》諄韻的獨立條件)
      元音 = 'i' + 元音;
    }
  }
  // 添加合口介音
  if (is`合口` && !['u', 'o'].includes(元音[0])) {
    元音 = 'w' + 元音;
  }
  return 元音 + 韻尾;
}

function get聲調() {
  return { 上: 'q', 去: 's' }[音韻地位.聲] || '';
}

return get聲母() + get韻母() + get聲調();


文件资料

文件:马耳他语字母式中古汉语拼音音节一览表.txt
文件:马式中古拼音、切韵拼音和unt拟音对照.txt