mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-17 23:19:29 +02:00
+ added unit EastAsianWidth, which contains the EastAsianWidth unicode data property
git-svn-id: trunk@48755 -
This commit is contained in:
parent
0c22ee8678
commit
71887b902b
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -9035,6 +9035,8 @@ packages/rtl-unicode/src/inc/cp936.pas svneol=native#text/pascal
|
||||
packages/rtl-unicode/src/inc/cp949.pas svneol=native#text/pascal
|
||||
packages/rtl-unicode/src/inc/cp950.pas svneol=native#text/pascal
|
||||
packages/rtl-unicode/src/inc/cpbuildu.pp svneol=native#text/plain
|
||||
packages/rtl-unicode/src/inc/eastasianwidth.pp svneol=native#text/plain
|
||||
packages/rtl-unicode/src/inc/eastasianwidth_code.inc svneol=native#text/plain
|
||||
packages/rtl-unicode/src/inc/freebidi.pp svneol=native#text/plain
|
||||
packages/rtl-unicode/src/inc/graphemebreakproperty.pp svneol=native#text/plain
|
||||
packages/rtl-unicode/src/inc/graphemebreakproperty_code.inc svneol=native#text/plain
|
||||
|
@ -17,11 +17,12 @@ Const
|
||||
utf8bidiOSes = [netware,netwlibc];
|
||||
freebidiOSes = [netware,netwlibc];
|
||||
GraphemeBreakPropertyOSes = AllOSes-[embedded,zxspectrum,msxdos,amstradcpc];
|
||||
EastAsianWidthOSes = AllOSes-[embedded,zxspectrum,msxdos,amstradcpc];
|
||||
|
||||
// Character not movable because fpwidestring depends on it.
|
||||
// CharacterOSes = [android,darwin,freebsd,linux,netbsd,openbsd,solaris,win32,win64,dragonfly];
|
||||
|
||||
UnicodeAllOSes = CollationOSes + utf8bidiOSes + freebidiOSes + CPUnits + GraphemeBreakPropertyOSes;
|
||||
UnicodeAllOSes = CollationOSes + utf8bidiOSes + freebidiOSes + CPUnits + GraphemeBreakPropertyOSes + EastAsianWidthOSes;
|
||||
|
||||
// Amiga has a crt in its RTL dir, but it is commented in the makefile
|
||||
|
||||
@ -145,6 +146,12 @@ begin
|
||||
begin
|
||||
AddInclude('graphemebreakproperty_code.inc');
|
||||
end;
|
||||
|
||||
T:=P.Targets.AddUnit('eastasianwidth.pp',EastAsianWidthOSes);
|
||||
with T.Dependencies do
|
||||
begin
|
||||
AddInclude('eastasianwidth_code.inc');
|
||||
end;
|
||||
end
|
||||
end;
|
||||
|
||||
|
55
packages/rtl-unicode/src/inc/eastasianwidth.pp
Normal file
55
packages/rtl-unicode/src/inc/eastasianwidth.pp
Normal file
@ -0,0 +1,55 @@
|
||||
{ EastAsianWidth Unicode data unit.
|
||||
|
||||
Copyright (C) 2021 Nikolay Nikolov <nickysn@users.sourceforge.net>
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version with the following modification:
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent modules,and
|
||||
to copy and distribute the resulting executable under terms of your choice,
|
||||
provided that you also meet, for each linked independent module, the terms
|
||||
and conditions of the license of that module. An independent module is a
|
||||
module which is not derived from or based on this library. If you modify
|
||||
this library, you may extend this exception to your version of the library,
|
||||
but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version.
|
||||
|
||||
This program 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 Library General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA.
|
||||
}
|
||||
|
||||
unit eastasianwidth;
|
||||
|
||||
{$MODE objfpc}
|
||||
|
||||
interface
|
||||
|
||||
type
|
||||
TEastAsianWidth = (
|
||||
eawN,
|
||||
eawA,
|
||||
eawF,
|
||||
eawH,
|
||||
eawNa,
|
||||
eawW);
|
||||
|
||||
function GetEastAsianWidth(Ch: UCS4Char): TEastAsianWidth;
|
||||
|
||||
implementation
|
||||
|
||||
function GetEastAsianWidth(Ch: UCS4Char): TEastAsianWidth;
|
||||
begin
|
||||
{$I eastasianwidth_code.inc}
|
||||
end;
|
||||
|
||||
end.
|
300
packages/rtl-unicode/src/inc/eastasianwidth_code.inc
Normal file
300
packages/rtl-unicode/src/inc/eastasianwidth_code.inc
Normal file
@ -0,0 +1,300 @@
|
||||
{ do not edit, this file is autogenerated by the eawparser tool }
|
||||
if(Ch=12288)or
|
||||
((Ch>=65281)and(Ch<=65376))or
|
||||
((Ch>=65504)and(Ch<=65510))then result:=eawF else
|
||||
if(Ch=8361)or
|
||||
((Ch>=65377)and(Ch<=65470))or
|
||||
((Ch>=65474)and(Ch<=65479))or
|
||||
((Ch>=65482)and(Ch<=65487))or
|
||||
((Ch>=65490)and(Ch<=65495))or
|
||||
((Ch>=65498)and(Ch<=65500))or
|
||||
((Ch>=65512)and(Ch<=65518))then result:=eawH else
|
||||
if((Ch>=32)and(Ch<=126))or
|
||||
((Ch>=162)and(Ch<=163))or
|
||||
((Ch>=165)and(Ch<=166))or
|
||||
(Ch=172)or
|
||||
(Ch=175)or
|
||||
((Ch>=10214)and(Ch<=10221))or
|
||||
((Ch>=10629)and(Ch<=10630))then result:=eawNa else
|
||||
case Ch of
|
||||
161..168,
|
||||
170,
|
||||
173..180,
|
||||
182..186,
|
||||
188..191,
|
||||
198,
|
||||
208,
|
||||
215..216,
|
||||
222..225,
|
||||
230,
|
||||
232..234,
|
||||
236..237,
|
||||
240,
|
||||
242..243,
|
||||
247..250,
|
||||
252,
|
||||
254,
|
||||
257,
|
||||
273,
|
||||
275,
|
||||
283,
|
||||
294..295,
|
||||
299,
|
||||
305..307,
|
||||
312,
|
||||
319..322,
|
||||
324,
|
||||
328..331,
|
||||
333,
|
||||
338..339,
|
||||
358..359,
|
||||
363,
|
||||
462,
|
||||
464,
|
||||
466,
|
||||
468,
|
||||
470,
|
||||
472,
|
||||
474,
|
||||
476,
|
||||
593,
|
||||
609,
|
||||
708,
|
||||
711,
|
||||
713..715,
|
||||
717,
|
||||
720,
|
||||
728..731,
|
||||
733,
|
||||
735,
|
||||
768..879,
|
||||
913..929,
|
||||
931..937,
|
||||
945..961,
|
||||
963..969,
|
||||
1025,
|
||||
1040..1103,
|
||||
1105,
|
||||
8208,
|
||||
8211..8214,
|
||||
8216..8217,
|
||||
8220..8221,
|
||||
8224..8226,
|
||||
8228..8231,
|
||||
8240,
|
||||
8242..8243,
|
||||
8245,
|
||||
8251,
|
||||
8254,
|
||||
8308,
|
||||
8319,
|
||||
8321..8324,
|
||||
8364,
|
||||
8451,
|
||||
8453,
|
||||
8457,
|
||||
8467,
|
||||
8470,
|
||||
8481..8482,
|
||||
8486,
|
||||
8491,
|
||||
8531..8532,
|
||||
8539..8542,
|
||||
8544..8555,
|
||||
8560..8569,
|
||||
8585,
|
||||
8592..8601,
|
||||
8632..8633,
|
||||
8658,
|
||||
8660,
|
||||
8679,
|
||||
8704,
|
||||
8706..8707,
|
||||
8711..8712,
|
||||
8715,
|
||||
8719,
|
||||
8721,
|
||||
8725,
|
||||
8730,
|
||||
8733..8736,
|
||||
8739,
|
||||
8741,
|
||||
8743..8748,
|
||||
8750,
|
||||
8756..8759,
|
||||
8764..8765,
|
||||
8776,
|
||||
8780,
|
||||
8786,
|
||||
8800..8801,
|
||||
8804..8807,
|
||||
8810..8811,
|
||||
8814..8815,
|
||||
8834..8835,
|
||||
8838..8839,
|
||||
8853,
|
||||
8857,
|
||||
8869,
|
||||
8895,
|
||||
8978,
|
||||
9312..9449,
|
||||
9451..9547,
|
||||
9552..9587,
|
||||
9600..9615,
|
||||
9618..9621,
|
||||
9632..9633,
|
||||
9635..9641,
|
||||
9650..9651,
|
||||
9654..9655,
|
||||
9660..9661,
|
||||
9664..9665,
|
||||
9670..9672,
|
||||
9675,
|
||||
9678..9681,
|
||||
9698..9701,
|
||||
9711,
|
||||
9733..9734,
|
||||
9737,
|
||||
9742..9743,
|
||||
9756,
|
||||
9758,
|
||||
9792,
|
||||
9794,
|
||||
9824..9825,
|
||||
9827..9829,
|
||||
9831..9834,
|
||||
9836..9837,
|
||||
9839,
|
||||
9886..9887,
|
||||
9919,
|
||||
9926..9933,
|
||||
9935..9939,
|
||||
9941..9953,
|
||||
9955,
|
||||
9960..9961,
|
||||
9963..9969,
|
||||
9972,
|
||||
9974..9977,
|
||||
9979..9980,
|
||||
9982..9983,
|
||||
10045,
|
||||
10102..10111,
|
||||
11094..11097,
|
||||
12872..12879,
|
||||
57344..63743,
|
||||
65024..65039,
|
||||
65533,
|
||||
127232..127242,
|
||||
127248..127277,
|
||||
127280..127337,
|
||||
127344..127373,
|
||||
127375..127376,
|
||||
127387..127404,
|
||||
917760..917999,
|
||||
983040..1048573,
|
||||
1048576..1114109:result:=eawA;
|
||||
4352..4447,
|
||||
8986..8987,
|
||||
9001..9002,
|
||||
9193..9196,
|
||||
9200,
|
||||
9203,
|
||||
9725..9726,
|
||||
9748..9749,
|
||||
9800..9811,
|
||||
9855,
|
||||
9875,
|
||||
9889,
|
||||
9898..9899,
|
||||
9917..9918,
|
||||
9924..9925,
|
||||
9934,
|
||||
9940,
|
||||
9962,
|
||||
9970..9971,
|
||||
9973,
|
||||
9978,
|
||||
9981,
|
||||
9989,
|
||||
9994..9995,
|
||||
10024,
|
||||
10060,
|
||||
10062,
|
||||
10067..10069,
|
||||
10071,
|
||||
10133..10135,
|
||||
10160,
|
||||
10175,
|
||||
11035..11036,
|
||||
11088,
|
||||
11093,
|
||||
11904..11929,
|
||||
11931..12019,
|
||||
12032..12245,
|
||||
12272..12283,
|
||||
12289..12350,
|
||||
12353..12438,
|
||||
12441..12543,
|
||||
12549..12589,
|
||||
12593..12686,
|
||||
12688..12730,
|
||||
12736..12771,
|
||||
12784..12830,
|
||||
12832..12871,
|
||||
12880..13054,
|
||||
13056..19903,
|
||||
19968..42124,
|
||||
42128..42182,
|
||||
43360..43388,
|
||||
44032..55203,
|
||||
63744..64255,
|
||||
65040..65049,
|
||||
65072..65106,
|
||||
65108..65126,
|
||||
65128..65131,
|
||||
94176,
|
||||
94208..100332,
|
||||
100352..101106,
|
||||
110592..110593,
|
||||
126980,
|
||||
127183,
|
||||
127374,
|
||||
127377..127386,
|
||||
127488..127490,
|
||||
127504..127547,
|
||||
127552..127560,
|
||||
127568..127569,
|
||||
127744..127776,
|
||||
127789..127797,
|
||||
127799..127868,
|
||||
127870..127891,
|
||||
127904..127946,
|
||||
127951..127955,
|
||||
127968..127984,
|
||||
127988,
|
||||
127992..128062,
|
||||
128064,
|
||||
128066..128252,
|
||||
128255..128317,
|
||||
128331..128334,
|
||||
128336..128359,
|
||||
128378,
|
||||
128405..128406,
|
||||
128420,
|
||||
128507..128591,
|
||||
128640..128709,
|
||||
128716,
|
||||
128720..128722,
|
||||
128747..128748,
|
||||
128756..128758,
|
||||
129296..129310,
|
||||
129312..129319,
|
||||
129328,
|
||||
129331..129342,
|
||||
129344..129355,
|
||||
129360..129374,
|
||||
129408..129425,
|
||||
129472,
|
||||
131072..196605,
|
||||
196608..262141:result:=eawW;
|
||||
else result:=eawN end
|
Loading…
Reference in New Issue
Block a user