aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark E. Shoulson <mark@kli.org>2021-05-06 11:06:10 -0400
committerMark E. Shoulson <mark@kli.org>2021-07-20 15:13:38 -0400
commite435ab43a2147294d51e353cbb636d77c521984e (patch)
treef5984a064a6f6fba6c9fbf9208c941ca38e10c02
parentMerge branch 'master' (diff)
parentDo parenthesized numbers via paren-base. Add a few more chars. (diff)
downloaddotXCompose-e435ab43a2147294d51e353cbb636d77c521984e.tar.gz
dotXCompose-e435ab43a2147294d51e353cbb636d77c521984e.tar.bz2
dotXCompose-e435ab43a2147294d51e353cbb636d77c521984e.zip
Merge branch 'master'
-rw-r--r--Makefile3
-rw-r--r--README.md2
-rw-r--r--dotXCompose65
-rwxr-xr-xemojitrans2.pl6
-rw-r--r--parens-base357
-rw-r--r--parens.compose198
-rw-r--r--xcompose-mode.el254
7 files changed, 871 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 80ed052..2febe7b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,5 @@
-COMPOSED=emoji.compose modletters.compose tags.compose maths.compose
+COMPOSED=emoji.compose modletters.compose tags.compose maths.compose \
+ parens.compose
all: $(COMPOSED)
%.compose: %-base emojitrans2.pl
diff --git a/README.md b/README.md
index ca87563..a994339 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ your Compose key in X11 is controlled by (among other things) the file
of bindings for Unicode characters that are useful occasionally.
More contributions are welcome; there's a Git repository at
-<http://github.org/kragen/xcompose>. We're trying to come up with a
+<https://github.com/kragen/xcompose>. We're trying to come up with a
broadly acceptable set of keybindings that won't interfere with the
traditional Compose bindings, aren't too hard to type, and cover a
wide set of characters that are useful to use occasionally, making
diff --git a/dotXCompose b/dotXCompose
index 8a823e2..1a23f2e 100644
--- a/dotXCompose
+++ b/dotXCompose
@@ -33,6 +33,9 @@ include "%L"
# These two are already present for me:
# <Multi_key> <minus> <minus> <minus> : "—" U2014 # EM DASH
# <Multi_key> <minus> <minus> <period> : "–" U2013 # EN DASH
+# But I can never remember them!
+<Multi_key> <minus> <M> : "—" U2014 # EM DASH
+<Multi_key> <minus> <N> : "–" U2013 # EN DASH
<Multi_key> <minus> <minus> <space> : "– " # EN DASH (followed by space)
<Multi_key> <minus> <asciitilde> <minus> : "―" U2015 # HORIZONTAL BAR
<Multi_key> <minus> <2> <M> : "⸺" U2E3A # TWO-EM DASH
@@ -205,9 +208,14 @@ include "%L"
<Multi_key> <P> <less> : "ꟼ" UA7FC # LATIN EPIGRAPHIC LETTER REVERSED P
<Multi_key> <F> <BackSpace> : "ꟻ" UA7FB # LATIN EPIGRAPHIC LETTER REVERSED F
<Multi_key> <P> <BackSpace> : "ꟼ" UA7FC # LATIN EPIGRAPHIC LETTER REVERSED P
+<Multi_key> <F> <F> : "Ⅎ" U2132 # TURNED CAPITAL F
+<Multi_key> <F> <f> : "ⅎ" U214E # TURNED SMALL F
<Multi_key> <M> <W> : "ꟽ" UA7FD # LATIN EPIGRAPHIC LETTER INVERTED M
+<Multi_key> <M> <M> : "Ɯ" U019C # LATIN CAPITAL LETTER TURNED M
<Multi_key> <I> <bar> : "ꟾ" UA7FE # LATIN EPIGRAPHIC LETTER I LONGA
<Multi_key> <M> <slash> : "ꟿ" UA7FF # LATIN EPIGRAPHIC LETTER ARCHAIC M
+<Multi_key> <2> <2> : "↊" U218A # TURNED DIGIT TWO
+<Multi_key> <3> <3> : "↋" U218B # TURNED DIGIT THREE
# I'd been avoiding this because we already have ∃...
# Hey, these, being *letters* can be used as identifiers in some languages...
<Multi_key> <E> <less> : "Ǝ" U018E # LATIN CAPITAL LETTER REVERSED E
@@ -272,7 +280,6 @@ include "%L"
<Multi_key> <R> <O> : "Ꝛ" UA75A # LATIN CAPITAL LETTER R ROTUNDA
# something, anyway.
<Multi_key> <R> <0> : "Ꝛ" UA75A # LATIN CAPITAL LETTER R ROTUNDA
-
# Custom additions: Mathematical symbols
<Multi_key> <exclam> <equal> : "≠" U2260 # NOT EQUAL TO
<Multi_key> <slash> <equal> : "≠" U2260 # NOT EQUAL TO
@@ -335,6 +342,8 @@ include "%L"
<Multi_key> <braceleft> <equal> <parenleft> : "⊆" U2286 # SUBSET OF OR EQUAL TO
<Multi_key> <exclam> <braceleft> <parenleft> : "⊄" U2284 # NOT A SUBSET OF
<Multi_key> <slash> <braceleft> <parenleft> : "⊄" U2284 # NOT A SUBSET OF
+<Multi_key> <exclam> <braceleft> <parenright> : "⊅" U2285 # NOT A SUPERSET OF
+<Multi_key> <slash> <braceleft> <parenright> : "⊅" U2285 # NOT A SUPERSET OF
<Multi_key> <braceleft> <parenright> : "⊃" U2283 # SUPERSET OF
<Multi_key> <braceleft> <equal> <parenright> : "⊇" U2287 # SUPERSET OF OR EQUAL TO
<Multi_key> <E> <E> : "∃" U2203 # THERE EXISTS
@@ -700,6 +709,7 @@ include "%L"
<Multi_key> <percent> <X> : "Ⅹ" U2169 # ROMAN NUMERAL TEN
<Multi_key> <percent> <L> : "Ⅼ" U216C # ROMAN NUMERAL FIFTY
<Multi_key> <percent> <C> : "Ⅽ" U216D # ROMAN NUMERAL ONE HUNDRED
+<Multi_key> <percent> <less> <C> : "Ↄ" U2183 # ROMAN NUMERAL REVERSED ONE HUNDRED
<Multi_key> <percent> <D> : "Ⅾ" U216E # ROMAN NUMERAL FIVE HUNDRED
<Multi_key> <percent> <M> : "Ⅿ" U216F # ROMAN NUMERAL ONE THOUSAND
<Multi_key> <percent> <0> <C> <D> : "ↀ" U2180 # ROMAN NUMERAL ONE THOUSAND C D
@@ -745,7 +755,6 @@ include "%L"
<Multi_key> <semicolon> <BackSpace> : "⁏" U204F # REVERSED SEMICOLON
# Keep looking into big hunks of Latin Extended-D, A720- et seq.
<Multi_key> <less> <3> : "♥" U2665 # BLACK HEART SUIT
-<Multi_key> <3> <3> : "♣" U2663 # BLACK CLUB SUIT
<Multi_key> <o> <8> : "♣" U2663 # BLACK CLUB SUIT
<Multi_key> <c> <3> : "♣" U2663 # BLACK CLUB SUIT
<Multi_key> <less> <greater> : "♢" U2662 # WHITE DIAMOND SUIT
@@ -809,6 +818,38 @@ include "%L"
<Multi_key> <bracketleft> <6> <bracketright> : "⚅" U2685 # DIE FACE-6
# 267B BLACK UNIVERSAL RECYCLING SYMBOL
+<Multi_key> <parenleft> <C> <C> <parenright> : "🅭" U1F16D # CIRCLED CC
+<Multi_key> <C> <parenleft> <C> <C> <parenright> : "🅭" U1F16D # CIRCLED CC
+<Multi_key> <parenleft> <backslash> <C> <parenright> : "🅮" U1F16E # CIRCLED C WITH OVERLAID BACKSLASH
+<Multi_key> <parenleft> <slash> <C> <parenright> : "🅮" U1F16E # CIRCLED C WITH OVERLAID BACKSLASH
+<Multi_key> <C> <parenleft> <backslash> <C> <parenright> : "🅮" U1F16E # CIRCLED C WITH OVERLAID BACKSLASH
+<Multi_key> <C> <parenleft> <slash> <C> <parenright> : "🅮" U1F16E # CIRCLED C WITH OVERLAID BACKSLASH
+<Multi_key> <C> <parenleft> <B> <Y> <parenright> : "🅯" U1F16F # CIRCLED HUMAN FIGURE
+<Multi_key> <C> <parenleft> <S> <A> <parenright> : "🄎" U1F10E # CIRCLED ANTICLOCKWISE ARROW
+## ugh, this doesn't (usually) match the style of the others. They're practically emoji; ⊜ is a math symbol.
+<Multi_key> <C> <parenleft> <N> <D> <parenright> : "⊜" U229C # CIRCLED EQUALS
+<Multi_key> <C> <parenleft> <equal> <parenright> : "⊜" U229C # CIRCLED EQUALS
+<Multi_key> <C> <parenleft> <N> <C> <parenright> : "🄏" U1F10F # CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+<Multi_key> <C> <parenleft> <slash> <dollar> <parenright> : "🄏" U1F10F # CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+<Multi_key> <C> <parenleft> <backslash> <dollar> <parenright> : "🄏" U1F10F # CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+## Not actually Creative Commons, but related. Too many options?
+<Multi_key> <parenleft> <C> <Left> <parenright> : "🄯" U1F12F # COPYLEFT SYMBOL
+<Multi_key> <parenleft> <C> <less> <parenright> : "🄯" U1F12F # COPYLEFT SYMBOL
+<Multi_key> <C> <parenleft> <C> <Left> <parenright> : "🄯" U1F12F # COPYLEFT SYMBOL
+<Multi_key> <C> <parenleft> <C> <less> <parenright> : "🄯" U1F12F # COPYLEFT SYMBOL
+
+## Segmented digits?
+<Multi_key> <numbersign> <0> : "🯰" U1FBF0 # SEGMENTED DIGIT ZERO
+<Multi_key> <numbersign> <1> : "🯱" U1FBF1 # SEGMENTED DIGIT ONE
+<Multi_key> <numbersign> <2> : "🯲" U1FBF2 # SEGMENTED DIGIT TWO
+<Multi_key> <numbersign> <3> : "🯳" U1FBF3 # SEGMENTED DIGIT THREE
+<Multi_key> <numbersign> <4> : "🯴" U1FBF4 # SEGMENTED DIGIT FOUR
+<Multi_key> <numbersign> <5> : "🯵" U1FBF5 # SEGMENTED DIGIT FIVE
+<Multi_key> <numbersign> <6> : "🯶" U1FBF6 # SEGMENTED DIGIT SIX
+<Multi_key> <numbersign> <7> : "🯷" U1FBF7 # SEGMENTED DIGIT SEVEN
+<Multi_key> <numbersign> <8> : "🯸" U1FBF8 # SEGMENTED DIGIT EIGHT
+<Multi_key> <numbersign> <9> : "🯹" U1FBF9 # SEGMENTED DIGIT NINE
+
# Keystrokes okay?
<Multi_key> <Multi_key> <f> <d> <l> : "⚜" U269C # FLEUR-DE-LIS
<Multi_key> <Multi_key> <a> <t> <o> <m> : "⚛" U269B # ATOM SYMBOL
@@ -933,6 +974,20 @@ include "%L"
<Multi_key> <asciicircum> <plus> : "⁺" U207A # SUPERSCRIPT PLUS
<Multi_key> <asciitilde> <asciitilde> : "≈" U2248 # ALMOST EQUAL TO
+
+## The system XCompose gives me lots of precomposed chars, but is
+## missing ones with macrons, and I want 'em
+<Multi_key> <equal> <A> : "Ā" U0100 # LATIN CAPITAL LETTER A WITH MACRON
+<Multi_key> <equal> <a> : "ā" U0101 # LATIN SMALL LETTER A WITH MACRON
+<Multi_key> <equal> <E> : "Ē" U0112 # LATIN CAPITAL LETTER E WITH MACRON
+<Multi_key> <equal> <e> : "ē" U0113 # LATIN SMALL LETTER E WITH MACRON
+<Multi_key> <equal> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON
+<Multi_key> <equal> <i> : "ī" U012B # LATIN SMALL LETTER I WITH MACRON
+<Multi_key> <equal> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON
+<Multi_key> <equal> <o> : "ō" U014D # LATIN SMALL LETTER O WITH MACRON
+<Multi_key> <equal> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON
+<Multi_key> <equal> <u> : "ū" U016B # LATIN SMALL LETTER U WITH MACRON
+
<Multi_key> <s> <h> : "ʃ" U0283 # LATIN SMALL LETTER ESH
<Multi_key> <z> <h> : "ʒ" U0292 # LATIN SMALL LETTER EZH
<Multi_key> <l> <h> : "ɬ" U026C # LATIN SMALL LETTER L WITH BELT
@@ -943,6 +998,7 @@ include "%L"
<Multi_key> <question> <parenleft> : "ʕ" U0295 # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
# Not great keystrokes...
<Multi_key> <question> <v> : "ʖ" U0296 # LATIN LETTER INVERTED GLOTTAL STOP
+<Multi_key> <question> <at> : "ʖ" U0296 # LATIN LETTER INVERTED GLOTTAL STOP
<Multi_key> <question> <minus> : "ʡ" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE
<Multi_key> <question> <braceleft> : "ʢ" U02A2 # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
# How about ɸ? φ isn’t the IPA glyph.
@@ -959,6 +1015,8 @@ include "%L"
<Multi_key> <A> <W> : "Ɔ" U0186 # LATIN CAPITAL LETTER OPEN O
<Multi_key> <e> <h> : "ɛ" U025B # LATIN SMALL LETTER OPEN E
# Have to put the <less> at the beginning for these.
+<Multi_key> <less> <a> <h> : "ɒ" U0252 # LATIN SMALL LETTER TURNED ALPHA
+<Multi_key> <BackSpace> <a> <h> : "ɒ" U0252 # LATIN SMALL LETTER TURNED ALPHA
<Multi_key> <less> <e> <h> : "ɜ" U025C # LATIN SMALL LETTER REVERSED OPEN E
<Multi_key> <BackSpace> <e> <h> : "ɜ" U025C # LATIN SMALL LETTER REVERSED OPEN E
<Multi_key> <less> <e> <r> : "ɝ" U025D # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
@@ -1031,6 +1089,9 @@ include "%L"
<Multi_key> <numbersign> <o> <slash> : "♪" U266a # EIGHTH NOTE
<Multi_key> <numbersign> <o> <o> : "♫" U266b # BEAMED EIGHTH NOTES
<Multi_key> <numbersign> <percent> : "♫" U266b # BEAMED EIGHTH NOTES
+<Multi_key> <numbersign> <q> : "♩" U2669 # QUARTER NOTE
+<Multi_key> <numbersign> <h> : "𝅗𝅥" U0001d15e # MUSICAL SYMBOL HALF NOTE
+<Multi_key> <numbersign> <w> : "𝅝" U0001d15d # MUSICAL SYMBOL WHOLE NOTE
# Combining accents, for making things you don't have precomposed chars or keystrokes for:
diff --git a/emojitrans2.pl b/emojitrans2.pl
index 4ee9eac..233d77c 100755
--- a/emojitrans2.pl
+++ b/emojitrans2.pl
@@ -28,6 +28,9 @@ BEGIN { binmode(STDOUT, ":utf8");
']' => 'bracketright',
'{' => 'braceleft',
'}' => 'braceright',
+ # Not strictly necessary:
+ '❴' => 'braceleft',
+ '❵' => 'braceright',
"'" => 'apostrophe',
'"' => 'quotedbl',
'\\' => 'backslash',
@@ -50,6 +53,9 @@ BEGIN { binmode(STDOUT, ":utf8");
'↵' => 'Return',
'∇' => 'Delete', # Del, get it?
'˅' => 'Insert', # it'll do.
+ '˃' => 'Control_R',
+ '˂' => 'Control_L',
+ # Function-keys? ¹ ²..ˣ ᵉ ᵗ?
);
$specials = join "", keys %specials;
diff --git a/parens-base b/parens-base
new file mode 100644
index 0000000..6e6a42f
--- /dev/null
+++ b/parens-base
@@ -0,0 +1,357 @@
+#- 2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
+<M_> {(.1)} : "⑴" U2474 # PARENTHESIZED DIGIT ONE
+#- 2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
+<M_> {(.2)} : "⑵" U2475 # PARENTHESIZED DIGIT TWO
+#- 2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
+<M_> {(.3)} : "⑶" U2476 # PARENTHESIZED DIGIT THREE
+#- 2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
+<M_> {(.4)} : "⑷" U2477 # PARENTHESIZED DIGIT FOUR
+#- 2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
+<M_> {(.5)} : "⑸" U2478 # PARENTHESIZED DIGIT FIVE
+#- 2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
+<M_> {(.6)} : "⑹" U2479 # PARENTHESIZED DIGIT SIX
+#- 247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
+<M_> {(.7)} : "⑺" U247A # PARENTHESIZED DIGIT SEVEN
+#- 247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
+<M_> {(.8)} : "⑻" U247B # PARENTHESIZED DIGIT EIGHT
+#- 247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
+<M_> {(.9)} : "⑼" U247C # PARENTHESIZED DIGIT NINE
+#- 247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+<M_> {(.10)} : "⑽" U247D # PARENTHESIZED NUMBER TEN
+#- 247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+<M_> {(.11)} : "⑾" U247E # PARENTHESIZED NUMBER ELEVEN
+#- 247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+<M_> {(.12)} : "⑿" U247F # PARENTHESIZED NUMBER TWELVE
+#- 2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+<M_> {(.13)} : "⒀" U2480 # PARENTHESIZED NUMBER THIRTEEN
+#- 2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+<M_> {(.14)} : "⒁" U2481 # PARENTHESIZED NUMBER FOURTEEN
+#- 2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+<M_> {(.15)} : "⒂" U2482 # PARENTHESIZED NUMBER FIFTEEN
+#- 2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+<M_> {(.16)} : "⒃" U2483 # PARENTHESIZED NUMBER SIXTEEN
+#- 2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+<M_> {(.17)} : "⒄" U2484 # PARENTHESIZED NUMBER SEVENTEEN
+#- 2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+<M_> {(.18)} : "⒅" U2485 # PARENTHESIZED NUMBER EIGHTEEN
+#- 2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+<M_> {(.19)} : "⒆" U2486 # PARENTHESIZED NUMBER NINETEEN
+#- 2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+<M_> {(.20)} : "⒇" U2487 # PARENTHESIZED NUMBER TWENTY
+#- 249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+<M_> {(.a)} : "⒜" U249C # PARENTHESIZED LATIN SMALL LETTER A
+#- 249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+<M_> {(.b)} : "⒝" U249D # PARENTHESIZED LATIN SMALL LETTER B
+#- 249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+<M_> {(.c)} : "⒞" U249E # PARENTHESIZED LATIN SMALL LETTER C
+#- 249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+<M_> {(.d)} : "⒟" U249F # PARENTHESIZED LATIN SMALL LETTER D
+#- 24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+<M_> {(.e)} : "⒠" U24A0 # PARENTHESIZED LATIN SMALL LETTER E
+#- 24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+<M_> {(.f)} : "⒡" U24A1 # PARENTHESIZED LATIN SMALL LETTER F
+#- 24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+<M_> {(.g)} : "⒢" U24A2 # PARENTHESIZED LATIN SMALL LETTER G
+#- 24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+<M_> {(.h)} : "⒣" U24A3 # PARENTHESIZED LATIN SMALL LETTER H
+#- 24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+<M_> {(.i)} : "⒤" U24A4 # PARENTHESIZED LATIN SMALL LETTER I
+#- 24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+<M_> {(.j)} : "⒥" U24A5 # PARENTHESIZED LATIN SMALL LETTER J
+#- 24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+<M_> {(.k)} : "⒦" U24A6 # PARENTHESIZED LATIN SMALL LETTER K
+#- 24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+<M_> {(.l)} : "⒧" U24A7 # PARENTHESIZED LATIN SMALL LETTER L
+#- 24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+<M_> {(.m)} : "⒨" U24A8 # PARENTHESIZED LATIN SMALL LETTER M
+#- 24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+<M_> {(.n)} : "⒩" U24A9 # PARENTHESIZED LATIN SMALL LETTER N
+#- 24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+<M_> {(.o)} : "⒪" U24AA # PARENTHESIZED LATIN SMALL LETTER O
+#- 24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+<M_> {(.p)} : "⒫" U24AB # PARENTHESIZED LATIN SMALL LETTER P
+#- 24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+<M_> {(.q)} : "⒬" U24AC # PARENTHESIZED LATIN SMALL LETTER Q
+#- 24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+<M_> {(.r)} : "⒭" U24AD # PARENTHESIZED LATIN SMALL LETTER R
+#- 24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+<M_> {(.s)} : "⒮" U24AE # PARENTHESIZED LATIN SMALL LETTER S
+#- 24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+<M_> {(.t)} : "⒯" U24AF # PARENTHESIZED LATIN SMALL LETTER T
+#- 24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+<M_> {(.u)} : "⒰" U24B0 # PARENTHESIZED LATIN SMALL LETTER U
+#- 24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+<M_> {(.v)} : "⒱" U24B1 # PARENTHESIZED LATIN SMALL LETTER V
+#- 24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+<M_> {(.w)} : "⒲" U24B2 # PARENTHESIZED LATIN SMALL LETTER W
+#- 24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+<M_> {(.x)} : "⒳" U24B3 # PARENTHESIZED LATIN SMALL LETTER X
+#- 24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+<M_> {(.y)} : "⒴" U24B4 # PARENTHESIZED LATIN SMALL LETTER Y
+#- 24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+<M_> {(.z)} : "⒵" U24B5 # PARENTHESIZED LATIN SMALL LETTER Z
+#- 1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;;
+<M_> {(.A)} : "🄐" U1F110 # PARENTHESIZED LATIN CAPITAL LETTER A
+#- 1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;;
+<M_> {(.B)} : "🄑" U1F111 # PARENTHESIZED LATIN CAPITAL LETTER B
+#- 1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;;
+<M_> {(.C)} : "🄒" U1F112 # PARENTHESIZED LATIN CAPITAL LETTER C
+#- 1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L;<compat> 0028 0044 0029;;;;N;;;;;
+<M_> {(.D)} : "🄓" U1F113 # PARENTHESIZED LATIN CAPITAL LETTER D
+#- 1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L;<compat> 0028 0045 0029;;;;N;;;;;
+<M_> {(.E)} : "🄔" U1F114 # PARENTHESIZED LATIN CAPITAL LETTER E
+#- 1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L;<compat> 0028 0046 0029;;;;N;;;;;
+<M_> {(.F)} : "🄕" U1F115 # PARENTHESIZED LATIN CAPITAL LETTER F
+#- 1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L;<compat> 0028 0047 0029;;;;N;;;;;
+<M_> {(.G)} : "🄖" U1F116 # PARENTHESIZED LATIN CAPITAL LETTER G
+#- 1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L;<compat> 0028 0048 0029;;;;N;;;;;
+<M_> {(.H)} : "🄗" U1F117 # PARENTHESIZED LATIN CAPITAL LETTER H
+#- 1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L;<compat> 0028 0049 0029;;;;N;;;;;
+<M_> {(.I)} : "🄘" U1F118 # PARENTHESIZED LATIN CAPITAL LETTER I
+#- 1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L;<compat> 0028 004A 0029;;;;N;;;;;
+<M_> {(.J)} : "🄙" U1F119 # PARENTHESIZED LATIN CAPITAL LETTER J
+#- 1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L;<compat> 0028 004B 0029;;;;N;;;;;
+<M_> {(.K)} : "🄚" U1F11A # PARENTHESIZED LATIN CAPITAL LETTER K
+#- 1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L;<compat> 0028 004C 0029;;;;N;;;;;
+<M_> {(.L)} : "🄛" U1F11B # PARENTHESIZED LATIN CAPITAL LETTER L
+#- 1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L;<compat> 0028 004D 0029;;;;N;;;;;
+<M_> {(.M)} : "🄜" U1F11C # PARENTHESIZED LATIN CAPITAL LETTER M
+#- 1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L;<compat> 0028 004E 0029;;;;N;;;;;
+<M_> {(.N)} : "🄝" U1F11D # PARENTHESIZED LATIN CAPITAL LETTER N
+#- 1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L;<compat> 0028 004F 0029;;;;N;;;;;
+<M_> {(.O)} : "🄞" U1F11E # PARENTHESIZED LATIN CAPITAL LETTER O
+#- 1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L;<compat> 0028 0050 0029;;;;N;;;;;
+<M_> {(.P)} : "🄟" U1F11F # PARENTHESIZED LATIN CAPITAL LETTER P
+#- 1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L;<compat> 0028 0051 0029;;;;N;;;;;
+<M_> {(.Q)} : "🄠" U1F120 # PARENTHESIZED LATIN CAPITAL LETTER Q
+#- 1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L;<compat> 0028 0052 0029;;;;N;;;;;
+<M_> {(.R)} : "🄡" U1F121 # PARENTHESIZED LATIN CAPITAL LETTER R
+#- 1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L;<compat> 0028 0053 0029;;;;N;;;;;
+<M_> {(.S)} : "🄢" U1F122 # PARENTHESIZED LATIN CAPITAL LETTER S
+#- 1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L;<compat> 0028 0054 0029;;;;N;;;;;
+<M_> {(.T)} : "🄣" U1F123 # PARENTHESIZED LATIN CAPITAL LETTER T
+#- 1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L;<compat> 0028 0055 0029;;;;N;;;;;
+<M_> {(.U)} : "🄤" U1F124 # PARENTHESIZED LATIN CAPITAL LETTER U
+#- 1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L;<compat> 0028 0056 0029;;;;N;;;;;
+<M_> {(.V)} : "🄥" U1F125 # PARENTHESIZED LATIN CAPITAL LETTER V
+#- 1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L;<compat> 0028 0057 0029;;;;N;;;;;
+<M_> {(.W)} : "🄦" U1F126 # PARENTHESIZED LATIN CAPITAL LETTER W
+#- 1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L;<compat> 0028 0058 0029;;;;N;;;;;
+<M_> {(.X)} : "🄧" U1F127 # PARENTHESIZED LATIN CAPITAL LETTER X
+#- 1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L;<compat> 0028 0059 0029;;;;N;;;;;
+<M_> {(.Y)} : "🄨" U1F128 # PARENTHESIZED LATIN CAPITAL LETTER Y
+#- 1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L;<compat> 0028 005A 0029;;;;N;;;;;
+<M_> {(.Z)} : "🄩" U1F129 # PARENTHESIZED LATIN CAPITAL LETTER Z
+#- 2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+<M_> {.1.} : "⒈" U2488 # DIGIT ONE FULL STOP
+#- 2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+<M_> {.2.} : "⒉" U2489 # DIGIT TWO FULL STOP
+#- 248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+<M_> {.3.} : "⒊" U248A # DIGIT THREE FULL STOP
+#- 248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+<M_> {.4.} : "⒋" U248B # DIGIT FOUR FULL STOP
+#- 248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+<M_> {.5.} : "⒌" U248C # DIGIT FIVE FULL STOP
+#- 248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+<M_> {.6.} : "⒍" U248D # DIGIT SIX FULL STOP
+#- 248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+<M_> {.7.} : "⒎" U248E # DIGIT SEVEN FULL STOP
+#- 248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+<M_> {.8.} : "⒏" U248F # DIGIT EIGHT FULL STOP
+#- 2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+<M_> {.9.} : "⒐" U2490 # DIGIT NINE FULL STOP
+#- 2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+<M_> {.10.} : "⒑" U2491 # NUMBER TEN FULL STOP
+#- 2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+<M_> {.11.} : "⒒" U2492 # NUMBER ELEVEN FULL STOP
+#- 2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+<M_> {.12.} : "⒓" U2493 # NUMBER TWELVE FULL STOP
+#- 2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+<M_> {.13.} : "⒔" U2494 # NUMBER THIRTEEN FULL STOP
+#- 2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+<M_> {.14.} : "⒕" U2495 # NUMBER FOURTEEN FULL STOP
+#- 2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+<M_> {.15.} : "⒖" U2496 # NUMBER FIFTEEN FULL STOP
+#- 2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+<M_> {.16.} : "⒗" U2497 # NUMBER SIXTEEN FULL STOP
+#- 2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+<M_> {.17.} : "⒘" U2498 # NUMBER SEVENTEEN FULL STOP
+#- 2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+<M_> {.18.} : "⒙" U2499 # NUMBER EIGHTEEN FULL STOP
+#- 249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+<M_> {.19.} : "⒚" U249A # NUMBER NINETEEN FULL STOP
+#- 249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+<M_> {.20.} : "⒛" U249B # NUMBER TWENTY FULL STOP
+#- 1F100;DIGIT ZERO FULL STOP;No;0;EN;<compat> 0030 002E;;0;0;N;;;;;
+<M_> {.0.} : "🄀" U1F100 # DIGIT ZERO FULL STOP
+#- 24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+<M_> {(B11)} : "⓫" U24EB # NEGATIVE CIRCLED NUMBER ELEVEN
+#- 24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+<M_> {(B12)} : "⓬" U24EC # NEGATIVE CIRCLED NUMBER TWELVE
+#- 24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+<M_> {(B13)} : "⓭" U24ED # NEGATIVE CIRCLED NUMBER THIRTEEN
+#- 24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+<M_> {(B14)} : "⓮" U24EE # NEGATIVE CIRCLED NUMBER FOURTEEN
+#- 24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+<M_> {(B15)} : "⓯" U24EF # NEGATIVE CIRCLED NUMBER FIFTEEN
+#- 24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+<M_> {(B16)} : "⓰" U24F0 # NEGATIVE CIRCLED NUMBER SIXTEEN
+#- 24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+<M_> {(B17)} : "⓱" U24F1 # NEGATIVE CIRCLED NUMBER SEVENTEEN
+#- 24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+<M_> {(B18)} : "⓲" U24F2 # NEGATIVE CIRCLED NUMBER EIGHTEEN
+#- 24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+<M_> {(B19)} : "⓳" U24F3 # NEGATIVE CIRCLED NUMBER NINETEEN
+#- 24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+<M_> {(B20)} : "⓴" U24F4 # NEGATIVE CIRCLED NUMBER TWENTY
+#- 24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
+<M_> {(B0)} : "⓿" U24FF # NEGATIVE CIRCLED DIGIT ZERO
+#- 2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+<M_> {(B1)} : "❶" U2776 # DINGBAT NEGATIVE CIRCLED DIGIT ONE
+#- 2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+<M_> {(B2)} : "❷" U2777 # DINGBAT NEGATIVE CIRCLED DIGIT TWO
+#- 2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+<M_> {(B3)} : "❸" U2778 # DINGBAT NEGATIVE CIRCLED DIGIT THREE
+#- 2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+<M_> {(B4)} : "❹" U2779 # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+#- 277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+<M_> {(B5)} : "❺" U277A # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+#- 277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+<M_> {(B6)} : "❻" U277B # DINGBAT NEGATIVE CIRCLED DIGIT SIX
+#- 277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+<M_> {(B7)} : "❼" U277C # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+#- 277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+<M_> {(B8)} : "❽" U277D # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+#- 277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+<M_> {(B9)} : "❾" U277E # DINGBAT NEGATIVE CIRCLED DIGIT NINE
+#- 277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+<M_> {(B10)} : "❿" U277F # DINGBAT NEGATIVE CIRCLED NUMBER TEN
+#- 1F150;NEGATIVE CIRCLED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;
+<M_> {(BA)} : "🅐" U1F150 # NEGATIVE CIRCLED LATIN CAPITAL LETTER A
+#- 1F151;NEGATIVE CIRCLED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;
+<M_> {(BB)} : "🅑" U1F151 # NEGATIVE CIRCLED LATIN CAPITAL LETTER B
+#- 1F152;NEGATIVE CIRCLED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;
+<M_> {(BC)} : "🅒" U1F152 # NEGATIVE CIRCLED LATIN CAPITAL LETTER C
+#- 1F153;NEGATIVE CIRCLED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;;
+<M_> {(BD)} : "🅓" U1F153 # NEGATIVE CIRCLED LATIN CAPITAL LETTER D
+#- 1F154;NEGATIVE CIRCLED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;;
+<M_> {(BE)} : "🅔" U1F154 # NEGATIVE CIRCLED LATIN CAPITAL LETTER E
+#- 1F155;NEGATIVE CIRCLED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;;
+<M_> {(BF)} : "🅕" U1F155 # NEGATIVE CIRCLED LATIN CAPITAL LETTER F
+#- 1F156;NEGATIVE CIRCLED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;;
+<M_> {(BG)} : "🅖" U1F156 # NEGATIVE CIRCLED LATIN CAPITAL LETTER G
+#- 1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;
+<M_> {(BH)} : "🅗" U1F157 # NEGATIVE CIRCLED LATIN CAPITAL LETTER H
+#- 1F158;NEGATIVE CIRCLED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;;
+<M_> {(BI)} : "🅘" U1F158 # NEGATIVE CIRCLED LATIN CAPITAL LETTER I
+#- 1F159;NEGATIVE CIRCLED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;
+<M_> {(BJ)} : "🅙" U1F159 # NEGATIVE CIRCLED LATIN CAPITAL LETTER J
+#- 1F15A;NEGATIVE CIRCLED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;;
+<M_> {(BK)} : "🅚" U1F15A # NEGATIVE CIRCLED LATIN CAPITAL LETTER K
+#- 1F15B;NEGATIVE CIRCLED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;
+<M_> {(BL)} : "🅛" U1F15B # NEGATIVE CIRCLED LATIN CAPITAL LETTER L
+#- 1F15C;NEGATIVE CIRCLED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;
+<M_> {(BM)} : "🅜" U1F15C # NEGATIVE CIRCLED LATIN CAPITAL LETTER M
+#- 1F15D;NEGATIVE CIRCLED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;;
+<M_> {(BN)} : "🅝" U1F15D # NEGATIVE CIRCLED LATIN CAPITAL LETTER N
+#- 1F15E;NEGATIVE CIRCLED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;;
+<M_> {(BO)} : "🅞" U1F15E # NEGATIVE CIRCLED LATIN CAPITAL LETTER O
+#- 1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
+<M_> {(BP)} : "🅟" U1F15F # NEGATIVE CIRCLED LATIN CAPITAL LETTER P
+#- 1F160;NEGATIVE CIRCLED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;;
+<M_> {(BQ)} : "🅠" U1F160 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
+#- 1F161;NEGATIVE CIRCLED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;;
+<M_> {(BR)} : "🅡" U1F161 # NEGATIVE CIRCLED LATIN CAPITAL LETTER R
+#- 1F162;NEGATIVE CIRCLED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;;
+<M_> {(BS)} : "🅢" U1F162 # NEGATIVE CIRCLED LATIN CAPITAL LETTER S
+#- 1F163;NEGATIVE CIRCLED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;;
+<M_> {(BT)} : "🅣" U1F163 # NEGATIVE CIRCLED LATIN CAPITAL LETTER T
+#- 1F164;NEGATIVE CIRCLED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;;
+<M_> {(BU)} : "🅤" U1F164 # NEGATIVE CIRCLED LATIN CAPITAL LETTER U
+#- 1F165;NEGATIVE CIRCLED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;;
+<M_> {(BV)} : "🅥" U1F165 # NEGATIVE CIRCLED LATIN CAPITAL LETTER V
+#- 1F166;NEGATIVE CIRCLED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;;
+<M_> {(BW)} : "🅦" U1F166 # NEGATIVE CIRCLED LATIN CAPITAL LETTER W
+#- 1F167;NEGATIVE CIRCLED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;;
+<M_> {(BX)} : "🅧" U1F167 # NEGATIVE CIRCLED LATIN CAPITAL LETTER X
+#- 1F168;NEGATIVE CIRCLED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;;
+<M_> {(BY)} : "🅨" U1F168 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y
+#- 1F169;NEGATIVE CIRCLED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;;
+<M_> {(BZ)} : "🅩" U1F169 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+#- 1F170;NEGATIVE SQUARED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;
+<M_> {[Ba]} : "🅰" U1F170 # NEGATIVE SQUARED LATIN CAPITAL LETTER A
+#- 1F171;NEGATIVE SQUARED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;
+<M_> {[Bb]} : "🅱" U1F171 # NEGATIVE SQUARED LATIN CAPITAL LETTER B
+#- 1F172;NEGATIVE SQUARED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;
+<M_> {[Bc]} : "🅲" U1F172 # NEGATIVE SQUARED LATIN CAPITAL LETTER C
+#- 1F173;NEGATIVE SQUARED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;;
+<M_> {[Bd]} : "🅳" U1F173 # NEGATIVE SQUARED LATIN CAPITAL LETTER D
+#- 1F174;NEGATIVE SQUARED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;;
+<M_> {[Be]} : "🅴" U1F174 # NEGATIVE SQUARED LATIN CAPITAL LETTER E
+#- 1F175;NEGATIVE SQUARED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;;
+<M_> {[Bf]} : "🅵" U1F175 # NEGATIVE SQUARED LATIN CAPITAL LETTER F
+#- 1F176;NEGATIVE SQUARED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;;
+<M_> {[Bg]} : "🅶" U1F176 # NEGATIVE SQUARED LATIN CAPITAL LETTER G
+#- 1F177;NEGATIVE SQUARED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;
+<M_> {[Bh]} : "🅷" U1F177 # NEGATIVE SQUARED LATIN CAPITAL LETTER H
+#- 1F178;NEGATIVE SQUARED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;;
+<M_> {[Bi]} : "🅸" U1F178 # NEGATIVE SQUARED LATIN CAPITAL LETTER I
+#- 1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;
+<M_> {[Bj]} : "🅹" U1F179 # NEGATIVE SQUARED LATIN CAPITAL LETTER J
+#- 1F17A;NEGATIVE SQUARED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;;
+<M_> {[Bk]} : "🅺" U1F17A # NEGATIVE SQUARED LATIN CAPITAL LETTER K
+#- 1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;
+<M_> {[Bl]} : "🅻" U1F17B # NEGATIVE SQUARED LATIN CAPITAL LETTER L
+#- 1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;
+<M_> {[Bm]} : "🅼" U1F17C # NEGATIVE SQUARED LATIN CAPITAL LETTER M
+#- 1F17D;NEGATIVE SQUARED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;;
+<M_> {[Bn]} : "🅽" U1F17D # NEGATIVE SQUARED LATIN CAPITAL LETTER N
+#- 1F17E;NEGATIVE SQUARED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;;
+<M_> {[Bo]} : "🅾" U1F17E # NEGATIVE SQUARED LATIN CAPITAL LETTER O
+#- 1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
+<M_> {[Bp]} : "🅿" U1F17F # NEGATIVE SQUARED LATIN CAPITAL LETTER P
+#- 1F180;NEGATIVE SQUARED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;;
+<M_> {[Bq]} : "🆀" U1F180 # NEGATIVE SQUARED LATIN CAPITAL LETTER Q
+#- 1F181;NEGATIVE SQUARED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;;
+<M_> {[Br]} : "🆁" U1F181 # NEGATIVE SQUARED LATIN CAPITAL LETTER R
+#- 1F182;NEGATIVE SQUARED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;;
+<M_> {[Bs]} : "🆂" U1F182 # NEGATIVE SQUARED LATIN CAPITAL LETTER S
+#- 1F183;NEGATIVE SQUARED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;;
+<M_> {[Bt]} : "🆃" U1F183 # NEGATIVE SQUARED LATIN CAPITAL LETTER T
+#- 1F184;NEGATIVE SQUARED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;;
+<M_> {[Bu]} : "🆄" U1F184 # NEGATIVE SQUARED LATIN CAPITAL LETTER U
+#- 1F185;NEGATIVE SQUARED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;;
+<M_> {[Bv]} : "🆅" U1F185 # NEGATIVE SQUARED LATIN CAPITAL LETTER V
+#- 1F186;NEGATIVE SQUARED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;;
+<M_> {[Bw]} : "🆆" U1F186 # NEGATIVE SQUARED LATIN CAPITAL LETTER W
+#- 1F187;NEGATIVE SQUARED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;;
+<M_> {[Bx]} : "🆇" U1F187 # NEGATIVE SQUARED LATIN CAPITAL LETTER X
+#- 1F188;NEGATIVE SQUARED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;;
+<M_> {[By]} : "🆈" U1F188 # NEGATIVE SQUARED LATIN CAPITAL LETTER Y
+#- 1F189;NEGATIVE SQUARED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;;
+<M_> {[Bz]} : "🆉" U1F189 # NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+#- 1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
+#- 1F18F;NEGATIVE SQUARED WC;So;0;L;;;;;N;;;;;
+<M_> {[BWC]} : "🆏" U1F18F # NEGATIVE SQUARED WC
+### Using <parenleft> <parenleft> ... <parenright> <parenright> conflicts
+### with system entries. Using the *letter* O.
+#- 24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+<M_> {(O1)} : "⓵" U24F5 # DOUBLE CIRCLED DIGIT ONE
+#- 24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+<M_> {(O2)} : "⓶" U24F6 # DOUBLE CIRCLED DIGIT TWO
+#- 24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+<M_> {(O3)} : "⓷" U24F7 # DOUBLE CIRCLED DIGIT THREE
+#- 24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+<M_> {(O4)} : "⓸" U24F8 # DOUBLE CIRCLED DIGIT FOUR
+#- 24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+<M_> {(O5)} : "⓹" U24F9 # DOUBLE CIRCLED DIGIT FIVE
+#- 24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+<M_> {(O6)} : "⓺" U24FA # DOUBLE CIRCLED DIGIT SIX
+#- 24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+<M_> {(O7)} : "⓻" U24FB # DOUBLE CIRCLED DIGIT SEVEN
+#- 24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+<M_> {(O8)} : "⓼" U24FC # DOUBLE CIRCLED DIGIT EIGHT
+#- 24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+<M_> {(O9)} : "⓽" U24FD # DOUBLE CIRCLED DIGIT NINE
+#- 24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+<M_> {(O10)} : "⓾" U24FE # DOUBLE CIRCLED NUMBER TEN
diff --git a/parens.compose b/parens.compose
index 05f7c17..9291fc3 100644
--- a/parens.compose
+++ b/parens.compose
@@ -1,179 +1,357 @@
+#- 2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
<Multi_key> <parenleft> <period> <1> <parenright> : "⑴" U2474 # PARENTHESIZED DIGIT ONE
+#- 2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
<Multi_key> <parenleft> <period> <2> <parenright> : "⑵" U2475 # PARENTHESIZED DIGIT TWO
+#- 2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
<Multi_key> <parenleft> <period> <3> <parenright> : "⑶" U2476 # PARENTHESIZED DIGIT THREE
+#- 2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
<Multi_key> <parenleft> <period> <4> <parenright> : "⑷" U2477 # PARENTHESIZED DIGIT FOUR
+#- 2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
<Multi_key> <parenleft> <period> <5> <parenright> : "⑸" U2478 # PARENTHESIZED DIGIT FIVE
+#- 2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
<Multi_key> <parenleft> <period> <6> <parenright> : "⑹" U2479 # PARENTHESIZED DIGIT SIX
+#- 247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
<Multi_key> <parenleft> <period> <7> <parenright> : "⑺" U247A # PARENTHESIZED DIGIT SEVEN
+#- 247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
<Multi_key> <parenleft> <period> <8> <parenright> : "⑻" U247B # PARENTHESIZED DIGIT EIGHT
+#- 247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
<Multi_key> <parenleft> <period> <9> <parenright> : "⑼" U247C # PARENTHESIZED DIGIT NINE
+#- 247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
<Multi_key> <parenleft> <period> <1> <0> <parenright> : "⑽" U247D # PARENTHESIZED NUMBER TEN
+#- 247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
<Multi_key> <parenleft> <period> <1> <1> <parenright> : "⑾" U247E # PARENTHESIZED NUMBER ELEVEN
+#- 247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
<Multi_key> <parenleft> <period> <1> <2> <parenright> : "⑿" U247F # PARENTHESIZED NUMBER TWELVE
+#- 2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
<Multi_key> <parenleft> <period> <1> <3> <parenright> : "⒀" U2480 # PARENTHESIZED NUMBER THIRTEEN
+#- 2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
<Multi_key> <parenleft> <period> <1> <4> <parenright> : "⒁" U2481 # PARENTHESIZED NUMBER FOURTEEN
+#- 2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
<Multi_key> <parenleft> <period> <1> <5> <parenright> : "⒂" U2482 # PARENTHESIZED NUMBER FIFTEEN
+#- 2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
<Multi_key> <parenleft> <period> <1> <6> <parenright> : "⒃" U2483 # PARENTHESIZED NUMBER SIXTEEN
+#- 2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
<Multi_key> <parenleft> <period> <1> <7> <parenright> : "⒄" U2484 # PARENTHESIZED NUMBER SEVENTEEN
+#- 2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
<Multi_key> <parenleft> <period> <1> <8> <parenright> : "⒅" U2485 # PARENTHESIZED NUMBER EIGHTEEN
+#- 2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
<Multi_key> <parenleft> <period> <1> <9> <parenright> : "⒆" U2486 # PARENTHESIZED NUMBER NINETEEN
+#- 2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
<Multi_key> <parenleft> <period> <2> <0> <parenright> : "⒇" U2487 # PARENTHESIZED NUMBER TWENTY
+#- 249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <a> <parenright> : "⒜" U249C # PARENTHESIZED LATIN SMALL LETTER A
+#- 249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <b> <parenright> : "⒝" U249D # PARENTHESIZED LATIN SMALL LETTER B
+#- 249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <c> <parenright> : "⒞" U249E # PARENTHESIZED LATIN SMALL LETTER C
+#- 249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <d> <parenright> : "⒟" U249F # PARENTHESIZED LATIN SMALL LETTER D
+#- 24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <e> <parenright> : "⒠" U24A0 # PARENTHESIZED LATIN SMALL LETTER E
+#- 24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <f> <parenright> : "⒡" U24A1 # PARENTHESIZED LATIN SMALL LETTER F
+#- 24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <g> <parenright> : "⒢" U24A2 # PARENTHESIZED LATIN SMALL LETTER G
+#- 24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <h> <parenright> : "⒣" U24A3 # PARENTHESIZED LATIN SMALL LETTER H
+#- 24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <i> <parenright> : "⒤" U24A4 # PARENTHESIZED LATIN SMALL LETTER I
+#- 24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <j> <parenright> : "⒥" U24A5 # PARENTHESIZED LATIN SMALL LETTER J
+#- 24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <k> <parenright> : "⒦" U24A6 # PARENTHESIZED LATIN SMALL LETTER K
+#- 24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <l> <parenright> : "⒧" U24A7 # PARENTHESIZED LATIN SMALL LETTER L
+#- 24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <m> <parenright> : "⒨" U24A8 # PARENTHESIZED LATIN SMALL LETTER M
+#- 24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <n> <parenright> : "⒩" U24A9 # PARENTHESIZED LATIN SMALL LETTER N
+#- 24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <o> <parenright> : "⒪" U24AA # PARENTHESIZED LATIN SMALL LETTER O
+#- 24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <p> <parenright> : "⒫" U24AB # PARENTHESIZED LATIN SMALL LETTER P
+#- 24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <q> <parenright> : "⒬" U24AC # PARENTHESIZED LATIN SMALL LETTER Q
+#- 24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <r> <parenright> : "⒭" U24AD # PARENTHESIZED LATIN SMALL LETTER R
+#- 24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <s> <parenright> : "⒮" U24AE # PARENTHESIZED LATIN SMALL LETTER S
+#- 24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <t> <parenright> : "⒯" U24AF # PARENTHESIZED LATIN SMALL LETTER T
+#- 24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <u> <parenright> : "⒰" U24B0 # PARENTHESIZED LATIN SMALL LETTER U
+#- 24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <v> <parenright> : "⒱" U24B1 # PARENTHESIZED LATIN SMALL LETTER V
+#- 24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <w> <parenright> : "⒲" U24B2 # PARENTHESIZED LATIN SMALL LETTER W
+#- 24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <x> <parenright> : "⒳" U24B3 # PARENTHESIZED LATIN SMALL LETTER X
+#- 24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <y> <parenright> : "⒴" U24B4 # PARENTHESIZED LATIN SMALL LETTER Y
+#- 24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <z> <parenright> : "⒵" U24B5 # PARENTHESIZED LATIN SMALL LETTER Z
+#- 1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <A> <parenright> : "🄐" U1F110 # PARENTHESIZED LATIN CAPITAL LETTER A
+#- 1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <B> <parenright> : "🄑" U1F111 # PARENTHESIZED LATIN CAPITAL LETTER B
+#- 1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <C> <parenright> : "🄒" U1F112 # PARENTHESIZED LATIN CAPITAL LETTER C
+#- 1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L;<compat> 0028 0044 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <D> <parenright> : "🄓" U1F113 # PARENTHESIZED LATIN CAPITAL LETTER D
+#- 1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L;<compat> 0028 0045 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <E> <parenright> : "🄔" U1F114 # PARENTHESIZED LATIN CAPITAL LETTER E
+#- 1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L;<compat> 0028 0046 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <F> <parenright> : "🄕" U1F115 # PARENTHESIZED LATIN CAPITAL LETTER F
+#- 1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L;<compat> 0028 0047 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <G> <parenright> : "🄖" U1F116 # PARENTHESIZED LATIN CAPITAL LETTER G
+#- 1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L;<compat> 0028 0048 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <H> <parenright> : "🄗" U1F117 # PARENTHESIZED LATIN CAPITAL LETTER H
+#- 1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L;<compat> 0028 0049 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <I> <parenright> : "🄘" U1F118 # PARENTHESIZED LATIN CAPITAL LETTER I
+#- 1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L;<compat> 0028 004A 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <J> <parenright> : "🄙" U1F119 # PARENTHESIZED LATIN CAPITAL LETTER J
+#- 1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L;<compat> 0028 004B 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <K> <parenright> : "🄚" U1F11A # PARENTHESIZED LATIN CAPITAL LETTER K
+#- 1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L;<compat> 0028 004C 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <L> <parenright> : "🄛" U1F11B # PARENTHESIZED LATIN CAPITAL LETTER L
+#- 1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L;<compat> 0028 004D 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <M> <parenright> : "🄜" U1F11C # PARENTHESIZED LATIN CAPITAL LETTER M
+#- 1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L;<compat> 0028 004E 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <N> <parenright> : "🄝" U1F11D # PARENTHESIZED LATIN CAPITAL LETTER N
+#- 1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L;<compat> 0028 004F 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <O> <parenright> : "🄞" U1F11E # PARENTHESIZED LATIN CAPITAL LETTER O
+#- 1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L;<compat> 0028 0050 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <P> <parenright> : "🄟" U1F11F # PARENTHESIZED LATIN CAPITAL LETTER P
+#- 1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L;<compat> 0028 0051 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <Q> <parenright> : "🄠" U1F120 # PARENTHESIZED LATIN CAPITAL LETTER Q
+#- 1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L;<compat> 0028 0052 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <R> <parenright> : "🄡" U1F121 # PARENTHESIZED LATIN CAPITAL LETTER R
+#- 1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L;<compat> 0028 0053 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <S> <parenright> : "🄢" U1F122 # PARENTHESIZED LATIN CAPITAL LETTER S
+#- 1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L;<compat> 0028 0054 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <T> <parenright> : "🄣" U1F123 # PARENTHESIZED LATIN CAPITAL LETTER T
+#- 1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L;<compat> 0028 0055 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <U> <parenright> : "🄤" U1F124 # PARENTHESIZED LATIN CAPITAL LETTER U
+#- 1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L;<compat> 0028 0056 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <V> <parenright> : "🄥" U1F125 # PARENTHESIZED LATIN CAPITAL LETTER V
+#- 1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L;<compat> 0028 0057 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <W> <parenright> : "🄦" U1F126 # PARENTHESIZED LATIN CAPITAL LETTER W
+#- 1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L;<compat> 0028 0058 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <X> <parenright> : "🄧" U1F127 # PARENTHESIZED LATIN CAPITAL LETTER X
+#- 1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L;<compat> 0028 0059 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <Y> <parenright> : "🄨" U1F128 # PARENTHESIZED LATIN CAPITAL LETTER Y
+#- 1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L;<compat> 0028 005A 0029;;;;N;;;;;
<Multi_key> <parenleft> <period> <Z> <parenright> : "🄩" U1F129 # PARENTHESIZED LATIN CAPITAL LETTER Z
+#- 2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
<Multi_key> <period> <1> <period> : "⒈" U2488 # DIGIT ONE FULL STOP
+#- 2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
<Multi_key> <period> <2> <period> : "⒉" U2489 # DIGIT TWO FULL STOP
+#- 248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
<Multi_key> <period> <3> <period> : "⒊" U248A # DIGIT THREE FULL STOP
+#- 248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
<Multi_key> <period> <4> <period> : "⒋" U248B # DIGIT FOUR FULL STOP
+#- 248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
<Multi_key> <period> <5> <period> : "⒌" U248C # DIGIT FIVE FULL STOP
+#- 248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
<Multi_key> <period> <6> <period> : "⒍" U248D # DIGIT SIX FULL STOP
+#- 248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
<Multi_key> <period> <7> <period> : "⒎" U248E # DIGIT SEVEN FULL STOP
+#- 248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
<Multi_key> <period> <8> <period> : "⒏" U248F # DIGIT EIGHT FULL STOP
+#- 2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
<Multi_key> <period> <9> <period> : "⒐" U2490 # DIGIT NINE FULL STOP
+#- 2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
<Multi_key> <period> <1> <0> <period> : "⒑" U2491 # NUMBER TEN FULL STOP
+#- 2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
<Multi_key> <period> <1> <1> <period> : "⒒" U2492 # NUMBER ELEVEN FULL STOP
+#- 2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
<Multi_key> <period> <1> <2> <period> : "⒓" U2493 # NUMBER TWELVE FULL STOP
+#- 2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
<Multi_key> <period> <1> <3> <period> : "⒔" U2494 # NUMBER THIRTEEN FULL STOP
+#- 2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
<Multi_key> <period> <1> <4> <period> : "⒕" U2495 # NUMBER FOURTEEN FULL STOP
+#- 2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
<Multi_key> <period> <1> <5> <period> : "⒖" U2496 # NUMBER FIFTEEN FULL STOP
+#- 2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
<Multi_key> <period> <1> <6> <period> : "⒗" U2497 # NUMBER SIXTEEN FULL STOP
+#- 2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
<Multi_key> <period> <1> <7> <period> : "⒘" U2498 # NUMBER SEVENTEEN FULL STOP
+#- 2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
<Multi_key> <period> <1> <8> <period> : "⒙" U2499 # NUMBER EIGHTEEN FULL STOP
+#- 249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
<Multi_key> <period> <1> <9> <period> : "⒚" U249A # NUMBER NINETEEN FULL STOP
+#- 249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
<Multi_key> <period> <2> <0> <period> : "⒛" U249B # NUMBER TWENTY FULL STOP
+#- 1F100;DIGIT ZERO FULL STOP;No;0;EN;<compat> 0030 002E;;0;0;N;;;;;
<Multi_key> <period> <0> <period> : "🄀" U1F100 # DIGIT ZERO FULL STOP
+#- 24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
<Multi_key> <parenleft> <B> <1> <1> <parenright> : "⓫" U24EB # NEGATIVE CIRCLED NUMBER ELEVEN
+#- 24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
<Multi_key> <parenleft> <B> <1> <2> <parenright> : "⓬" U24EC # NEGATIVE CIRCLED NUMBER TWELVE
+#- 24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
<Multi_key> <parenleft> <B> <1> <3> <parenright> : "⓭" U24ED # NEGATIVE CIRCLED NUMBER THIRTEEN
+#- 24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
<Multi_key> <parenleft> <B> <1> <4> <parenright> : "⓮" U24EE # NEGATIVE CIRCLED NUMBER FOURTEEN
+#- 24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
<Multi_key> <parenleft> <B> <1> <5> <parenright> : "⓯" U24EF # NEGATIVE CIRCLED NUMBER FIFTEEN
+#- 24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
<Multi_key> <parenleft> <B> <1> <6> <parenright> : "⓰" U24F0 # NEGATIVE CIRCLED NUMBER SIXTEEN
+#- 24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
<Multi_key> <parenleft> <B> <1> <7> <parenright> : "⓱" U24F1 # NEGATIVE CIRCLED NUMBER SEVENTEEN
+#- 24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
<Multi_key> <parenleft> <B> <1> <8> <parenright> : "⓲" U24F2 # NEGATIVE CIRCLED NUMBER EIGHTEEN
+#- 24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
<Multi_key> <parenleft> <B> <1> <9> <parenright> : "⓳" U24F3 # NEGATIVE CIRCLED NUMBER NINETEEN
+#- 24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
<Multi_key> <parenleft> <B> <2> <0> <parenright> : "⓴" U24F4 # NEGATIVE CIRCLED NUMBER TWENTY
+#- 24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
<Multi_key> <parenleft> <B> <0> <parenright> : "⓿" U24FF # NEGATIVE CIRCLED DIGIT ZERO
+#- 2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
<Multi_key> <parenleft> <B> <1> <parenright> : "❶" U2776 # DINGBAT NEGATIVE CIRCLED DIGIT ONE
+#- 2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
<Multi_key> <parenleft> <B> <2> <parenright> : "❷" U2777 # DINGBAT NEGATIVE CIRCLED DIGIT TWO
+#- 2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
<Multi_key> <parenleft> <B> <3> <parenright> : "❸" U2778 # DINGBAT NEGATIVE CIRCLED DIGIT THREE
+#- 2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
<Multi_key> <parenleft> <B> <4> <parenright> : "❹" U2779 # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+#- 277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
<Multi_key> <parenleft> <B> <5> <parenright> : "❺" U277A # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+#- 277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
<Multi_key> <parenleft> <B> <6> <parenright> : "❻" U277B # DINGBAT NEGATIVE CIRCLED DIGIT SIX
+#- 277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
<Multi_key> <parenleft> <B> <7> <parenright> : "❼" U277C # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+#- 277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
<Multi_key> <parenleft> <B> <8> <parenright> : "❽" U277D # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+#- 277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
<Multi_key> <parenleft> <B> <9> <parenright> : "❾" U277E # DINGBAT NEGATIVE CIRCLED DIGIT NINE
+#- 277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
<Multi_key> <parenleft> <B> <1> <0> <parenright> : "❿" U277F # DINGBAT NEGATIVE CIRCLED NUMBER TEN
+#- 1F150;NEGATIVE CIRCLED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <A> <parenright> : "🅐" U1F150 # NEGATIVE CIRCLED LATIN CAPITAL LETTER A
+#- 1F151;NEGATIVE CIRCLED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <B> <parenright> : "🅑" U1F151 # NEGATIVE CIRCLED LATIN CAPITAL LETTER B
+#- 1F152;NEGATIVE CIRCLED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <C> <parenright> : "🅒" U1F152 # NEGATIVE CIRCLED LATIN CAPITAL LETTER C
+#- 1F153;NEGATIVE CIRCLED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <D> <parenright> : "🅓" U1F153 # NEGATIVE CIRCLED LATIN CAPITAL LETTER D
+#- 1F154;NEGATIVE CIRCLED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <E> <parenright> : "🅔" U1F154 # NEGATIVE CIRCLED LATIN CAPITAL LETTER E
+#- 1F155;NEGATIVE CIRCLED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <F> <parenright> : "🅕" U1F155 # NEGATIVE CIRCLED LATIN CAPITAL LETTER F
+#- 1F156;NEGATIVE CIRCLED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <G> <parenright> : "🅖" U1F156 # NEGATIVE CIRCLED LATIN CAPITAL LETTER G
+#- 1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <H> <parenright> : "🅗" U1F157 # NEGATIVE CIRCLED LATIN CAPITAL LETTER H
+#- 1F158;NEGATIVE CIRCLED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <I> <parenright> : "🅘" U1F158 # NEGATIVE CIRCLED LATIN CAPITAL LETTER I
+#- 1F159;NEGATIVE CIRCLED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <J> <parenright> : "🅙" U1F159 # NEGATIVE CIRCLED LATIN CAPITAL LETTER J
+#- 1F15A;NEGATIVE CIRCLED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <K> <parenright> : "🅚" U1F15A # NEGATIVE CIRCLED LATIN CAPITAL LETTER K
+#- 1F15B;NEGATIVE CIRCLED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <L> <parenright> : "🅛" U1F15B # NEGATIVE CIRCLED LATIN CAPITAL LETTER L
+#- 1F15C;NEGATIVE CIRCLED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <M> <parenright> : "🅜" U1F15C # NEGATIVE CIRCLED LATIN CAPITAL LETTER M
+#- 1F15D;NEGATIVE CIRCLED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <N> <parenright> : "🅝" U1F15D # NEGATIVE CIRCLED LATIN CAPITAL LETTER N
+#- 1F15E;NEGATIVE CIRCLED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <O> <parenright> : "🅞" U1F15E # NEGATIVE CIRCLED LATIN CAPITAL LETTER O
+#- 1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <P> <parenright> : "🅟" U1F15F # NEGATIVE CIRCLED LATIN CAPITAL LETTER P
+#- 1F160;NEGATIVE CIRCLED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <Q> <parenright> : "🅠" U1F160 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
+#- 1F161;NEGATIVE CIRCLED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <R> <parenright> : "🅡" U1F161 # NEGATIVE CIRCLED LATIN CAPITAL LETTER R
+#- 1F162;NEGATIVE CIRCLED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <S> <parenright> : "🅢" U1F162 # NEGATIVE CIRCLED LATIN CAPITAL LETTER S
+#- 1F163;NEGATIVE CIRCLED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <T> <parenright> : "🅣" U1F163 # NEGATIVE CIRCLED LATIN CAPITAL LETTER T
+#- 1F164;NEGATIVE CIRCLED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <U> <parenright> : "🅤" U1F164 # NEGATIVE CIRCLED LATIN CAPITAL LETTER U
+#- 1F165;NEGATIVE CIRCLED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <V> <parenright> : "🅥" U1F165 # NEGATIVE CIRCLED LATIN CAPITAL LETTER V
+#- 1F166;NEGATIVE CIRCLED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <W> <parenright> : "🅦" U1F166 # NEGATIVE CIRCLED LATIN CAPITAL LETTER W
+#- 1F167;NEGATIVE CIRCLED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <X> <parenright> : "🅧" U1F167 # NEGATIVE CIRCLED LATIN CAPITAL LETTER X
+#- 1F168;NEGATIVE CIRCLED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <Y> <parenright> : "🅨" U1F168 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y
+#- 1F169;NEGATIVE CIRCLED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;;
<Multi_key> <parenleft> <B> <Z> <parenright> : "🅩" U1F169 # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+#- 1F170;NEGATIVE SQUARED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <a> <bracketright> : "🅰" U1F170 # NEGATIVE SQUARED LATIN CAPITAL LETTER A
+#- 1F171;NEGATIVE SQUARED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <b> <bracketright> : "🅱" U1F171 # NEGATIVE SQUARED LATIN CAPITAL LETTER B
+#- 1F172;NEGATIVE SQUARED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <c> <bracketright> : "🅲" U1F172 # NEGATIVE SQUARED LATIN CAPITAL LETTER C
+#- 1F173;NEGATIVE SQUARED LATIN CAPITAL LETTER D;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <d> <bracketright> : "🅳" U1F173 # NEGATIVE SQUARED LATIN CAPITAL LETTER D
+#- 1F174;NEGATIVE SQUARED LATIN CAPITAL LETTER E;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <e> <bracketright> : "🅴" U1F174 # NEGATIVE SQUARED LATIN CAPITAL LETTER E
+#- 1F175;NEGATIVE SQUARED LATIN CAPITAL LETTER F;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <f> <bracketright> : "🅵" U1F175 # NEGATIVE SQUARED LATIN CAPITAL LETTER F
+#- 1F176;NEGATIVE SQUARED LATIN CAPITAL LETTER G;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <g> <bracketright> : "🅶" U1F176 # NEGATIVE SQUARED LATIN CAPITAL LETTER G
+#- 1F177;NEGATIVE SQUARED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <h> <bracketright> : "🅷" U1F177 # NEGATIVE SQUARED LATIN CAPITAL LETTER H
+#- 1F178;NEGATIVE SQUARED LATIN CAPITAL LETTER I;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <i> <bracketright> : "🅸" U1F178 # NEGATIVE SQUARED LATIN CAPITAL LETTER I
+#- 1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <j> <bracketright> : "🅹" U1F179 # NEGATIVE SQUARED LATIN CAPITAL LETTER J
+#- 1F17A;NEGATIVE SQUARED LATIN CAPITAL LETTER K;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <k> <bracketright> : "🅺" U1F17A # NEGATIVE SQUARED LATIN CAPITAL LETTER K
+#- 1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <l> <bracketright> : "🅻" U1F17B # NEGATIVE SQUARED LATIN CAPITAL LETTER L
+#- 1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <m> <bracketright> : "🅼" U1F17C # NEGATIVE SQUARED LATIN CAPITAL LETTER M
+#- 1F17D;NEGATIVE SQUARED LATIN CAPITAL LETTER N;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <n> <bracketright> : "🅽" U1F17D # NEGATIVE SQUARED LATIN CAPITAL LETTER N
+#- 1F17E;NEGATIVE SQUARED LATIN CAPITAL LETTER O;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <o> <bracketright> : "🅾" U1F17E # NEGATIVE SQUARED LATIN CAPITAL LETTER O
+#- 1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <p> <bracketright> : "🅿" U1F17F # NEGATIVE SQUARED LATIN CAPITAL LETTER P
+#- 1F180;NEGATIVE SQUARED LATIN CAPITAL LETTER Q;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <q> <bracketright> : "🆀" U1F180 # NEGATIVE SQUARED LATIN CAPITAL LETTER Q
+#- 1F181;NEGATIVE SQUARED LATIN CAPITAL LETTER R;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <r> <bracketright> : "🆁" U1F181 # NEGATIVE SQUARED LATIN CAPITAL LETTER R
+#- 1F182;NEGATIVE SQUARED LATIN CAPITAL LETTER S;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <s> <bracketright> : "🆂" U1F182 # NEGATIVE SQUARED LATIN CAPITAL LETTER S
+#- 1F183;NEGATIVE SQUARED LATIN CAPITAL LETTER T;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <t> <bracketright> : "🆃" U1F183 # NEGATIVE SQUARED LATIN CAPITAL LETTER T
+#- 1F184;NEGATIVE SQUARED LATIN CAPITAL LETTER U;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <u> <bracketright> : "🆄" U1F184 # NEGATIVE SQUARED LATIN CAPITAL LETTER U
+#- 1F185;NEGATIVE SQUARED LATIN CAPITAL LETTER V;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <v> <bracketright> : "🆅" U1F185 # NEGATIVE SQUARED LATIN CAPITAL LETTER V
+#- 1F186;NEGATIVE SQUARED LATIN CAPITAL LETTER W;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <w> <bracketright> : "🆆" U1F186 # NEGATIVE SQUARED LATIN CAPITAL LETTER W
+#- 1F187;NEGATIVE SQUARED LATIN CAPITAL LETTER X;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <x> <bracketright> : "🆇" U1F187 # NEGATIVE SQUARED LATIN CAPITAL LETTER X
+#- 1F188;NEGATIVE SQUARED LATIN CAPITAL LETTER Y;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <y> <bracketright> : "🆈" U1F188 # NEGATIVE SQUARED LATIN CAPITAL LETTER Y
+#- 1F189;NEGATIVE SQUARED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <z> <bracketright> : "🆉" U1F189 # NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+#- 1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
+#- 1F18F;NEGATIVE SQUARED WC;So;0;L;;;;;N;;;;;
<Multi_key> <bracketleft> <B> <W> <C> <bracketright> : "🆏" U1F18F # NEGATIVE SQUARED WC
### Using <parenleft> <parenleft> ... <parenright> <parenright> conflicts
### with system entries. Using the *letter* O.
-<Multi_key> <parenleft> <O> <1> <parenright> : "⓵" U24F5 # DOUBLE CIRCLED DIGIT ONE
-<Multi_key> <parenleft> <O> <2> <parenright> : "⓶" U24F6 # DOUBLE CIRCLED DIGIT TWO
-<Multi_key> <parenleft> <O> <3> <parenright> : "⓷" U24F7 # DOUBLE CIRCLED DIGIT THREE
-<Multi_key> <parenleft> <O> <4> <parenright> : "⓸" U24F8 # DOUBLE CIRCLED DIGIT FOUR
-<Multi_key> <parenleft> <O> <5> <parenright> : "⓹" U24F9 # DOUBLE CIRCLED DIGIT FIVE
-<Multi_key> <parenleft> <O> <6> <parenright> : "⓺" U24FA # DOUBLE CIRCLED DIGIT SIX
-<Multi_key> <parenleft> <O> <7> <parenright> : "⓻" U24FB # DOUBLE CIRCLED DIGIT SEVEN
-<Multi_key> <parenleft> <O> <8> <parenright> : "⓼" U24FC # DOUBLE CIRCLED DIGIT EIGHT
-<Multi_key> <parenleft> <O> <9> <parenright> : "⓽" U24FD # DOUBLE CIRCLED DIGIT NINE
-<Multi_key> <parenleft> <O> <1> <0> <parenright> : "⓾" U24FE # DOUBLE CIRCLED NUMBER TEN
+#- 24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+<Multi_key> <parenleft> <O> <1> <parenright> : "⓵" U24F5 # DOUBLE CIRCLED DIGIT ONE
+#- 24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+<Multi_key> <parenleft> <O> <2> <parenright> : "⓶" U24F6 # DOUBLE CIRCLED DIGIT TWO
+#- 24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+<Multi_key> <parenleft> <O> <3> <parenright> : "⓷" U24F7 # DOUBLE CIRCLED DIGIT THREE
+#- 24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+<Multi_key> <parenleft> <O> <4> <parenright> : "⓸" U24F8 # DOUBLE CIRCLED DIGIT FOUR
+#- 24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+<Multi_key> <parenleft> <O> <5> <parenright> : "⓹" U24F9 # DOUBLE CIRCLED DIGIT FIVE
+#- 24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+<Multi_key> <parenleft> <O> <6> <parenright> : "⓺" U24FA # DOUBLE CIRCLED DIGIT SIX
+#- 24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+<Multi_key> <parenleft> <O> <7> <parenright> : "⓻" U24FB # DOUBLE CIRCLED DIGIT SEVEN
+#- 24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+<Multi_key> <parenleft> <O> <8> <parenright> : "⓼" U24FC # DOUBLE CIRCLED DIGIT EIGHT
+#- 24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+<Multi_key> <parenleft> <O> <9> <parenright> : "⓽" U24FD # DOUBLE CIRCLED DIGIT NINE
+#- 24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+<Multi_key> <parenleft> <O> <1> <0> <parenright> : "⓾" U24FE # DOUBLE CIRCLED NUMBER TEN
diff --git a/xcompose-mode.el b/xcompose-mode.el
new file mode 100644
index 0000000..4140bcb
--- /dev/null
+++ b/xcompose-mode.el
@@ -0,0 +1,254 @@
+;;; xcompose.el --- major mode for editing .XCompose files
+;; Copyright (C) 2019 Mark Shoulson
+
+;; Author: Mark Shoulson
+;; Maintainer: Mark Shoulson
+;; URL:
+
+;; This file is NOT part of GNU Emacs
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; This file provides the major mode xcompose-mode, for use in editing
+;; .XCompose files, which are used in X-windows systems to define the
+;; behavior certain sequential keystroke combinations, usually involving
+;; the "Multi-Key". It was also built with an eye towards use with "base"
+;; files, which are slightly simplified compose files I use for
+;; convenience.
+
+;; Mainly fontifying; eventually should do better formatting, finding the
+;; right tab stops etc.
+
+;;; Code:
+
+(defface xcompose-angle-face
+ ;; Black seems to stand out best, what can I say?
+ '((t (:inherit bold)))
+ "Face for the angle brackets (<>) around key-names."
+ :group 'xcompose-mode)
+
+(defface xcompose-keys-face
+ '((t (:inherit font-lock-constant-face)))
+ "Face for the key names."
+ :group 'xcompose-mode)
+
+(defface xcompose-string-face
+ ;; I feel like these should really stand out, not just plain-jane
+ ;; font-lock-string-face. Even to the point of increasing the size and
+ ;; drawing boxes.
+ '((t (:inherit font-lock-string-face
+ :height 1.2
+ :box "black")))
+ "Face for the quoted strings containing the character(s) to be produced."
+ :group 'xcompose-mode)
+
+(defface xcompose-quotemark-face
+ '((t (:inherit font-lock-string-face
+ :foreground "dark orchid")))
+ "Face for quote-marks around character strings."
+ :group 'xcompose-mode)
+
+;; Yes, kind of a lot of faces and a lot of fine-tuning of the line's
+;; appearance. Maybe a bit too much.
+(defface xcompose-num-face
+ '((t (:inherit font-lock-preprocessor-face :weight bold)))
+ "Face for the hex numbers identifying the code-point."
+ :group 'xcompose-mode)
+
+(defface xcompose-U-face
+ '((t (:inherit font-lock-preprocessor-face)))
+ "Face for the U before the hex numbers."
+ :group 'xcompose-mode)
+
+(defface xcompose-colon-face
+ '((t (:inherit bold)))
+ "Face for the \":\" separating the keystrokes from the character string."
+ :group 'xcompose-mode)
+
+;; There are LOTS of comments (commented-out lines) in some of these files;
+;; I'd like them to fade into the background a bit, and I use a white
+;; background.
+(defface xcompose-comment-face
+ `((t (:inherit font-lock-comment-face
+ :foreground "light coral")))
+ "Face for comments in xcompose files."
+ :group 'xcompose-mode)
+
+(defvar xcompose-mode-syntax-table
+ (let ((st (make-syntax-table text-mode-syntax-table)))
+ (modify-syntax-entry ?< "(> " st)
+ (modify-syntax-entry ?> ")< " st)
+ (modify-syntax-entry ?# "< " st)
+ (modify-syntax-entry ?_ "_ " st)
+ (modify-syntax-entry ?\n "> " st)
+ (modify-syntax-entry ?{ "| " st)
+ (modify-syntax-entry ?} "| " st)
+ st)
+ "Syntax table for xcompose-mode")
+
+(defvar xcompose-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map (kbd "C-c u") 'xcompose-fill-in-char-string)
+ (define-key map (kbd "C-c C-u") 'xcompose-fill-in-char-code)
+ ;; (define-key map (kbd "C-c C-i") 'xcompose-insert-char-name)
+ (define-key map (kbd "C-c ;") 'xcompose-insert-char-name)
+ map)
+ "Keymap for xcompose-mode")
+
+(defvar xcompose-font-lock-keywords
+ '(
+ ("[<>]" . 'xcompose-angle-face)
+ ("<\\([a-zA-Z0-9_]*\\)>" . (1 'xcompose-keys-face))
+ ;; ("\"[^\"]*\"" . 'xcompose-string-face)
+ ("\"\\([^\"]*\\)\"" . (1 'xcompose-string-face))
+ ("\"" . 'xcompose-quotemark-face)
+ ("\\(U\\)\\([0-9A-Fa-f]*\\)" .
+ ((1 'xcompose-U-face) (2 'xcompose-num-face)))
+ (":" . 'xcompose-colon-face)
+ ;; I want to be able to open my "base" files too, and automatically
+ ;; de-emphasize (comment-out) things that won't be expanded (because of
+ ;; too long a string.)
+ ("^.*{[^}]\\{8,\\}}.*$" 0 'xcompose-comment-face prepend)
+ )
+ "Keywords for xcompose-mode")
+
+(defvar xcompose-key-re "<[a-zA-Z0-9_]+"
+ "Regexp matching the beginning of a keystroke.")
+
+;; I wonder if this will be useful or really annoying.
+(define-abbrev-table 'xcompose-mode-abbrev-table
+ '(("<Mu" "<Multi_key>" nil :system t)
+ ("<ap" "<apostrophe>" nil :system t)
+ ("<am" "<ampersand>" nil :system t)
+ ("<asciic" "<asciicircum>" nil :system t)
+ ("<asciit" "<asciitilde>" nil :system t)
+ ("<ast" "<asterisk>" nil :system t)
+ ("<bac" "<backslash>" nil :system t)
+ ("<bar" "<bar>" nil :system t) ; ?
+ ("<bracel" "<braceleft>" nil :system t)
+ ("<bracer" "<braceright>" nil :system t)
+ ("<bracketl" "<brakcetleft>" nil :system t)
+ ("<bracketr" "<brakcetright>" nil :system t)
+ ("<col" "<colon>" nil :system t)
+ ("<com" "<comma>" nil :system t)
+ ("<do" "<dollar>" nil :system t)
+ ("<gra" "<grave>" nil :system t)
+ ("<gre" "<greater>" nil :system t)
+ ("<le" "<less>" nil :system t)
+ ("<mi" "<minus>" nil :system t)
+ ("<nu" "<numbersign>" nil :system t)
+ ("<parenl" "<parenleft>" nil :system t)
+ ("<parenr" "<parenright>" nil :system t)
+ ("<perc" "<percent>" nil :system t)
+ ("<peri" "<period>" nil :system t)
+ ("<pl" "<plus>" nil :system t)
+ ("<quo" "<quotedbl>" nil :system t)
+ ("<se" "<semicolon>" nil :system t)
+ ("<sp" "<space>" nil :system t)
+ ("<un" "<underscore>" nil :system t)
+ )
+ "Abbrev table"
+ :regexp "\\(<[a-zA-Z0-9_]+\\)"
+ :case-fixed t)
+
+;; See https://emacs.stackexchange.com/questions/51216/how-to-expand-abbrevs-without-hitting-another-extra-key
+(defun xcompose-expand-abbrev ()
+ "Run `expand-abbrev' when text before point matches `xcompose-key-re'"
+ (when (looking-back xcompose-key-re (line-beginning-position))
+ (expand-abbrev)))
+
+;; Not really all that useful, since I can fill in the comment automatically
+(defun xcompose-capitalize-comment nil
+ "Set any trailing comment on the current line to all-caps."
+ (interactive)
+ (save-excursion
+ (let* ((eol (progn (end-of-line) (point)))
+ (bol (progn (beginning-of-line) (point))))
+ (if (search-forward comment-start eol t)
+ (upcase-region (point) eol)))))
+
+(defun xcompose-find-quoted-char (&optional pos)
+ "Find the character in quotes in the current line (or that given by pos)."
+ (save-excursion
+ (let* ((pos (or pos (point)))
+ (chr nil)
+ (eol (progn (end-of-line) (point)))
+ (bol (progn (beginning-of-line) (point))))
+ (if (search-forward ":" eol t)
+ (progn
+ (if (search-forward "\"" eol t)
+ (setq chr (char-after)))))
+ chr)))
+
+;; If you can type the char but don't know its code (using C-x 8 RET is
+;; great for this, if you know the character name)
+(defun xcompose-fill-in-char-code (&optional pos)
+ "Look up character in string on line given and fill in the UXXXX code at point."
+ (interactive)
+ (let* ((pos (or pos (point)))
+ (chr (xcompose-find-quoted-char pos)))
+ (goto-char pos)
+ (insert (format "U%.04X" chr))))
+
+;; Conversely, if you know the character code but for some reason can't
+;; type it (C-x 8 RET not working for you?) you can do it the other way.
+(defun xcompose-fill-in-char-string (&optional pos)
+ "Look up character given by UXXXX code on line given and insert into string before it, separated by a space."
+ ;; Probably needs some reformatting afterwards
+ (interactive)
+ (let* ((pos (or pos (point)))
+ (eol (progn (end-of-line) (point)))
+ (bol (progn (beginning-of-line) (point))))
+ ;; search not necessarily as precise
+ (if (search-forward-regexp "\\<U\\([[:xdigit:]]+\\)" eol)
+ (let* ((hex (match-string 1))
+ (num (string-to-number hex 16))
+ (str (char-to-string num)))
+ (goto-char (match-beginning 0))
+ (insert (format "\"%s\" " str))))))
+
+(defun xcompose-insert-char-name nil
+ "Find the (first) quoted character on the line, and insert its name as
+a comment at the end of the line."
+ (interactive)
+ (let* ((pos (point))
+ (chr (xcompose-find-quoted-char pos)))
+ (goto-char pos)
+ (move-to-column (max (+ 4 (current-column)) comment-column) t)
+ (insert (format "# %s" (get-char-code-property chr 'name)))))
+
+(define-derived-mode xcompose-mode fundamental-mode "XCompose"
+ "Major mode for .XCompose files
+
+\\{xcompose-mode-map}"
+ (font-lock-add-keywords nil xcompose-font-lock-keywords)
+ ;; (setq-local comment-start "\\s-#")
+ (setq-local comment-end "\n")
+ (setq-local comment-continue " *")
+ (setq-local comment-start-skip "/[*/]+[ \t]*")
+ (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)")
+ (setq-local font-lock-comment-face 'xcompose-comment-face)
+ (add-hook 'post-self-insert-hook #'xcompose-expand-abbrev nil t)
+ (auto-fill-mode 0)
+ )
+