-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcombining_characters.adb
More file actions
192 lines (186 loc) · 11.1 KB
/
combining_characters.adb
File metadata and controls
192 lines (186 loc) · 11.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
-----------------------------------------------------------------------
-- --
-- C O M B I N I N G _ C H A R A C T E R S --
-- --
-- B o d y --
-- --
-- $Revision: 1.0 $ --
-- --
-- Copyright (C) 2023 Hyper Quantum Pty Ltd. --
-- Written by Ross Summerfield. --
-- --
-- This package builds and provides information on the set of --
-- combining characters in the short (from Ada's perspective, --
-- Wide_Character) set. --
-- --
-- Version History: --
-- $Log$
-- --
-- Combining_Characters is free software; you can redistribute it --
-- and/or modify it under terms of the GNU General Public Licence --
-- as published by the Free Software Foundation; either version 2, --
-- or (at your option) any later version. Cell_Writer is --
-- distributed in 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 General Public --
-- Licence f or more details. You should have received a copy of --
-- the GNU General Public Licence distributed with Combining_ --
-- Characters. If not, write to the Free Software Foundation, 51 --
-- Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --
-- --
-----------------------------------------------------------------------
-- with Set_of;
package body Combining_Characters is
-- There is a standard list of combining characters. this list is not set
-- up as a set. It also does not include the Blissymbolic characters
-- (currently located in the Private area from E100 to E18C).
-- Here we create a set of combining characters.
-- type character_list is array (natural range <>) of wide_character;
-- package Combining_Sets is new Set_Of(Element => wide_character,
-- Index => natural,
-- List => character_list);
-- use Combining_Sets;
-- subtype combining_character_set is Combining_Sets.Set;
-- all_combining_characters : combining_character_set := Empty;
function Combining_Check_On(the_character:in wide_character) return boolean
is
-- Returns true if the specified character is combining.
begin
return the_character < all_combining_characters;
end Combining_Check_On;
procedure Initialise_Combining_Characters is
-- Set up the list of combining characters
begin
all_combining_characters := all_combining_characters +
Make_Set(Wide_Character'Val(16#300#), Wide_Character'Val(16#34e#))+
Make_Set(Wide_Character'Val(16#350#), Wide_Character'Val(16#36f#))+
Make_Set(Wide_Character'Val(16#483#), Wide_Character'Val(16#487#))+
Make_Set(Wide_Character'Val(16#591#), Wide_Character'Val(16#5bd#))+
Make_Set(Wide_Character'Val(16#5bf#))+
Make_Set(Wide_Character'Val(16#5c1#), Wide_Character'Val(16#5c2#))+
Make_Set(Wide_Character'Val(16#5c4#), Wide_Character'Val(16#5c5#))+
Make_Set(Wide_Character'Val(16#5c7#))+
Make_Set(Wide_Character'Val(16#610#), Wide_Character'Val(16#61a#))+
Make_Set(Wide_Character'Val(16#64b#), Wide_Character'Val(16#65f#))+
Make_Set(Wide_Character'Val(16#670#))+
Make_Set(Wide_Character'Val(16#6d6#), Wide_Character'Val(16#6dc#))+
Make_Set(Wide_Character'Val(16#6df#), Wide_Character'Val(16#6e4#))+
Make_Set(Wide_Character'Val(16#6e7#), Wide_Character'Val(16#6e8#))+
Make_Set(Wide_Character'Val(16#6ea#), Wide_Character'Val(16#6ed#))+
Make_Set(Wide_Character'Val(16#711#))+
Make_Set(Wide_Character'Val(16#730#), Wide_Character'Val(16#74a#))+
Make_Set(Wide_Character'Val(16#7eb#), Wide_Character'Val(16#7f3#))+
Make_Set(Wide_Character'Val(16#816#), Wide_Character'Val(16#819#))+
Make_Set(Wide_Character'Val(16#81b#), Wide_Character'Val(16#823#))+
Make_Set(Wide_Character'Val(16#825#), Wide_Character'Val(16#827#))+
Make_Set(Wide_Character'Val(16#829#), Wide_Character'Val(16#82d#))+
Make_Set(Wide_Character'Val(16#859#), Wide_Character'Val(16#85b#))+
Make_Set(Wide_Character'Val(16#8d4#), Wide_Character'Val(16#8e1#))+
Make_Set(Wide_Character'Val(16#8e3#), Wide_Character'Val(16#8ff#))+
Make_Set(Wide_Character'Val(16#93c#))+
Make_Set(Wide_Character'Val(16#94d#))+
Make_Set(Wide_Character'Val(16#951#), Wide_Character'Val(16#954#))+
Make_Set(Wide_Character'Val(16#9bc#))+
Make_Set(Wide_Character'Val(16#9cd#))+
Make_Set(Wide_Character'Val(16#a3c#))+
Make_Set(Wide_Character'Val(16#a4d#))+
Make_Set(Wide_Character'Val(16#abc#))+
Make_Set(Wide_Character'Val(16#acd#))+
Make_Set(Wide_Character'Val(16#b3c#))+
Make_Set(Wide_Character'Val(16#b4d#))+
Make_Set(Wide_Character'Val(16#bcd#))+
Make_Set(Wide_Character'Val(16#c4d#))+
Make_Set(Wide_Character'Val(16#c55#), Wide_Character'Val(16#c56#))+
Make_Set(Wide_Character'Val(16#cbc#))+
Make_Set(Wide_Character'Val(16#ccd#))+
Make_Set(Wide_Character'Val(16#d4d#))+
Make_Set(Wide_Character'Val(16#dca#))+
Make_Set(Wide_Character'Val(16#e38#), Wide_Character'Val(16#e3a#))+
Make_Set(Wide_Character'Val(16#e48#), Wide_Character'Val(16#e4b#))+
Make_Set(Wide_Character'Val(16#eb8#), Wide_Character'Val(16#eb9#))+
Make_Set(Wide_Character'Val(16#ec8#), Wide_Character'Val(16#ecb#))+
Make_Set(Wide_Character'Val(16#f18#), Wide_Character'Val(16#f19#))+
Make_Set(Wide_Character'Val(16#f35#))+
Make_Set(Wide_Character'Val(16#f37#))+
Make_Set(Wide_Character'Val(16#f39#))+
Make_Set(Wide_Character'Val(16#f71#), Wide_Character'Val(16#f72#))+
Make_Set(Wide_Character'Val(16#f74#))+
Make_Set(Wide_Character'Val(16#f7a#), Wide_Character'Val(16#f7d#))+
Make_Set(Wide_Character'Val(16#f80#))+
Make_Set(Wide_Character'Val(16#f82#), Wide_Character'Val(16#f84#))+
Make_Set(Wide_Character'Val(16#f86#), Wide_Character'Val(16#f87#))+
Make_Set(Wide_Character'Val(16#fc6#))+
Make_Set(Wide_Character'Val(16#1037#))+
Make_Set(Wide_Character'Val(16#1039#), Wide_Character'Val(16#103a#))+
Make_Set(Wide_Character'Val(16#108d#))+
Make_Set(Wide_Character'Val(16#135d#), Wide_Character'Val(16#135f#))+
Make_Set(Wide_Character'Val(16#1714#))+
Make_Set(Wide_Character'Val(16#1734#))+
Make_Set(Wide_Character'Val(16#17d2#))+
Make_Set(Wide_Character'Val(16#17dd#))+
Make_Set(Wide_Character'Val(16#18a9#))+
Make_Set(Wide_Character'Val(16#1939#), Wide_Character'Val(16#193b#))+
Make_Set(Wide_Character'Val(16#1a17#), Wide_Character'Val(16#1a18#))+
Make_Set(Wide_Character'Val(16#1a60#))+
Make_Set(Wide_Character'Val(16#1a75#), Wide_Character'Val(16#1a7c#))+
Make_Set(Wide_Character'Val(16#1a7f#))+
Make_Set(Wide_Character'Val(16#1ab0#), Wide_Character'Val(16#1abd#))+
Make_Set(Wide_Character'Val(16#1b34#))+
Make_Set(Wide_Character'Val(16#1b44#))+
Make_Set(Wide_Character'Val(16#1b6b#), Wide_Character'Val(16#1b73#))+
Make_Set(Wide_Character'Val(16#1baa#), Wide_Character'Val(16#1bab#))+
Make_Set(Wide_Character'Val(16#1be6#))+
Make_Set(Wide_Character'Val(16#1bf2#), Wide_Character'Val(16#1bf3#))+
Make_Set(Wide_Character'Val(16#1c37#))+
Make_Set(Wide_Character'Val(16#1cd0#), Wide_Character'Val(16#1cd2#))+
Make_Set(Wide_Character'Val(16#1cd4#), Wide_Character'Val(16#1ce0#))+
Make_Set(Wide_Character'Val(16#1ce2#), Wide_Character'Val(16#1ce8#))+
Make_Set(Wide_Character'Val(16#1ced#))+
Make_Set(Wide_Character'Val(16#1cf4#))+
Make_Set(Wide_Character'Val(16#1cf8#), Wide_Character'Val(16#1cf9#))+
Make_Set(Wide_Character'Val(16#1dc0#), Wide_Character'Val(16#1df5#))+
Make_Set(Wide_Character'Val(16#1dfb#), Wide_Character'Val(16#1dff#))+
Make_Set(Wide_Character'Val(16#20d0#), Wide_Character'Val(16#20dc#))+
Make_Set(Wide_Character'Val(16#20e1#))+
Make_Set(Wide_Character'Val(16#20e5#), Wide_Character'Val(16#20f0#))+
Make_Set(Wide_Character'Val(16#2cef#), Wide_Character'Val(16#2cf1#))+
Make_Set(Wide_Character'Val(16#2d7f#))+
Make_Set(Wide_Character'Val(16#2de0#), Wide_Character'Val(16#2dff#))+
Make_Set(Wide_Character'Val(16#302a#), Wide_Character'Val(16#302f#))+
Make_Set(Wide_Character'Val(16#3099#), Wide_Character'Val(16#309a#))+
Make_Set(Wide_Character'Val(16#a66f#))+
Make_Set(Wide_Character'Val(16#a674#), Wide_Character'Val(16#a67d#))+
Make_Set(Wide_Character'Val(16#a69e#), Wide_Character'Val(16#a69f#))+
Make_Set(Wide_Character'Val(16#a6f0#), Wide_Character'Val(16#a6f1#))+
Make_Set(Wide_Character'Val(16#a806#))+
Make_Set(Wide_Character'Val(16#a8c4#))+
Make_Set(Wide_Character'Val(16#a8e0#), Wide_Character'Val(16#a8f1#))+
Make_Set(Wide_Character'Val(16#a92b#), Wide_Character'Val(16#a92d#))+
Make_Set(Wide_Character'Val(16#a953#))+
Make_Set(Wide_Character'Val(16#a9b3#))+
Make_Set(Wide_Character'Val(16#a9c0#))+
Make_Set(Wide_Character'Val(16#aab0#))+
Make_Set(Wide_Character'Val(16#aab2#), Wide_Character'Val(16#aab4#))+
Make_Set(Wide_Character'Val(16#aab7#), Wide_Character'Val(16#aab8#))+
Make_Set(Wide_Character'Val(16#aabe#), Wide_Character'Val(16#aabf#))+
Make_Set(Wide_Character'Val(16#aac1#))+
Make_Set(Wide_Character'Val(16#aaf6#))+
Make_Set(Wide_Character'Val(16#abed#))+
Make_Set(Wide_Character'Val(16#fb1e#))+
Make_Set(Wide_Character'Val(16#fe20#), Wide_Character'Val(16#fe2f#))+
-- Blissymbolics
Make_Set(Wide_Character'Val(16#E106#), Wide_Character'Val(16#E18F#));
end Initialise_Combining_Characters;
function The_Combining_Characters return combining_character_set is
begin
return all_combining_characters;
end The_Combining_Characters;
procedure Add_To_The_Combining_Characters(the_character:in wide_character)
is
begin
all_combining_characters := all_combining_characters +
Make_Set(the_character);
end Add_To_The_Combining_Characters;
begin
Initialise_Combining_Characters;
end Combining_Characters;