# liblouis: Korean (Base table and chars for 2006 edition)
#
# Based on the braille contraction table in BRLTTY
#
# Copyright (C) 1995-2012 by The BRLTTY Team. 
# Copyright (C) 2012 by Samuel Thibault <samuel.thibault@ens-lyon.org>
# Copyright (C) 2012 by Mesar Hameed <mhameed@src.gnome.org>
# Copyright (C) 2014 by Joseph Lee <joseph.lee22590@gmail.com>
#
#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 2.1 of the
#  License, or (at your option) any later version.
#
#  liblouis 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
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.

# This is missing CHITUEUM*, CEONGCHIEUMSIOS, PANSIOS, YESIEUNG, RINHIEUH and
# ARAEA for which I couldn't find documentation.  Please contact me to fix
# anything, as this table was generated from a C program.

#Same as ko.cti except for punctuation dot changes.

include en-chardefs.cti English character definition opcodes
include braille-patterns.cti

# Braille indicators
numsign 3456  number sign, just a dots operand
capsletter 6
begcapsword 6-6
endcapsword 6-3
emphclass italic
emphclass underline
emphclass bold
begemphphrase italic 46-46
endemphphrase italic before 46
lenemphphrase italic 4
begemphword italic 46-3
endemphword italic 46-36
emphletter italic 46-25
begemphphrase bold 456-456
endemphphrase bold before 456
lenemphphrase bold 4
begcomp 456-346
endcomp 456-156

# literary forms of the decimal digits
include litdigits6Dots.uti

# Letters are defined in chardefs.cti

# punctuation
prepunc ( 36
word ( 36
noback always ( 36
postpunc ) 36
word ) 36
noback always ) 36
prepunc " 236
postpunc " 356
word " 236
prepunc ` 236
prepunc ' 6-236
postpunc ' 356-3
word ' 4-3
word 'em = 
word 'tis =
word 'twas =
begnum # 3456 print number sign before number
midnum , 5
postpunc , 5
word , 5
noback always , 5
decpoint . 3
midnum - 36
hyphen - 36
always \s--\s 36-36
always \s-\s 36-36
midnum \x00ad 36
postpunc . 256
word . 256
noback always . 256
postpunc ; 56-23
word ; 56-23
midnum : 5-2
postpunc : 5-2
always : 5-2
postpunc ! 235
noback always ! 235
midnum / 456-34
always / 456-34
always < 5-13
always = 25-25
always > 46-2
always + 5-235
postpunc ? 236
word ? 236
noback always ? 236
endnum st 34
endnum nd 1345-145
endnum rd 1235-145
endnum 's 3-234
endnum th 1456
endnum 's 3-234
always % 356-1234
midnum ^ 45
always ^ 456-126
always ~ 36-36
always & 4-12346
midnum * 5-23
always * 35-35
prepunc [ 236-3
word [ 236-3
always [ 236-3
postpunc ] 6-356
word ] 6-356
always ] 6-356
prepunc { 236-23
word { 236-23
always { 236-23
postpunc } 56-356
word } 56-356
always } 56-356
always @ 4-1
always \\ 4-1256
always | 456-1256
always \s-\s 36
always ..." 5-5-5-356
always … 5-5-5
always ... 5-5-5
always ...' 5-5-5-356-3
repeated .... 0
repeated ____ 6-36-36-3
repeated ---- 36
always .\s.\s." 3-3-3-356
always .\s.\s. 3-3-3 . . .
begnum $ 256
always $ 4-256
always _ 6-36-36-3
always — 56-36-36-23

# special character sequences
compbrl :// URLs
compbrl ()
compbrl www.
compbrl ::
compbrl .com
compbrl .edu
compbrl .gov
compbrl .ini
compbrl .mil
compbrl .net
compbrl .org
compbrl .doc
compbrl .xml
compbrl .xsl
compbrl .htm
compbrl .html
compbrl .tex
compbrl .txt
compbrl .gif
compbrl .jpg
compbrl .png
compbrl .wav
compbrl .tar
compbrl .zip

noback context "\e"$a *
always \\_ 56 letter sign before Roman page numbers
noback pass2 @56-56 @56
noback pass2 @3-56 @3


#Korean section:

#Detect English:
letsign 356

#Basic letter patterns (to be used in G1 and G2):
include ko-chars.cti


