# 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 chardefs.cti All 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
always ( 36
postpunc ) 36
word ) 36
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
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
always . 256
postpunc ; 56-23
word ; 56-23
midnum : 5-2
postpunc : 5-2
always : 5-2
postpunc ! 235
always ! 235
midnum / 456-34
always / 456-34
always < 5-13
always = 25-25
always > 46-2
always + 5-235
postpunc ? 236
word ? 236
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


