Last active
December 31, 2019 21:44
-
-
Save marcmartino/608961ff5cf0d3d635c75a8c961ef1bf to your computer and use it in GitHub Desktop.
hangul jamo info
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export enum jamoAttr { | |
| consonant, | |
| vowel, | |
| singleJamo, | |
| doubleJamo, | |
| composedJamo, | |
| validInitialPosition, | |
| validFinalPosition, | |
| verticalVowel, | |
| horizontalVowel, | |
| dipthong | |
| } | |
| type LeadingOrTrailingConsonants = | |
| | "ㄱ" | |
| | "ㄲ" | |
| | "ㄴ" | |
| | "ㄷ" | |
| | "ㄹ" | |
| | "ㅁ" | |
| | "ㅂ" | |
| | "ㅅ" | |
| | "ㅆ" | |
| | "ㅇ" | |
| | "ㅈ" | |
| | "ㅊ" | |
| | "ㅋ" | |
| | "ㅌ" | |
| | "ㅍ" | |
| | "ㅎ"; | |
| type LeadingOnlyConsonants = "ㄸ" | "ㅃ" | "ㅉ"; | |
| type TrailingOnlyConsonants = | |
| | "ㄳ" | |
| | "ㄵ" | |
| | "ㄶ" | |
| | "ㄺ" | |
| | "ㄻ" | |
| | "ㄼ" | |
| | "ㄽ" | |
| | "ㄾ" | |
| | "ㄿ" | |
| | "ㅀ" | |
| | "ㅄ"; | |
| export interface jamoObject { | |
| attributes: jamoAttr[]; | |
| name: { hangul: string; romanized: string }; | |
| } | |
| export interface jamoPositionDescription { | |
| romanization: string; | |
| ipa: string; | |
| } | |
| interface LeadingOnlyConsonant extends jamoObject { | |
| initial: jamoPositionDescription; | |
| } | |
| interface LeadingOrTrailingConsonant extends jamoObject { | |
| initial: jamoPositionDescription; | |
| final: jamoPositionDescription; | |
| } | |
| interface TrailingOnlyConsonant extends jamoObject { | |
| final: jamoPositionDescription; | |
| } | |
| export const consonants: { | |
| [jamo in LeadingOrTrailingConsonants]: LeadingOrTrailingConsonant; | |
| } & | |
| { [jamo in LeadingOnlyConsonants]: LeadingOnlyConsonant } & | |
| { [jamo in TrailingOnlyConsonants]: TrailingOnlyConsonant } = { | |
| ㄱ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "기역", romanized: "giyeok" }, | |
| initial: { | |
| romanization: "g", | |
| ipa: "/k/" | |
| }, | |
| final: { | |
| romanization: "k", | |
| ipa: "[k̚]" | |
| } | |
| }, | |
| ㄲ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.doubleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "쌍기역", romanized: "ssanggieok" }, | |
| initial: { | |
| romanization: "kk", | |
| ipa: "/k͈/" | |
| }, | |
| final: { romanization: "k", ipa: "[k̚]" } | |
| }, | |
| ㄴ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "니은", romanized: "nieun" }, | |
| initial: { | |
| romanization: "n", | |
| ipa: "/n/" | |
| }, | |
| final: { romanization: "n", ipa: "/n/" } | |
| }, | |
| ㄷ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "디귿", romanized: "dikeut" }, | |
| initial: { | |
| romanization: "d", | |
| ipa: "/t/" | |
| }, | |
| final: { romanization: "t", ipa: "[t̚]" } | |
| }, | |
| ㄸ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.doubleJamo, | |
| jamoAttr.validInitialPosition | |
| ], | |
| name: { hangul: "쌍디귿", romanized: "ssangdikeut" }, | |
| initial: { | |
| romanization: "tt", | |
| ipa: "/t͈/" | |
| } | |
| }, | |
| ㄹ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을", romanized: "rieul" }, | |
| initial: { | |
| romanization: "r", | |
| ipa: "/ɾ/" | |
| }, | |
| final: { romanization: "l", ipa: "[l]" } | |
| }, | |
| ㅁ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "미음", romanized: "mieum" }, | |
| initial: { | |
| romanization: "m", | |
| ipa: "/m/" | |
| }, | |
| final: { romanization: "m", ipa: "/m/" } | |
| }, | |
| ㅂ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "비읍", romanized: "bieup" }, | |
| initial: { | |
| romanization: "b", | |
| ipa: "/p/" | |
| }, | |
| final: { romanization: "p", ipa: "[p̚]" } | |
| }, | |
| ㅃ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.doubleJamo, | |
| jamoAttr.validInitialPosition | |
| ], | |
| name: { hangul: "쌍비읍", romanized: "ssangbieup" }, | |
| initial: { | |
| romanization: "pp", | |
| ipa: "/p͈/" | |
| } | |
| }, | |
| ㅅ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "시옷", romanized: "siot" }, | |
| initial: { | |
| romanization: "s", | |
| ipa: "/s/" | |
| }, | |
| final: { romanization: "t", ipa: "[t̚]" } | |
| }, | |
| ㅆ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.doubleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "쌍시옷", romanized: "ssangsiot" }, | |
| initial: { | |
| romanization: "ss", | |
| ipa: "/s͈/" | |
| }, | |
| final: { romanization: "t", ipa: "[t̚]" } | |
| }, | |
| ㅇ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "이응", romanized: "ieung" }, | |
| initial: { | |
| romanization: "", | |
| ipa: "" | |
| }, | |
| final: { romanization: "ng", ipa: "/ŋ/" } | |
| }, | |
| ㅈ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "지읒", romanized: "jieut" }, | |
| initial: { | |
| romanization: "j", | |
| ipa: "/tɕ/" | |
| }, | |
| final: { romanization: "t", ipa: "[t̚]" } | |
| }, | |
| ㅉ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.doubleJamo, | |
| jamoAttr.validInitialPosition | |
| ], | |
| name: { hangul: "쌍지읒", romanized: "ssangjieut" }, | |
| initial: { | |
| romanization: "jj", | |
| ipa: "/t͈ɕ/" | |
| } | |
| }, | |
| ㅊ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "치읓", romanized: "chieut" }, | |
| initial: { | |
| romanization: "ch", | |
| ipa: "/tɕʰ/" | |
| }, | |
| final: { romanization: "t", ipa: "[t̚]" } | |
| }, | |
| ㅋ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "키읔", romanized: "kieuk" }, | |
| initial: { | |
| romanization: "ḳ", | |
| ipa: "/kʰ/" | |
| }, | |
| final: { romanization: "k", ipa: "[k̚]" } | |
| }, | |
| ㅌ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "티읕", romanized: "tieut" }, | |
| initial: { | |
| romanization: "t", | |
| ipa: "/tʰ/" | |
| }, | |
| final: { romanization: "t", ipa: "[t̚]" } | |
| }, | |
| ㅍ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "피읖", romanized: "pieup" }, | |
| initial: { | |
| romanization: "p̣", | |
| ipa: "/pʰ/" | |
| }, | |
| final: { romanization: "p", ipa: "[p̚] " } | |
| }, | |
| ㅎ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.singleJamo, | |
| jamoAttr.validInitialPosition, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "히읗", romanized: "hieuh" }, | |
| initial: { | |
| romanization: "h", | |
| ipa: "/h/" | |
| }, | |
| final: { romanization: "t", ipa: "[t̚]" } | |
| }, | |
| ㄳ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "기역-시옷", romanized: "giyeok-siot" }, | |
| final: { romanization: "gs", ipa: "" } | |
| }, | |
| ㄵ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "니은-", romanized: "nieun" }, | |
| final: { romanization: "nj", ipa: "" } | |
| }, | |
| ㄶ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "니은-", romanized: "nieun" }, | |
| final: { romanization: "nh", ipa: "" } | |
| }, | |
| ㄺ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을-기역", romanized: "rieul-giyeok" }, | |
| final: { romanization: "lg", ipa: "[k̚]" } | |
| }, | |
| ㄻ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을-미음", romanized: "rieul-mieum" }, | |
| final: { romanization: "lm", ipa: "" } | |
| }, | |
| ㄼ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을-비읍", romanized: "rieul-bieup" }, | |
| final: { romanization: "lb", ipa: "" } | |
| }, | |
| ㄽ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을-티읕", romanized: "rieul-tieut" }, | |
| final: { romanization: "ls", ipa: "" } | |
| }, | |
| ㄾ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을-", romanized: "rieul-" }, | |
| final: { romanization: "lt", ipa: "" } | |
| }, | |
| ㄿ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을-피읖", romanized: "rieul-pieup" }, | |
| final: { romanization: "lp", ipa: "" } | |
| }, | |
| ㅀ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "리을-히읗", romanized: "rieul-hieuh" }, | |
| final: { romanization: "lh", ipa: "" } | |
| }, | |
| ㅄ: { | |
| attributes: [ | |
| jamoAttr.consonant, | |
| jamoAttr.composedJamo, | |
| jamoAttr.validFinalPosition | |
| ], | |
| name: { hangul: "비읍-시옷", romanized: "bieup-siot" }, | |
| final: { romanization: "bs", ipa: "" } | |
| } | |
| }; | |
| export const vowels = {}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { jamoObject, jamoAttr, jamoPositionDescription } from "./consonantJamo"; | |
| type SingleVowels = | |
| | "ㅏ" | |
| | "ㅑ" | |
| | "ㅓ" | |
| | "ㅕ" | |
| | "ㅗ" | |
| | "ㅛ" | |
| | "ㅜ" | |
| | "ㅠ" | |
| | "ㅡ" | |
| | "ㅣ"; | |
| type CompositeVowels = | |
| | "ㅐ" | |
| | "ㅒ" | |
| | "ㅔ" | |
| | "ㅖ" | |
| | "ㅘ" | |
| | "ㅙ" | |
| | "ㅚ" | |
| | "ㅝ" | |
| | "ㅞ" | |
| | "ㅟ" | |
| | "ㅢ"; | |
| interface vowel extends jamoObject { | |
| medial: jamoPositionDescription; | |
| } | |
| export const vowels: { | |
| [jamo in SingleVowels]: vowel; | |
| } & | |
| { [jamo in CompositeVowels]: vowel } = { | |
| ㅏ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.verticalVowel, jamoAttr.singleJamo], | |
| name: { hangul: "아", romanized: "ah" }, | |
| medial: { romanization: "a", ipa: "/a/" } | |
| }, | |
| ㅑ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.verticalVowel, | |
| jamoAttr.singleJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "야", romanized: "yah" }, | |
| medial: { romanization: "ya", ipa: "/ja/" } | |
| }, | |
| ㅓ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.verticalVowel, jamoAttr.singleJamo], | |
| name: { hangul: "어", romanized: "eoh" }, | |
| medial: { romanization: "eo", ipa: "/ʌ/" } | |
| }, | |
| ㅕ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.verticalVowel, | |
| jamoAttr.singleJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "여", romanized: "" }, | |
| medial: { romanization: "yeo", ipa: "/jʌ/" } | |
| }, | |
| ㅗ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.horizontalVowel, jamoAttr.singleJamo], | |
| name: { hangul: "오", romanized: "oh" }, | |
| medial: { romanization: "o", ipa: "/o/" } | |
| }, | |
| ㅛ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.singleJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "요", romanized: "yoh" }, | |
| medial: { romanization: "yo", ipa: "/jo/" } | |
| }, | |
| ㅜ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.horizontalVowel, jamoAttr.singleJamo], | |
| name: { hangul: "우", romanized: "oo" }, | |
| medial: { romanization: "u", ipa: "/u/" } | |
| }, | |
| ㅠ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.singleJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "유", romanized: "you" }, | |
| medial: { romanization: "yu", ipa: "/ju/" } | |
| }, | |
| ㅡ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.horizontalVowel, jamoAttr.singleJamo], | |
| name: { hangul: "으", romanized: "eu" }, | |
| medial: { romanization: "eu", ipa: "/ɯ/" } | |
| }, | |
| ㅣ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.verticalVowel, jamoAttr.singleJamo], | |
| name: { hangul: "이", romanized: "ee" }, | |
| medial: { romanization: "i", ipa: "/i/" } | |
| }, | |
| ㅐ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.verticalVowel, jamoAttr.composedJamo], | |
| name: { hangul: "애", romanized: "ah" }, | |
| medial: { romanization: "ae", ipa: "/ɛ/" } | |
| }, | |
| ㅒ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.verticalVowel, | |
| jamoAttr.composedJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "얘", romanized: "yae" }, | |
| medial: { romanization: "yae", ipa: "/jɛ/" } | |
| }, | |
| ㅔ: { | |
| attributes: [jamoAttr.vowel, jamoAttr.verticalVowel, jamoAttr.composedJamo], | |
| name: { hangul: "에", romanized: "eh" }, | |
| medial: { romanization: "e", ipa: "/e/" } | |
| }, | |
| ㅖ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.verticalVowel, | |
| jamoAttr.composedJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "예", romanized: "yeh" }, | |
| medial: { romanization: "ye", ipa: "/je/" } | |
| }, | |
| ㅘ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.composedJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "와", romanized: "wa" }, | |
| medial: { romanization: "wa", ipa: "/wa/" } | |
| }, | |
| ㅙ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.composedJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "왜", romanized: "wae" }, | |
| medial: { romanization: "wae", ipa: "/wɛ/" } | |
| }, | |
| ㅚ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.composedJamo | |
| ], | |
| name: { hangul: "외", romanized: "we" }, | |
| medial: { romanization: "oe", ipa: "/ø/" } | |
| }, | |
| ㅝ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.composedJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "워", romanized: "weo" }, | |
| medial: { romanization: "wo", ipa: "/wʌ/" } | |
| }, | |
| ㅞ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.composedJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "웨", romanized: "we" }, | |
| medial: { romanization: "we", ipa: "/we/" } | |
| }, | |
| ㅟ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.composedJamo | |
| ], | |
| name: { hangul: "위", romanized: "wi" }, | |
| medial: { romanization: "wi", ipa: "/wi ~ y/" } | |
| }, | |
| ㅢ: { | |
| attributes: [ | |
| jamoAttr.vowel, | |
| jamoAttr.horizontalVowel, | |
| jamoAttr.composedJamo, | |
| jamoAttr.dipthong | |
| ], | |
| name: { hangul: "의", romanized: "eui" }, | |
| medial: { romanization: "ui", ipa: "/ɰi/" } | |
| } | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment