temml 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +21 -0
- package/README.md +44 -0
- package/contrib/auto-render/README.md +89 -0
- package/contrib/auto-render/auto-render.js +128 -0
- package/contrib/auto-render/dist/auto-render.js +217 -0
- package/contrib/auto-render/dist/auto-render.min.js +1 -0
- package/contrib/auto-render/splitAtDelimiters.js +84 -0
- package/contrib/auto-render/test/auto-render-spec.js +234 -0
- package/contrib/auto-render/test/auto-render.js +217 -0
- package/contrib/auto-render/test/test_page.html +59 -0
- package/contrib/mhchem/README.md +26 -0
- package/contrib/mhchem/mhchem.js +1705 -0
- package/contrib/mhchem/mhchem.min.js +1 -0
- package/contrib/physics/README.md +20 -0
- package/contrib/physics/physics.js +131 -0
- package/contrib/texvc/README.md +23 -0
- package/contrib/texvc/texvc.js +61 -0
- package/dist/Temml-Asana.css +201 -0
- package/dist/Temml-Latin-Modern.css +216 -0
- package/dist/Temml-Libertinus.css +214 -0
- package/dist/Temml-Local.css +194 -0
- package/dist/Temml-STIX2.css +203 -0
- package/dist/Temml.woff2 +0 -0
- package/dist/temml.cjs +13122 -0
- package/dist/temml.js +11225 -0
- package/dist/temml.min.js +1 -0
- package/dist/temml.mjs +13120 -0
- package/dist/temmlPostProcess.js +70 -0
- package/package.json +34 -0
- package/src/Lexer.js +121 -0
- package/src/MacroExpander.js +437 -0
- package/src/Namespace.js +107 -0
- package/src/ParseError.js +64 -0
- package/src/Parser.js +977 -0
- package/src/Settings.js +49 -0
- package/src/SourceLocation.js +29 -0
- package/src/Style.js +144 -0
- package/src/Token.js +40 -0
- package/src/buildMathML.js +235 -0
- package/src/constants.js +25 -0
- package/src/defineEnvironment.js +25 -0
- package/src/defineFunction.js +69 -0
- package/src/defineMacro.js +11 -0
- package/src/domTree.js +185 -0
- package/src/environments/array.js +791 -0
- package/src/environments/cd.js +252 -0
- package/src/environments.js +8 -0
- package/src/functions/accent.js +127 -0
- package/src/functions/accentunder.js +38 -0
- package/src/functions/arrow.js +204 -0
- package/src/functions/cancelto.js +36 -0
- package/src/functions/char.js +33 -0
- package/src/functions/color.js +253 -0
- package/src/functions/cr.js +46 -0
- package/src/functions/def.js +259 -0
- package/src/functions/delimsizing.js +304 -0
- package/src/functions/enclose.js +193 -0
- package/src/functions/envTag.js +38 -0
- package/src/functions/environment.js +59 -0
- package/src/functions/font.js +123 -0
- package/src/functions/genfrac.js +333 -0
- package/src/functions/hbox.js +29 -0
- package/src/functions/horizBrace.js +32 -0
- package/src/functions/href.js +90 -0
- package/src/functions/html.js +95 -0
- package/src/functions/includegraphics.js +131 -0
- package/src/functions/kern.js +75 -0
- package/src/functions/label.js +29 -0
- package/src/functions/lap.js +75 -0
- package/src/functions/math.js +40 -0
- package/src/functions/mathchoice.js +41 -0
- package/src/functions/mclass.js +201 -0
- package/src/functions/multiscript.js +91 -0
- package/src/functions/not.js +46 -0
- package/src/functions/op.js +338 -0
- package/src/functions/operatorname.js +139 -0
- package/src/functions/ordgroup.js +9 -0
- package/src/functions/phantom.js +73 -0
- package/src/functions/pmb.js +31 -0
- package/src/functions/raise.js +68 -0
- package/src/functions/ref.js +28 -0
- package/src/functions/relax.js +16 -0
- package/src/functions/rule.js +52 -0
- package/src/functions/sizing.js +64 -0
- package/src/functions/smash.js +66 -0
- package/src/functions/sqrt.js +31 -0
- package/src/functions/styling.js +58 -0
- package/src/functions/supsub.js +135 -0
- package/src/functions/symbolsOp.js +53 -0
- package/src/functions/symbolsOrd.js +102 -0
- package/src/functions/symbolsSpacing.js +53 -0
- package/src/functions/tag.js +8 -0
- package/src/functions/text.js +75 -0
- package/src/functions/tip.js +63 -0
- package/src/functions/toggle.js +13 -0
- package/src/functions/verb.js +33 -0
- package/src/functions.js +57 -0
- package/src/linebreaking.js +159 -0
- package/src/macros.js +708 -0
- package/src/mathMLTree.js +175 -0
- package/src/parseNode.js +42 -0
- package/src/parseTree.js +40 -0
- package/src/postProcess.js +57 -0
- package/src/replace.js +225 -0
- package/src/stretchy.js +66 -0
- package/src/svg.js +110 -0
- package/src/symbols.js +972 -0
- package/src/tree.js +50 -0
- package/src/unicodeAccents.js +16 -0
- package/src/unicodeScripts.js +119 -0
- package/src/unicodeSupOrSub.js +108 -0
- package/src/unicodeSymbolBuilder.js +31 -0
- package/src/unicodeSymbols.js +320 -0
- package/src/units.js +109 -0
- package/src/utils.js +109 -0
- package/src/variant.js +103 -0
- package/temml.js +181 -0
package/src/tree.js
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
/**
|
2
|
+
* This node represents a document fragment, which contains elements, but when
|
3
|
+
* placed into the DOM doesn't have any representation itself. It only contains
|
4
|
+
* children and doesn't have any DOM node properties.
|
5
|
+
*/
|
6
|
+
export class DocumentFragment {
|
7
|
+
constructor(children) {
|
8
|
+
this.children = children;
|
9
|
+
this.classes = [];
|
10
|
+
this.style = {};
|
11
|
+
}
|
12
|
+
|
13
|
+
hasClass(className) {
|
14
|
+
return this.classes.includes(className);
|
15
|
+
}
|
16
|
+
|
17
|
+
/** Convert the fragment into a node. */
|
18
|
+
toNode() {
|
19
|
+
const frag = document.createDocumentFragment();
|
20
|
+
|
21
|
+
for (let i = 0; i < this.children.length; i++) {
|
22
|
+
frag.appendChild(this.children[i].toNode());
|
23
|
+
}
|
24
|
+
|
25
|
+
return frag;
|
26
|
+
}
|
27
|
+
|
28
|
+
/** Convert the fragment into HTML markup. */
|
29
|
+
toMarkup() {
|
30
|
+
let markup = "";
|
31
|
+
|
32
|
+
// Simply concatenate the markup for the children together.
|
33
|
+
for (let i = 0; i < this.children.length; i++) {
|
34
|
+
markup += this.children[i].toMarkup();
|
35
|
+
}
|
36
|
+
|
37
|
+
return markup;
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Converts the math node into a string, similar to innerText. Applies to
|
42
|
+
* MathDomNode's only.
|
43
|
+
*/
|
44
|
+
toText() {
|
45
|
+
// To avoid this, we would subclass documentFragment separately for
|
46
|
+
// MathML, but polyfills for subclassing is expensive per PR 1469.
|
47
|
+
const toText = (child) => child.toText();
|
48
|
+
return this.children.map(toText).join("");
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// Mapping of Unicode accent characters to their LaTeX equivalent in text and
|
2
|
+
// math mode (when they exist).
|
3
|
+
export default {
|
4
|
+
"\u0301": { text: "\\'", math: "\\acute" },
|
5
|
+
"\u0300": { text: "\\`", math: "\\grave" },
|
6
|
+
"\u0308": { text: '\\"', math: "\\ddot" },
|
7
|
+
"\u0303": { text: "\\~", math: "\\tilde" },
|
8
|
+
"\u0304": { text: "\\=", math: "\\bar" },
|
9
|
+
"\u0306": { text: "\\u", math: "\\breve" },
|
10
|
+
"\u030c": { text: "\\v", math: "\\check" },
|
11
|
+
"\u0302": { text: "\\^", math: "\\hat" },
|
12
|
+
"\u0307": { text: "\\.", math: "\\dot" },
|
13
|
+
"\u030a": { text: "\\r", math: "\\mathring" },
|
14
|
+
"\u030b": { text: "\\H" },
|
15
|
+
'\u0327': { text: '\\c' }
|
16
|
+
};
|
@@ -0,0 +1,119 @@
|
|
1
|
+
/*
|
2
|
+
* This file defines the Unicode scripts and script families that we
|
3
|
+
* support. To add new scripts or families, just add a new entry to the
|
4
|
+
* scriptData array below. Adding scripts to the scriptData array allows
|
5
|
+
* characters from that script to appear in \text{} environments.
|
6
|
+
*/
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Each script or script family has a name and an array of blocks.
|
10
|
+
* Each block is an array of two numbers which specify the start and
|
11
|
+
* end points (inclusive) of a block of Unicode codepoints.
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Unicode block data for the families of scripts we support in \text{}.
|
15
|
+
* Scripts only need to appear here if they do not have font metrics.
|
16
|
+
*/
|
17
|
+
const scriptData = [
|
18
|
+
{
|
19
|
+
// Latin characters beyond the Latin-1 characters we have metrics for.
|
20
|
+
// Needed for Czech, Hungarian and Turkish text, for example.
|
21
|
+
name: "latin",
|
22
|
+
blocks: [
|
23
|
+
[0x0100, 0x024f], // Latin Extended-A and Latin Extended-B
|
24
|
+
[0x0300, 0x036f] // Combining Diacritical marks
|
25
|
+
]
|
26
|
+
},
|
27
|
+
{
|
28
|
+
// The Cyrillic script used by Russian and related languages.
|
29
|
+
// A Cyrillic subset used to be supported as explicitly defined
|
30
|
+
// symbols in symbols.js
|
31
|
+
name: "cyrillic",
|
32
|
+
blocks: [[0x0400, 0x04ff]]
|
33
|
+
},
|
34
|
+
{
|
35
|
+
// Armenian
|
36
|
+
name: "armenian",
|
37
|
+
blocks: [[0x0530, 0x058f]]
|
38
|
+
},
|
39
|
+
{
|
40
|
+
// The Brahmic scripts of South and Southeast Asia
|
41
|
+
// Devanagari (0900–097F)
|
42
|
+
// Bengali (0980–09FF)
|
43
|
+
// Gurmukhi (0A00–0A7F)
|
44
|
+
// Gujarati (0A80–0AFF)
|
45
|
+
// Oriya (0B00–0B7F)
|
46
|
+
// Tamil (0B80–0BFF)
|
47
|
+
// Telugu (0C00–0C7F)
|
48
|
+
// Kannada (0C80–0CFF)
|
49
|
+
// Malayalam (0D00–0D7F)
|
50
|
+
// Sinhala (0D80–0DFF)
|
51
|
+
// Thai (0E00–0E7F)
|
52
|
+
// Lao (0E80–0EFF)
|
53
|
+
// Tibetan (0F00–0FFF)
|
54
|
+
// Myanmar (1000–109F)
|
55
|
+
name: "brahmic",
|
56
|
+
blocks: [[0x0900, 0x109f]]
|
57
|
+
},
|
58
|
+
{
|
59
|
+
name: "georgian",
|
60
|
+
blocks: [[0x10a0, 0x10ff]]
|
61
|
+
},
|
62
|
+
{
|
63
|
+
// Chinese and Japanese.
|
64
|
+
// The "k" in cjk is for Korean, but we've separated Korean out
|
65
|
+
name: "cjk",
|
66
|
+
blocks: [
|
67
|
+
[0x3000, 0x30ff], // CJK symbols and punctuation, Hiragana, Katakana
|
68
|
+
[0x4e00, 0x9faf], // CJK ideograms
|
69
|
+
[0xff00, 0xff60] // Fullwidth punctuation
|
70
|
+
// TODO: add halfwidth Katakana and Romanji glyphs
|
71
|
+
]
|
72
|
+
},
|
73
|
+
{
|
74
|
+
// Korean
|
75
|
+
name: "hangul",
|
76
|
+
blocks: [[0xac00, 0xd7af]]
|
77
|
+
}
|
78
|
+
];
|
79
|
+
|
80
|
+
/**
|
81
|
+
* Given a codepoint, return the name of the script or script family
|
82
|
+
* it is from, or null if it is not part of a known block
|
83
|
+
*/
|
84
|
+
export function scriptFromCodepoint(codepoint) {
|
85
|
+
for (let i = 0; i < scriptData.length; i++) {
|
86
|
+
const script = scriptData[i];
|
87
|
+
for (let i = 0; i < script.blocks.length; i++) {
|
88
|
+
const block = script.blocks[i];
|
89
|
+
if (codepoint >= block[0] && codepoint <= block[1]) {
|
90
|
+
return script.name;
|
91
|
+
}
|
92
|
+
}
|
93
|
+
}
|
94
|
+
return null;
|
95
|
+
}
|
96
|
+
|
97
|
+
/**
|
98
|
+
* A flattened version of all the supported blocks in a single array.
|
99
|
+
* This is an optimization to make supportedCodepoint() fast.
|
100
|
+
*/
|
101
|
+
const allBlocks = [];
|
102
|
+
scriptData.forEach((s) => s.blocks.forEach((b) => allBlocks.push(...b)));
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Given a codepoint, return true if it falls within one of the
|
106
|
+
* scripts or script families defined above and false otherwise.
|
107
|
+
*
|
108
|
+
* Micro benchmarks shows that this is faster than
|
109
|
+
* /[\u3000-\u30FF\u4E00-\u9FAF\uFF00-\uFF60\uAC00-\uD7AF\u0900-\u109F]/.test()
|
110
|
+
* in Firefox, Chrome and Node.
|
111
|
+
*/
|
112
|
+
export function supportedCodepoint(codepoint) {
|
113
|
+
for (let i = 0; i < allBlocks.length; i += 2) {
|
114
|
+
if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) {
|
115
|
+
return true;
|
116
|
+
}
|
117
|
+
}
|
118
|
+
return false;
|
119
|
+
}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
// Helpers for Parser.js handling of Unicode (sub|super)script characters.
|
2
|
+
|
3
|
+
export const unicodeSubRegEx = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/
|
4
|
+
|
5
|
+
export const uSubsAndSups = Object.freeze({
|
6
|
+
'₊': '+',
|
7
|
+
'₋': '-',
|
8
|
+
'₌': '=',
|
9
|
+
'₍': '(',
|
10
|
+
'₎': ')',
|
11
|
+
'₀': '0',
|
12
|
+
'₁': '1',
|
13
|
+
'₂': '2',
|
14
|
+
'₃': '3',
|
15
|
+
'₄': '4',
|
16
|
+
'₅': '5',
|
17
|
+
'₆': '6',
|
18
|
+
'₇': '7',
|
19
|
+
'₈': '8',
|
20
|
+
'₉': '9',
|
21
|
+
'\u2090': 'a',
|
22
|
+
'\u2091': 'e',
|
23
|
+
'\u2095': 'h',
|
24
|
+
'\u1D62': 'i',
|
25
|
+
'\u2C7C': 'j',
|
26
|
+
'\u2096': 'k',
|
27
|
+
'\u2097': 'l',
|
28
|
+
'\u2098': 'm',
|
29
|
+
'\u2099': 'n',
|
30
|
+
'\u2092': 'o',
|
31
|
+
'\u209A': 'p',
|
32
|
+
'\u1D63': 'r',
|
33
|
+
'\u209B': 's',
|
34
|
+
'\u209C': 't',
|
35
|
+
'\u1D64': 'u',
|
36
|
+
'\u1D65': 'v',
|
37
|
+
'\u2093': 'x',
|
38
|
+
'\u1D66': 'β',
|
39
|
+
'\u1D67': 'γ',
|
40
|
+
'\u1D68': 'ρ',
|
41
|
+
'\u1D69': '\u03d5',
|
42
|
+
'\u1D6A': 'χ',
|
43
|
+
'⁺': '+',
|
44
|
+
'⁻': '-',
|
45
|
+
'⁼': '=',
|
46
|
+
'⁽': '(',
|
47
|
+
'⁾': ')',
|
48
|
+
'⁰': '0',
|
49
|
+
'¹': '1',
|
50
|
+
'²': '2',
|
51
|
+
'³': '3',
|
52
|
+
'⁴': '4',
|
53
|
+
'⁵': '5',
|
54
|
+
'⁶': '6',
|
55
|
+
'⁷': '7',
|
56
|
+
'⁸': '8',
|
57
|
+
'⁹': '9',
|
58
|
+
'\u1D2C': 'A',
|
59
|
+
'\u1D2E': 'B',
|
60
|
+
'\u1D30': 'D',
|
61
|
+
'\u1D31': 'E',
|
62
|
+
'\u1D33': 'G',
|
63
|
+
'\u1D34': 'H',
|
64
|
+
'\u1D35': 'I',
|
65
|
+
'\u1D36': 'J',
|
66
|
+
'\u1D37': 'K',
|
67
|
+
'\u1D38': 'L',
|
68
|
+
'\u1D39': 'M',
|
69
|
+
'\u1D3A': 'N',
|
70
|
+
'\u1D3C': 'O',
|
71
|
+
'\u1D3E': 'P',
|
72
|
+
'\u1D3F': 'R',
|
73
|
+
'\u1D40': 'T',
|
74
|
+
'\u1D41': 'U',
|
75
|
+
'\u2C7D': 'V',
|
76
|
+
'\u1D42': 'W',
|
77
|
+
'\u1D43': 'a',
|
78
|
+
'\u1D47': 'b',
|
79
|
+
'\u1D9C': 'c',
|
80
|
+
'\u1D48': 'd',
|
81
|
+
'\u1D49': 'e',
|
82
|
+
'\u1DA0': 'f',
|
83
|
+
'\u1D4D': 'g',
|
84
|
+
'\u02B0': 'h',
|
85
|
+
'\u2071': 'i',
|
86
|
+
'\u02B2': 'j',
|
87
|
+
'\u1D4F': 'k',
|
88
|
+
'\u02E1': 'l',
|
89
|
+
'\u1D50': 'm',
|
90
|
+
'\u207F': 'n',
|
91
|
+
'\u1D52': 'o',
|
92
|
+
'\u1D56': 'p',
|
93
|
+
'\u02B3': 'r',
|
94
|
+
'\u02E2': 's',
|
95
|
+
'\u1D57': 't',
|
96
|
+
'\u1D58': 'u',
|
97
|
+
'\u1D5B': 'v',
|
98
|
+
'\u02B7': 'w',
|
99
|
+
'\u02E3': 'x',
|
100
|
+
'\u02B8': 'y',
|
101
|
+
'\u1DBB': 'z',
|
102
|
+
'\u1D5D': 'β',
|
103
|
+
'\u1D5E': 'γ',
|
104
|
+
'\u1D5F': 'δ',
|
105
|
+
'\u1D60': '\u03d5',
|
106
|
+
'\u1D61': 'χ',
|
107
|
+
'\u1DBF': 'θ'
|
108
|
+
})
|
@@ -0,0 +1,31 @@
|
|
1
|
+
// This is an internal module, not part of the Temml distribution,
|
2
|
+
// whose purpose is to generate `unicodeSymbols` for Parser.js
|
3
|
+
// In this way, only this module, and not the distribution/browser,
|
4
|
+
// needs String's normalize function.
|
5
|
+
import * as accents from "./unicodeAccents";
|
6
|
+
|
7
|
+
const result = {};
|
8
|
+
const letters =
|
9
|
+
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" +
|
10
|
+
"αβγδεϵζηθϑικλμνξοπϖρϱςστυφϕχψωΓΔΘΛΞΠΣΥΦΨΩ";
|
11
|
+
for (const letter of letters) {
|
12
|
+
for (const accent of Object.getOwnPropertyNames(accents)) {
|
13
|
+
const combined = letter + accent;
|
14
|
+
const normalized = combined.normalize("NFC");
|
15
|
+
if (normalized.length === 1) {
|
16
|
+
result[normalized] = combined;
|
17
|
+
}
|
18
|
+
for (const accent2 of Object.getOwnPropertyNames(accents)) {
|
19
|
+
if (accent === accent2) {
|
20
|
+
continue;
|
21
|
+
}
|
22
|
+
const combined2 = combined + accent2;
|
23
|
+
const normalized2 = combined2.normalize("NFC");
|
24
|
+
if (normalized2.length === 1) {
|
25
|
+
result[normalized2] = combined2;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
export default result;
|
@@ -0,0 +1,320 @@
|
|
1
|
+
export default {
|
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
|
+
"ž": "ž",
|
144
|
+
"ẑ": "ẑ",
|
145
|
+
"ż": "ż",
|
146
|
+
"Á": "Á",
|
147
|
+
"À": "À",
|
148
|
+
"Ä": "Ä",
|
149
|
+
"Ǟ": "Ǟ",
|
150
|
+
"Ã": "Ã",
|
151
|
+
"Ā": "Ā",
|
152
|
+
"Ă": "Ă",
|
153
|
+
"Ắ": "Ắ",
|
154
|
+
"Ằ": "Ằ",
|
155
|
+
"Ẵ": "Ẵ",
|
156
|
+
"Ǎ": "Ǎ",
|
157
|
+
"Â": "Â",
|
158
|
+
"Ấ": "Ấ",
|
159
|
+
"Ầ": "Ầ",
|
160
|
+
"Ẫ": "Ẫ",
|
161
|
+
"Ȧ": "Ȧ",
|
162
|
+
"Ǡ": "Ǡ",
|
163
|
+
"Å": "Å",
|
164
|
+
"Ǻ": "Ǻ",
|
165
|
+
"Ḃ": "Ḃ",
|
166
|
+
"Ć": "Ć",
|
167
|
+
"Č": "Č",
|
168
|
+
"Ĉ": "Ĉ",
|
169
|
+
"Ċ": "Ċ",
|
170
|
+
"Ď": "Ď",
|
171
|
+
"Ḋ": "Ḋ",
|
172
|
+
"É": "É",
|
173
|
+
"È": "È",
|
174
|
+
"Ë": "Ë",
|
175
|
+
"Ẽ": "Ẽ",
|
176
|
+
"Ē": "Ē",
|
177
|
+
"Ḗ": "Ḗ",
|
178
|
+
"Ḕ": "Ḕ",
|
179
|
+
"Ĕ": "Ĕ",
|
180
|
+
"Ě": "Ě",
|
181
|
+
"Ê": "Ê",
|
182
|
+
"Ế": "Ế",
|
183
|
+
"Ề": "Ề",
|
184
|
+
"Ễ": "Ễ",
|
185
|
+
"Ė": "Ė",
|
186
|
+
"Ḟ": "Ḟ",
|
187
|
+
"Ǵ": "Ǵ",
|
188
|
+
"Ḡ": "Ḡ",
|
189
|
+
"Ğ": "Ğ",
|
190
|
+
"Ǧ": "Ǧ",
|
191
|
+
"Ĝ": "Ĝ",
|
192
|
+
"Ġ": "Ġ",
|
193
|
+
"Ḧ": "Ḧ",
|
194
|
+
"Ȟ": "Ȟ",
|
195
|
+
"Ĥ": "Ĥ",
|
196
|
+
"Ḣ": "Ḣ",
|
197
|
+
"Í": "Í",
|
198
|
+
"Ì": "Ì",
|
199
|
+
"Ï": "Ï",
|
200
|
+
"Ḯ": "Ḯ",
|
201
|
+
"Ĩ": "Ĩ",
|
202
|
+
"Ī": "Ī",
|
203
|
+
"Ĭ": "Ĭ",
|
204
|
+
"Ǐ": "Ǐ",
|
205
|
+
"Î": "Î",
|
206
|
+
"İ": "İ",
|
207
|
+
"Ĵ": "Ĵ",
|
208
|
+
"Ḱ": "Ḱ",
|
209
|
+
"Ǩ": "Ǩ",
|
210
|
+
"Ĺ": "Ĺ",
|
211
|
+
"Ľ": "Ľ",
|
212
|
+
"Ḿ": "Ḿ",
|
213
|
+
"Ṁ": "Ṁ",
|
214
|
+
"Ń": "Ń",
|
215
|
+
"Ǹ": "Ǹ",
|
216
|
+
"Ñ": "Ñ",
|
217
|
+
"Ň": "Ň",
|
218
|
+
"Ṅ": "Ṅ",
|
219
|
+
"Ó": "Ó",
|
220
|
+
"Ò": "Ò",
|
221
|
+
"Ö": "Ö",
|
222
|
+
"Ȫ": "Ȫ",
|
223
|
+
"Õ": "Õ",
|
224
|
+
"Ṍ": "Ṍ",
|
225
|
+
"Ṏ": "Ṏ",
|
226
|
+
"Ȭ": "Ȭ",
|
227
|
+
"Ō": "Ō",
|
228
|
+
"Ṓ": "Ṓ",
|
229
|
+
"Ṑ": "Ṑ",
|
230
|
+
"Ŏ": "Ŏ",
|
231
|
+
"Ǒ": "Ǒ",
|
232
|
+
"Ô": "Ô",
|
233
|
+
"Ố": "Ố",
|
234
|
+
"Ồ": "Ồ",
|
235
|
+
"Ỗ": "Ỗ",
|
236
|
+
"Ȯ": "Ȯ",
|
237
|
+
"Ȱ": "Ȱ",
|
238
|
+
"Ő": "Ő",
|
239
|
+
"Ṕ": "Ṕ",
|
240
|
+
"Ṗ": "Ṗ",
|
241
|
+
"Ŕ": "Ŕ",
|
242
|
+
"Ř": "Ř",
|
243
|
+
"Ṙ": "Ṙ",
|
244
|
+
"Ś": "Ś",
|
245
|
+
"Ṥ": "Ṥ",
|
246
|
+
"Š": "Š",
|
247
|
+
"Ṧ": "Ṧ",
|
248
|
+
"Ŝ": "Ŝ",
|
249
|
+
"Ṡ": "Ṡ",
|
250
|
+
"Ť": "Ť",
|
251
|
+
"Ṫ": "Ṫ",
|
252
|
+
"Ú": "Ú",
|
253
|
+
"Ù": "Ù",
|
254
|
+
"Ü": "Ü",
|
255
|
+
"Ǘ": "Ǘ",
|
256
|
+
"Ǜ": "Ǜ",
|
257
|
+
"Ǖ": "Ǖ",
|
258
|
+
"Ǚ": "Ǚ",
|
259
|
+
"Ũ": "Ũ",
|
260
|
+
"Ṹ": "Ṹ",
|
261
|
+
"Ū": "Ū",
|
262
|
+
"Ṻ": "Ṻ",
|
263
|
+
"Ŭ": "Ŭ",
|
264
|
+
"Ǔ": "Ǔ",
|
265
|
+
"Û": "Û",
|
266
|
+
"Ů": "Ů",
|
267
|
+
"Ű": "Ű",
|
268
|
+
"Ṽ": "Ṽ",
|
269
|
+
"Ẃ": "Ẃ",
|
270
|
+
"Ẁ": "Ẁ",
|
271
|
+
"Ẅ": "Ẅ",
|
272
|
+
"Ŵ": "Ŵ",
|
273
|
+
"Ẇ": "Ẇ",
|
274
|
+
"Ẍ": "Ẍ",
|
275
|
+
"Ẋ": "Ẋ",
|
276
|
+
"Ý": "Ý",
|
277
|
+
"Ỳ": "Ỳ",
|
278
|
+
"Ÿ": "Ÿ",
|
279
|
+
"Ỹ": "Ỹ",
|
280
|
+
"Ȳ": "Ȳ",
|
281
|
+
"Ŷ": "Ŷ",
|
282
|
+
"Ẏ": "Ẏ",
|
283
|
+
"Ź": "Ź",
|
284
|
+
"Ž": "Ž",
|
285
|
+
"Ẑ": "Ẑ",
|
286
|
+
"Ż": "Ż",
|
287
|
+
"ά": "ά",
|
288
|
+
"ὰ": "ὰ",
|
289
|
+
"ᾱ": "ᾱ",
|
290
|
+
"ᾰ": "ᾰ",
|
291
|
+
"έ": "έ",
|
292
|
+
"ὲ": "ὲ",
|
293
|
+
"ή": "ή",
|
294
|
+
"ὴ": "ὴ",
|
295
|
+
"ί": "ί",
|
296
|
+
"ὶ": "ὶ",
|
297
|
+
"ϊ": "ϊ",
|
298
|
+
"ΐ": "ΐ",
|
299
|
+
"ῒ": "ῒ",
|
300
|
+
"ῑ": "ῑ",
|
301
|
+
"ῐ": "ῐ",
|
302
|
+
"ό": "ό",
|
303
|
+
"ὸ": "ὸ",
|
304
|
+
"ύ": "ύ",
|
305
|
+
"ὺ": "ὺ",
|
306
|
+
"ϋ": "ϋ",
|
307
|
+
"ΰ": "ΰ",
|
308
|
+
"ῢ": "ῢ",
|
309
|
+
"ῡ": "ῡ",
|
310
|
+
"ῠ": "ῠ",
|
311
|
+
"ώ": "ώ",
|
312
|
+
"ὼ": "ὼ",
|
313
|
+
"Ύ": "Ύ",
|
314
|
+
"Ὺ": "Ὺ",
|
315
|
+
"Ϋ": "Ϋ",
|
316
|
+
"Ῡ": "Ῡ",
|
317
|
+
"Ῠ": "Ῠ",
|
318
|
+
"Ώ": "Ώ",
|
319
|
+
"Ὼ": "Ὼ"
|
320
|
+
};
|