forked from nk2028/tshet-uinh-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbaxter.js
143 lines (126 loc) · 3.1 KB
/
baxter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/* 白一平轉寫
*
* - Baxter, W. H. (1992). A Handbook of Old Chinese Phonology. De Gruyter Mouton.
* - Baxter, W. H., & Sagart, L. (2014). Old Chinese: A New Reconstruction. Oxford University Press.
*
* @author Ayaka
*/
if (!音韻地位) return [
// 版本可選 '1992' 或 '2014',預設值為 '2014'
['版本', [2, '1992', '2014']],
];
const is = (x) => 音韻地位.屬於(x);
let 聲母 = {
幫: 'p', 滂: 'ph', 並: 'b', 明: 'm',
端: 't', 透: 'th', 定: 'd', 泥: 'n', 來: 'l',
知: 'tr', 徹: 'trh', 澄: 'dr', 孃: 'nr',
精: 'ts', 清: 'tsh', 從: 'dz', 心: 's', 邪: 'z',
莊: 'tsr', 初: 'tsrh', 崇: 'dzr', 生: 'sr', 俟: 'zr',
章: 'tsy', 昌: 'tsyh', 常: 'dzy', 日: 'ny', 書: 'sy', 船: 'zy', 以: 'y',
見: 'k', 溪: 'kh', 羣: 'g', 疑: 'ng',
影: "'", 曉: 'x', 匣: 'h', 云: 'h',
}[音韻地位.母];
if (選項.版本 === '1992' && 聲母 === "'") {
聲母 = 'ʔ';
}
let 韻母 = {
// 一等韻
東: 'uwng',
冬: 'owng',
模: 'u',
泰: 'aj',
灰: 'oj',
咍: 'oj',
魂: 'on',
痕: 'on',
寒: 'an',
豪: 'aw',
歌: 'a',
唐: 'ang',
登: 'ong',
侯: 'uw',
覃: 'om',
談: 'am',
// 二等韻
江: 'aewng',
佳: 'ea',
皆: 'eaj',
夬: 'aej',
刪: 'aen',
山: 'ean',
肴: 'aew',
麻: 'ae',
庚: 'aeng',
耕: 'eang',
咸: 'eam',
銜: 'aem',
// 四等韻
齊: 'ej',
先: 'en',
蕭: 'ew',
青: 'eng',
添: 'em',
// 三等陰聲韻
支: 'je',
脂: 'ij',
之: 'i',
微: 'j+j',
魚: 'jo',
虞: 'ju',
祭: 'jej',
廢: 'joj',
宵: 'jew',
// 歌: 'ja',
// 麻: 'jae',
尤: 'juw',
幽: 'jiw',
// 三等陽聲韻
// 東: 'juwng',
鍾: 'jowng',
眞: 'in',
臻: 'in',
文: 'jun',
欣: 'j+n',
元: 'jon',
仙: 'jen',
陽: 'jang',
// 庚: 'jaeng',
清: 'jeng',
蒸: 'ing',
侵: 'im',
鹽: 'jem',
嚴: 'jaem',
凡: 'jom',
}[音韻地位.韻];
// 東歌麻庚韻同時含三等與非三等,上文僅處理非三等,此處處理三等
if (is('東歌麻庚韻 三等')) {
韻母 = 'j' + 韻母;
}
if (選項.版本 === '1992') {
if (韻母 === 'ea') 韻母 = 'ɛɨ';
韻母 = 韻母.replace('+', 'ɨ').replace('ae', 'æ').replace('ea', 'ɛ');
}
// 章組或日以母只與三等韻相拼,省去韻母起始的 j
if (is('章組 或 日以母') && 韻母.startsWith('j')) {
韻母 = 韻母.slice(1);
}
// 重紐 A 類添加 j 或 i
if (is('重紐A類')) {
if (韻母.startsWith('j')) 韻母 = 'ji' + 韻母.slice(1);
else 韻母 = 'j' + 韻母;
}
// 合口字添加 w
if (is('合口 或 灰魂韻') && !is('文凡韻')) {
if (韻母.startsWith('j')) 韻母 = 'jw' + 韻母.slice(1);
else 韻母 = 'w' + 韻母;
}
if (is('入聲')) {
if (韻母.endsWith('m')) 韻母 = 韻母.slice(0, -1) + 'p';
else if (韻母.endsWith('n')) 韻母 = 韻母.slice(0, -1) + 't';
else if (韻母.endsWith('ng')) 韻母 = 韻母.slice(0, -2) + 'k';
}
const 聲調 = {
上: 'X',
去: 'H',
}[音韻地位.聲] || '';
return 聲母 + 韻母 + 聲調;