Import Upstream version 6.04~git20190206.bf6db5b4+dfsg1
This commit is contained in:
commit
d3dd949632
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
|
@ -0,0 +1,417 @@
|
|||
## -----------------------------------------------------------------------
|
||||
##
|
||||
## Copyright 1998-2009 H. Peter Anvin - All Rights Reserved
|
||||
## Copyright 2009-2014 Intel Corporation; author: H. Peter Anvin
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
## Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
## (at your option) any later version; incorporated herein by reference.
|
||||
##
|
||||
## -----------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# Main Makefile for SYSLINUX
|
||||
#
|
||||
|
||||
all_firmware := bios efi32 efi64
|
||||
|
||||
#
|
||||
# topdir is only set when we are doing a recursive make. Do a bunch of
|
||||
# initialisation if it's unset since this is the first invocation.
|
||||
#
|
||||
ifeq ($(topdir),)
|
||||
|
||||
topdir = $(CURDIR)
|
||||
|
||||
#
|
||||
# Because we need to build modules multiple times, e.g. for BIOS,
|
||||
# efi32, efi64, we output all object and executable files to a
|
||||
# separate object directory for each firmware.
|
||||
#
|
||||
# The output directory can be customised by setting the O=/obj/path/
|
||||
# variable when invoking make. If no value is specified the default
|
||||
# directory is the top-level of the Syslinux source.
|
||||
#
|
||||
ifeq ("$(origin O)", "command line")
|
||||
OBJDIR := $(O)
|
||||
else
|
||||
OBJDIR = $(topdir)
|
||||
endif
|
||||
|
||||
# If the output directory does not exist we bail because that is the
|
||||
# least surprising thing to do.
|
||||
cd-output := $(shell cd $(OBJDIR) && /bin/pwd)
|
||||
$(if $(cd-output),, \
|
||||
$(error output directory "$(OBJDIR)" does not exist))
|
||||
|
||||
#
|
||||
# These environment variables are exported to every invocation of
|
||||
# make,
|
||||
#
|
||||
# 'topdir' - the top-level directory containing the Syslinux source
|
||||
# 'objdir' - the top-level directory of output files for this firmware
|
||||
# 'MAKEDIR' - contains Makefile fragments
|
||||
# 'OBJDIR' - the top-level directory of output files
|
||||
#
|
||||
# There are also a handful of variables that are passed to each
|
||||
# sub-make,
|
||||
#
|
||||
# SRC - source tree location of the module being compiled
|
||||
# OBJ - output tree location of the module being compiled
|
||||
#
|
||||
# A couple of rules for writing Makefiles,
|
||||
#
|
||||
# - Do not use relative paths, use the above variables
|
||||
# - You can write $(SRC) a lot less if you add it to VPATH
|
||||
#
|
||||
|
||||
MAKEDIR = $(topdir)/mk
|
||||
export MAKEDIR topdir OBJDIR
|
||||
|
||||
include $(MAKEDIR)/syslinux.mk
|
||||
-include $(OBJDIR)/version.mk
|
||||
|
||||
private-targets = prerel unprerel official release burn isolinux.iso \
|
||||
preupload upload test unittest regression spotless
|
||||
|
||||
ifeq ($(MAKECMDGOALS),)
|
||||
MAKECMDGOALS += all
|
||||
endif
|
||||
|
||||
#
|
||||
# The 'bios', 'efi32' and 'efi64' are dummy targets. Their only
|
||||
# purpose is to instruct us which output directories need
|
||||
# creating. Which means that we always need a *real* target, such as
|
||||
# 'all', appended to the make goals.
|
||||
#
|
||||
real-target := $(filter-out $(all_firmware), $(MAKECMDGOALS))
|
||||
real-firmware := $(filter $(all_firmware), $(MAKECMDGOALS))
|
||||
|
||||
ifeq ($(real-target),)
|
||||
real-target = all
|
||||
endif
|
||||
|
||||
ifeq ($(real-firmware),)
|
||||
real-firmware = $(firmware)
|
||||
endif
|
||||
|
||||
.PHONY: $(filter-out $(private-targets), $(MAKECMDGOALS))
|
||||
$(filter-out $(private-targets), $(MAKECMDGOALS)):
|
||||
$(MAKE) -C $(OBJDIR) -f $(CURDIR)/Makefile SRC="$(topdir)" \
|
||||
OBJ=$(OBJDIR) objdir=$(OBJDIR) $(BUILDOPTS) \
|
||||
$(MAKECMDGOALS)
|
||||
|
||||
unittest:
|
||||
printf "Executing unit tests\n"
|
||||
$(MAKE) -C core/mem/tests all
|
||||
$(MAKE) -C com32/lib/syslinux/tests all
|
||||
|
||||
regression:
|
||||
$(MAKE) -C tests SRC="$(topdir)/tests" OBJ="$(topdir)/tests" \
|
||||
objdir=$(OBJDIR) $(BUILDOPTS) \
|
||||
-f $(topdir)/tests/Makefile all
|
||||
|
||||
test: unittest regression
|
||||
|
||||
# Hook to add private Makefile targets for the maintainer.
|
||||
-include $(topdir)/Makefile.private
|
||||
|
||||
else # ifeq ($(topdir),)
|
||||
|
||||
include $(MAKEDIR)/syslinux.mk
|
||||
|
||||
# Hook to add private Makefile targets for the maintainer.
|
||||
-include $(topdir)/Makefile.private
|
||||
|
||||
#
|
||||
# The BTARGET refers to objects that are derived from ldlinux.asm; we
|
||||
# like to keep those uniform for debugging reasons; however, distributors
|
||||
# want to recompile the installers (ITARGET).
|
||||
#
|
||||
# BOBJECTS and IOBJECTS are the same thing, except used for
|
||||
# installation, so they include objects that may be in subdirectories
|
||||
# with their own Makefiles. Finally, there is a list of those
|
||||
# directories.
|
||||
#
|
||||
|
||||
ifeq ($(FWCLASS),BIOS)
|
||||
MODULES = memdisk/memdisk \
|
||||
com32/menu/*.c32 com32/modules/*.c32 com32/mboot/*.c32 \
|
||||
com32/hdt/*.c32 com32/rosh/*.c32 com32/gfxboot/*.c32 \
|
||||
com32/sysdump/*.c32 com32/lua/src/*.c32 com32/chain/*.c32 \
|
||||
com32/lib/*.c32 com32/libutil/*.c32 com32/gpllib/*.c32 \
|
||||
com32/elflink/ldlinux/*.c32 com32/cmenu/libmenu/*.c32
|
||||
else
|
||||
# FIXME: Prune other BIOS-centric modules
|
||||
MODULES = com32/menu/*.c32 com32/modules/*.c32 com32/mboot/*.c32 \
|
||||
com32/hdt/*.c32 com32/rosh/*.c32 com32/gfxboot/*.c32 \
|
||||
com32/sysdump/*.c32 com32/lua/src/*.c32 com32/chain/*.c32 \
|
||||
com32/lib/*.c32 com32/libutil/*.c32 com32/gpllib/*.c32 \
|
||||
com32/cmenu/libmenu/*.c32 com32/elflink/ldlinux/$(LDLINUX)
|
||||
endif
|
||||
|
||||
export FIRMWARE FWCLASS ARCH BITS
|
||||
|
||||
# List of module objects that should be installed for all derivatives
|
||||
INSTALLABLE_MODULES = $(MODULES)
|
||||
|
||||
# syslinux.exe is BTARGET so as to not require everyone to have the
|
||||
# mingw suite installed
|
||||
BTARGET = version.gen version.h $(OBJDIR)/version.mk
|
||||
BOBJECTS = $(BTARGET) \
|
||||
mbr/*.bin \
|
||||
core/pxelinux.0 core/lpxelinux.0 \
|
||||
core/isolinux.bin core/isolinux-debug.bin \
|
||||
dos/syslinux.com \
|
||||
win32/syslinux.exe win64/syslinux64.exe \
|
||||
dosutil/*.com dosutil/*.sys \
|
||||
$(MODULES)
|
||||
|
||||
# BSUBDIRs build the on-target binary components.
|
||||
# ISUBDIRs build the installer (host) components.
|
||||
#
|
||||
# Note: libinstaller is both a BSUBDIR and an ISUBDIR. It contains
|
||||
# files that depend only on the B phase, but may have to be regenerated
|
||||
# for "make installer".
|
||||
|
||||
ifeq ($(FWCLASS),EFI)
|
||||
|
||||
BSUBDIRS = codepage com32 lzo core mbr sample efi txt
|
||||
ISUBDIRS =
|
||||
|
||||
INSTALLSUBDIRS = efi
|
||||
|
||||
NETINSTALLABLE = efi/syslinux.efi $(INSTALLABLE_MODULES)
|
||||
|
||||
else
|
||||
|
||||
BSUBDIRS = codepage com32 lzo core memdisk mbr sample \
|
||||
diag libinstaller dos win32 win64 dosutil txt
|
||||
|
||||
ITARGET =
|
||||
IOBJECTS = $(ITARGET) \
|
||||
utils/gethostip utils/isohybrid utils/mkdiskimage \
|
||||
mtools/syslinux linux/syslinux extlinux/extlinux
|
||||
ISUBDIRS = libinstaller mtools linux extlinux utils
|
||||
|
||||
# Things to install in /usr/bin
|
||||
INSTALL_BIN = mtools/syslinux
|
||||
# Things to install in /sbin
|
||||
INSTALL_SBIN = extlinux/extlinux
|
||||
# Things to install in /usr/lib/syslinux
|
||||
INSTALL_AUX = core/pxelinux.0 \
|
||||
core/isolinux.bin core/isolinux-debug.bin \
|
||||
dos/syslinux.com core/lpxelinux.0 \
|
||||
mbr/*.bin $(INSTALLABLE_MODULES)
|
||||
INSTALL_AUX_OPT = win32/syslinux.exe win64/syslinux64.exe
|
||||
INSTALL_DIAG = diag/mbr/handoff.bin \
|
||||
diag/geodsp/geodsp1s.img.xz diag/geodsp/geodspms.img.xz
|
||||
|
||||
# These directories manage their own installables
|
||||
INSTALLSUBDIRS = com32 utils dosutil
|
||||
|
||||
# Things to install in /boot/extlinux
|
||||
EXTBOOTINSTALL = $(INSTALLABLE_MODULES)
|
||||
|
||||
# Things to install in /tftpboot
|
||||
NETINSTALLABLE = core/pxelinux.0 core/lpxelinux.0 \
|
||||
$(INSTALLABLE_MODULES)
|
||||
|
||||
endif # ifeq ($(FWCLASS),EFI)
|
||||
|
||||
.PHONY: subdirs $(BSUBDIRS) $(ISUBDIRS) test
|
||||
|
||||
ifeq ($(FIRMWARE),)
|
||||
|
||||
firmware = $(all_firmware)
|
||||
|
||||
# If no firmware was specified the rest of MAKECMDGOALS applies to all
|
||||
# firmware.
|
||||
ifeq ($(filter $(firmware),$(MAKECMDGOALS)),)
|
||||
all strip tidy clean dist install installer netinstall: $(all_firmware)
|
||||
|
||||
else
|
||||
|
||||
# Don't do anything for the rest of MAKECMDGOALS at this level. It
|
||||
# will be handled for each of $(firmware).
|
||||
strip tidy clean dist install installer netinstall:
|
||||
|
||||
endif
|
||||
|
||||
# Convert 'make bios strip' to 'make strip', etc for rest of the Makefiles.
|
||||
MAKECMDGOALS := $(filter-out $(firmware),$(MAKECMDGOALS))
|
||||
ifeq ($(MAKECMDGOALS),)
|
||||
MAKECMDGOALS += all
|
||||
endif
|
||||
|
||||
#
|
||||
# You'd think that we'd be able to use the 'define' directive to
|
||||
# abstract the code for invoking make(1) in the output directory, but
|
||||
# by using 'define' we lose the ability to build in parallel.
|
||||
#
|
||||
.PHONY: $(firmware)
|
||||
bios:
|
||||
@mkdir -p $(OBJ)/bios
|
||||
$(MAKE) -C $(OBJ)/bios -f $(SRC)/Makefile SRC="$(SRC)" \
|
||||
objdir=$(OBJ)/bios OBJ=$(OBJ)/bios \
|
||||
FIRMWARE=BIOS FWCLASS=BIOS \
|
||||
ARCH=i386 LDLINUX=ldlinux.c32 $(MAKECMDGOALS)
|
||||
|
||||
efi32:
|
||||
@mkdir -p $(OBJ)/efi32
|
||||
$(MAKE) -C $(OBJ)/efi32 -f $(SRC)/Makefile SRC="$(SRC)" \
|
||||
objdir=$(OBJ)/efi32 OBJ=$(OBJ)/efi32 \
|
||||
ARCH=i386 BITS=32 LDLINUX=ldlinux.e32 \
|
||||
FIRMWARE=EFI32 FWCLASS=EFI \
|
||||
$(MAKECMDGOALS)
|
||||
|
||||
efi64:
|
||||
@mkdir -p $(OBJ)/efi64
|
||||
$(MAKE) -C $(OBJ)/efi64 -f $(SRC)/Makefile SRC="$(SRC)" \
|
||||
objdir=$(OBJ)/efi64 OBJ=$(OBJ)/efi64 \
|
||||
ARCH=x86_64 BITS=64 LDLINUX=ldlinux.e64 \
|
||||
FIRMWARE=EFI64 FWCLASS=EFI \
|
||||
$(MAKECMDGOALS)
|
||||
|
||||
else # FIRMWARE
|
||||
|
||||
all: all-local subdirs
|
||||
|
||||
all-local: $(BTARGET) $(ITARGET)
|
||||
-ls -l $(BOBJECTS) $(IOBJECTS)
|
||||
subdirs: $(BSUBDIRS) $(ISUBDIRS)
|
||||
|
||||
$(sort $(ISUBDIRS) $(BSUBDIRS)):
|
||||
@mkdir -p $@
|
||||
$(MAKE) -C $@ SRC="$(SRC)/$@" OBJ="$(OBJ)/$@" \
|
||||
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
|
||||
|
||||
$(ITARGET):
|
||||
@mkdir -p $@
|
||||
$(MAKE) -C $@ SRC="$(SRC)/$@" OBJ="$(OBJ)/$@" \
|
||||
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
|
||||
|
||||
$(BINFILES):
|
||||
@mkdir -p $@
|
||||
$(MAKE) -C $@ SRC="$(SRC)/$@" OBJ="$(OBJ)/$@" \
|
||||
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
|
||||
|
||||
#
|
||||
# List the dependencies to help out parallel builds.
|
||||
dos extlinux linux mtools win32 win64: libinstaller
|
||||
libinstaller: core
|
||||
utils: mbr
|
||||
core: com32
|
||||
efi: core
|
||||
|
||||
installer: installer-local
|
||||
set -e; for i in $(ISUBDIRS); \
|
||||
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
|
||||
-f $(SRC)/$$i/Makefile all; done
|
||||
|
||||
|
||||
installer-local: $(ITARGET) $(BINFILES)
|
||||
|
||||
strip: strip-local
|
||||
set -e; for i in $(ISUBDIRS); \
|
||||
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
|
||||
-f $(SRC)/$$i/Makefile strip; done
|
||||
-ls -l $(BOBJECTS) $(IOBJECTS)
|
||||
|
||||
strip-local:
|
||||
|
||||
version.gen: $(topdir)/version $(topdir)/version.pl
|
||||
$(PERL) $(topdir)/version.pl $< $@ '%define < @'
|
||||
version.h: $(topdir)/version $(topdir)/version.pl
|
||||
$(PERL) $(topdir)/version.pl $< $@ '#define < @'
|
||||
|
||||
local-install: installer
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(BINDIR)
|
||||
install -m 755 -c $(INSTALL_BIN) $(INSTALLROOT)$(BINDIR)
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(SBINDIR)
|
||||
install -m 755 -c $(INSTALL_SBIN) $(INSTALLROOT)$(SBINDIR)
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)
|
||||
install -m 644 -c $(INSTALL_AUX) $(INSTALLROOT)$(AUXDIR)
|
||||
-install -m 644 -c $(INSTALL_AUX_OPT) $(INSTALLROOT)$(AUXDIR)
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(DIAGDIR)
|
||||
install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(MANDIR)/man1
|
||||
install -m 644 -c $(topdir)/man/*.1 $(INSTALLROOT)$(MANDIR)/man1
|
||||
: mkdir -m 755 -p $(INSTALLROOT)$(MANDIR)/man8
|
||||
: install -m 644 -c man/*.8 $(INSTALLROOT)$(MANDIR)/man8
|
||||
|
||||
ifneq ($(FWCLASS),EFI)
|
||||
install: local-install
|
||||
set -e ; for i in $(INSTALLSUBDIRS) ; \
|
||||
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
|
||||
-f $(SRC)/$$i/Makefile $@; done
|
||||
else
|
||||
install:
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)/efi$(BITS)
|
||||
set -e ; for i in $(INSTALLSUBDIRS) ; \
|
||||
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
|
||||
BITS="$(BITS)" AUXDIR="$(AUXDIR)/efi$(BITS)" \
|
||||
-f $(SRC)/$$i/Makefile $@; done
|
||||
-install -m 644 $(INSTALLABLE_MODULES) $(INSTALLROOT)$(AUXDIR)/efi$(BITS)
|
||||
install -m 644 com32/elflink/ldlinux/$(LDLINUX) $(INSTALLROOT)$(AUXDIR)/efi$(BITS)
|
||||
endif
|
||||
|
||||
ifeq ($(FWCLASS),EFI)
|
||||
netinstall:
|
||||
mkdir -p $(INSTALLROOT)$(TFTPBOOT)/efi$(BITS)
|
||||
install -m 644 $(NETINSTALLABLE) $(INSTALLROOT)$(TFTPBOOT)/efi$(BITS)
|
||||
else
|
||||
netinstall: installer
|
||||
mkdir -p $(INSTALLROOT)$(TFTPBOOT)
|
||||
install -m 644 $(NETINSTALLABLE) $(INSTALLROOT)$(TFTPBOOT)
|
||||
endif
|
||||
|
||||
extbootinstall: installer
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(EXTLINUXDIR)
|
||||
install -m 644 $(EXTBOOTINSTALL) $(INSTALLROOT)$(EXTLINUXDIR)
|
||||
|
||||
install-all: install netinstall extbootinstall
|
||||
|
||||
local-tidy:
|
||||
rm -f *.o *.elf *_bin.c stupid.* patch.offset
|
||||
rm -f *.lsr *.lst *.map *.sec *.tmp
|
||||
rm -f $(OBSOLETE)
|
||||
|
||||
tidy: local-tidy $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS)
|
||||
|
||||
local-clean:
|
||||
rm -f $(ITARGET)
|
||||
|
||||
clean: local-tidy local-clean $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS)
|
||||
|
||||
local-dist:
|
||||
find . \( -name '*~' -o -name '#*' -o -name core \
|
||||
-o -name '.*.d' -o -name .depend \) -type f -print0 \
|
||||
| xargs -0rt rm -f
|
||||
|
||||
dist: local-dist local-tidy $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS)
|
||||
|
||||
# Shortcut to build linux/syslinux using klibc
|
||||
klibc:
|
||||
$(MAKE) clean
|
||||
$(MAKE) CC=klcc ITARGET= ISUBDIRS='linux extlinux' BSUBDIRS=
|
||||
endif # ifeq ($(FIRMWARE),)
|
||||
|
||||
endif # ifeq ($(topdir),)
|
||||
|
||||
local-spotless:
|
||||
find . \( -name '*~' -o -name '#*' -o -name core \
|
||||
-o -name '.*.d' -o -name .depend -o -name '*.so.*' \) \
|
||||
-type f -print0 \
|
||||
| xargs -0rt rm -f
|
||||
|
||||
spotless: local-spotless
|
||||
rm -rf $(all_firmware)
|
||||
|
||||
#
|
||||
# Common rules that are needed by every invocation of make.
|
||||
#
|
||||
$(OBJDIR)/version.mk: $(topdir)/version $(topdir)/version.pl
|
||||
$(PERL) $(topdir)/version.pl $< $@ '< := @'
|
|
@ -0,0 +1,40 @@
|
|||
See the files in the doc directory for documentation about SYSLINUX:
|
||||
|
||||
syslinux.txt - Usage instructions; manual.
|
||||
distrib.txt - For creators of Linux distributions.
|
||||
pxelinux.txt - Documentation specific to PXELINUX.
|
||||
isolinux.txt - Documentation specific to ISOLINUX.
|
||||
extlinux.txt - Documentation specific to EXTLINUX.
|
||||
menu.txt - About the menu systems.
|
||||
usbkey.txt - About using SYSLINUX on USB keys.
|
||||
memdisk.txt - Documentation about MEMDISK.
|
||||
|
||||
Also see the files:
|
||||
|
||||
NEWS - List of changes from previous releases.
|
||||
TODO - About features planned for future releases.
|
||||
COPYING - For the license terms of this software.
|
||||
|
||||
SYSLINUX now builds in a Linux environment, using nasm. You need nasm
|
||||
version 2.03 or later (2.07 or later recommended) to build SYSLINUX
|
||||
from source. See http://www.nasm.us/ for information about nasm.
|
||||
|
||||
"utils/isohybrid" needs the UUID library and following header file,
|
||||
|
||||
/usr/include/uuid/uuid.h
|
||||
|
||||
You can get them from the "uuid-dev" package on Debian based systems
|
||||
or from the "libuuid-devel" package on RPM based distributions.
|
||||
|
||||
There is now a mailing list for SYSLINUX. See the end of syslinux.txt
|
||||
for details.
|
||||
|
||||
SYSLINUX is:
|
||||
|
||||
Copyright 1994-2011 H. Peter Anvin et al - All Rights Reserved
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
(at your option) any later version; incorporated herein by reference.
|
|
@ -0,0 +1,23 @@
|
|||
VPATH = $(SRC)
|
||||
PERL = perl
|
||||
CPSRC = $(sort $(wildcard $(SRC)/*.txt))
|
||||
CPOBJ = $(notdir $(CPSRC))
|
||||
GENFILES = $(patsubst %.txt,%.cp,$(CPOBJ))
|
||||
|
||||
.SUFFIXES: .txt .cp
|
||||
|
||||
all: $(GENFILES)
|
||||
|
||||
# This generates codepage files where the display and filesystem
|
||||
# codepages are both the same.
|
||||
%.cp: %.txt cptable.pl UnicodeData
|
||||
$(PERL) $(SRC)/cptable.pl $(SRC)/UnicodeData $< $< $@
|
||||
|
||||
tidy:
|
||||
rm -f *.cp *.bin
|
||||
|
||||
clean: tidy
|
||||
|
||||
dist: tidy
|
||||
|
||||
spotless: clean
|
|
@ -0,0 +1,952 @@
|
|||
0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
|
||||
0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
|
||||
0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
|
||||
0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
|
||||
0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
|
||||
0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
|
||||
0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
|
||||
0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
|
||||
0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
|
||||
0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
|
||||
000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
|
||||
000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
|
||||
000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
|
||||
000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
|
||||
000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
|
||||
000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
|
||||
0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
|
||||
0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
|
||||
0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
|
||||
0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
|
||||
0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
|
||||
0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
|
||||
0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
|
||||
0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
|
||||
0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
|
||||
0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
|
||||
001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
|
||||
001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
|
||||
001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
|
||||
001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
|
||||
001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
|
||||
001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
|
||||
0020;SPACE;Zs;0;WS;;;;;N;;;;;
|
||||
0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
|
||||
0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
|
||||
0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
|
||||
0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
|
||||
0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
|
||||
0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
|
||||
0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
|
||||
0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
|
||||
002A;ASTERISK;Po;0;ON;;;;;N;;;;;
|
||||
002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
|
||||
002C;COMMA;Po;0;CS;;;;;N;;;;;
|
||||
002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
|
||||
002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
|
||||
002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
|
||||
0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
|
||||
0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
|
||||
0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
|
||||
0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
|
||||
0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
|
||||
0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
|
||||
0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
|
||||
0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
|
||||
0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
|
||||
0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
|
||||
003A;COLON;Po;0;CS;;;;;N;;;;;
|
||||
003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
|
||||
003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
|
||||
003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
|
||||
003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
|
||||
003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
|
||||
0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
|
||||
0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
|
||||
0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
|
||||
0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
|
||||
0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
|
||||
0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
|
||||
0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
|
||||
0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
|
||||
0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
|
||||
0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
|
||||
004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
|
||||
004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
|
||||
004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
|
||||
004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
|
||||
004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
|
||||
004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
|
||||
0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
|
||||
0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
|
||||
0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
|
||||
0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
|
||||
0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
|
||||
0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
|
||||
0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
|
||||
0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
|
||||
0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
|
||||
0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
|
||||
005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
|
||||
005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
|
||||
005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
|
||||
005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
|
||||
005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
|
||||
005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
|
||||
0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
|
||||
0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
|
||||
0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
|
||||
0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
|
||||
0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
|
||||
0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
|
||||
0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
|
||||
0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
|
||||
0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
|
||||
0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
|
||||
006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
|
||||
006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
|
||||
006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
|
||||
006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
|
||||
006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
|
||||
006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
|
||||
0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
|
||||
0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
|
||||
0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
|
||||
0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
|
||||
0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
|
||||
0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
|
||||
0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
|
||||
0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
|
||||
0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
|
||||
0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
|
||||
007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
|
||||
007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
|
||||
007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
|
||||
007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
|
||||
007E;TILDE;Sm;0;ON;;;;;N;;;;;
|
||||
007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
|
||||
0080;<control>;Cc;0;BN;;;;;N;;;;;
|
||||
0081;<control>;Cc;0;BN;;;;;N;;;;;
|
||||
0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
|
||||
0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
|
||||
0084;<control>;Cc;0;BN;;;;;N;;;;;
|
||||
0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
|
||||
0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
|
||||
0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
|
||||
0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
|
||||
0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
|
||||
008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
|
||||
008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
|
||||
008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
|
||||
008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
|
||||
008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
|
||||
008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
|
||||
0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
|
||||
0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
|
||||
0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
|
||||
0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
|
||||
0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
|
||||
0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
|
||||
0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
|
||||
0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
|
||||
0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
|
||||
0099;<control>;Cc;0;BN;;;;;N;;;;;
|
||||
009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
|
||||
009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
|
||||
009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
|
||||
009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
|
||||
009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
|
||||
009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
|
||||
00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
|
||||
00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
|
||||
00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
|
||||
00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
|
||||
00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
|
||||
00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
|
||||
00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
|
||||
00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
|
||||
00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
|
||||
00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;
|
||||
00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
|
||||
00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
|
||||
00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
|
||||
00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
|
||||
00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
|
||||
00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
|
||||
00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
|
||||
00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
|
||||
00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
|
||||
00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
|
||||
00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
|
||||
00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
|
||||
00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
|
||||
00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
|
||||
00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
|
||||
00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
|
||||
00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
|
||||
00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
|
||||
00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
|
||||
00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
|
||||
00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
|
||||
00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
|
||||
00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
|
||||
00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
|
||||
00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
|
||||
00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
|
||||
00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
|
||||
00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
|
||||
00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
|
||||
00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
|
||||
00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
|
||||
00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
|
||||
00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
|
||||
00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
|
||||
00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
|
||||
00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
|
||||
00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
|
||||
00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
|
||||
00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
|
||||
00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
|
||||
00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
|
||||
00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
|
||||
00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
|
||||
00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
|
||||
00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
|
||||
00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
|
||||
00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
|
||||
00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
|
||||
00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
|
||||
00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
|
||||
00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
|
||||
00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
|
||||
00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
|
||||
00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
|
||||
00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
|
||||
00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
|
||||
00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
|
||||
00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
|
||||
00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
|
||||
00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
|
||||
00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
|
||||
00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
|
||||
00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
|
||||
00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
|
||||
00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
|
||||
00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
|
||||
00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
|
||||
00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
|
||||
00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
|
||||
00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
|
||||
00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
|
||||
00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
|
||||
00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
|
||||
00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
|
||||
00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
|
||||
00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
|
||||
00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
|
||||
00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
|
||||
00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
|
||||
00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
|
||||
00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
|
||||
00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
|
||||
0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
|
||||
0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
|
||||
0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
|
||||
0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
|
||||
0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
|
||||
0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
|
||||
0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
|
||||
0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
|
||||
0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
|
||||
0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
|
||||
010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
|
||||
010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
|
||||
010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
|
||||
010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
|
||||
010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
|
||||
010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
|
||||
0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
|
||||
0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
|
||||
0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
|
||||
0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
|
||||
0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
|
||||
0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
|
||||
0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
|
||||
0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
|
||||
011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
|
||||
011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
|
||||
011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
|
||||
011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
|
||||
011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
|
||||
011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
|
||||
0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
|
||||
0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
|
||||
0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
|
||||
0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
|
||||
0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
|
||||
0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
|
||||
0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
|
||||
0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
|
||||
0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
|
||||
0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
|
||||
012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
|
||||
012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
|
||||
012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
|
||||
012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
|
||||
0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
|
||||
0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
|
||||
0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
|
||||
0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
|
||||
0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
|
||||
0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
|
||||
0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
|
||||
0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
|
||||
013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
|
||||
013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
|
||||
013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
|
||||
013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
|
||||
013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
|
||||
0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
|
||||
0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
|
||||
0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
|
||||
0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
|
||||
0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
|
||||
0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
|
||||
0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
|
||||
0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
|
||||
014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
|
||||
014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
|
||||
014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
|
||||
014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
|
||||
0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
|
||||
0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
|
||||
0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
|
||||
0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
|
||||
0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
|
||||
0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
|
||||
0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
|
||||
0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
|
||||
0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
|
||||
0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
|
||||
015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
|
||||
015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
|
||||
015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
|
||||
015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
|
||||
015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
|
||||
015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
|
||||
0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
|
||||
0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
|
||||
0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
|
||||
0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
|
||||
0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
|
||||
0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
|
||||
0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
|
||||
0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
|
||||
0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
|
||||
0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
|
||||
016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
|
||||
016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
|
||||
016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
|
||||
016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
|
||||
016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
|
||||
016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
|
||||
0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
|
||||
0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
|
||||
0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
|
||||
0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
|
||||
0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
|
||||
0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
|
||||
0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
|
||||
0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
|
||||
0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
|
||||
0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
|
||||
017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
|
||||
017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
|
||||
017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
|
||||
017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
|
||||
017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
|
||||
0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
|
||||
0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
|
||||
01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
|
||||
01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
|
||||
01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
|
||||
01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
|
||||
0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
|
||||
0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
|
||||
021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
|
||||
021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
|
||||
02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
|
||||
02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
|
||||
02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
|
||||
02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
|
||||
02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
|
||||
02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
|
||||
02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
|
||||
0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
|
||||
0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
|
||||
0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
|
||||
0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
|
||||
0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
|
||||
037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
|
||||
0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
|
||||
0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
|
||||
0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
|
||||
0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
|
||||
0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
|
||||
038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
|
||||
038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
|
||||
038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
|
||||
038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
|
||||
0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
|
||||
0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
|
||||
0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
|
||||
0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
|
||||
0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
|
||||
0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
|
||||
0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
|
||||
0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
|
||||
0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
|
||||
0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
|
||||
039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
|
||||
039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
|
||||
039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
|
||||
039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
|
||||
039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
|
||||
039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
|
||||
03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
|
||||
03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
|
||||
03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
|
||||
03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
|
||||
03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
|
||||
03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
|
||||
03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
|
||||
03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
|
||||
03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
|
||||
03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
|
||||
03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
|
||||
03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
|
||||
03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
|
||||
03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
|
||||
03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
|
||||
03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
|
||||
03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
|
||||
03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
|
||||
03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
|
||||
03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
|
||||
03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
|
||||
03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
|
||||
03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
|
||||
03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
|
||||
03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
|
||||
03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
|
||||
03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
|
||||
03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
|
||||
03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
|
||||
03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
|
||||
03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
|
||||
03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
|
||||
03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
|
||||
03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
|
||||
03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
|
||||
03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
|
||||
03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
|
||||
03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
|
||||
03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
|
||||
03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
|
||||
03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
|
||||
03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
|
||||
03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
|
||||
03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
|
||||
03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
|
||||
03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
|
||||
0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
|
||||
0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
|
||||
0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
|
||||
0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
|
||||
0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
|
||||
0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
|
||||
0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
|
||||
0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
|
||||
0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
|
||||
040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
|
||||
040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
|
||||
040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
|
||||
040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
|
||||
040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
|
||||
0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
|
||||
0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
|
||||
0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
|
||||
0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
|
||||
0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
|
||||
0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
|
||||
0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
|
||||
0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
|
||||
0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
|
||||
0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
|
||||
041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
|
||||
041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
|
||||
041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
|
||||
041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
|
||||
041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
|
||||
041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
|
||||
0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
|
||||
0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
|
||||
0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
|
||||
0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
|
||||
0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
|
||||
0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
|
||||
0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
|
||||
0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
|
||||
0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
|
||||
0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
|
||||
042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
|
||||
042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
|
||||
042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
|
||||
042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
|
||||
042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
|
||||
042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
|
||||
0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
|
||||
0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
|
||||
0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
|
||||
0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
|
||||
0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
|
||||
0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
|
||||
0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
|
||||
0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
|
||||
0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
|
||||
0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
|
||||
043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
|
||||
043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
|
||||
043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
|
||||
043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
|
||||
043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
|
||||
043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
|
||||
0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
|
||||
0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
|
||||
0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
|
||||
0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
|
||||
0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
|
||||
0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
|
||||
0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
|
||||
0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
|
||||
0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
|
||||
0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
|
||||
044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
|
||||
044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
|
||||
044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
|
||||
044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
|
||||
044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
|
||||
044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
|
||||
0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
|
||||
0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
|
||||
0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
|
||||
0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
|
||||
0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
|
||||
0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
|
||||
0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
|
||||
0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
|
||||
0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
|
||||
045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
|
||||
045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
|
||||
045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
|
||||
045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
|
||||
045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
|
||||
0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
|
||||
0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
|
||||
05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
|
||||
05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
|
||||
05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
|
||||
05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
|
||||
05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
|
||||
05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
|
||||
05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
|
||||
05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
|
||||
05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
|
||||
05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
|
||||
05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
|
||||
05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
|
||||
05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
|
||||
05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;;
|
||||
05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
|
||||
05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
|
||||
05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
|
||||
05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
|
||||
05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
|
||||
05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
|
||||
05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
|
||||
05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
|
||||
05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
|
||||
05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
|
||||
05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
|
||||
05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
|
||||
05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
|
||||
05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
|
||||
05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
|
||||
05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
|
||||
05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
|
||||
05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
|
||||
05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
|
||||
05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
|
||||
05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
|
||||
05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
|
||||
05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
|
||||
05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
|
||||
05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
|
||||
05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
|
||||
05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
|
||||
05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
|
||||
05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
|
||||
05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
|
||||
05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
|
||||
05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
|
||||
05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
|
||||
05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
|
||||
05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
|
||||
05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
|
||||
05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
|
||||
060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
|
||||
061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
|
||||
061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
|
||||
0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
|
||||
0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
|
||||
0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
|
||||
0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
|
||||
0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
|
||||
0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
|
||||
0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
|
||||
0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
|
||||
0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
|
||||
062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
|
||||
062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
|
||||
062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
|
||||
062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
|
||||
062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
|
||||
062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
|
||||
0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
|
||||
0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
|
||||
0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
|
||||
0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
|
||||
0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
|
||||
0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
|
||||
0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
|
||||
0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
|
||||
0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
|
||||
0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
|
||||
063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
|
||||
0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
|
||||
0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
|
||||
0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
|
||||
0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
|
||||
0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
|
||||
0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
|
||||
0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
|
||||
0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
|
||||
0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
|
||||
0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
|
||||
064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
|
||||
064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
|
||||
064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
|
||||
064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
|
||||
064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
|
||||
064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
|
||||
0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
|
||||
0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
|
||||
0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
|
||||
0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
|
||||
0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
|
||||
0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
|
||||
0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
|
||||
0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
|
||||
0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
|
||||
0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
|
||||
0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
|
||||
0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
|
||||
0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
|
||||
066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
|
||||
0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
|
||||
067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
|
||||
0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
|
||||
0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
|
||||
0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
|
||||
0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
|
||||
06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
|
||||
06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
|
||||
06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
|
||||
06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
|
||||
06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
|
||||
06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
|
||||
0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
|
||||
0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
|
||||
0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
|
||||
0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
|
||||
0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
|
||||
0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
|
||||
0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
|
||||
0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
|
||||
0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
|
||||
0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
|
||||
0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
|
||||
0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
|
||||
0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
|
||||
0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
|
||||
0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
|
||||
0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
|
||||
0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
|
||||
0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
|
||||
0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
|
||||
0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
|
||||
0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
|
||||
0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
|
||||
0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
|
||||
0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
|
||||
0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
|
||||
0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
|
||||
0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
|
||||
0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
|
||||
0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
|
||||
0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
|
||||
0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
|
||||
0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
|
||||
0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
|
||||
0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
|
||||
0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
|
||||
0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
|
||||
0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
|
||||
0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
|
||||
0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
|
||||
0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
|
||||
0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
|
||||
0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
|
||||
0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
|
||||
0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
|
||||
0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
|
||||
0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
|
||||
0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
|
||||
0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
|
||||
0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
|
||||
0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
|
||||
0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
|
||||
0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
|
||||
0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
|
||||
0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
|
||||
0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
|
||||
0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
|
||||
0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
|
||||
0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
|
||||
0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
|
||||
0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
|
||||
0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
|
||||
0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
|
||||
0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
|
||||
0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
|
||||
0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
|
||||
0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
|
||||
0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
|
||||
0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
|
||||
0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
|
||||
0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
|
||||
0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
|
||||
0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
|
||||
0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
|
||||
0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
|
||||
0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
|
||||
0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
|
||||
0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
|
||||
0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
|
||||
0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
|
||||
0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
|
||||
0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
|
||||
0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
|
||||
0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
|
||||
0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
|
||||
0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
|
||||
0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
|
||||
0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
|
||||
1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
|
||||
1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
|
||||
1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
|
||||
1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
|
||||
1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
|
||||
1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
|
||||
1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
|
||||
1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
|
||||
1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
|
||||
1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
|
||||
1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
|
||||
1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
|
||||
1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
|
||||
1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
|
||||
1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
|
||||
1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
|
||||
1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
|
||||
1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
|
||||
1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
|
||||
1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
|
||||
1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
|
||||
1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
|
||||
200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
|
||||
200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
|
||||
200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
|
||||
200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
|
||||
2013;EN DASH;Pd;0;ON;;;;;N;;;;;
|
||||
2014;EM DASH;Pd;0;ON;;;;;N;;;;;
|
||||
2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
|
||||
2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
|
||||
2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
|
||||
2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
|
||||
201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
|
||||
201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
|
||||
201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
|
||||
201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
|
||||
2020;DAGGER;Po;0;ON;;;;;N;;;;;
|
||||
2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
|
||||
2022;BULLET;Po;0;ON;;;;;N;;;;;
|
||||
2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
|
||||
2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
|
||||
2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
|
||||
203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
|
||||
207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
|
||||
20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
|
||||
2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
|
||||
2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
|
||||
221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
|
||||
221E;INFINITY;Sm;0;ON;;;;;N;;;;;
|
||||
2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
|
||||
2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
|
||||
2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
|
||||
2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
|
||||
2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
|
||||
2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
|
||||
2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
|
||||
2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
|
||||
2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
|
||||
2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
|
||||
250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
|
||||
2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
|
||||
2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
|
||||
2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
|
||||
251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
|
||||
2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
|
||||
252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
|
||||
2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
|
||||
253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
|
||||
2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
|
||||
2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
|
||||
2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
|
||||
2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
|
||||
2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
|
||||
2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
|
||||
2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
|
||||
2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
|
||||
2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
|
||||
2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
|
||||
255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
|
||||
255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
|
||||
255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
|
||||
255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
|
||||
255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
|
||||
255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
|
||||
2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
|
||||
2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
|
||||
2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
|
||||
2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
|
||||
2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
|
||||
2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
|
||||
2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
|
||||
2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
|
||||
2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
|
||||
2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
|
||||
256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
|
||||
256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
|
||||
256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
|
||||
2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
|
||||
2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
|
||||
2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
|
||||
258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
|
||||
2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
|
||||
2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
|
||||
2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
|
||||
2593;DARK SHADE;So;0;ON;;;;;N;;;;;
|
||||
25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
|
||||
FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
|
||||
FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
|
||||
FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
|
||||
FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
|
||||
FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
|
||||
FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
|
||||
FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
|
||||
FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
|
||||
FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
|
||||
FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
|
||||
FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
|
||||
FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
|
||||
FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
|
||||
FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
|
||||
FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
|
||||
FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
|
||||
FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
|
||||
FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
|
||||
FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
|
||||
FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
|
||||
FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
|
||||
FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
|
||||
FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
|
||||
FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
|
||||
FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
|
||||
FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
|
||||
FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
|
||||
FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
|
||||
FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
|
||||
FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
|
||||
FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
|
||||
FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
|
||||
FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
|
||||
FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
|
||||
FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
|
||||
FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
|
||||
FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
|
||||
FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
|
||||
FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
|
||||
FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
|
||||
FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
|
||||
FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
|
||||
FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
|
||||
FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
|
||||
FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
|
||||
FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
|
||||
FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
|
||||
FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
|
||||
FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
|
||||
FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
|
||||
FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
|
||||
FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
|
||||
FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
|
||||
FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
|
||||
FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
|
||||
FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
|
||||
FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
|
||||
FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
|
||||
FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
|
||||
FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
|
||||
FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
|
||||
FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
|
||||
FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
|
||||
FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
|
||||
FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
|
||||
FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
|
||||
FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
|
||||
FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
|
||||
FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
|
||||
FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
|
||||
FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
|
||||
FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1250 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1250 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1250 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 #UNDEFINED
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 #UNDEFINED
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x8D 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x8F 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x015B #LATIN SMALL LETTER S WITH ACUTE
|
||||
0x9D 0x0165 #LATIN SMALL LETTER T WITH CARON
|
||||
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0x9F 0x017A #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x02C7 #CARON
|
||||
0xA2 0x02D8 #BREVE
|
||||
0xA3 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x02DB #OGONEK
|
||||
0xB3 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xBA 0x015F #LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x013D #LATIN CAPITAL LETTER L WITH CARON
|
||||
0xBD 0x02DD #DOUBLE ACUTE ACCENT
|
||||
0xBE 0x013E #LATIN SMALL LETTER L WITH CARON
|
||||
0xBF 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0xC6 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x011A #LATIN CAPITAL LETTER E WITH CARON
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x010E #LATIN CAPITAL LETTER D WITH CARON
|
||||
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0147 #LATIN CAPITAL LETTER N WITH CARON
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0158 #LATIN CAPITAL LETTER R WITH CARON
|
||||
0xD9 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0155 #LATIN SMALL LETTER R WITH ACUTE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x013A #LATIN SMALL LETTER L WITH ACUTE
|
||||
0xE6 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x011B #LATIN SMALL LETTER E WITH CARON
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x010F #LATIN SMALL LETTER D WITH CARON
|
||||
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0148 #LATIN SMALL LETTER N WITH CARON
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0159 #LATIN SMALL LETTER R WITH CARON
|
||||
0xF9 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
|
||||
0xFF 0x02D9 #DOT ABOVE
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1251 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1251 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1251 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x0402 #CYRILLIC CAPITAL LETTER DJE
|
||||
0x81 0x0403 #CYRILLIC CAPITAL LETTER GJE
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0453 #CYRILLIC SMALL LETTER GJE
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x20AC #EURO SIGN
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0409 #CYRILLIC CAPITAL LETTER LJE
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x040A #CYRILLIC CAPITAL LETTER NJE
|
||||
0x8D 0x040C #CYRILLIC CAPITAL LETTER KJE
|
||||
0x8E 0x040B #CYRILLIC CAPITAL LETTER TSHE
|
||||
0x8F 0x040F #CYRILLIC CAPITAL LETTER DZHE
|
||||
0x90 0x0452 #CYRILLIC SMALL LETTER DJE
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0459 #CYRILLIC SMALL LETTER LJE
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x045A #CYRILLIC SMALL LETTER NJE
|
||||
0x9D 0x045C #CYRILLIC SMALL LETTER KJE
|
||||
0x9E 0x045B #CYRILLIC SMALL LETTER TSHE
|
||||
0x9F 0x045F #CYRILLIC SMALL LETTER DZHE
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x040E #CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xA2 0x045E #CYRILLIC SMALL LETTER SHORT U
|
||||
0xA3 0x0408 #CYRILLIC CAPITAL LETTER JE
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x0490 #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x0401 #CYRILLIC CAPITAL LETTER IO
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x0407 #CYRILLIC CAPITAL LETTER YI
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xB3 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xB4 0x0491 #CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x0451 #CYRILLIC SMALL LETTER IO
|
||||
0xB9 0x2116 #NUMERO SIGN
|
||||
0xBA 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x0458 #CYRILLIC SMALL LETTER JE
|
||||
0xBD 0x0405 #CYRILLIC CAPITAL LETTER DZE
|
||||
0xBE 0x0455 #CYRILLIC SMALL LETTER DZE
|
||||
0xBF 0x0457 #CYRILLIC SMALL LETTER YI
|
||||
0xC0 0x0410 #CYRILLIC CAPITAL LETTER A
|
||||
0xC1 0x0411 #CYRILLIC CAPITAL LETTER BE
|
||||
0xC2 0x0412 #CYRILLIC CAPITAL LETTER VE
|
||||
0xC3 0x0413 #CYRILLIC CAPITAL LETTER GHE
|
||||
0xC4 0x0414 #CYRILLIC CAPITAL LETTER DE
|
||||
0xC5 0x0415 #CYRILLIC CAPITAL LETTER IE
|
||||
0xC6 0x0416 #CYRILLIC CAPITAL LETTER ZHE
|
||||
0xC7 0x0417 #CYRILLIC CAPITAL LETTER ZE
|
||||
0xC8 0x0418 #CYRILLIC CAPITAL LETTER I
|
||||
0xC9 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xCA 0x041A #CYRILLIC CAPITAL LETTER KA
|
||||
0xCB 0x041B #CYRILLIC CAPITAL LETTER EL
|
||||
0xCC 0x041C #CYRILLIC CAPITAL LETTER EM
|
||||
0xCD 0x041D #CYRILLIC CAPITAL LETTER EN
|
||||
0xCE 0x041E #CYRILLIC CAPITAL LETTER O
|
||||
0xCF 0x041F #CYRILLIC CAPITAL LETTER PE
|
||||
0xD0 0x0420 #CYRILLIC CAPITAL LETTER ER
|
||||
0xD1 0x0421 #CYRILLIC CAPITAL LETTER ES
|
||||
0xD2 0x0422 #CYRILLIC CAPITAL LETTER TE
|
||||
0xD3 0x0423 #CYRILLIC CAPITAL LETTER U
|
||||
0xD4 0x0424 #CYRILLIC CAPITAL LETTER EF
|
||||
0xD5 0x0425 #CYRILLIC CAPITAL LETTER HA
|
||||
0xD6 0x0426 #CYRILLIC CAPITAL LETTER TSE
|
||||
0xD7 0x0427 #CYRILLIC CAPITAL LETTER CHE
|
||||
0xD8 0x0428 #CYRILLIC CAPITAL LETTER SHA
|
||||
0xD9 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xDA 0x042A #CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0xDB 0x042B #CYRILLIC CAPITAL LETTER YERU
|
||||
0xDC 0x042C #CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xDD 0x042D #CYRILLIC CAPITAL LETTER E
|
||||
0xDE 0x042E #CYRILLIC CAPITAL LETTER YU
|
||||
0xDF 0x042F #CYRILLIC CAPITAL LETTER YA
|
||||
0xE0 0x0430 #CYRILLIC SMALL LETTER A
|
||||
0xE1 0x0431 #CYRILLIC SMALL LETTER BE
|
||||
0xE2 0x0432 #CYRILLIC SMALL LETTER VE
|
||||
0xE3 0x0433 #CYRILLIC SMALL LETTER GHE
|
||||
0xE4 0x0434 #CYRILLIC SMALL LETTER DE
|
||||
0xE5 0x0435 #CYRILLIC SMALL LETTER IE
|
||||
0xE6 0x0436 #CYRILLIC SMALL LETTER ZHE
|
||||
0xE7 0x0437 #CYRILLIC SMALL LETTER ZE
|
||||
0xE8 0x0438 #CYRILLIC SMALL LETTER I
|
||||
0xE9 0x0439 #CYRILLIC SMALL LETTER SHORT I
|
||||
0xEA 0x043A #CYRILLIC SMALL LETTER KA
|
||||
0xEB 0x043B #CYRILLIC SMALL LETTER EL
|
||||
0xEC 0x043C #CYRILLIC SMALL LETTER EM
|
||||
0xED 0x043D #CYRILLIC SMALL LETTER EN
|
||||
0xEE 0x043E #CYRILLIC SMALL LETTER O
|
||||
0xEF 0x043F #CYRILLIC SMALL LETTER PE
|
||||
0xF0 0x0440 #CYRILLIC SMALL LETTER ER
|
||||
0xF1 0x0441 #CYRILLIC SMALL LETTER ES
|
||||
0xF2 0x0442 #CYRILLIC SMALL LETTER TE
|
||||
0xF3 0x0443 #CYRILLIC SMALL LETTER U
|
||||
0xF4 0x0444 #CYRILLIC SMALL LETTER EF
|
||||
0xF5 0x0445 #CYRILLIC SMALL LETTER HA
|
||||
0xF6 0x0446 #CYRILLIC SMALL LETTER TSE
|
||||
0xF7 0x0447 #CYRILLIC SMALL LETTER CHE
|
||||
0xF8 0x0448 #CYRILLIC SMALL LETTER SHA
|
||||
0xF9 0x0449 #CYRILLIC SMALL LETTER SHCHA
|
||||
0xFA 0x044A #CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xFB 0x044B #CYRILLIC SMALL LETTER YERU
|
||||
0xFC 0x044C #CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xFD 0x044D #CYRILLIC SMALL LETTER E
|
||||
0xFE 0x044E #CYRILLIC SMALL LETTER YU
|
||||
0xFF 0x044F #CYRILLIC SMALL LETTER YA
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1252 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1252 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1252 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
|
||||
0x8D #UNDEFINED
|
||||
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0x8F #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x02DC #SMALL TILDE
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x0153 #LATIN SMALL LIGATURE OE
|
||||
0x9D #UNDEFINED
|
||||
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF #INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 #LATIN CAPITAL LETTER ETH
|
||||
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE #LATIN CAPITAL LETTER THORN
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 #LATIN SMALL LETTER ETH
|
||||
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE #LATIN SMALL LETTER THORN
|
||||
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1253 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1253 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1253 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 #UNDEFINED
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A #UNDEFINED
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C #UNDEFINED
|
||||
0x8D #UNDEFINED
|
||||
0x8E #UNDEFINED
|
||||
0x8F #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A #UNDEFINED
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C #UNDEFINED
|
||||
0x9D #UNDEFINED
|
||||
0x9E #UNDEFINED
|
||||
0x9F #UNDEFINED
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x0385 #GREEK DIALYTIKA TONOS
|
||||
0xA2 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA #UNDEFINED
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x2015 #HORIZONTAL BAR
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x0384 #GREEK TONOS
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0xB9 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0xBA 0x038A #GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x038C #GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x038E #GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0xBF 0x038F #GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0xC0 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
0xC1 0x0391 #GREEK CAPITAL LETTER ALPHA
|
||||
0xC2 0x0392 #GREEK CAPITAL LETTER BETA
|
||||
0xC3 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xC4 0x0394 #GREEK CAPITAL LETTER DELTA
|
||||
0xC5 0x0395 #GREEK CAPITAL LETTER EPSILON
|
||||
0xC6 0x0396 #GREEK CAPITAL LETTER ZETA
|
||||
0xC7 0x0397 #GREEK CAPITAL LETTER ETA
|
||||
0xC8 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xC9 0x0399 #GREEK CAPITAL LETTER IOTA
|
||||
0xCA 0x039A #GREEK CAPITAL LETTER KAPPA
|
||||
0xCB 0x039B #GREEK CAPITAL LETTER LAMDA
|
||||
0xCC 0x039C #GREEK CAPITAL LETTER MU
|
||||
0xCD 0x039D #GREEK CAPITAL LETTER NU
|
||||
0xCE 0x039E #GREEK CAPITAL LETTER XI
|
||||
0xCF 0x039F #GREEK CAPITAL LETTER OMICRON
|
||||
0xD0 0x03A0 #GREEK CAPITAL LETTER PI
|
||||
0xD1 0x03A1 #GREEK CAPITAL LETTER RHO
|
||||
0xD2 #UNDEFINED
|
||||
0xD3 0x03A3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xD4 0x03A4 #GREEK CAPITAL LETTER TAU
|
||||
0xD5 0x03A5 #GREEK CAPITAL LETTER UPSILON
|
||||
0xD6 0x03A6 #GREEK CAPITAL LETTER PHI
|
||||
0xD7 0x03A7 #GREEK CAPITAL LETTER CHI
|
||||
0xD8 0x03A8 #GREEK CAPITAL LETTER PSI
|
||||
0xD9 0x03A9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xDA 0x03AA #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0xDB 0x03AB #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0xDC 0x03AC #GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0xDD 0x03AD #GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0xDE 0x03AE #GREEK SMALL LETTER ETA WITH TONOS
|
||||
0xDF 0x03AF #GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0xE0 0x03B0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
0xE1 0x03B1 #GREEK SMALL LETTER ALPHA
|
||||
0xE2 0x03B2 #GREEK SMALL LETTER BETA
|
||||
0xE3 0x03B3 #GREEK SMALL LETTER GAMMA
|
||||
0xE4 0x03B4 #GREEK SMALL LETTER DELTA
|
||||
0xE5 0x03B5 #GREEK SMALL LETTER EPSILON
|
||||
0xE6 0x03B6 #GREEK SMALL LETTER ZETA
|
||||
0xE7 0x03B7 #GREEK SMALL LETTER ETA
|
||||
0xE8 0x03B8 #GREEK SMALL LETTER THETA
|
||||
0xE9 0x03B9 #GREEK SMALL LETTER IOTA
|
||||
0xEA 0x03BA #GREEK SMALL LETTER KAPPA
|
||||
0xEB 0x03BB #GREEK SMALL LETTER LAMDA
|
||||
0xEC 0x03BC #GREEK SMALL LETTER MU
|
||||
0xED 0x03BD #GREEK SMALL LETTER NU
|
||||
0xEE 0x03BE #GREEK SMALL LETTER XI
|
||||
0xEF 0x03BF #GREEK SMALL LETTER OMICRON
|
||||
0xF0 0x03C0 #GREEK SMALL LETTER PI
|
||||
0xF1 0x03C1 #GREEK SMALL LETTER RHO
|
||||
0xF2 0x03C2 #GREEK SMALL LETTER FINAL SIGMA
|
||||
0xF3 0x03C3 #GREEK SMALL LETTER SIGMA
|
||||
0xF4 0x03C4 #GREEK SMALL LETTER TAU
|
||||
0xF5 0x03C5 #GREEK SMALL LETTER UPSILON
|
||||
0xF6 0x03C6 #GREEK SMALL LETTER PHI
|
||||
0xF7 0x03C7 #GREEK SMALL LETTER CHI
|
||||
0xF8 0x03C8 #GREEK SMALL LETTER PSI
|
||||
0xF9 0x03C9 #GREEK SMALL LETTER OMEGA
|
||||
0xFA 0x03CA #GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0xFB 0x03CB #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0xFC 0x03CC #GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0xFD 0x03CD #GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0xFE 0x03CE #GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0xFF #UNDEFINED
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1254 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1254 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1254 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
|
||||
0x8D #UNDEFINED
|
||||
0x8E #UNDEFINED
|
||||
0x8F #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x02DC #SMALL TILDE
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x0153 #LATIN SMALL LIGATURE OE
|
||||
0x9D #UNDEFINED
|
||||
0x9E #UNDEFINED
|
||||
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF #INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x011E #LATIN CAPITAL LETTER G WITH BREVE
|
||||
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x0130 #LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0xDE 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x011F #LATIN SMALL LETTER G WITH BREVE
|
||||
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x0131 #LATIN SMALL LETTER DOTLESS I
|
||||
0xFE 0x015F #LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1255 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 1/7/2000
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1255 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1255 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A #UNDEFINED
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C #UNDEFINED
|
||||
0x8D #UNDEFINED
|
||||
0x8E #UNDEFINED
|
||||
0x8F #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x02DC #SMALL TILDE
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A #UNDEFINED
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C #UNDEFINED
|
||||
0x9D #UNDEFINED
|
||||
0x9E #UNDEFINED
|
||||
0x9F #UNDEFINED
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x20AA #NEW SHEQEL SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x00D7 #MULTIPLICATION SIGN
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x00F7 #DIVISION SIGN
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF #INVERTED QUESTION MARK
|
||||
0xC0 0x05B0 #HEBREW POINT SHEVA
|
||||
0xC1 0x05B1 #HEBREW POINT HATAF SEGOL
|
||||
0xC2 0x05B2 #HEBREW POINT HATAF PATAH
|
||||
0xC3 0x05B3 #HEBREW POINT HATAF QAMATS
|
||||
0xC4 0x05B4 #HEBREW POINT HIRIQ
|
||||
0xC5 0x05B5 #HEBREW POINT TSERE
|
||||
0xC6 0x05B6 #HEBREW POINT SEGOL
|
||||
0xC7 0x05B7 #HEBREW POINT PATAH
|
||||
0xC8 0x05B8 #HEBREW POINT QAMATS
|
||||
0xC9 0x05B9 #HEBREW POINT HOLAM
|
||||
0xCA #UNDEFINED
|
||||
0xCB 0x05BB #HEBREW POINT QUBUTS
|
||||
0xCC 0x05BC #HEBREW POINT DAGESH OR MAPIQ
|
||||
0xCD 0x05BD #HEBREW POINT METEG
|
||||
0xCE 0x05BE #HEBREW PUNCTUATION MAQAF
|
||||
0xCF 0x05BF #HEBREW POINT RAFE
|
||||
0xD0 0x05C0 #HEBREW PUNCTUATION PASEQ
|
||||
0xD1 0x05C1 #HEBREW POINT SHIN DOT
|
||||
0xD2 0x05C2 #HEBREW POINT SIN DOT
|
||||
0xD3 0x05C3 #HEBREW PUNCTUATION SOF PASUQ
|
||||
0xD4 0x05F0 #HEBREW LIGATURE YIDDISH DOUBLE VAV
|
||||
0xD5 0x05F1 #HEBREW LIGATURE YIDDISH VAV YOD
|
||||
0xD6 0x05F2 #HEBREW LIGATURE YIDDISH DOUBLE YOD
|
||||
0xD7 0x05F3 #HEBREW PUNCTUATION GERESH
|
||||
0xD8 0x05F4 #HEBREW PUNCTUATION GERSHAYIM
|
||||
0xD9 #UNDEFINED
|
||||
0xDA #UNDEFINED
|
||||
0xDB #UNDEFINED
|
||||
0xDC #UNDEFINED
|
||||
0xDD #UNDEFINED
|
||||
0xDE #UNDEFINED
|
||||
0xDF #UNDEFINED
|
||||
0xE0 0x05D0 #HEBREW LETTER ALEF
|
||||
0xE1 0x05D1 #HEBREW LETTER BET
|
||||
0xE2 0x05D2 #HEBREW LETTER GIMEL
|
||||
0xE3 0x05D3 #HEBREW LETTER DALET
|
||||
0xE4 0x05D4 #HEBREW LETTER HE
|
||||
0xE5 0x05D5 #HEBREW LETTER VAV
|
||||
0xE6 0x05D6 #HEBREW LETTER ZAYIN
|
||||
0xE7 0x05D7 #HEBREW LETTER HET
|
||||
0xE8 0x05D8 #HEBREW LETTER TET
|
||||
0xE9 0x05D9 #HEBREW LETTER YOD
|
||||
0xEA 0x05DA #HEBREW LETTER FINAL KAF
|
||||
0xEB 0x05DB #HEBREW LETTER KAF
|
||||
0xEC 0x05DC #HEBREW LETTER LAMED
|
||||
0xED 0x05DD #HEBREW LETTER FINAL MEM
|
||||
0xEE 0x05DE #HEBREW LETTER MEM
|
||||
0xEF 0x05DF #HEBREW LETTER FINAL NUN
|
||||
0xF0 0x05E0 #HEBREW LETTER NUN
|
||||
0xF1 0x05E1 #HEBREW LETTER SAMEKH
|
||||
0xF2 0x05E2 #HEBREW LETTER AYIN
|
||||
0xF3 0x05E3 #HEBREW LETTER FINAL PE
|
||||
0xF4 0x05E4 #HEBREW LETTER PE
|
||||
0xF5 0x05E5 #HEBREW LETTER FINAL TSADI
|
||||
0xF6 0x05E6 #HEBREW LETTER TSADI
|
||||
0xF7 0x05E7 #HEBREW LETTER QOF
|
||||
0xF8 0x05E8 #HEBREW LETTER RESH
|
||||
0xF9 0x05E9 #HEBREW LETTER SHIN
|
||||
0xFA 0x05EA #HEBREW LETTER TAV
|
||||
0xFB #UNDEFINED
|
||||
0xFC #UNDEFINED
|
||||
0xFD 0x200E #LEFT-TO-RIGHT MARK
|
||||
0xFE 0x200F #RIGHT-TO-LEFT MARK
|
||||
0xFF #UNDEFINED
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1256 to Unicode table
|
||||
# Unicode version: 2.1
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 01/5/99
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1256 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1256 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 0x067E #ARABIC LETTER PEH
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A 0x0679 #ARABIC LETTER TTEH
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
|
||||
0x8D 0x0686 #ARABIC LETTER TCHEH
|
||||
0x8E 0x0698 #ARABIC LETTER JEH
|
||||
0x8F 0x0688 #ARABIC LETTER DDAL
|
||||
0x90 0x06AF #ARABIC LETTER GAF
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x06A9 #ARABIC LETTER KEHEH
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A 0x0691 #ARABIC LETTER RREH
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x0153 #LATIN SMALL LIGATURE OE
|
||||
0x9D 0x200C #ZERO WIDTH NON-JOINER
|
||||
0x9E 0x200D #ZERO WIDTH JOINER
|
||||
0x9F 0x06BA #ARABIC LETTER NOON GHUNNA
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x060C #ARABIC COMMA
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x06BE #ARABIC LETTER HEH DOACHASHMEE
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x061B #ARABIC SEMICOLON
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x061F #ARABIC QUESTION MARK
|
||||
0xC0 0x06C1 #ARABIC LETTER HEH GOAL
|
||||
0xC1 0x0621 #ARABIC LETTER HAMZA
|
||||
0xC2 0x0622 #ARABIC LETTER ALEF WITH MADDA ABOVE
|
||||
0xC3 0x0623 #ARABIC LETTER ALEF WITH HAMZA ABOVE
|
||||
0xC4 0x0624 #ARABIC LETTER WAW WITH HAMZA ABOVE
|
||||
0xC5 0x0625 #ARABIC LETTER ALEF WITH HAMZA BELOW
|
||||
0xC6 0x0626 #ARABIC LETTER YEH WITH HAMZA ABOVE
|
||||
0xC7 0x0627 #ARABIC LETTER ALEF
|
||||
0xC8 0x0628 #ARABIC LETTER BEH
|
||||
0xC9 0x0629 #ARABIC LETTER TEH MARBUTA
|
||||
0xCA 0x062A #ARABIC LETTER TEH
|
||||
0xCB 0x062B #ARABIC LETTER THEH
|
||||
0xCC 0x062C #ARABIC LETTER JEEM
|
||||
0xCD 0x062D #ARABIC LETTER HAH
|
||||
0xCE 0x062E #ARABIC LETTER KHAH
|
||||
0xCF 0x062F #ARABIC LETTER DAL
|
||||
0xD0 0x0630 #ARABIC LETTER THAL
|
||||
0xD1 0x0631 #ARABIC LETTER REH
|
||||
0xD2 0x0632 #ARABIC LETTER ZAIN
|
||||
0xD3 0x0633 #ARABIC LETTER SEEN
|
||||
0xD4 0x0634 #ARABIC LETTER SHEEN
|
||||
0xD5 0x0635 #ARABIC LETTER SAD
|
||||
0xD6 0x0636 #ARABIC LETTER DAD
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0637 #ARABIC LETTER TAH
|
||||
0xD9 0x0638 #ARABIC LETTER ZAH
|
||||
0xDA 0x0639 #ARABIC LETTER AIN
|
||||
0xDB 0x063A #ARABIC LETTER GHAIN
|
||||
0xDC 0x0640 #ARABIC TATWEEL
|
||||
0xDD 0x0641 #ARABIC LETTER FEH
|
||||
0xDE 0x0642 #ARABIC LETTER QAF
|
||||
0xDF 0x0643 #ARABIC LETTER KAF
|
||||
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x0644 #ARABIC LETTER LAM
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0645 #ARABIC LETTER MEEM
|
||||
0xE4 0x0646 #ARABIC LETTER NOON
|
||||
0xE5 0x0647 #ARABIC LETTER HEH
|
||||
0xE6 0x0648 #ARABIC LETTER WAW
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x0649 #ARABIC LETTER ALEF MAKSURA
|
||||
0xED 0x064A #ARABIC LETTER YEH
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x064B #ARABIC FATHATAN
|
||||
0xF1 0x064C #ARABIC DAMMATAN
|
||||
0xF2 0x064D #ARABIC KASRATAN
|
||||
0xF3 0x064E #ARABIC FATHA
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x064F #ARABIC DAMMA
|
||||
0xF6 0x0650 #ARABIC KASRA
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0651 #ARABIC SHADDA
|
||||
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x0652 #ARABIC SUKUN
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x200E #LEFT-TO-RIGHT MARK
|
||||
0xFE 0x200F #RIGHT-TO-LEFT MARK
|
||||
0xFF 0x06D2 #ARABIC LETTER YEH BARREE
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1257 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1257 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1257 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 #UNDEFINED
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 #UNDEFINED
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A #UNDEFINED
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C #UNDEFINED
|
||||
0x8D 0x00A8 #DIAERESIS
|
||||
0x8E 0x02C7 #CARON
|
||||
0x8F 0x00B8 #CEDILLA
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 #UNDEFINED
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A #UNDEFINED
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C #UNDEFINED
|
||||
0x9D 0x00AF #MACRON
|
||||
0x9E 0x02DB #OGONEK
|
||||
0x9F #UNDEFINED
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 #UNDEFINED
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 #UNDEFINED
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xC0 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xC1 0x012E #LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC2 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC3 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xC7 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xCB 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCC 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xCD 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xCE 0x012A #LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xCF 0x013B #LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xD0 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x014C #LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xD9 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xDA 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xDB 0x016A #LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xDE 0x017D #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xE1 0x012F #LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE2 0x0101 #LATIN SMALL LETTER A WITH MACRON
|
||||
0xE3 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xE7 0x0113 #LATIN SMALL LETTER E WITH MACRON
|
||||
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x017A #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xEB 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xEC 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xED 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xEE 0x012B #LATIN SMALL LETTER I WITH MACRON
|
||||
0xEF 0x013C #LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xF0 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x014D #LATIN SMALL LETTER O WITH MACRON
|
||||
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x0173 #LATIN SMALL LETTER U WITH OGONEK
|
||||
0xF9 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0xFA 0x015B #LATIN SMALL LETTER S WITH ACUTE
|
||||
0xFB 0x016B #LATIN SMALL LETTER U WITH MACRON
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xFE 0x017E #LATIN SMALL LETTER Z WITH CARON
|
||||
0xFF 0x02D9 #DOT ABOVE
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp1258 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 04/15/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp1258 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp1258 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
|
||||
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 0x2020 #DAGGER
|
||||
0x87 0x2021 #DOUBLE DAGGER
|
||||
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0x89 0x2030 #PER MILLE SIGN
|
||||
0x8A #UNDEFINED
|
||||
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
|
||||
0x8D #UNDEFINED
|
||||
0x8E #UNDEFINED
|
||||
0x8F #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 0x02DC #SMALL TILDE
|
||||
0x99 0x2122 #TRADE MARK SIGN
|
||||
0x9A #UNDEFINED
|
||||
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0x9C 0x0153 #LATIN SMALL LIGATURE OE
|
||||
0x9D #UNDEFINED
|
||||
0x9E #UNDEFINED
|
||||
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 #CENT SIGN
|
||||
0xA3 0x00A3 #POUND SIGN
|
||||
0xA4 0x00A4 #CURRENCY SIGN
|
||||
0xA5 0x00A5 #YEN SIGN
|
||||
0xA6 0x00A6 #BROKEN BAR
|
||||
0xA7 0x00A7 #SECTION SIGN
|
||||
0xA8 0x00A8 #DIAERESIS
|
||||
0xA9 0x00A9 #COPYRIGHT SIGN
|
||||
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC #NOT SIGN
|
||||
0xAD 0x00AD #SOFT HYPHEN
|
||||
0xAE 0x00AE #REGISTERED SIGN
|
||||
0xAF 0x00AF #MACRON
|
||||
0xB0 0x00B0 #DEGREE SIGN
|
||||
0xB1 0x00B1 #PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 #SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 #SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 #ACUTE ACCENT
|
||||
0xB5 0x00B5 #MICRO SIGN
|
||||
0xB6 0x00B6 #PILCROW SIGN
|
||||
0xB7 0x00B7 #MIDDLE DOT
|
||||
0xB8 0x00B8 #CEDILLA
|
||||
0xB9 0x00B9 #SUPERSCRIPT ONE
|
||||
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD #VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF #INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x0300 #COMBINING GRAVE ACCENT
|
||||
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x0309 #COMBINING HOOK ABOVE
|
||||
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x01A0 #LATIN CAPITAL LETTER O WITH HORN
|
||||
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 #MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x01AF #LATIN CAPITAL LETTER U WITH HORN
|
||||
0xDE 0x0303 #COMBINING TILDE
|
||||
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
|
||||
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 #LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x0301 #COMBINING ACUTE ACCENT
|
||||
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x0323 #COMBINING DOT BELOW
|
||||
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x01A1 #LATIN SMALL LETTER O WITH HORN
|
||||
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 #DIVISION SIGN
|
||||
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x01B0 #LATIN SMALL LETTER U WITH HORN
|
||||
0xFE 0x20AB #DONG SIGN
|
||||
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp437_DOSLatinUS to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp437_DOSLatinUS code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp437_DOSLatinUS order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00a2 #CENT SIGN
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00a5 #YEN SIGN
|
||||
0x9e 0x20a7 #PESETA SIGN
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x2310 #REVERSED NOT SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xe3 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xec 0x221e #INFINITY
|
||||
0xed 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xef 0x2229 #INTERSECTION
|
||||
0xf0 0x2261 #IDENTICAL TO
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x2320 #TOP HALF INTEGRAL
|
||||
0xf5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp737_DOSGreek to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp737_DOSGreek code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp737_DOSGreek order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x0391 #GREEK CAPITAL LETTER ALPHA
|
||||
0x81 0x0392 #GREEK CAPITAL LETTER BETA
|
||||
0x82 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0x83 0x0394 #GREEK CAPITAL LETTER DELTA
|
||||
0x84 0x0395 #GREEK CAPITAL LETTER EPSILON
|
||||
0x85 0x0396 #GREEK CAPITAL LETTER ZETA
|
||||
0x86 0x0397 #GREEK CAPITAL LETTER ETA
|
||||
0x87 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0x88 0x0399 #GREEK CAPITAL LETTER IOTA
|
||||
0x89 0x039a #GREEK CAPITAL LETTER KAPPA
|
||||
0x8a 0x039b #GREEK CAPITAL LETTER LAMDA
|
||||
0x8b 0x039c #GREEK CAPITAL LETTER MU
|
||||
0x8c 0x039d #GREEK CAPITAL LETTER NU
|
||||
0x8d 0x039e #GREEK CAPITAL LETTER XI
|
||||
0x8e 0x039f #GREEK CAPITAL LETTER OMICRON
|
||||
0x8f 0x03a0 #GREEK CAPITAL LETTER PI
|
||||
0x90 0x03a1 #GREEK CAPITAL LETTER RHO
|
||||
0x91 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0x92 0x03a4 #GREEK CAPITAL LETTER TAU
|
||||
0x93 0x03a5 #GREEK CAPITAL LETTER UPSILON
|
||||
0x94 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0x95 0x03a7 #GREEK CAPITAL LETTER CHI
|
||||
0x96 0x03a8 #GREEK CAPITAL LETTER PSI
|
||||
0x97 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0x98 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0x99 0x03b2 #GREEK SMALL LETTER BETA
|
||||
0x9a 0x03b3 #GREEK SMALL LETTER GAMMA
|
||||
0x9b 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0x9c 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0x9d 0x03b6 #GREEK SMALL LETTER ZETA
|
||||
0x9e 0x03b7 #GREEK SMALL LETTER ETA
|
||||
0x9f 0x03b8 #GREEK SMALL LETTER THETA
|
||||
0xa0 0x03b9 #GREEK SMALL LETTER IOTA
|
||||
0xa1 0x03ba #GREEK SMALL LETTER KAPPA
|
||||
0xa2 0x03bb #GREEK SMALL LETTER LAMDA
|
||||
0xa3 0x03bc #GREEK SMALL LETTER MU
|
||||
0xa4 0x03bd #GREEK SMALL LETTER NU
|
||||
0xa5 0x03be #GREEK SMALL LETTER XI
|
||||
0xa6 0x03bf #GREEK SMALL LETTER OMICRON
|
||||
0xa7 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xa8 0x03c1 #GREEK SMALL LETTER RHO
|
||||
0xa9 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xaa 0x03c2 #GREEK SMALL LETTER FINAL SIGMA
|
||||
0xab 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xac 0x03c5 #GREEK SMALL LETTER UPSILON
|
||||
0xad 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xae 0x03c7 #GREEK SMALL LETTER CHI
|
||||
0xaf 0x03c8 #GREEK SMALL LETTER PSI
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03c9 #GREEK SMALL LETTER OMEGA
|
||||
0xe1 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0xe2 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0xe3 0x03ae #GREEK SMALL LETTER ETA WITH TONOS
|
||||
0xe4 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0xe5 0x03af #GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0xe6 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0xe7 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0xe8 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0xe9 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0xea 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0xeb 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0xec 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0xed 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0xee 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0xef 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0xf0 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0xf5 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp775_DOSBaltRim to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp775_DOSBaltRim code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp775_DOSBaltRim order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x0101 #LATIN SMALL LETTER A WITH MACRON
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0x89 0x0113 #LATIN SMALL LETTER E WITH MACRON
|
||||
0x8a 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0x8b 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
|
||||
0x8c 0x012b #LATIN SMALL LETTER I WITH MACRON
|
||||
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x014d #LATIN SMALL LETTER O WITH MACRON
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0x96 0x00a2 #CENT SIGN
|
||||
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x9e 0x00d7 #MULTIPLICATION SIGN
|
||||
0x9f 0x00a4 #CURRENCY SIGN
|
||||
0xa0 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xa1 0x012a #LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xa4 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xa5 0x017a #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xa6 0x201d #RIGHT DOUBLE QUOTATION MARK
|
||||
0xa7 0x00a6 #BROKEN BAR
|
||||
0xa8 0x00a9 #COPYRIGHT SIGN
|
||||
0xa9 0x00ae #REGISTERED SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xb6 0x010c #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xb7 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xb8 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x012e #LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xbe 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xc7 0x016a #LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x017d #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xd0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xd1 0x010d #LATIN SMALL LETTER C WITH CARON
|
||||
0xd2 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xd3 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xd4 0x012f #LATIN SMALL LETTER I WITH OGONEK
|
||||
0xd5 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xd6 0x0173 #LATIN SMALL LETTER U WITH OGONEK
|
||||
0xd7 0x016b #LATIN SMALL LETTER U WITH MACRON
|
||||
0xd8 0x017e #LATIN SMALL LETTER Z WITH CARON
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
0xe2 0x014c #LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xe8 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xe9 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xea 0x013b #LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xeb 0x013c #LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xec 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xed 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xee 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xef 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x201c #LEFT DOUBLE QUOTATION MARK
|
||||
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
|
||||
0xf4 0x00b6 #PILCROW SIGN
|
||||
0xf5 0x00a7 #SECTION SIGN
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x201e #DOUBLE LOW-9 QUOTATION MARK
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x00b9 #SUPERSCRIPT ONE
|
||||
0xfc 0x00b3 #SUPERSCRIPT THREE
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp850_DOSLatin1 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp850_DOSLatin1 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp850_DOSLatin1 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x9e 0x00d7 #MULTIPLICATION SIGN
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x00ae #REGISTERED SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xb8 0x00a9 #COPYRIGHT SIGN
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x00a2 #CENT SIGN
|
||||
0xbe 0x00a5 #YEN SIGN
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x00a4 #CURRENCY SIGN
|
||||
0xd0 0x00f0 #LATIN SMALL LETTER ETH
|
||||
0xd1 0x00d0 #LATIN CAPITAL LETTER ETH
|
||||
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xd5 0x0131 #LATIN SMALL LETTER DOTLESS I
|
||||
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x00a6 #BROKEN BAR
|
||||
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x00fe #LATIN SMALL LETTER THORN
|
||||
0xe8 0x00de #LATIN CAPITAL LETTER THORN
|
||||
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xee 0x00af #MACRON
|
||||
0xef 0x00b4 #ACUTE ACCENT
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2017 #DOUBLE LOW LINE
|
||||
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
|
||||
0xf4 0x00b6 #PILCROW SIGN
|
||||
0xf5 0x00a7 #SECTION SIGN
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x00b8 #CEDILLA
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x00a8 #DIAERESIS
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x00b9 #SUPERSCRIPT ONE
|
||||
0xfc 0x00b3 #SUPERSCRIPT THREE
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp852_DOSLatin2 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp852_DOSLatin2 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp852_DOSLatin2 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x016f #LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0x86 0x0107 #LATIN SMALL LETTER C WITH ACUTE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0x8b 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0x92 0x013a #LATIN SMALL LETTER L WITH ACUTE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x013d #LATIN CAPITAL LETTER L WITH CARON
|
||||
0x96 0x013e #LATIN SMALL LETTER L WITH CARON
|
||||
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x0164 #LATIN CAPITAL LETTER T WITH CARON
|
||||
0x9c 0x0165 #LATIN SMALL LETTER T WITH CARON
|
||||
0x9d 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
|
||||
0x9e 0x00d7 #MULTIPLICATION SIGN
|
||||
0x9f 0x010d #LATIN SMALL LETTER C WITH CARON
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xa5 0x0105 #LATIN SMALL LETTER A WITH OGONEK
|
||||
0xa6 0x017d #LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xa7 0x017e #LATIN SMALL LETTER Z WITH CARON
|
||||
0xa8 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xa9 0x0119 #LATIN SMALL LETTER E WITH OGONEK
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x017a #LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xac 0x010c #LATIN CAPITAL LETTER C WITH CARON
|
||||
0xad 0x015f #LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xb7 0x011a #LATIN CAPITAL LETTER E WITH CARON
|
||||
0xb8 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xbe 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xc7 0x0103 #LATIN SMALL LETTER A WITH BREVE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x00a4 #CURRENCY SIGN
|
||||
0xd0 0x0111 #LATIN SMALL LETTER D WITH STROKE
|
||||
0xd1 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xd2 0x010e #LATIN CAPITAL LETTER D WITH CARON
|
||||
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xd4 0x010f #LATIN SMALL LETTER D WITH CARON
|
||||
0xd5 0x0147 #LATIN CAPITAL LETTER N WITH CARON
|
||||
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xd8 0x011b #LATIN SMALL LETTER E WITH CARON
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0xde 0x016e #LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xe4 0x0144 #LATIN SMALL LETTER N WITH ACUTE
|
||||
0xe5 0x0148 #LATIN SMALL LETTER N WITH CARON
|
||||
0xe6 0x0160 #LATIN CAPITAL LETTER S WITH CARON
|
||||
0xe7 0x0161 #LATIN SMALL LETTER S WITH CARON
|
||||
0xe8 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xea 0x0155 #LATIN SMALL LETTER R WITH ACUTE
|
||||
0xeb 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xee 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
|
||||
0xef 0x00b4 #ACUTE ACCENT
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x02dd #DOUBLE ACUTE ACCENT
|
||||
0xf2 0x02db #OGONEK
|
||||
0xf3 0x02c7 #CARON
|
||||
0xf4 0x02d8 #BREVE
|
||||
0xf5 0x00a7 #SECTION SIGN
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x00b8 #CEDILLA
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x00a8 #DIAERESIS
|
||||
0xfa 0x02d9 #DOT ABOVE
|
||||
0xfb 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xfc 0x0158 #LATIN CAPITAL LETTER R WITH CARON
|
||||
0xfd 0x0159 #LATIN SMALL LETTER R WITH CARON
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp855_DOSCyrillic to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp855_DOSCyrillic code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp855_DOSCyrillic order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x0452 #CYRILLIC SMALL LETTER DJE
|
||||
0x81 0x0402 #CYRILLIC CAPITAL LETTER DJE
|
||||
0x82 0x0453 #CYRILLIC SMALL LETTER GJE
|
||||
0x83 0x0403 #CYRILLIC CAPITAL LETTER GJE
|
||||
0x84 0x0451 #CYRILLIC SMALL LETTER IO
|
||||
0x85 0x0401 #CYRILLIC CAPITAL LETTER IO
|
||||
0x86 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0x87 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0x88 0x0455 #CYRILLIC SMALL LETTER DZE
|
||||
0x89 0x0405 #CYRILLIC CAPITAL LETTER DZE
|
||||
0x8a 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x8b 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0x8c 0x0457 #CYRILLIC SMALL LETTER YI
|
||||
0x8d 0x0407 #CYRILLIC CAPITAL LETTER YI
|
||||
0x8e 0x0458 #CYRILLIC SMALL LETTER JE
|
||||
0x8f 0x0408 #CYRILLIC CAPITAL LETTER JE
|
||||
0x90 0x0459 #CYRILLIC SMALL LETTER LJE
|
||||
0x91 0x0409 #CYRILLIC CAPITAL LETTER LJE
|
||||
0x92 0x045a #CYRILLIC SMALL LETTER NJE
|
||||
0x93 0x040a #CYRILLIC CAPITAL LETTER NJE
|
||||
0x94 0x045b #CYRILLIC SMALL LETTER TSHE
|
||||
0x95 0x040b #CYRILLIC CAPITAL LETTER TSHE
|
||||
0x96 0x045c #CYRILLIC SMALL LETTER KJE
|
||||
0x97 0x040c #CYRILLIC CAPITAL LETTER KJE
|
||||
0x98 0x045e #CYRILLIC SMALL LETTER SHORT U
|
||||
0x99 0x040e #CYRILLIC CAPITAL LETTER SHORT U
|
||||
0x9a 0x045f #CYRILLIC SMALL LETTER DZHE
|
||||
0x9b 0x040f #CYRILLIC CAPITAL LETTER DZHE
|
||||
0x9c 0x044e #CYRILLIC SMALL LETTER YU
|
||||
0x9d 0x042e #CYRILLIC CAPITAL LETTER YU
|
||||
0x9e 0x044a #CYRILLIC SMALL LETTER HARD SIGN
|
||||
0x9f 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0xa0 0x0430 #CYRILLIC SMALL LETTER A
|
||||
0xa1 0x0410 #CYRILLIC CAPITAL LETTER A
|
||||
0xa2 0x0431 #CYRILLIC SMALL LETTER BE
|
||||
0xa3 0x0411 #CYRILLIC CAPITAL LETTER BE
|
||||
0xa4 0x0446 #CYRILLIC SMALL LETTER TSE
|
||||
0xa5 0x0426 #CYRILLIC CAPITAL LETTER TSE
|
||||
0xa6 0x0434 #CYRILLIC SMALL LETTER DE
|
||||
0xa7 0x0414 #CYRILLIC CAPITAL LETTER DE
|
||||
0xa8 0x0435 #CYRILLIC SMALL LETTER IE
|
||||
0xa9 0x0415 #CYRILLIC CAPITAL LETTER IE
|
||||
0xaa 0x0444 #CYRILLIC SMALL LETTER EF
|
||||
0xab 0x0424 #CYRILLIC CAPITAL LETTER EF
|
||||
0xac 0x0433 #CYRILLIC SMALL LETTER GHE
|
||||
0xad 0x0413 #CYRILLIC CAPITAL LETTER GHE
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x0445 #CYRILLIC SMALL LETTER HA
|
||||
0xb6 0x0425 #CYRILLIC CAPITAL LETTER HA
|
||||
0xb7 0x0438 #CYRILLIC SMALL LETTER I
|
||||
0xb8 0x0418 #CYRILLIC CAPITAL LETTER I
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x0439 #CYRILLIC SMALL LETTER SHORT I
|
||||
0xbe 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x043a #CYRILLIC SMALL LETTER KA
|
||||
0xc7 0x041a #CYRILLIC CAPITAL LETTER KA
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x00a4 #CURRENCY SIGN
|
||||
0xd0 0x043b #CYRILLIC SMALL LETTER EL
|
||||
0xd1 0x041b #CYRILLIC CAPITAL LETTER EL
|
||||
0xd2 0x043c #CYRILLIC SMALL LETTER EM
|
||||
0xd3 0x041c #CYRILLIC CAPITAL LETTER EM
|
||||
0xd4 0x043d #CYRILLIC SMALL LETTER EN
|
||||
0xd5 0x041d #CYRILLIC CAPITAL LETTER EN
|
||||
0xd6 0x043e #CYRILLIC SMALL LETTER O
|
||||
0xd7 0x041e #CYRILLIC CAPITAL LETTER O
|
||||
0xd8 0x043f #CYRILLIC SMALL LETTER PE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x041f #CYRILLIC CAPITAL LETTER PE
|
||||
0xde 0x044f #CYRILLIC SMALL LETTER YA
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x042f #CYRILLIC CAPITAL LETTER YA
|
||||
0xe1 0x0440 #CYRILLIC SMALL LETTER ER
|
||||
0xe2 0x0420 #CYRILLIC CAPITAL LETTER ER
|
||||
0xe3 0x0441 #CYRILLIC SMALL LETTER ES
|
||||
0xe4 0x0421 #CYRILLIC CAPITAL LETTER ES
|
||||
0xe5 0x0442 #CYRILLIC SMALL LETTER TE
|
||||
0xe6 0x0422 #CYRILLIC CAPITAL LETTER TE
|
||||
0xe7 0x0443 #CYRILLIC SMALL LETTER U
|
||||
0xe8 0x0423 #CYRILLIC CAPITAL LETTER U
|
||||
0xe9 0x0436 #CYRILLIC SMALL LETTER ZHE
|
||||
0xea 0x0416 #CYRILLIC CAPITAL LETTER ZHE
|
||||
0xeb 0x0432 #CYRILLIC SMALL LETTER VE
|
||||
0xec 0x0412 #CYRILLIC CAPITAL LETTER VE
|
||||
0xed 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xee 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xef 0x2116 #NUMERO SIGN
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x044b #CYRILLIC SMALL LETTER YERU
|
||||
0xf2 0x042b #CYRILLIC CAPITAL LETTER YERU
|
||||
0xf3 0x0437 #CYRILLIC SMALL LETTER ZE
|
||||
0xf4 0x0417 #CYRILLIC CAPITAL LETTER ZE
|
||||
0xf5 0x0448 #CYRILLIC SMALL LETTER SHA
|
||||
0xf6 0x0428 #CYRILLIC CAPITAL LETTER SHA
|
||||
0xf7 0x044d #CYRILLIC SMALL LETTER E
|
||||
0xf8 0x042d #CYRILLIC CAPITAL LETTER E
|
||||
0xf9 0x0449 #CYRILLIC SMALL LETTER SHCHA
|
||||
0xfa 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xfb 0x0447 #CYRILLIC SMALL LETTER CHE
|
||||
0xfc 0x0427 #CYRILLIC CAPITAL LETTER CHE
|
||||
0xfd 0x00a7 #SECTION SIGN
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp857_DOSTurkish to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp857_DOSTurkish code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp857_DOSTurkish order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x0131 #LATIN SMALL LETTER DOTLESS I
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x0130 #LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x9e 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0x9f 0x015f #LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x011e #LATIN CAPITAL LETTER G WITH BREVE
|
||||
0xa7 0x011f #LATIN SMALL LETTER G WITH BREVE
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x00ae #REGISTERED SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xb8 0x00a9 #COPYRIGHT SIGN
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x00a2 #CENT SIGN
|
||||
0xbe 0x00a5 #YEN SIGN
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x00a4 #CURRENCY SIGN
|
||||
0xd0 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xd1 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xd5 #UNDEFINED
|
||||
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x00a6 #BROKEN BAR
|
||||
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 #UNDEFINED
|
||||
0xe8 0x00d7 #MULTIPLICATION SIGN
|
||||
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xec 0x00ec #LATIN SMALL LETTER I WITH GRAVE
|
||||
0xed 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0xee 0x00af #MACRON
|
||||
0xef 0x00b4 #ACUTE ACCENT
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 #UNDEFINED
|
||||
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
|
||||
0xf4 0x00b6 #PILCROW SIGN
|
||||
0xf5 0x00a7 #SECTION SIGN
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x00b8 #CEDILLA
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x00a8 #DIAERESIS
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x00b9 #SUPERSCRIPT ONE
|
||||
0xfc 0x00b3 #SUPERSCRIPT THREE
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp860_DOSPortuguese to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp860_DOSPortuguese code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp860_DOSPortuguese order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e3 #LATIN SMALL LETTER A WITH TILDE
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0x8c 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
|
||||
0x8e 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
|
||||
0x8f 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x92 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f5 #LATIN SMALL LETTER O WITH TILDE
|
||||
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x96 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0x99 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00a2 #CENT SIGN
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x9e 0x20a7 #PESETA SIGN
|
||||
0x9f 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xe3 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xec 0x221e #INFINITY
|
||||
0xed 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xef 0x2229 #INTERSECTION
|
||||
0xf0 0x2261 #IDENTICAL TO
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x2320 #TOP HALF INTEGRAL
|
||||
0xf5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp861_DOSIcelandic to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp861_DOSIcelandic code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp861_DOSIcelandic order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00d0 #LATIN CAPITAL LETTER ETH
|
||||
0x8c 0x00f0 #LATIN SMALL LETTER ETH
|
||||
0x8d 0x00de #LATIN CAPITAL LETTER THORN
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00fe #LATIN SMALL LETTER THORN
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0x98 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x9e 0x20a7 #PESETA SIGN
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xa5 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xa6 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xa7 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x2310 #REVERSED NOT SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xe3 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xec 0x221e #INFINITY
|
||||
0xed 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xef 0x2229 #INTERSECTION
|
||||
0xf0 0x2261 #IDENTICAL TO
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x2320 #TOP HALF INTEGRAL
|
||||
0xf5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp862_DOSHebrew to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp862_DOSHebrew code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp862_DOSHebrew order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x05d0 #HEBREW LETTER ALEF
|
||||
0x81 0x05d1 #HEBREW LETTER BET
|
||||
0x82 0x05d2 #HEBREW LETTER GIMEL
|
||||
0x83 0x05d3 #HEBREW LETTER DALET
|
||||
0x84 0x05d4 #HEBREW LETTER HE
|
||||
0x85 0x05d5 #HEBREW LETTER VAV
|
||||
0x86 0x05d6 #HEBREW LETTER ZAYIN
|
||||
0x87 0x05d7 #HEBREW LETTER HET
|
||||
0x88 0x05d8 #HEBREW LETTER TET
|
||||
0x89 0x05d9 #HEBREW LETTER YOD
|
||||
0x8a 0x05da #HEBREW LETTER FINAL KAF
|
||||
0x8b 0x05db #HEBREW LETTER KAF
|
||||
0x8c 0x05dc #HEBREW LETTER LAMED
|
||||
0x8d 0x05dd #HEBREW LETTER FINAL MEM
|
||||
0x8e 0x05de #HEBREW LETTER MEM
|
||||
0x8f 0x05df #HEBREW LETTER FINAL NUN
|
||||
0x90 0x05e0 #HEBREW LETTER NUN
|
||||
0x91 0x05e1 #HEBREW LETTER SAMEKH
|
||||
0x92 0x05e2 #HEBREW LETTER AYIN
|
||||
0x93 0x05e3 #HEBREW LETTER FINAL PE
|
||||
0x94 0x05e4 #HEBREW LETTER PE
|
||||
0x95 0x05e5 #HEBREW LETTER FINAL TSADI
|
||||
0x96 0x05e6 #HEBREW LETTER TSADI
|
||||
0x97 0x05e7 #HEBREW LETTER QOF
|
||||
0x98 0x05e8 #HEBREW LETTER RESH
|
||||
0x99 0x05e9 #HEBREW LETTER SHIN
|
||||
0x9a 0x05ea #HEBREW LETTER TAV
|
||||
0x9b 0x00a2 #CENT SIGN
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00a5 #YEN SIGN
|
||||
0x9e 0x20a7 #PESETA SIGN
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x2310 #REVERSED NOT SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN)
|
||||
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xe3 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xec 0x221e #INFINITY
|
||||
0xed 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xef 0x2229 #INTERSECTION
|
||||
0xf0 0x2261 #IDENTICAL TO
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x2320 #TOP HALF INTEGRAL
|
||||
0xf5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp863_DOSCanadaF to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp863_DOSCanadaF code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp863_DOSCanadaF order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00b6 #PILCROW SIGN
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x2017 #DOUBLE LOW LINE
|
||||
0x8e 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0x8f 0x00a7 #SECTION SIGN
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0x92 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0x95 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x00a4 #CURRENCY SIGN
|
||||
0x99 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00a2 #CENT SIGN
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0x9e 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00a6 #BROKEN BAR
|
||||
0xa1 0x00b4 #ACUTE ACCENT
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00a8 #DIAERESIS
|
||||
0xa5 0x00b8 #CEDILLA
|
||||
0xa6 0x00b3 #SUPERSCRIPT THREE
|
||||
0xa7 0x00af #MACRON
|
||||
0xa8 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xa9 0x2310 #REVERSED NOT SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00be #VULGAR FRACTION THREE QUARTERS
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xe3 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xec 0x221e #INFINITY
|
||||
0xed 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xef 0x2229 #INTERSECTION
|
||||
0xf0 0x2261 #IDENTICAL TO
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x2320 #TOP HALF INTEGRAL
|
||||
0xf5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp864_DOSArabic to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp864_DOSArabic code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp864_DOSArabic order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x066a #ARABIC PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00b0 #DEGREE SIGN
|
||||
0x81 0x00b7 #MIDDLE DOT
|
||||
0x82 0x2219 #BULLET OPERATOR
|
||||
0x83 0x221a #SQUARE ROOT
|
||||
0x84 0x2592 #MEDIUM SHADE
|
||||
0x85 0x2500 #FORMS LIGHT HORIZONTAL
|
||||
0x86 0x2502 #FORMS LIGHT VERTICAL
|
||||
0x87 0x253c #FORMS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x88 0x2524 #FORMS LIGHT VERTICAL AND LEFT
|
||||
0x89 0x252c #FORMS LIGHT DOWN AND HORIZONTAL
|
||||
0x8a 0x251c #FORMS LIGHT VERTICAL AND RIGHT
|
||||
0x8b 0x2534 #FORMS LIGHT UP AND HORIZONTAL
|
||||
0x8c 0x2510 #FORMS LIGHT DOWN AND LEFT
|
||||
0x8d 0x250c #FORMS LIGHT DOWN AND RIGHT
|
||||
0x8e 0x2514 #FORMS LIGHT UP AND RIGHT
|
||||
0x8f 0x2518 #FORMS LIGHT UP AND LEFT
|
||||
0x90 0x03b2 #GREEK SMALL BETA
|
||||
0x91 0x221e #INFINITY
|
||||
0x92 0x03c6 #GREEK SMALL PHI
|
||||
0x93 0x00b1 #PLUS-OR-MINUS SIGN
|
||||
0x94 0x00bd #FRACTION 1/2
|
||||
0x95 0x00bc #FRACTION 1/4
|
||||
0x96 0x2248 #ALMOST EQUAL TO
|
||||
0x97 0x00ab #LEFT POINTING GUILLEMET
|
||||
0x98 0x00bb #RIGHT POINTING GUILLEMET
|
||||
0x99 0xfef7 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
0x9a 0xfef8 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
0x9b #UNDEFINED
|
||||
0x9c #UNDEFINED
|
||||
0x9d 0xfefb #ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
|
||||
0x9e 0xfefc #ARABIC LIGATURE LAM WITH ALEF FINAL FORM
|
||||
0x9f #UNDEFINED
|
||||
0xa0 0x00a0 #NON-BREAKING SPACE
|
||||
0xa1 0x00ad #SOFT HYPHEN
|
||||
0xa2 0xfe82 #ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
|
||||
0xa3 0x00a3 #POUND SIGN
|
||||
0xa4 0x00a4 #CURRENCY SIGN
|
||||
0xa5 0xfe84 #ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
|
||||
0xa6 #UNDEFINED
|
||||
0xa7 #UNDEFINED
|
||||
0xa8 0xfe8e #ARABIC LETTER ALEF FINAL FORM
|
||||
0xa9 0xfe8f #ARABIC LETTER BEH ISOLATED FORM
|
||||
0xaa 0xfe95 #ARABIC LETTER TEH ISOLATED FORM
|
||||
0xab 0xfe99 #ARABIC LETTER THEH ISOLATED FORM
|
||||
0xac 0x060c #ARABIC COMMA
|
||||
0xad 0xfe9d #ARABIC LETTER JEEM ISOLATED FORM
|
||||
0xae 0xfea1 #ARABIC LETTER HAH ISOLATED FORM
|
||||
0xaf 0xfea5 #ARABIC LETTER KHAH ISOLATED FORM
|
||||
0xb0 0x0660 #ARABIC-INDIC DIGIT ZERO
|
||||
0xb1 0x0661 #ARABIC-INDIC DIGIT ONE
|
||||
0xb2 0x0662 #ARABIC-INDIC DIGIT TWO
|
||||
0xb3 0x0663 #ARABIC-INDIC DIGIT THREE
|
||||
0xb4 0x0664 #ARABIC-INDIC DIGIT FOUR
|
||||
0xb5 0x0665 #ARABIC-INDIC DIGIT FIVE
|
||||
0xb6 0x0666 #ARABIC-INDIC DIGIT SIX
|
||||
0xb7 0x0667 #ARABIC-INDIC DIGIT SEVEN
|
||||
0xb8 0x0668 #ARABIC-INDIC DIGIT EIGHT
|
||||
0xb9 0x0669 #ARABIC-INDIC DIGIT NINE
|
||||
0xba 0xfed1 #ARABIC LETTER FEH ISOLATED FORM
|
||||
0xbb 0x061b #ARABIC SEMICOLON
|
||||
0xbc 0xfeb1 #ARABIC LETTER SEEN ISOLATED FORM
|
||||
0xbd 0xfeb5 #ARABIC LETTER SHEEN ISOLATED FORM
|
||||
0xbe 0xfeb9 #ARABIC LETTER SAD ISOLATED FORM
|
||||
0xbf 0x061f #ARABIC QUESTION MARK
|
||||
0xc0 0x00a2 #CENT SIGN
|
||||
0xc1 0xfe80 #ARABIC LETTER HAMZA ISOLATED FORM
|
||||
0xc2 0xfe81 #ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
0xc3 0xfe83 #ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
|
||||
0xc4 0xfe85 #ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
|
||||
0xc5 0xfeca #ARABIC LETTER AIN FINAL FORM
|
||||
0xc6 0xfe8b #ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
|
||||
0xc7 0xfe8d #ARABIC LETTER ALEF ISOLATED FORM
|
||||
0xc8 0xfe91 #ARABIC LETTER BEH INITIAL FORM
|
||||
0xc9 0xfe93 #ARABIC LETTER TEH MARBUTA ISOLATED FORM
|
||||
0xca 0xfe97 #ARABIC LETTER TEH INITIAL FORM
|
||||
0xcb 0xfe9b #ARABIC LETTER THEH INITIAL FORM
|
||||
0xcc 0xfe9f #ARABIC LETTER JEEM INITIAL FORM
|
||||
0xcd 0xfea3 #ARABIC LETTER HAH INITIAL FORM
|
||||
0xce 0xfea7 #ARABIC LETTER KHAH INITIAL FORM
|
||||
0xcf 0xfea9 #ARABIC LETTER DAL ISOLATED FORM
|
||||
0xd0 0xfeab #ARABIC LETTER THAL ISOLATED FORM
|
||||
0xd1 0xfead #ARABIC LETTER REH ISOLATED FORM
|
||||
0xd2 0xfeaf #ARABIC LETTER ZAIN ISOLATED FORM
|
||||
0xd3 0xfeb3 #ARABIC LETTER SEEN INITIAL FORM
|
||||
0xd4 0xfeb7 #ARABIC LETTER SHEEN INITIAL FORM
|
||||
0xd5 0xfebb #ARABIC LETTER SAD INITIAL FORM
|
||||
0xd6 0xfebf #ARABIC LETTER DAD INITIAL FORM
|
||||
0xd7 0xfec1 #ARABIC LETTER TAH ISOLATED FORM
|
||||
0xd8 0xfec5 #ARABIC LETTER ZAH ISOLATED FORM
|
||||
0xd9 0xfecb #ARABIC LETTER AIN INITIAL FORM
|
||||
0xda 0xfecf #ARABIC LETTER GHAIN INITIAL FORM
|
||||
0xdb 0x00a6 #BROKEN VERTICAL BAR
|
||||
0xdc 0x00ac #NOT SIGN
|
||||
0xdd 0x00f7 #DIVISION SIGN
|
||||
0xde 0x00d7 #MULTIPLICATION SIGN
|
||||
0xdf 0xfec9 #ARABIC LETTER AIN ISOLATED FORM
|
||||
0xe0 0x0640 #ARABIC TATWEEL
|
||||
0xe1 0xfed3 #ARABIC LETTER FEH INITIAL FORM
|
||||
0xe2 0xfed7 #ARABIC LETTER QAF INITIAL FORM
|
||||
0xe3 0xfedb #ARABIC LETTER KAF INITIAL FORM
|
||||
0xe4 0xfedf #ARABIC LETTER LAM INITIAL FORM
|
||||
0xe5 0xfee3 #ARABIC LETTER MEEM INITIAL FORM
|
||||
0xe6 0xfee7 #ARABIC LETTER NOON INITIAL FORM
|
||||
0xe7 0xfeeb #ARABIC LETTER HEH INITIAL FORM
|
||||
0xe8 0xfeed #ARABIC LETTER WAW ISOLATED FORM
|
||||
0xe9 0xfeef #ARABIC LETTER ALEF MAKSURA ISOLATED FORM
|
||||
0xea 0xfef3 #ARABIC LETTER YEH INITIAL FORM
|
||||
0xeb 0xfebd #ARABIC LETTER DAD ISOLATED FORM
|
||||
0xec 0xfecc #ARABIC LETTER AIN MEDIAL FORM
|
||||
0xed 0xfece #ARABIC LETTER GHAIN FINAL FORM
|
||||
0xee 0xfecd #ARABIC LETTER GHAIN ISOLATED FORM
|
||||
0xef 0xfee1 #ARABIC LETTER MEEM ISOLATED FORM
|
||||
0xf0 0xfe7d #ARABIC SHADDA MEDIAL FORM
|
||||
0xf1 0x0651 #ARABIC SHADDAH
|
||||
0xf2 0xfee5 #ARABIC LETTER NOON ISOLATED FORM
|
||||
0xf3 0xfee9 #ARABIC LETTER HEH ISOLATED FORM
|
||||
0xf4 0xfeec #ARABIC LETTER HEH MEDIAL FORM
|
||||
0xf5 0xfef0 #ARABIC LETTER ALEF MAKSURA FINAL FORM
|
||||
0xf6 0xfef2 #ARABIC LETTER YEH FINAL FORM
|
||||
0xf7 0xfed0 #ARABIC LETTER GHAIN MEDIAL FORM
|
||||
0xf8 0xfed5 #ARABIC LETTER QAF ISOLATED FORM
|
||||
0xf9 0xfef5 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
|
||||
0xfa 0xfef6 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
|
||||
0xfb 0xfedd #ARABIC LETTER LAM ISOLATED FORM
|
||||
0xfc 0xfed9 #ARABIC LETTER KAF ISOLATED FORM
|
||||
0xfd 0xfef1 #ARABIC LETTER YEH ISOLATED FORM
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff #UNDEFINED
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp865_DOSNordic to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp865_DOSNordic code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp865_DOSNordic order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
|
||||
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
|
||||
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
|
||||
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
|
||||
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x91 0x00e6 #LATIN SMALL LIGATURE AE
|
||||
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
|
||||
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
|
||||
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
|
||||
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
|
||||
0x9e 0x20a7 #PESETA SIGN
|
||||
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
|
||||
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
|
||||
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
|
||||
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
|
||||
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
|
||||
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
|
||||
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
|
||||
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
|
||||
0xa8 0x00bf #INVERTED QUESTION MARK
|
||||
0xa9 0x2310 #REVERSED NOT SIGN
|
||||
0xaa 0x00ac #NOT SIGN
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
|
||||
0xad 0x00a1 #INVERTED EXCLAMATION MARK
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00a4 #CURRENCY SIGN
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xe1 0x00df #LATIN SMALL LETTER SHARP S
|
||||
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xe3 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xe6 0x00b5 #MICRO SIGN
|
||||
0xe7 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xec 0x221e #INFINITY
|
||||
0xed 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xef 0x2229 #INTERSECTION
|
||||
0xf0 0x2261 #IDENTICAL TO
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
|
||||
0xf3 0x2264 #LESS-THAN OR EQUAL TO
|
||||
0xf4 0x2320 #TOP HALF INTEGRAL
|
||||
0xf5 0x2321 #BOTTOM HALF INTEGRAL
|
||||
0xf6 0x00f7 #DIVISION SIGN
|
||||
0xf7 0x2248 #ALMOST EQUAL TO
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
|
||||
0xfd 0x00b2 #SUPERSCRIPT TWO
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp866_DOSCyrillicRussian to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp866_DOSCyrillicRussian code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp866_DOSCyrillicRussian order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 0x0410 #CYRILLIC CAPITAL LETTER A
|
||||
0x81 0x0411 #CYRILLIC CAPITAL LETTER BE
|
||||
0x82 0x0412 #CYRILLIC CAPITAL LETTER VE
|
||||
0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE
|
||||
0x84 0x0414 #CYRILLIC CAPITAL LETTER DE
|
||||
0x85 0x0415 #CYRILLIC CAPITAL LETTER IE
|
||||
0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE
|
||||
0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE
|
||||
0x88 0x0418 #CYRILLIC CAPITAL LETTER I
|
||||
0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
|
||||
0x8a 0x041a #CYRILLIC CAPITAL LETTER KA
|
||||
0x8b 0x041b #CYRILLIC CAPITAL LETTER EL
|
||||
0x8c 0x041c #CYRILLIC CAPITAL LETTER EM
|
||||
0x8d 0x041d #CYRILLIC CAPITAL LETTER EN
|
||||
0x8e 0x041e #CYRILLIC CAPITAL LETTER O
|
||||
0x8f 0x041f #CYRILLIC CAPITAL LETTER PE
|
||||
0x90 0x0420 #CYRILLIC CAPITAL LETTER ER
|
||||
0x91 0x0421 #CYRILLIC CAPITAL LETTER ES
|
||||
0x92 0x0422 #CYRILLIC CAPITAL LETTER TE
|
||||
0x93 0x0423 #CYRILLIC CAPITAL LETTER U
|
||||
0x94 0x0424 #CYRILLIC CAPITAL LETTER EF
|
||||
0x95 0x0425 #CYRILLIC CAPITAL LETTER HA
|
||||
0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE
|
||||
0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE
|
||||
0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA
|
||||
0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
|
||||
0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU
|
||||
0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0x9d 0x042d #CYRILLIC CAPITAL LETTER E
|
||||
0x9e 0x042e #CYRILLIC CAPITAL LETTER YU
|
||||
0x9f 0x042f #CYRILLIC CAPITAL LETTER YA
|
||||
0xa0 0x0430 #CYRILLIC SMALL LETTER A
|
||||
0xa1 0x0431 #CYRILLIC SMALL LETTER BE
|
||||
0xa2 0x0432 #CYRILLIC SMALL LETTER VE
|
||||
0xa3 0x0433 #CYRILLIC SMALL LETTER GHE
|
||||
0xa4 0x0434 #CYRILLIC SMALL LETTER DE
|
||||
0xa5 0x0435 #CYRILLIC SMALL LETTER IE
|
||||
0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE
|
||||
0xa7 0x0437 #CYRILLIC SMALL LETTER ZE
|
||||
0xa8 0x0438 #CYRILLIC SMALL LETTER I
|
||||
0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I
|
||||
0xaa 0x043a #CYRILLIC SMALL LETTER KA
|
||||
0xab 0x043b #CYRILLIC SMALL LETTER EL
|
||||
0xac 0x043c #CYRILLIC SMALL LETTER EM
|
||||
0xad 0x043d #CYRILLIC SMALL LETTER EN
|
||||
0xae 0x043e #CYRILLIC SMALL LETTER O
|
||||
0xaf 0x043f #CYRILLIC SMALL LETTER PE
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x258c #LEFT HALF BLOCK
|
||||
0xde 0x2590 #RIGHT HALF BLOCK
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x0440 #CYRILLIC SMALL LETTER ER
|
||||
0xe1 0x0441 #CYRILLIC SMALL LETTER ES
|
||||
0xe2 0x0442 #CYRILLIC SMALL LETTER TE
|
||||
0xe3 0x0443 #CYRILLIC SMALL LETTER U
|
||||
0xe4 0x0444 #CYRILLIC SMALL LETTER EF
|
||||
0xe5 0x0445 #CYRILLIC SMALL LETTER HA
|
||||
0xe6 0x0446 #CYRILLIC SMALL LETTER TSE
|
||||
0xe7 0x0447 #CYRILLIC SMALL LETTER CHE
|
||||
0xe8 0x0448 #CYRILLIC SMALL LETTER SHA
|
||||
0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA
|
||||
0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xeb 0x044b #CYRILLIC SMALL LETTER YERU
|
||||
0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xed 0x044d #CYRILLIC SMALL LETTER E
|
||||
0xee 0x044e #CYRILLIC SMALL LETTER YU
|
||||
0xef 0x044f #CYRILLIC SMALL LETTER YA
|
||||
0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO
|
||||
0xf1 0x0451 #CYRILLIC SMALL LETTER IO
|
||||
0xf2 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xf3 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xf4 0x0407 #CYRILLIC CAPITAL LETTER YI
|
||||
0xf5 0x0457 #CYRILLIC SMALL LETTER YI
|
||||
0xf6 0x040e #CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xf7 0x045e #CYRILLIC SMALL LETTER SHORT U
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x2219 #BULLET OPERATOR
|
||||
0xfa 0x00b7 #MIDDLE DOT
|
||||
0xfb 0x221a #SQUARE ROOT
|
||||
0xfc 0x2116 #NUMERO SIGN
|
||||
0xfd 0x00a4 #CURRENCY SIGN
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,275 @@
|
|||
#
|
||||
# Name: cp869_DOSGreek2 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp869_DOSGreek2 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp869_DOSGreek2 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0a 0x000a #LINE FEED
|
||||
0x0b 0x000b #VERTICAL TABULATION
|
||||
0x0c 0x000c #FORM FEED
|
||||
0x0d 0x000d #CARRIAGE RETURN
|
||||
0x0e 0x000e #SHIFT OUT
|
||||
0x0f 0x000f #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1a 0x001a #SUBSTITUTE
|
||||
0x1b 0x001b #ESCAPE
|
||||
0x1c 0x001c #FILE SEPARATOR
|
||||
0x1d 0x001d #GROUP SEPARATOR
|
||||
0x1e 0x001e #RECORD SEPARATOR
|
||||
0x1f 0x001f #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2a 0x002a #ASTERISK
|
||||
0x2b 0x002b #PLUS SIGN
|
||||
0x2c 0x002c #COMMA
|
||||
0x2d 0x002d #HYPHEN-MINUS
|
||||
0x2e 0x002e #FULL STOP
|
||||
0x2f 0x002f #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3a 0x003a #COLON
|
||||
0x3b 0x003b #SEMICOLON
|
||||
0x3c 0x003c #LESS-THAN SIGN
|
||||
0x3d 0x003d #EQUALS SIGN
|
||||
0x3e 0x003e #GREATER-THAN SIGN
|
||||
0x3f 0x003f #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4a 0x004a #LATIN CAPITAL LETTER J
|
||||
0x4b 0x004b #LATIN CAPITAL LETTER K
|
||||
0x4c 0x004c #LATIN CAPITAL LETTER L
|
||||
0x4d 0x004d #LATIN CAPITAL LETTER M
|
||||
0x4e 0x004e #LATIN CAPITAL LETTER N
|
||||
0x4f 0x004f #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5a 0x005a #LATIN CAPITAL LETTER Z
|
||||
0x5b 0x005b #LEFT SQUARE BRACKET
|
||||
0x5c 0x005c #REVERSE SOLIDUS
|
||||
0x5d 0x005d #RIGHT SQUARE BRACKET
|
||||
0x5e 0x005e #CIRCUMFLEX ACCENT
|
||||
0x5f 0x005f #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6a 0x006a #LATIN SMALL LETTER J
|
||||
0x6b 0x006b #LATIN SMALL LETTER K
|
||||
0x6c 0x006c #LATIN SMALL LETTER L
|
||||
0x6d 0x006d #LATIN SMALL LETTER M
|
||||
0x6e 0x006e #LATIN SMALL LETTER N
|
||||
0x6f 0x006f #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7a 0x007a #LATIN SMALL LETTER Z
|
||||
0x7b 0x007b #LEFT CURLY BRACKET
|
||||
0x7c 0x007c #VERTICAL LINE
|
||||
0x7d 0x007d #RIGHT CURLY BRACKET
|
||||
0x7e 0x007e #TILDE
|
||||
0x7f 0x007f #DELETE
|
||||
0x80 #UNDEFINED
|
||||
0x81 #UNDEFINED
|
||||
0x82 #UNDEFINED
|
||||
0x83 #UNDEFINED
|
||||
0x84 #UNDEFINED
|
||||
0x85 #UNDEFINED
|
||||
0x86 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0x87 #UNDEFINED
|
||||
0x88 0x00b7 #MIDDLE DOT
|
||||
0x89 0x00ac #NOT SIGN
|
||||
0x8a 0x00a6 #BROKEN BAR
|
||||
0x8b 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x8c 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x8d 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0x8e 0x2015 #HORIZONTAL BAR
|
||||
0x8f 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0x90 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0x91 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0x92 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0x93 #UNDEFINED
|
||||
0x94 #UNDEFINED
|
||||
0x95 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0x96 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0x97 0x00a9 #COPYRIGHT SIGN
|
||||
0x98 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0x99 0x00b2 #SUPERSCRIPT TWO
|
||||
0x9a 0x00b3 #SUPERSCRIPT THREE
|
||||
0x9b 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0x9c 0x00a3 #POUND SIGN
|
||||
0x9d 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0x9e 0x03ae #GREEK SMALL LETTER ETA WITH TONOS
|
||||
0x9f 0x03af #GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0xa0 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0xa1 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
0xa2 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0xa3 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0xa4 0x0391 #GREEK CAPITAL LETTER ALPHA
|
||||
0xa5 0x0392 #GREEK CAPITAL LETTER BETA
|
||||
0xa6 0x0393 #GREEK CAPITAL LETTER GAMMA
|
||||
0xa7 0x0394 #GREEK CAPITAL LETTER DELTA
|
||||
0xa8 0x0395 #GREEK CAPITAL LETTER EPSILON
|
||||
0xa9 0x0396 #GREEK CAPITAL LETTER ZETA
|
||||
0xaa 0x0397 #GREEK CAPITAL LETTER ETA
|
||||
0xab 0x00bd #VULGAR FRACTION ONE HALF
|
||||
0xac 0x0398 #GREEK CAPITAL LETTER THETA
|
||||
0xad 0x0399 #GREEK CAPITAL LETTER IOTA
|
||||
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xb0 0x2591 #LIGHT SHADE
|
||||
0xb1 0x2592 #MEDIUM SHADE
|
||||
0xb2 0x2593 #DARK SHADE
|
||||
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
|
||||
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0xb5 0x039a #GREEK CAPITAL LETTER KAPPA
|
||||
0xb6 0x039b #GREEK CAPITAL LETTER LAMDA
|
||||
0xb7 0x039c #GREEK CAPITAL LETTER MU
|
||||
0xb8 0x039d #GREEK CAPITAL LETTER NU
|
||||
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xbd 0x039e #GREEK CAPITAL LETTER XI
|
||||
0xbe 0x039f #GREEK CAPITAL LETTER OMICRON
|
||||
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0xc6 0x03a0 #GREEK CAPITAL LETTER PI
|
||||
0xc7 0x03a1 #GREEK CAPITAL LETTER RHO
|
||||
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xcf 0x03a3 #GREEK CAPITAL LETTER SIGMA
|
||||
0xd0 0x03a4 #GREEK CAPITAL LETTER TAU
|
||||
0xd1 0x03a5 #GREEK CAPITAL LETTER UPSILON
|
||||
0xd2 0x03a6 #GREEK CAPITAL LETTER PHI
|
||||
0xd3 0x03a7 #GREEK CAPITAL LETTER CHI
|
||||
0xd4 0x03a8 #GREEK CAPITAL LETTER PSI
|
||||
0xd5 0x03a9 #GREEK CAPITAL LETTER OMEGA
|
||||
0xd6 0x03b1 #GREEK SMALL LETTER ALPHA
|
||||
0xd7 0x03b2 #GREEK SMALL LETTER BETA
|
||||
0xd8 0x03b3 #GREEK SMALL LETTER GAMMA
|
||||
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0xdb 0x2588 #FULL BLOCK
|
||||
0xdc 0x2584 #LOWER HALF BLOCK
|
||||
0xdd 0x03b4 #GREEK SMALL LETTER DELTA
|
||||
0xde 0x03b5 #GREEK SMALL LETTER EPSILON
|
||||
0xdf 0x2580 #UPPER HALF BLOCK
|
||||
0xe0 0x03b6 #GREEK SMALL LETTER ZETA
|
||||
0xe1 0x03b7 #GREEK SMALL LETTER ETA
|
||||
0xe2 0x03b8 #GREEK SMALL LETTER THETA
|
||||
0xe3 0x03b9 #GREEK SMALL LETTER IOTA
|
||||
0xe4 0x03ba #GREEK SMALL LETTER KAPPA
|
||||
0xe5 0x03bb #GREEK SMALL LETTER LAMDA
|
||||
0xe6 0x03bc #GREEK SMALL LETTER MU
|
||||
0xe7 0x03bd #GREEK SMALL LETTER NU
|
||||
0xe8 0x03be #GREEK SMALL LETTER XI
|
||||
0xe9 0x03bf #GREEK SMALL LETTER OMICRON
|
||||
0xea 0x03c0 #GREEK SMALL LETTER PI
|
||||
0xeb 0x03c1 #GREEK SMALL LETTER RHO
|
||||
0xec 0x03c3 #GREEK SMALL LETTER SIGMA
|
||||
0xed 0x03c2 #GREEK SMALL LETTER FINAL SIGMA
|
||||
0xee 0x03c4 #GREEK SMALL LETTER TAU
|
||||
0xef 0x0384 #GREEK TONOS
|
||||
0xf0 0x00ad #SOFT HYPHEN
|
||||
0xf1 0x00b1 #PLUS-MINUS SIGN
|
||||
0xf2 0x03c5 #GREEK SMALL LETTER UPSILON
|
||||
0xf3 0x03c6 #GREEK SMALL LETTER PHI
|
||||
0xf4 0x03c7 #GREEK SMALL LETTER CHI
|
||||
0xf5 0x00a7 #SECTION SIGN
|
||||
0xf6 0x03c8 #GREEK SMALL LETTER PSI
|
||||
0xf7 0x0385 #GREEK DIALYTIKA TONOS
|
||||
0xf8 0x00b0 #DEGREE SIGN
|
||||
0xf9 0x00a8 #DIAERESIS
|
||||
0xfa 0x03c9 #GREEK SMALL LETTER OMEGA
|
||||
0xfb 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0xfc 0x03b0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
0xfd 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS
|
||||
0xfe 0x25a0 #BLACK SQUARE
|
||||
0xff 0x00a0 #NO-BREAK SPACE
|
||||
|
||||
|
|
@ -0,0 +1,274 @@
|
|||
#
|
||||
# Name: cp874 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.01
|
||||
# Table format: Format A
|
||||
# Date: 02/28/98
|
||||
#
|
||||
# Contact: Shawn.Steele@microsoft.com
|
||||
#
|
||||
# General notes: none
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the cp874 code (in hex)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 is the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in cp874 order
|
||||
#
|
||||
0x00 0x0000 #NULL
|
||||
0x01 0x0001 #START OF HEADING
|
||||
0x02 0x0002 #START OF TEXT
|
||||
0x03 0x0003 #END OF TEXT
|
||||
0x04 0x0004 #END OF TRANSMISSION
|
||||
0x05 0x0005 #ENQUIRY
|
||||
0x06 0x0006 #ACKNOWLEDGE
|
||||
0x07 0x0007 #BELL
|
||||
0x08 0x0008 #BACKSPACE
|
||||
0x09 0x0009 #HORIZONTAL TABULATION
|
||||
0x0A 0x000A #LINE FEED
|
||||
0x0B 0x000B #VERTICAL TABULATION
|
||||
0x0C 0x000C #FORM FEED
|
||||
0x0D 0x000D #CARRIAGE RETURN
|
||||
0x0E 0x000E #SHIFT OUT
|
||||
0x0F 0x000F #SHIFT IN
|
||||
0x10 0x0010 #DATA LINK ESCAPE
|
||||
0x11 0x0011 #DEVICE CONTROL ONE
|
||||
0x12 0x0012 #DEVICE CONTROL TWO
|
||||
0x13 0x0013 #DEVICE CONTROL THREE
|
||||
0x14 0x0014 #DEVICE CONTROL FOUR
|
||||
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 #SYNCHRONOUS IDLE
|
||||
0x17 0x0017 #END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 #CANCEL
|
||||
0x19 0x0019 #END OF MEDIUM
|
||||
0x1A 0x001A #SUBSTITUTE
|
||||
0x1B 0x001B #ESCAPE
|
||||
0x1C 0x001C #FILE SEPARATOR
|
||||
0x1D 0x001D #GROUP SEPARATOR
|
||||
0x1E 0x001E #RECORD SEPARATOR
|
||||
0x1F 0x001F #UNIT SEPARATOR
|
||||
0x20 0x0020 #SPACE
|
||||
0x21 0x0021 #EXCLAMATION MARK
|
||||
0x22 0x0022 #QUOTATION MARK
|
||||
0x23 0x0023 #NUMBER SIGN
|
||||
0x24 0x0024 #DOLLAR SIGN
|
||||
0x25 0x0025 #PERCENT SIGN
|
||||
0x26 0x0026 #AMPERSAND
|
||||
0x27 0x0027 #APOSTROPHE
|
||||
0x28 0x0028 #LEFT PARENTHESIS
|
||||
0x29 0x0029 #RIGHT PARENTHESIS
|
||||
0x2A 0x002A #ASTERISK
|
||||
0x2B 0x002B #PLUS SIGN
|
||||
0x2C 0x002C #COMMA
|
||||
0x2D 0x002D #HYPHEN-MINUS
|
||||
0x2E 0x002E #FULL STOP
|
||||
0x2F 0x002F #SOLIDUS
|
||||
0x30 0x0030 #DIGIT ZERO
|
||||
0x31 0x0031 #DIGIT ONE
|
||||
0x32 0x0032 #DIGIT TWO
|
||||
0x33 0x0033 #DIGIT THREE
|
||||
0x34 0x0034 #DIGIT FOUR
|
||||
0x35 0x0035 #DIGIT FIVE
|
||||
0x36 0x0036 #DIGIT SIX
|
||||
0x37 0x0037 #DIGIT SEVEN
|
||||
0x38 0x0038 #DIGIT EIGHT
|
||||
0x39 0x0039 #DIGIT NINE
|
||||
0x3A 0x003A #COLON
|
||||
0x3B 0x003B #SEMICOLON
|
||||
0x3C 0x003C #LESS-THAN SIGN
|
||||
0x3D 0x003D #EQUALS SIGN
|
||||
0x3E 0x003E #GREATER-THAN SIGN
|
||||
0x3F 0x003F #QUESTION MARK
|
||||
0x40 0x0040 #COMMERCIAL AT
|
||||
0x41 0x0041 #LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 #LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 #LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 #LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 #LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 #LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 #LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 #LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 #LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A #LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B #LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C #LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D #LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E #LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F #LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 #LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 #LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 #LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 #LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 #LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 #LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 #LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 #LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 #LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 #LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A #LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B #LEFT SQUARE BRACKET
|
||||
0x5C 0x005C #REVERSE SOLIDUS
|
||||
0x5D 0x005D #RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E #CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F #LOW LINE
|
||||
0x60 0x0060 #GRAVE ACCENT
|
||||
0x61 0x0061 #LATIN SMALL LETTER A
|
||||
0x62 0x0062 #LATIN SMALL LETTER B
|
||||
0x63 0x0063 #LATIN SMALL LETTER C
|
||||
0x64 0x0064 #LATIN SMALL LETTER D
|
||||
0x65 0x0065 #LATIN SMALL LETTER E
|
||||
0x66 0x0066 #LATIN SMALL LETTER F
|
||||
0x67 0x0067 #LATIN SMALL LETTER G
|
||||
0x68 0x0068 #LATIN SMALL LETTER H
|
||||
0x69 0x0069 #LATIN SMALL LETTER I
|
||||
0x6A 0x006A #LATIN SMALL LETTER J
|
||||
0x6B 0x006B #LATIN SMALL LETTER K
|
||||
0x6C 0x006C #LATIN SMALL LETTER L
|
||||
0x6D 0x006D #LATIN SMALL LETTER M
|
||||
0x6E 0x006E #LATIN SMALL LETTER N
|
||||
0x6F 0x006F #LATIN SMALL LETTER O
|
||||
0x70 0x0070 #LATIN SMALL LETTER P
|
||||
0x71 0x0071 #LATIN SMALL LETTER Q
|
||||
0x72 0x0072 #LATIN SMALL LETTER R
|
||||
0x73 0x0073 #LATIN SMALL LETTER S
|
||||
0x74 0x0074 #LATIN SMALL LETTER T
|
||||
0x75 0x0075 #LATIN SMALL LETTER U
|
||||
0x76 0x0076 #LATIN SMALL LETTER V
|
||||
0x77 0x0077 #LATIN SMALL LETTER W
|
||||
0x78 0x0078 #LATIN SMALL LETTER X
|
||||
0x79 0x0079 #LATIN SMALL LETTER Y
|
||||
0x7A 0x007A #LATIN SMALL LETTER Z
|
||||
0x7B 0x007B #LEFT CURLY BRACKET
|
||||
0x7C 0x007C #VERTICAL LINE
|
||||
0x7D 0x007D #RIGHT CURLY BRACKET
|
||||
0x7E 0x007E #TILDE
|
||||
0x7F 0x007F #DELETE
|
||||
0x80 0x20AC #EURO SIGN
|
||||
0x81 #UNDEFINED
|
||||
0x82 #UNDEFINED
|
||||
0x83 #UNDEFINED
|
||||
0x84 #UNDEFINED
|
||||
0x85 0x2026 #HORIZONTAL ELLIPSIS
|
||||
0x86 #UNDEFINED
|
||||
0x87 #UNDEFINED
|
||||
0x88 #UNDEFINED
|
||||
0x89 #UNDEFINED
|
||||
0x8A #UNDEFINED
|
||||
0x8B #UNDEFINED
|
||||
0x8C #UNDEFINED
|
||||
0x8D #UNDEFINED
|
||||
0x8E #UNDEFINED
|
||||
0x8F #UNDEFINED
|
||||
0x90 #UNDEFINED
|
||||
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
|
||||
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
|
||||
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
|
||||
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
|
||||
0x95 0x2022 #BULLET
|
||||
0x96 0x2013 #EN DASH
|
||||
0x97 0x2014 #EM DASH
|
||||
0x98 #UNDEFINED
|
||||
0x99 #UNDEFINED
|
||||
0x9A #UNDEFINED
|
||||
0x9B #UNDEFINED
|
||||
0x9C #UNDEFINED
|
||||
0x9D #UNDEFINED
|
||||
0x9E #UNDEFINED
|
||||
0x9F #UNDEFINED
|
||||
0xA0 0x00A0 #NO-BREAK SPACE
|
||||
0xA1 0x0E01 #THAI CHARACTER KO KAI
|
||||
0xA2 0x0E02 #THAI CHARACTER KHO KHAI
|
||||
0xA3 0x0E03 #THAI CHARACTER KHO KHUAT
|
||||
0xA4 0x0E04 #THAI CHARACTER KHO KHWAI
|
||||
0xA5 0x0E05 #THAI CHARACTER KHO KHON
|
||||
0xA6 0x0E06 #THAI CHARACTER KHO RAKHANG
|
||||
0xA7 0x0E07 #THAI CHARACTER NGO NGU
|
||||
0xA8 0x0E08 #THAI CHARACTER CHO CHAN
|
||||
0xA9 0x0E09 #THAI CHARACTER CHO CHING
|
||||
0xAA 0x0E0A #THAI CHARACTER CHO CHANG
|
||||
0xAB 0x0E0B #THAI CHARACTER SO SO
|
||||
0xAC 0x0E0C #THAI CHARACTER CHO CHOE
|
||||
0xAD 0x0E0D #THAI CHARACTER YO YING
|
||||
0xAE 0x0E0E #THAI CHARACTER DO CHADA
|
||||
0xAF 0x0E0F #THAI CHARACTER TO PATAK
|
||||
0xB0 0x0E10 #THAI CHARACTER THO THAN
|
||||
0xB1 0x0E11 #THAI CHARACTER THO NANGMONTHO
|
||||
0xB2 0x0E12 #THAI CHARACTER THO PHUTHAO
|
||||
0xB3 0x0E13 #THAI CHARACTER NO NEN
|
||||
0xB4 0x0E14 #THAI CHARACTER DO DEK
|
||||
0xB5 0x0E15 #THAI CHARACTER TO TAO
|
||||
0xB6 0x0E16 #THAI CHARACTER THO THUNG
|
||||
0xB7 0x0E17 #THAI CHARACTER THO THAHAN
|
||||
0xB8 0x0E18 #THAI CHARACTER THO THONG
|
||||
0xB9 0x0E19 #THAI CHARACTER NO NU
|
||||
0xBA 0x0E1A #THAI CHARACTER BO BAIMAI
|
||||
0xBB 0x0E1B #THAI CHARACTER PO PLA
|
||||
0xBC 0x0E1C #THAI CHARACTER PHO PHUNG
|
||||
0xBD 0x0E1D #THAI CHARACTER FO FA
|
||||
0xBE 0x0E1E #THAI CHARACTER PHO PHAN
|
||||
0xBF 0x0E1F #THAI CHARACTER FO FAN
|
||||
0xC0 0x0E20 #THAI CHARACTER PHO SAMPHAO
|
||||
0xC1 0x0E21 #THAI CHARACTER MO MA
|
||||
0xC2 0x0E22 #THAI CHARACTER YO YAK
|
||||
0xC3 0x0E23 #THAI CHARACTER RO RUA
|
||||
0xC4 0x0E24 #THAI CHARACTER RU
|
||||
0xC5 0x0E25 #THAI CHARACTER LO LING
|
||||
0xC6 0x0E26 #THAI CHARACTER LU
|
||||
0xC7 0x0E27 #THAI CHARACTER WO WAEN
|
||||
0xC8 0x0E28 #THAI CHARACTER SO SALA
|
||||
0xC9 0x0E29 #THAI CHARACTER SO RUSI
|
||||
0xCA 0x0E2A #THAI CHARACTER SO SUA
|
||||
0xCB 0x0E2B #THAI CHARACTER HO HIP
|
||||
0xCC 0x0E2C #THAI CHARACTER LO CHULA
|
||||
0xCD 0x0E2D #THAI CHARACTER O ANG
|
||||
0xCE 0x0E2E #THAI CHARACTER HO NOKHUK
|
||||
0xCF 0x0E2F #THAI CHARACTER PAIYANNOI
|
||||
0xD0 0x0E30 #THAI CHARACTER SARA A
|
||||
0xD1 0x0E31 #THAI CHARACTER MAI HAN-AKAT
|
||||
0xD2 0x0E32 #THAI CHARACTER SARA AA
|
||||
0xD3 0x0E33 #THAI CHARACTER SARA AM
|
||||
0xD4 0x0E34 #THAI CHARACTER SARA I
|
||||
0xD5 0x0E35 #THAI CHARACTER SARA II
|
||||
0xD6 0x0E36 #THAI CHARACTER SARA UE
|
||||
0xD7 0x0E37 #THAI CHARACTER SARA UEE
|
||||
0xD8 0x0E38 #THAI CHARACTER SARA U
|
||||
0xD9 0x0E39 #THAI CHARACTER SARA UU
|
||||
0xDA 0x0E3A #THAI CHARACTER PHINTHU
|
||||
0xDB #UNDEFINED
|
||||
0xDC #UNDEFINED
|
||||
0xDD #UNDEFINED
|
||||
0xDE #UNDEFINED
|
||||
0xDF 0x0E3F #THAI CURRENCY SYMBOL BAHT
|
||||
0xE0 0x0E40 #THAI CHARACTER SARA E
|
||||
0xE1 0x0E41 #THAI CHARACTER SARA AE
|
||||
0xE2 0x0E42 #THAI CHARACTER SARA O
|
||||
0xE3 0x0E43 #THAI CHARACTER SARA AI MAIMUAN
|
||||
0xE4 0x0E44 #THAI CHARACTER SARA AI MAIMALAI
|
||||
0xE5 0x0E45 #THAI CHARACTER LAKKHANGYAO
|
||||
0xE6 0x0E46 #THAI CHARACTER MAIYAMOK
|
||||
0xE7 0x0E47 #THAI CHARACTER MAITAIKHU
|
||||
0xE8 0x0E48 #THAI CHARACTER MAI EK
|
||||
0xE9 0x0E49 #THAI CHARACTER MAI THO
|
||||
0xEA 0x0E4A #THAI CHARACTER MAI TRI
|
||||
0xEB 0x0E4B #THAI CHARACTER MAI CHATTAWA
|
||||
0xEC 0x0E4C #THAI CHARACTER THANTHAKHAT
|
||||
0xED 0x0E4D #THAI CHARACTER NIKHAHIT
|
||||
0xEE 0x0E4E #THAI CHARACTER YAMAKKAN
|
||||
0xEF 0x0E4F #THAI CHARACTER FONGMAN
|
||||
0xF0 0x0E50 #THAI DIGIT ZERO
|
||||
0xF1 0x0E51 #THAI DIGIT ONE
|
||||
0xF2 0x0E52 #THAI DIGIT TWO
|
||||
0xF3 0x0E53 #THAI DIGIT THREE
|
||||
0xF4 0x0E54 #THAI DIGIT FOUR
|
||||
0xF5 0x0E55 #THAI DIGIT FIVE
|
||||
0xF6 0x0E56 #THAI DIGIT SIX
|
||||
0xF7 0x0E57 #THAI DIGIT SEVEN
|
||||
0xF8 0x0E58 #THAI DIGIT EIGHT
|
||||
0xF9 0x0E59 #THAI DIGIT NINE
|
||||
0xFA 0x0E5A #THAI CHARACTER ANGKHANKHU
|
||||
0xFB 0x0E5B #THAI CHARACTER KHOMUT
|
||||
0xFC #UNDEFINED
|
||||
0xFD #UNDEFINED
|
||||
0xFE #UNDEFINED
|
||||
0xFF #UNDEFINED
|
|
@ -0,0 +1,176 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Produce a codepage matching table. For each 8-bit character, list
|
||||
# a primary and an alternate match (the latter used for case-insensitive
|
||||
# matching.)
|
||||
#
|
||||
# Usage:
|
||||
# cptable.pl UnicodeData console-cp.txt filesystem-cp.txt output.cp
|
||||
#
|
||||
# Note: for the format of the UnicodeData file, see:
|
||||
# http://www.unicode.org/Public/UNIDATA/UCD.html
|
||||
#
|
||||
|
||||
($ucd, $cpco, $cpfs, $cpout) = @ARGV;
|
||||
|
||||
if (!defined($cpout)) {
|
||||
die "Usage: $0 UnicodeData console-cp.txt fs-cp.txt output.cp\n";
|
||||
}
|
||||
|
||||
%ucase = ();
|
||||
%lcase = ();
|
||||
%tcase = ();
|
||||
%decomp = ();
|
||||
|
||||
open(UCD, '<', $ucd)
|
||||
or die "$0: could not open unicode data: $ucd: $!\n";
|
||||
while (defined($line = <UCD>)) {
|
||||
chomp $line;
|
||||
@f = split(/;/, $line);
|
||||
$n = hex $f[0];
|
||||
$ucase{$n} = ($f[12] ne '') ? hex $f[12] : $n;
|
||||
$lcase{$n} = ($f[13] ne '') ? hex $f[13] : $n;
|
||||
$tcase{$n} = ($f[14] ne '') ? hex $f[14] : $n;
|
||||
if ($f[5] =~ /^[0-9A-F\s]+$/) {
|
||||
# This character has a canonical decomposition.
|
||||
# The regular expression rejects angle brackets, so other
|
||||
# decompositions aren't permitted.
|
||||
$decomp{$n} = [];
|
||||
foreach my $dch (split(' ', $f[5])) {
|
||||
push(@{$decomp{$n}}, hex $dch);
|
||||
}
|
||||
}
|
||||
}
|
||||
close(UCD);
|
||||
|
||||
#
|
||||
# Filesystem and console codepages. The filesystem codepage is used
|
||||
# for FAT shortnames, whereas the console codepage is whatever is used
|
||||
# on the screen and keyboard.
|
||||
#
|
||||
@xtab = (undef) x 256;
|
||||
%tabx = ();
|
||||
open(CPFS, '<', $cpfs)
|
||||
or die "$0: could not open fs codepage: $cpfs: $!\n";
|
||||
while (defined($line = <CPFS>)) {
|
||||
$line =~ s/\s*(\#.*|)$//;
|
||||
@f = split(/\s+/, $line);
|
||||
next if (scalar @f != 2);
|
||||
next if (hex $f[0] > 255);
|
||||
$xtab[hex $f[0]] = hex $f[1]; # Codepage -> Unicode
|
||||
$tabx{hex $f[1]} = hex $f[0]; # Unicode -> Codepage
|
||||
}
|
||||
close(CPFS);
|
||||
|
||||
@ytab = (undef) x 256;
|
||||
%taby = ();
|
||||
open(CPCO, '<', $cpco)
|
||||
or die "$0: could not open console codepage: $cpco: $!\n";
|
||||
while (defined($line = <CPCO>)) {
|
||||
$line =~ s/\s*(\#.*|)$//;
|
||||
@f = split(/\s+/, $line);
|
||||
next if (scalar @f != 2);
|
||||
next if (hex $f[0] > 255);
|
||||
$ytab[hex $f[0]] = hex $f[1]; # Codepage -> Unicode
|
||||
$taby{hex $f[1]} = hex $f[0]; # Unicode -> Codepage
|
||||
}
|
||||
close(CPCO);
|
||||
|
||||
open(CPOUT, '>', $cpout)
|
||||
or die "$0: could not open output file: $cpout: $!\n";
|
||||
#
|
||||
# Magic number, in anticipation of being able to load these
|
||||
# files dynamically...
|
||||
#
|
||||
print CPOUT pack("VV", 0x58a8b3d4, 0x51d21eb1);
|
||||
|
||||
# Header fields available for future use...
|
||||
print CPOUT pack("VVVVVV", 0, 0, 0, 0, 0, 0);
|
||||
|
||||
#
|
||||
# Self (shortname) uppercase table.
|
||||
# This depends both on the console codepage and the filesystem codepage;
|
||||
# the logical transcoding operation is:
|
||||
#
|
||||
# $tabx{$ucase{$ytab[$i]}}
|
||||
#
|
||||
# ... where @ytab is console codepage -> Unicode and
|
||||
# %tabx is Unicode -> filesystem codepage.
|
||||
#
|
||||
@uctab = (undef) x 256;
|
||||
for ($i = 0; $i < 256; $i++) {
|
||||
$uuc = $ucase{$ytab[$i]}; # Unicode upper case
|
||||
if (defined($tabx{$uuc})) {
|
||||
# Straight-forward conversion
|
||||
$u = $tabx{$uuc};
|
||||
} elsif (defined($tabx{${$decomp{$uuc}}[0]})) {
|
||||
# Upper case equivalent stripped of accents
|
||||
$u = $tabx{${$decomp{$uuc}}[0]};
|
||||
} else {
|
||||
# No equivalent at all found. Assume it is a lower-case-only
|
||||
# character, like greek alpha in CP437.
|
||||
$u = $i;
|
||||
}
|
||||
$uctab[$i] = $u;
|
||||
print CPOUT pack("C", $u);
|
||||
}
|
||||
|
||||
#
|
||||
# Self (shortname) lowercase table.
|
||||
# This depends both on the console codepage and the filesystem codepage;
|
||||
# the logical transcoding operation is:
|
||||
#
|
||||
# $taby{$lcase{$xtab[$i]}}
|
||||
#
|
||||
# ... where @ytab is console codepage -> Unicode and
|
||||
# %tabx is Unicode -> filesystem codepage.
|
||||
#
|
||||
@lctab = (undef) x 256;
|
||||
for ($i = 0; $i < 256; $i++) {
|
||||
$llc = $lcase{$xtab[$i]}; # Unicode lower case
|
||||
if (defined($l = $taby{$llc}) && $uctab[$l] == $i) {
|
||||
# Straight-forward conversion
|
||||
} elsif (defined($l = $tabx{${$decomp{$llc}}[0]}) && $uctab[$l] == $i) {
|
||||
# Lower case equivalent stripped of accents
|
||||
} else {
|
||||
# No equivalent at all found. Find *anything* that matches the
|
||||
# bijection criterion...
|
||||
for ($l = 0; $l < 256; $l++) {
|
||||
last if ($uctab[$l] == $i);
|
||||
}
|
||||
$l = $i if ($l == 256); # If nothing, we're screwed anyway...
|
||||
}
|
||||
$lctab[$i] = $l;
|
||||
print CPOUT pack("C", $l);
|
||||
}
|
||||
|
||||
#
|
||||
# Unicode (longname) matching table.
|
||||
# This only depends on the console codepage.
|
||||
#
|
||||
$pp0 = ''; $pp1 = '';
|
||||
for ($i = 0; $i < 256; $i++) {
|
||||
if (!defined($ytab[$i])) {
|
||||
$p0 = $p1 = 0xffff;
|
||||
} else {
|
||||
$p0 = $ytab[$i];
|
||||
if ($ucase{$p0} != $p0) {
|
||||
$p1 = $ucase{$p0};
|
||||
} elsif ($lcase{$p0} != $p0) {
|
||||
$p1 = $lcase{$p0};
|
||||
} elsif ($tcase{$p0} != $p0) {
|
||||
$p1 = $tcase{$p0};
|
||||
} else {
|
||||
$p1 = $p0;
|
||||
}
|
||||
}
|
||||
# Only the BMP is supported...
|
||||
$p0 = 0xffff if ($p0 > 0xffff);
|
||||
$p1 = 0xffff if ($p1 > 0xffff);
|
||||
$pp0 .= pack("v", $p0);
|
||||
$pp1 .= pack("v", $p1);
|
||||
}
|
||||
print CPOUT $pp0, $pp1;
|
||||
close (CPOUT);
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Generate a subset of the UnicodeData.txt file, available from
|
||||
# ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
|
||||
#
|
||||
# Usage:
|
||||
# gensubset.pl [subset files] < UnicodeData.txt > MiniUCD.txt
|
||||
#
|
||||
|
||||
%need_these = ();
|
||||
|
||||
# Mark as needed all the characters mentioned in the relevant files
|
||||
foreach $file (@ARGV) {
|
||||
open(F, '<', $file) or die;
|
||||
while (defined($line = <F>)) {
|
||||
$line =~ s/\s*(\#.*|)$//; # Remove comments and final blanks
|
||||
@f = split(/\s+/, $line);
|
||||
next if (scalar @f != 2);
|
||||
$need_these{hex $f[1]}++;
|
||||
}
|
||||
close(F);
|
||||
}
|
||||
|
||||
# Also mark as needed any case variants of those
|
||||
# (Note: this doesn't necessarily provide the full transitive closure,
|
||||
# but we shouldn't need it.)
|
||||
while (defined($line = <STDIN>)) {
|
||||
@f = split(/;/, $line);
|
||||
if ($f[0] =~ /^([0-9a-f]+)$/i) {
|
||||
$r = hex $f[0];
|
||||
if ($need_these{$r}) {
|
||||
$need_these{hex $f[12]}++ if ($f[12] ne '');
|
||||
$need_these{hex $f[13]}++ if ($f[13] ne '');
|
||||
$need_these{hex $f[14]}++ if ($f[14] ne '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Finally, write out the subset
|
||||
seek(STDIN, 0, 0);
|
||||
while (defined($line = <STDIN>)) {
|
||||
($v, $l) = split(/;/, $line, 2);
|
||||
if ($v =~ /^([0-9a-f]+)\-([0-9a-f]+)$/i) {
|
||||
# This isn't actually the format... fix that if it ever matters
|
||||
$r1 = hex $1;
|
||||
$r2 = hex $2;
|
||||
} elsif ($v =~ /^([0-9a-f]+)$/i) {
|
||||
$r1 = $r2 = hex $1;
|
||||
} else {
|
||||
next;
|
||||
}
|
||||
for ($r = $r1; $r <= $r2; $r++) {
|
||||
printf "%04X;%s", $r, $l if ($need_these{$r});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,303 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-1:1998 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-1:1998 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-1 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x00A5 # YEN SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF # INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,303 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-10:1998 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.1
|
||||
# Table format: Format A
|
||||
# Date: 1999 October 11
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-10:1998 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-10 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version new.
|
||||
# 1.1 corrected mistake in mapping of 0xA4
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xA3 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xA4 0x012A # LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
|
||||
0xA6 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xA9 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xAA 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xAB 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
|
||||
0xAC 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xAF 0x014A # LATIN CAPITAL LETTER ENG
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||
0xB2 0x0113 # LATIN SMALL LETTER E WITH MACRON
|
||||
0xB3 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xB4 0x012B # LATIN SMALL LETTER I WITH MACRON
|
||||
0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
|
||||
0xB6 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x013C # LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xB9 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xBA 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xBB 0x0167 # LATIN SMALL LETTER T WITH STROKE
|
||||
0xBC 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xBD 0x2015 # HORIZONTAL BAR
|
||||
0xBE 0x016B # LATIN SMALL LETTER U WITH MACRON
|
||||
0xBF 0x014B # LATIN SMALL LETTER ENG
|
||||
0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
|
||||
0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
|
||||
0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
|
||||
0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x0169 # LATIN SMALL LETTER U WITH TILDE
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
|
||||
0xFF 0x0138 # LATIN SMALL LETTER KRA
|
|
@ -0,0 +1,297 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-11:2001 to Unicode
|
||||
# Unicode version: 3.2
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 2002 October 7
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 2002 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-11:2001 characters map into Unicode.
|
||||
#
|
||||
# ISO/IEC 8859-11:2001 is equivalent to TIS 620-2533 (1990) with
|
||||
# the addition of 0xA0 NO-BREAK SPACE.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-11 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-11 order.
|
||||
#
|
||||
# Version history:
|
||||
# 2002 October 7 Created
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# For any comments or problems, please use the Unicode
|
||||
# web contact form at:
|
||||
# http://www.unicode.org/unicode/reporting.html
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0E01 # THAI CHARACTER KO KAI
|
||||
0xA2 0x0E02 # THAI CHARACTER KHO KHAI
|
||||
0xA3 0x0E03 # THAI CHARACTER KHO KHUAT
|
||||
0xA4 0x0E04 # THAI CHARACTER KHO KHWAI
|
||||
0xA5 0x0E05 # THAI CHARACTER KHO KHON
|
||||
0xA6 0x0E06 # THAI CHARACTER KHO RAKHANG
|
||||
0xA7 0x0E07 # THAI CHARACTER NGO NGU
|
||||
0xA8 0x0E08 # THAI CHARACTER CHO CHAN
|
||||
0xA9 0x0E09 # THAI CHARACTER CHO CHING
|
||||
0xAA 0x0E0A # THAI CHARACTER CHO CHANG
|
||||
0xAB 0x0E0B # THAI CHARACTER SO SO
|
||||
0xAC 0x0E0C # THAI CHARACTER CHO CHOE
|
||||
0xAD 0x0E0D # THAI CHARACTER YO YING
|
||||
0xAE 0x0E0E # THAI CHARACTER DO CHADA
|
||||
0xAF 0x0E0F # THAI CHARACTER TO PATAK
|
||||
0xB0 0x0E10 # THAI CHARACTER THO THAN
|
||||
0xB1 0x0E11 # THAI CHARACTER THO NANGMONTHO
|
||||
0xB2 0x0E12 # THAI CHARACTER THO PHUTHAO
|
||||
0xB3 0x0E13 # THAI CHARACTER NO NEN
|
||||
0xB4 0x0E14 # THAI CHARACTER DO DEK
|
||||
0xB5 0x0E15 # THAI CHARACTER TO TAO
|
||||
0xB6 0x0E16 # THAI CHARACTER THO THUNG
|
||||
0xB7 0x0E17 # THAI CHARACTER THO THAHAN
|
||||
0xB8 0x0E18 # THAI CHARACTER THO THONG
|
||||
0xB9 0x0E19 # THAI CHARACTER NO NU
|
||||
0xBA 0x0E1A # THAI CHARACTER BO BAIMAI
|
||||
0xBB 0x0E1B # THAI CHARACTER PO PLA
|
||||
0xBC 0x0E1C # THAI CHARACTER PHO PHUNG
|
||||
0xBD 0x0E1D # THAI CHARACTER FO FA
|
||||
0xBE 0x0E1E # THAI CHARACTER PHO PHAN
|
||||
0xBF 0x0E1F # THAI CHARACTER FO FAN
|
||||
0xC0 0x0E20 # THAI CHARACTER PHO SAMPHAO
|
||||
0xC1 0x0E21 # THAI CHARACTER MO MA
|
||||
0xC2 0x0E22 # THAI CHARACTER YO YAK
|
||||
0xC3 0x0E23 # THAI CHARACTER RO RUA
|
||||
0xC4 0x0E24 # THAI CHARACTER RU
|
||||
0xC5 0x0E25 # THAI CHARACTER LO LING
|
||||
0xC6 0x0E26 # THAI CHARACTER LU
|
||||
0xC7 0x0E27 # THAI CHARACTER WO WAEN
|
||||
0xC8 0x0E28 # THAI CHARACTER SO SALA
|
||||
0xC9 0x0E29 # THAI CHARACTER SO RUSI
|
||||
0xCA 0x0E2A # THAI CHARACTER SO SUA
|
||||
0xCB 0x0E2B # THAI CHARACTER HO HIP
|
||||
0xCC 0x0E2C # THAI CHARACTER LO CHULA
|
||||
0xCD 0x0E2D # THAI CHARACTER O ANG
|
||||
0xCE 0x0E2E # THAI CHARACTER HO NOKHUK
|
||||
0xCF 0x0E2F # THAI CHARACTER PAIYANNOI
|
||||
0xD0 0x0E30 # THAI CHARACTER SARA A
|
||||
0xD1 0x0E31 # THAI CHARACTER MAI HAN-AKAT
|
||||
0xD2 0x0E32 # THAI CHARACTER SARA AA
|
||||
0xD3 0x0E33 # THAI CHARACTER SARA AM
|
||||
0xD4 0x0E34 # THAI CHARACTER SARA I
|
||||
0xD5 0x0E35 # THAI CHARACTER SARA II
|
||||
0xD6 0x0E36 # THAI CHARACTER SARA UE
|
||||
0xD7 0x0E37 # THAI CHARACTER SARA UEE
|
||||
0xD8 0x0E38 # THAI CHARACTER SARA U
|
||||
0xD9 0x0E39 # THAI CHARACTER SARA UU
|
||||
0xDA 0x0E3A # THAI CHARACTER PHINTHU
|
||||
0xDF 0x0E3F # THAI CURRENCY SYMBOL BAHT
|
||||
0xE0 0x0E40 # THAI CHARACTER SARA E
|
||||
0xE1 0x0E41 # THAI CHARACTER SARA AE
|
||||
0xE2 0x0E42 # THAI CHARACTER SARA O
|
||||
0xE3 0x0E43 # THAI CHARACTER SARA AI MAIMUAN
|
||||
0xE4 0x0E44 # THAI CHARACTER SARA AI MAIMALAI
|
||||
0xE5 0x0E45 # THAI CHARACTER LAKKHANGYAO
|
||||
0xE6 0x0E46 # THAI CHARACTER MAIYAMOK
|
||||
0xE7 0x0E47 # THAI CHARACTER MAITAIKHU
|
||||
0xE8 0x0E48 # THAI CHARACTER MAI EK
|
||||
0xE9 0x0E49 # THAI CHARACTER MAI THO
|
||||
0xEA 0x0E4A # THAI CHARACTER MAI TRI
|
||||
0xEB 0x0E4B # THAI CHARACTER MAI CHATTAWA
|
||||
0xEC 0x0E4C # THAI CHARACTER THANTHAKHAT
|
||||
0xED 0x0E4D # THAI CHARACTER NIKHAHIT
|
||||
0xEE 0x0E4E # THAI CHARACTER YAMAKKAN
|
||||
0xEF 0x0E4F # THAI CHARACTER FONGMAN
|
||||
0xF0 0x0E50 # THAI DIGIT ZERO
|
||||
0xF1 0x0E51 # THAI DIGIT ONE
|
||||
0xF2 0x0E52 # THAI DIGIT TWO
|
||||
0xF3 0x0E53 # THAI DIGIT THREE
|
||||
0xF4 0x0E54 # THAI DIGIT FOUR
|
||||
0xF5 0x0E55 # THAI DIGIT FIVE
|
||||
0xF6 0x0E56 # THAI DIGIT SIX
|
||||
0xF7 0x0E57 # THAI DIGIT SEVEN
|
||||
0xF8 0x0E58 # THAI DIGIT EIGHT
|
||||
0xF9 0x0E59 # THAI DIGIT NINE
|
||||
0xFA 0x0E5A # THAI CHARACTER ANGKHANKHU
|
||||
0xFB 0x0E5B # THAI CHARACTER KHOMUT
|
|
@ -0,0 +1,299 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-13:1998 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-13:1998 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-13 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-13 order.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xC0 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xC1 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC2 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC3 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xC7 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xCB 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCC 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xCD 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xCE 0x012A # LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xCF 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xD0 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x014C # LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xD9 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xDA 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xDB 0x016A # LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xDE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
|
||||
0xE0 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||
0xE1 0x012F # LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE2 0x0101 # LATIN SMALL LETTER A WITH MACRON
|
||||
0xE3 0x0107 # LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||
0xE7 0x0113 # LATIN SMALL LETTER E WITH MACRON
|
||||
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x017A # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xEB 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xEC 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xED 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xEE 0x012B # LATIN SMALL LETTER I WITH MACRON
|
||||
0xEF 0x013C # LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xF0 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x014D # LATIN SMALL LETTER O WITH MACRON
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x0173 # LATIN SMALL LETTER U WITH OGONEK
|
||||
0xF9 0x0142 # LATIN SMALL LETTER L WITH STROKE
|
||||
0xFA 0x015B # LATIN SMALL LETTER S WITH ACUTE
|
||||
0xFB 0x016B # LATIN SMALL LETTER U WITH MACRON
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xFE 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xFF 0x2019 # RIGHT SINGLE QUOTATION MARK
|
|
@ -0,0 +1,301 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-14:1998 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
|
||||
# Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-14:1998 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-14 order.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
|
||||
0xA2 0x1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
|
||||
0xA5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
|
||||
0xA6 0x1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x1E80 # LATIN CAPITAL LETTER W WITH GRAVE
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x1E82 # LATIN CAPITAL LETTER W WITH ACUTE
|
||||
0xAB 0x1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
|
||||
0xAC 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xB0 0x1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
|
||||
0xB1 0x1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
|
||||
0xB2 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
|
||||
0xB3 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
|
||||
0xB4 0x1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
|
||||
0xB5 0x1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
|
||||
0xB8 0x1E81 # LATIN SMALL LETTER W WITH GRAVE
|
||||
0xB9 0x1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
|
||||
0xBA 0x1E83 # LATIN SMALL LETTER W WITH ACUTE
|
||||
0xBB 0x1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
|
||||
0xBC 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
|
||||
0xBD 0x1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
|
||||
0xBE 0x1E85 # LATIN SMALL LETTER W WITH DIAERESIS
|
||||
0xBF 0x1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
|
|
@ -0,0 +1,303 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-15:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
|
||||
# Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-15:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-15 order.
|
||||
#
|
||||
# Version history
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x20AC # EURO SIGN
|
||||
0xA5 0x00A5 # YEN SIGN
|
||||
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||
0xBD 0x0153 # LATIN SMALL LIGATURE OE
|
||||
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xBF 0x00BF # INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x00DE # LATIN CAPITAL LETTER THORN
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x00F0 # LATIN SMALL LETTER ETH
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x00FE # LATIN SMALL LETTER THORN
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
|
|
@ -0,0 +1,299 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-16:2001 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 2001 July 26
|
||||
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
|
||||
#
|
||||
# Copyright (c) 1999-2001 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-16:2001 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-16 order.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||
0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xA4 0x20AC # EURO SIGN
|
||||
0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x017A # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||
0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
|
||||
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xB5 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xB9 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||
0xBA 0x0219 # LATIN SMALL LETTER S WITH COMMA BELOW
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||
0xBD 0x0153 # LATIN SMALL LIGATURE OE
|
||||
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xD8 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xDE 0x021A # LATIN CAPITAL LETTER T WITH COMMA BELOW
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x0107 # LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x015B # LATIN SMALL LETTER S WITH ACUTE
|
||||
0xF8 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||
0xFE 0x021B # LATIN SMALL LETTER T WITH COMMA BELOW
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
|
@ -0,0 +1,303 @@
|
|||
#
|
||||
# Name: ISO 8859-2:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-2:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-2 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-2 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x02D8 # BREVE
|
||||
0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x013D # LATIN CAPITAL LETTER L WITH CARON
|
||||
0xA6 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xAB 0x0164 # LATIN CAPITAL LETTER T WITH CARON
|
||||
0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||
0xB2 0x02DB # OGONEK
|
||||
0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x013E # LATIN SMALL LETTER L WITH CARON
|
||||
0xB6 0x015B # LATIN SMALL LETTER S WITH ACUTE
|
||||
0xB7 0x02C7 # CARON
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xBB 0x0165 # LATIN SMALL LETTER T WITH CARON
|
||||
0xBC 0x017A # LATIN SMALL LETTER Z WITH ACUTE
|
||||
0xBD 0x02DD # DOUBLE ACUTE ACCENT
|
||||
0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x0154 # LATIN CAPITAL LETTER R WITH ACUTE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x0139 # LATIN CAPITAL LETTER L WITH ACUTE
|
||||
0xC6 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x011A # LATIN CAPITAL LETTER E WITH CARON
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x010E # LATIN CAPITAL LETTER D WITH CARON
|
||||
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
|
||||
0xD2 0x0147 # LATIN CAPITAL LETTER N WITH CARON
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x0158 # LATIN CAPITAL LETTER R WITH CARON
|
||||
0xD9 0x016E # LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
0xDE 0x0162 # LATIN CAPITAL LETTER T WITH CEDILLA
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0155 # LATIN SMALL LETTER R WITH ACUTE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x013A # LATIN SMALL LETTER L WITH ACUTE
|
||||
0xE6 0x0107 # LATIN SMALL LETTER C WITH ACUTE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x011B # LATIN SMALL LETTER E WITH CARON
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x010F # LATIN SMALL LETTER D WITH CARON
|
||||
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
|
||||
0xF2 0x0148 # LATIN SMALL LETTER N WITH CARON
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x0159 # LATIN SMALL LETTER R WITH CARON
|
||||
0xF9 0x016F # LATIN SMALL LETTER U WITH RING ABOVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||
0xFE 0x0163 # LATIN SMALL LETTER T WITH CEDILLA
|
||||
0xFF 0x02D9 # DOT ABOVE
|
|
@ -0,0 +1,296 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-3:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-3:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-3 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0126 # LATIN CAPITAL LETTER H WITH STROKE
|
||||
0xA2 0x02D8 # BREVE
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA6 0x0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xAB 0x011E # LATIN CAPITAL LETTER G WITH BREVE
|
||||
0xAC 0x0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x0127 # LATIN SMALL LETTER H WITH STROKE
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||
0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xBB 0x011F # LATIN SMALL LETTER G WITH BREVE
|
||||
0xBC 0x0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
|
||||
0xC6 0x0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x016C # LATIN CAPITAL LETTER U WITH BREVE
|
||||
0xDE 0x015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
|
||||
0xE6 0x0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x016D # LATIN SMALL LETTER U WITH BREVE
|
||||
0xFE 0x015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
|
||||
0xFF 0x02D9 # DOT ABOVE
|
|
@ -0,0 +1,303 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-4:1998 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-4:1998 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-4 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-4 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||
0xA2 0x0138 # LATIN SMALL LETTER KRA
|
||||
0xA3 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
|
||||
0xA6 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||
0xAA 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
|
||||
0xAB 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
|
||||
0xAC 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||
0xB2 0x02DB # OGONEK
|
||||
0xB3 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
|
||||
0xB6 0x013C # LATIN SMALL LETTER L WITH CEDILLA
|
||||
0xB7 0x02C7 # CARON
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||
0xBA 0x0113 # LATIN SMALL LETTER E WITH MACRON
|
||||
0xBB 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
|
||||
0xBC 0x0167 # LATIN SMALL LETTER T WITH STROKE
|
||||
0xBD 0x014A # LATIN CAPITAL LETTER ENG
|
||||
0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||
0xBF 0x014B # LATIN SMALL LETTER ENG
|
||||
0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
|
||||
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x012A # LATIN CAPITAL LETTER I WITH MACRON
|
||||
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||
0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
|
||||
0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
|
||||
0xD3 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
|
||||
0xDE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
|
||||
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x012B # LATIN SMALL LETTER I WITH MACRON
|
||||
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||
0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
|
||||
0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
|
||||
0xF3 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x0169 # LATIN SMALL LETTER U WITH TILDE
|
||||
0xFE 0x016B # LATIN SMALL LETTER U WITH MACRON
|
||||
0xFF 0x02D9 # DOT ABOVE
|
|
@ -0,0 +1,303 @@
|
|||
#
|
||||
# Name: ISO 8859-5:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-5:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-5 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xA2 0x0402 # CYRILLIC CAPITAL LETTER DJE
|
||||
0xA3 0x0403 # CYRILLIC CAPITAL LETTER GJE
|
||||
0xA4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xA5 0x0405 # CYRILLIC CAPITAL LETTER DZE
|
||||
0xA6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xA7 0x0407 # CYRILLIC CAPITAL LETTER YI
|
||||
0xA8 0x0408 # CYRILLIC CAPITAL LETTER JE
|
||||
0xA9 0x0409 # CYRILLIC CAPITAL LETTER LJE
|
||||
0xAA 0x040A # CYRILLIC CAPITAL LETTER NJE
|
||||
0xAB 0x040B # CYRILLIC CAPITAL LETTER TSHE
|
||||
0xAC 0x040C # CYRILLIC CAPITAL LETTER KJE
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x040E # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xAF 0x040F # CYRILLIC CAPITAL LETTER DZHE
|
||||
0xB0 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xB1 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xB2 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xB3 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xB4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xB5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xB6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xB7 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xB8 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xB9 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xBA 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xBB 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xBC 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xBD 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xBE 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xBF 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xC0 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xC1 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xC2 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xC3 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xC4 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xC5 0x0425 # CYRILLIC CAPITAL LETTER HA
|
||||
0xC6 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xC7 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xC8 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xC9 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xCA 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
||||
0xCB 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xCC 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xCD 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xCE 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xCF 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xD0 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xD1 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xD2 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xD3 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xD4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xD5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xD7 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xD8 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xD9 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xDA 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xDB 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xDC 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xDD 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xDE 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xDF 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xE0 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xE1 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xE2 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xE3 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xE4 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xE5 0x0445 # CYRILLIC SMALL LETTER HA
|
||||
0xE6 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xE7 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xE8 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xE9 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xEA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xEB 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xEC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xED 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xEE 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xEF 0x044F # CYRILLIC SMALL LETTER YA
|
||||
0xF0 0x2116 # NUMERO SIGN
|
||||
0xF1 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xF2 0x0452 # CYRILLIC SMALL LETTER DJE
|
||||
0xF3 0x0453 # CYRILLIC SMALL LETTER GJE
|
||||
0xF4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xF5 0x0455 # CYRILLIC SMALL LETTER DZE
|
||||
0xF6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xF7 0x0457 # CYRILLIC SMALL LETTER YI
|
||||
0xF8 0x0458 # CYRILLIC SMALL LETTER JE
|
||||
0xF9 0x0459 # CYRILLIC SMALL LETTER LJE
|
||||
0xFA 0x045A # CYRILLIC SMALL LETTER NJE
|
||||
0xFB 0x045B # CYRILLIC SMALL LETTER TSHE
|
||||
0xFC 0x045C # CYRILLIC SMALL LETTER KJE
|
||||
0xFD 0x00A7 # SECTION SIGN
|
||||
0xFE 0x045E # CYRILLIC SMALL LETTER SHORT U
|
||||
0xFF 0x045F # CYRILLIC SMALL LETTER DZHE
|
|
@ -0,0 +1,260 @@
|
|||
#
|
||||
# Name: ISO 8859-6:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-6:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-6 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
|
||||
# of the Arabic digits (U+0660..U+0669).
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xAC 0x060C # ARABIC COMMA
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xBB 0x061B # ARABIC SEMICOLON
|
||||
0xBF 0x061F # ARABIC QUESTION MARK
|
||||
0xC1 0x0621 # ARABIC LETTER HAMZA
|
||||
0xC2 0x0622 # ARABIC LETTER ALEF WITH MADDA ABOVE
|
||||
0xC3 0x0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE
|
||||
0xC4 0x0624 # ARABIC LETTER WAW WITH HAMZA ABOVE
|
||||
0xC5 0x0625 # ARABIC LETTER ALEF WITH HAMZA BELOW
|
||||
0xC6 0x0626 # ARABIC LETTER YEH WITH HAMZA ABOVE
|
||||
0xC7 0x0627 # ARABIC LETTER ALEF
|
||||
0xC8 0x0628 # ARABIC LETTER BEH
|
||||
0xC9 0x0629 # ARABIC LETTER TEH MARBUTA
|
||||
0xCA 0x062A # ARABIC LETTER TEH
|
||||
0xCB 0x062B # ARABIC LETTER THEH
|
||||
0xCC 0x062C # ARABIC LETTER JEEM
|
||||
0xCD 0x062D # ARABIC LETTER HAH
|
||||
0xCE 0x062E # ARABIC LETTER KHAH
|
||||
0xCF 0x062F # ARABIC LETTER DAL
|
||||
0xD0 0x0630 # ARABIC LETTER THAL
|
||||
0xD1 0x0631 # ARABIC LETTER REH
|
||||
0xD2 0x0632 # ARABIC LETTER ZAIN
|
||||
0xD3 0x0633 # ARABIC LETTER SEEN
|
||||
0xD4 0x0634 # ARABIC LETTER SHEEN
|
||||
0xD5 0x0635 # ARABIC LETTER SAD
|
||||
0xD6 0x0636 # ARABIC LETTER DAD
|
||||
0xD7 0x0637 # ARABIC LETTER TAH
|
||||
0xD8 0x0638 # ARABIC LETTER ZAH
|
||||
0xD9 0x0639 # ARABIC LETTER AIN
|
||||
0xDA 0x063A # ARABIC LETTER GHAIN
|
||||
0xE0 0x0640 # ARABIC TATWEEL
|
||||
0xE1 0x0641 # ARABIC LETTER FEH
|
||||
0xE2 0x0642 # ARABIC LETTER QAF
|
||||
0xE3 0x0643 # ARABIC LETTER KAF
|
||||
0xE4 0x0644 # ARABIC LETTER LAM
|
||||
0xE5 0x0645 # ARABIC LETTER MEEM
|
||||
0xE6 0x0646 # ARABIC LETTER NOON
|
||||
0xE7 0x0647 # ARABIC LETTER HEH
|
||||
0xE8 0x0648 # ARABIC LETTER WAW
|
||||
0xE9 0x0649 # ARABIC LETTER ALEF MAKSURA
|
||||
0xEA 0x064A # ARABIC LETTER YEH
|
||||
0xEB 0x064B # ARABIC FATHATAN
|
||||
0xEC 0x064C # ARABIC DAMMATAN
|
||||
0xED 0x064D # ARABIC KASRATAN
|
||||
0xEE 0x064E # ARABIC FATHA
|
||||
0xEF 0x064F # ARABIC DAMMA
|
||||
0xF0 0x0650 # ARABIC KASRA
|
||||
0xF1 0x0651 # ARABIC SHADDA
|
||||
0xF2 0x0652 # ARABIC SUKUN
|
|
@ -0,0 +1,308 @@
|
|||
#
|
||||
# Name: ISO 8859-7:2003 to Unicode
|
||||
# Unicode version: 4.0
|
||||
# Table version: 2.0
|
||||
# Table format: Format A
|
||||
# Date: 2003-Nov-12
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-2003 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO 8859-7:2003 characters map into Unicode.
|
||||
#
|
||||
# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
|
||||
# and ECMA 118. ISO 8859-7:2003 adds two currency signs
|
||||
# and one other character not in the earlier standard.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO 8859-7 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO 8859-7 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
# Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
|
||||
# Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
|
||||
#
|
||||
# 2.0 version updates 1.0 version by adding mappings for the
|
||||
# three newly added characters 0xA4, 0xA5, 0xAA.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <http://www.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact the Unicode Consortium at:
|
||||
# <http://www.unicode.org/reporting.html>
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||
0xA2 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x20AC # EURO SIGN
|
||||
0xA5 0x20AF # DRACHMA SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x037A # GREEK YPOGEGRAMMENI
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAF 0x2015 # HORIZONTAL BAR
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x0384 # GREEK TONOS
|
||||
0xB5 0x0385 # GREEK DIALYTIKA TONOS
|
||||
0xB6 0x0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||
0xB9 0x0389 # GREEK CAPITAL LETTER ETA WITH TONOS
|
||||
0xBA 0x038A # GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||
0xBF 0x038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||
0xC0 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
0xC1 0x0391 # GREEK CAPITAL LETTER ALPHA
|
||||
0xC2 0x0392 # GREEK CAPITAL LETTER BETA
|
||||
0xC3 0x0393 # GREEK CAPITAL LETTER GAMMA
|
||||
0xC4 0x0394 # GREEK CAPITAL LETTER DELTA
|
||||
0xC5 0x0395 # GREEK CAPITAL LETTER EPSILON
|
||||
0xC6 0x0396 # GREEK CAPITAL LETTER ZETA
|
||||
0xC7 0x0397 # GREEK CAPITAL LETTER ETA
|
||||
0xC8 0x0398 # GREEK CAPITAL LETTER THETA
|
||||
0xC9 0x0399 # GREEK CAPITAL LETTER IOTA
|
||||
0xCA 0x039A # GREEK CAPITAL LETTER KAPPA
|
||||
0xCB 0x039B # GREEK CAPITAL LETTER LAMDA
|
||||
0xCC 0x039C # GREEK CAPITAL LETTER MU
|
||||
0xCD 0x039D # GREEK CAPITAL LETTER NU
|
||||
0xCE 0x039E # GREEK CAPITAL LETTER XI
|
||||
0xCF 0x039F # GREEK CAPITAL LETTER OMICRON
|
||||
0xD0 0x03A0 # GREEK CAPITAL LETTER PI
|
||||
0xD1 0x03A1 # GREEK CAPITAL LETTER RHO
|
||||
0xD3 0x03A3 # GREEK CAPITAL LETTER SIGMA
|
||||
0xD4 0x03A4 # GREEK CAPITAL LETTER TAU
|
||||
0xD5 0x03A5 # GREEK CAPITAL LETTER UPSILON
|
||||
0xD6 0x03A6 # GREEK CAPITAL LETTER PHI
|
||||
0xD7 0x03A7 # GREEK CAPITAL LETTER CHI
|
||||
0xD8 0x03A8 # GREEK CAPITAL LETTER PSI
|
||||
0xD9 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||
0xDA 0x03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||
0xDB 0x03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||
0xDC 0x03AC # GREEK SMALL LETTER ALPHA WITH TONOS
|
||||
0xDD 0x03AD # GREEK SMALL LETTER EPSILON WITH TONOS
|
||||
0xDE 0x03AE # GREEK SMALL LETTER ETA WITH TONOS
|
||||
0xDF 0x03AF # GREEK SMALL LETTER IOTA WITH TONOS
|
||||
0xE0 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
0xE1 0x03B1 # GREEK SMALL LETTER ALPHA
|
||||
0xE2 0x03B2 # GREEK SMALL LETTER BETA
|
||||
0xE3 0x03B3 # GREEK SMALL LETTER GAMMA
|
||||
0xE4 0x03B4 # GREEK SMALL LETTER DELTA
|
||||
0xE5 0x03B5 # GREEK SMALL LETTER EPSILON
|
||||
0xE6 0x03B6 # GREEK SMALL LETTER ZETA
|
||||
0xE7 0x03B7 # GREEK SMALL LETTER ETA
|
||||
0xE8 0x03B8 # GREEK SMALL LETTER THETA
|
||||
0xE9 0x03B9 # GREEK SMALL LETTER IOTA
|
||||
0xEA 0x03BA # GREEK SMALL LETTER KAPPA
|
||||
0xEB 0x03BB # GREEK SMALL LETTER LAMDA
|
||||
0xEC 0x03BC # GREEK SMALL LETTER MU
|
||||
0xED 0x03BD # GREEK SMALL LETTER NU
|
||||
0xEE 0x03BE # GREEK SMALL LETTER XI
|
||||
0xEF 0x03BF # GREEK SMALL LETTER OMICRON
|
||||
0xF0 0x03C0 # GREEK SMALL LETTER PI
|
||||
0xF1 0x03C1 # GREEK SMALL LETTER RHO
|
||||
0xF2 0x03C2 # GREEK SMALL LETTER FINAL SIGMA
|
||||
0xF3 0x03C3 # GREEK SMALL LETTER SIGMA
|
||||
0xF4 0x03C4 # GREEK SMALL LETTER TAU
|
||||
0xF5 0x03C5 # GREEK SMALL LETTER UPSILON
|
||||
0xF6 0x03C6 # GREEK SMALL LETTER PHI
|
||||
0xF7 0x03C7 # GREEK SMALL LETTER CHI
|
||||
0xF8 0x03C8 # GREEK SMALL LETTER PSI
|
||||
0xF9 0x03C9 # GREEK SMALL LETTER OMEGA
|
||||
0xFA 0x03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||
0xFB 0x03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||
0xFC 0x03CC # GREEK SMALL LETTER OMICRON WITH TONOS
|
||||
0xFD 0x03CD # GREEK SMALL LETTER UPSILON WITH TONOS
|
||||
0xFE 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS
|
|
@ -0,0 +1,270 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-8:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.1
|
||||
# Table format: Format A
|
||||
# Date: 2000-Jan-03
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on optical media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-8:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-8 order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
# 1.1 version updates to the published 8859-8:1999, correcting
|
||||
# the mapping of 0xAF and adding mappings for LRM and RLM.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x00A5 # YEN SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x00D7 # MULTIPLICATION SIGN
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x00F7 # DIVISION SIGN
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
|
||||
0xDF 0x2017 # DOUBLE LOW LINE
|
||||
0xE0 0x05D0 # HEBREW LETTER ALEF
|
||||
0xE1 0x05D1 # HEBREW LETTER BET
|
||||
0xE2 0x05D2 # HEBREW LETTER GIMEL
|
||||
0xE3 0x05D3 # HEBREW LETTER DALET
|
||||
0xE4 0x05D4 # HEBREW LETTER HE
|
||||
0xE5 0x05D5 # HEBREW LETTER VAV
|
||||
0xE6 0x05D6 # HEBREW LETTER ZAYIN
|
||||
0xE7 0x05D7 # HEBREW LETTER HET
|
||||
0xE8 0x05D8 # HEBREW LETTER TET
|
||||
0xE9 0x05D9 # HEBREW LETTER YOD
|
||||
0xEA 0x05DA # HEBREW LETTER FINAL KAF
|
||||
0xEB 0x05DB # HEBREW LETTER KAF
|
||||
0xEC 0x05DC # HEBREW LETTER LAMED
|
||||
0xED 0x05DD # HEBREW LETTER FINAL MEM
|
||||
0xEE 0x05DE # HEBREW LETTER MEM
|
||||
0xEF 0x05DF # HEBREW LETTER FINAL NUN
|
||||
0xF0 0x05E0 # HEBREW LETTER NUN
|
||||
0xF1 0x05E1 # HEBREW LETTER SAMEKH
|
||||
0xF2 0x05E2 # HEBREW LETTER AYIN
|
||||
0xF3 0x05E3 # HEBREW LETTER FINAL PE
|
||||
0xF4 0x05E4 # HEBREW LETTER PE
|
||||
0xF5 0x05E5 # HEBREW LETTER FINAL TSADI
|
||||
0xF6 0x05E6 # HEBREW LETTER TSADI
|
||||
0xF7 0x05E7 # HEBREW LETTER QOF
|
||||
0xF8 0x05E8 # HEBREW LETTER RESH
|
||||
0xF9 0x05E9 # HEBREW LETTER SHIN
|
||||
0xFA 0x05EA # HEBREW LETTER TAV
|
||||
0xFD 0x200E # LEFT-TO-RIGHT MARK
|
||||
0xFE 0x200F # RIGHT-TO-LEFT MARK
|
||||
|
|
@ -0,0 +1,307 @@
|
|||
#
|
||||
# Name: ISO/IEC 8859-9:1999 to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 1999 July 27
|
||||
# Authors: Ken Whistler <kenw@sybase.com>
|
||||
#
|
||||
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
|
||||
#
|
||||
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
|
||||
# No claims are made as to fitness for any particular purpose. No
|
||||
# warranties of any kind are expressed or implied. The recipient
|
||||
# agrees to determine applicability of information provided. If this
|
||||
# file has been provided on magnetic media by Unicode, Inc., the sole
|
||||
# remedy for any claim will be exchange of defective media within 90
|
||||
# days of receipt.
|
||||
#
|
||||
# Unicode, Inc. hereby grants the right to freely use the information
|
||||
# supplied in this file in the creation of products supporting the
|
||||
# Unicode Standard, and to make copies of this file in any form for
|
||||
# internal or external distribution as long as this notice remains
|
||||
# attached.
|
||||
#
|
||||
# General notes:
|
||||
#
|
||||
# This table contains the data the Unicode Consortium has on how
|
||||
# ISO/IEC 8859-9:1999 characters map into Unicode.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
|
||||
# Column #2 is the Unicode (in hex as 0xXXXX)
|
||||
# Column #3 the Unicode name (follows a comment sign, '#')
|
||||
#
|
||||
# The entries are in ISO/IEC 8859-9 order.
|
||||
#
|
||||
# ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version updates 0.1 version by adding mappings for all
|
||||
# control characters.
|
||||
#
|
||||
# Updated versions of this file may be found in:
|
||||
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
|
||||
#
|
||||
# Any comments or problems, contact <errata@unicode.org>
|
||||
# Please note that <errata@unicode.org> is an archival address;
|
||||
# notices will be checked, but do not expect an immediate response.
|
||||
#
|
||||
0x00 0x0000 # NULL
|
||||
0x01 0x0001 # START OF HEADING
|
||||
0x02 0x0002 # START OF TEXT
|
||||
0x03 0x0003 # END OF TEXT
|
||||
0x04 0x0004 # END OF TRANSMISSION
|
||||
0x05 0x0005 # ENQUIRY
|
||||
0x06 0x0006 # ACKNOWLEDGE
|
||||
0x07 0x0007 # BELL
|
||||
0x08 0x0008 # BACKSPACE
|
||||
0x09 0x0009 # HORIZONTAL TABULATION
|
||||
0x0A 0x000A # LINE FEED
|
||||
0x0B 0x000B # VERTICAL TABULATION
|
||||
0x0C 0x000C # FORM FEED
|
||||
0x0D 0x000D # CARRIAGE RETURN
|
||||
0x0E 0x000E # SHIFT OUT
|
||||
0x0F 0x000F # SHIFT IN
|
||||
0x10 0x0010 # DATA LINK ESCAPE
|
||||
0x11 0x0011 # DEVICE CONTROL ONE
|
||||
0x12 0x0012 # DEVICE CONTROL TWO
|
||||
0x13 0x0013 # DEVICE CONTROL THREE
|
||||
0x14 0x0014 # DEVICE CONTROL FOUR
|
||||
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
|
||||
0x16 0x0016 # SYNCHRONOUS IDLE
|
||||
0x17 0x0017 # END OF TRANSMISSION BLOCK
|
||||
0x18 0x0018 # CANCEL
|
||||
0x19 0x0019 # END OF MEDIUM
|
||||
0x1A 0x001A # SUBSTITUTE
|
||||
0x1B 0x001B # ESCAPE
|
||||
0x1C 0x001C # FILE SEPARATOR
|
||||
0x1D 0x001D # GROUP SEPARATOR
|
||||
0x1E 0x001E # RECORD SEPARATOR
|
||||
0x1F 0x001F # UNIT SEPARATOR
|
||||
0x20 0x0020 # SPACE
|
||||
0x21 0x0021 # EXCLAMATION MARK
|
||||
0x22 0x0022 # QUOTATION MARK
|
||||
0x23 0x0023 # NUMBER SIGN
|
||||
0x24 0x0024 # DOLLAR SIGN
|
||||
0x25 0x0025 # PERCENT SIGN
|
||||
0x26 0x0026 # AMPERSAND
|
||||
0x27 0x0027 # APOSTROPHE
|
||||
0x28 0x0028 # LEFT PARENTHESIS
|
||||
0x29 0x0029 # RIGHT PARENTHESIS
|
||||
0x2A 0x002A # ASTERISK
|
||||
0x2B 0x002B # PLUS SIGN
|
||||
0x2C 0x002C # COMMA
|
||||
0x2D 0x002D # HYPHEN-MINUS
|
||||
0x2E 0x002E # FULL STOP
|
||||
0x2F 0x002F # SOLIDUS
|
||||
0x30 0x0030 # DIGIT ZERO
|
||||
0x31 0x0031 # DIGIT ONE
|
||||
0x32 0x0032 # DIGIT TWO
|
||||
0x33 0x0033 # DIGIT THREE
|
||||
0x34 0x0034 # DIGIT FOUR
|
||||
0x35 0x0035 # DIGIT FIVE
|
||||
0x36 0x0036 # DIGIT SIX
|
||||
0x37 0x0037 # DIGIT SEVEN
|
||||
0x38 0x0038 # DIGIT EIGHT
|
||||
0x39 0x0039 # DIGIT NINE
|
||||
0x3A 0x003A # COLON
|
||||
0x3B 0x003B # SEMICOLON
|
||||
0x3C 0x003C # LESS-THAN SIGN
|
||||
0x3D 0x003D # EQUALS SIGN
|
||||
0x3E 0x003E # GREATER-THAN SIGN
|
||||
0x3F 0x003F # QUESTION MARK
|
||||
0x40 0x0040 # COMMERCIAL AT
|
||||
0x41 0x0041 # LATIN CAPITAL LETTER A
|
||||
0x42 0x0042 # LATIN CAPITAL LETTER B
|
||||
0x43 0x0043 # LATIN CAPITAL LETTER C
|
||||
0x44 0x0044 # LATIN CAPITAL LETTER D
|
||||
0x45 0x0045 # LATIN CAPITAL LETTER E
|
||||
0x46 0x0046 # LATIN CAPITAL LETTER F
|
||||
0x47 0x0047 # LATIN CAPITAL LETTER G
|
||||
0x48 0x0048 # LATIN CAPITAL LETTER H
|
||||
0x49 0x0049 # LATIN CAPITAL LETTER I
|
||||
0x4A 0x004A # LATIN CAPITAL LETTER J
|
||||
0x4B 0x004B # LATIN CAPITAL LETTER K
|
||||
0x4C 0x004C # LATIN CAPITAL LETTER L
|
||||
0x4D 0x004D # LATIN CAPITAL LETTER M
|
||||
0x4E 0x004E # LATIN CAPITAL LETTER N
|
||||
0x4F 0x004F # LATIN CAPITAL LETTER O
|
||||
0x50 0x0050 # LATIN CAPITAL LETTER P
|
||||
0x51 0x0051 # LATIN CAPITAL LETTER Q
|
||||
0x52 0x0052 # LATIN CAPITAL LETTER R
|
||||
0x53 0x0053 # LATIN CAPITAL LETTER S
|
||||
0x54 0x0054 # LATIN CAPITAL LETTER T
|
||||
0x55 0x0055 # LATIN CAPITAL LETTER U
|
||||
0x56 0x0056 # LATIN CAPITAL LETTER V
|
||||
0x57 0x0057 # LATIN CAPITAL LETTER W
|
||||
0x58 0x0058 # LATIN CAPITAL LETTER X
|
||||
0x59 0x0059 # LATIN CAPITAL LETTER Y
|
||||
0x5A 0x005A # LATIN CAPITAL LETTER Z
|
||||
0x5B 0x005B # LEFT SQUARE BRACKET
|
||||
0x5C 0x005C # REVERSE SOLIDUS
|
||||
0x5D 0x005D # RIGHT SQUARE BRACKET
|
||||
0x5E 0x005E # CIRCUMFLEX ACCENT
|
||||
0x5F 0x005F # LOW LINE
|
||||
0x60 0x0060 # GRAVE ACCENT
|
||||
0x61 0x0061 # LATIN SMALL LETTER A
|
||||
0x62 0x0062 # LATIN SMALL LETTER B
|
||||
0x63 0x0063 # LATIN SMALL LETTER C
|
||||
0x64 0x0064 # LATIN SMALL LETTER D
|
||||
0x65 0x0065 # LATIN SMALL LETTER E
|
||||
0x66 0x0066 # LATIN SMALL LETTER F
|
||||
0x67 0x0067 # LATIN SMALL LETTER G
|
||||
0x68 0x0068 # LATIN SMALL LETTER H
|
||||
0x69 0x0069 # LATIN SMALL LETTER I
|
||||
0x6A 0x006A # LATIN SMALL LETTER J
|
||||
0x6B 0x006B # LATIN SMALL LETTER K
|
||||
0x6C 0x006C # LATIN SMALL LETTER L
|
||||
0x6D 0x006D # LATIN SMALL LETTER M
|
||||
0x6E 0x006E # LATIN SMALL LETTER N
|
||||
0x6F 0x006F # LATIN SMALL LETTER O
|
||||
0x70 0x0070 # LATIN SMALL LETTER P
|
||||
0x71 0x0071 # LATIN SMALL LETTER Q
|
||||
0x72 0x0072 # LATIN SMALL LETTER R
|
||||
0x73 0x0073 # LATIN SMALL LETTER S
|
||||
0x74 0x0074 # LATIN SMALL LETTER T
|
||||
0x75 0x0075 # LATIN SMALL LETTER U
|
||||
0x76 0x0076 # LATIN SMALL LETTER V
|
||||
0x77 0x0077 # LATIN SMALL LETTER W
|
||||
0x78 0x0078 # LATIN SMALL LETTER X
|
||||
0x79 0x0079 # LATIN SMALL LETTER Y
|
||||
0x7A 0x007A # LATIN SMALL LETTER Z
|
||||
0x7B 0x007B # LEFT CURLY BRACKET
|
||||
0x7C 0x007C # VERTICAL LINE
|
||||
0x7D 0x007D # RIGHT CURLY BRACKET
|
||||
0x7E 0x007E # TILDE
|
||||
0x7F 0x007F # DELETE
|
||||
0x80 0x0080 # <control>
|
||||
0x81 0x0081 # <control>
|
||||
0x82 0x0082 # <control>
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0085 # <control>
|
||||
0x86 0x0086 # <control>
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x008C # <control>
|
||||
0x8D 0x008D # <control>
|
||||
0x8E 0x008E # <control>
|
||||
0x8F 0x008F # <control>
|
||||
0x90 0x0090 # <control>
|
||||
0x91 0x0091 # <control>
|
||||
0x92 0x0092 # <control>
|
||||
0x93 0x0093 # <control>
|
||||
0x94 0x0094 # <control>
|
||||
0x95 0x0095 # <control>
|
||||
0x96 0x0096 # <control>
|
||||
0x97 0x0097 # <control>
|
||||
0x98 0x0098 # <control>
|
||||
0x99 0x0099 # <control>
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x009C # <control>
|
||||
0x9D 0x009D # <control>
|
||||
0x9E 0x009E # <control>
|
||||
0x9F 0x009F # <control>
|
||||
0xA0 0x00A0 # NO-BREAK SPACE
|
||||
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A4 # CURRENCY SIGN
|
||||
0xA5 0x00A5 # YEN SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
|
||||
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xAC 0x00AC # NOT SIGN
|
||||
0xAD 0x00AD # SOFT HYPHEN
|
||||
0xAE 0x00AE # REGISTERED SIGN
|
||||
0xAF 0x00AF # MACRON
|
||||
0xB0 0x00B0 # DEGREE SIGN
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x00B2 # SUPERSCRIPT TWO
|
||||
0xB3 0x00B3 # SUPERSCRIPT THREE
|
||||
0xB4 0x00B4 # ACUTE ACCENT
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x00B6 # PILCROW SIGN
|
||||
0xB7 0x00B7 # MIDDLE DOT
|
||||
0xB8 0x00B8 # CEDILLA
|
||||
0xB9 0x00B9 # SUPERSCRIPT ONE
|
||||
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
|
||||
0xBD 0x00BD # VULGAR FRACTION ONE HALF
|
||||
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
|
||||
0xBF 0x00BF # INVERTED QUESTION MARK
|
||||
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xD0 0x011E # LATIN CAPITAL LETTER G WITH BREVE
|
||||
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0xD7 0x00D7 # MULTIPLICATION SIGN
|
||||
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0xDD 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0xDE 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0xE6 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0xF0 0x011F # LATIN SMALL LETTER G WITH BREVE
|
||||
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0xF7 0x00F7 # DIVISION SIGN
|
||||
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xFD 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||
0xFE 0x015F # LATIN SMALL LETTER S WITH CEDILLA
|
||||
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
libcom32 and libutil are licensed under the MIT license:
|
||||
|
||||
## -----------------------------------------------------------------------
|
||||
##
|
||||
## Copyright 2004-2009 H. Peter Anvin - All Rights Reserved
|
||||
## Portions Copyright 2009 Intel Corporation; author: H. Peter Anvin
|
||||
##
|
||||
## 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.
|
||||
##
|
||||
## -----------------------------------------------------------------------
|
||||
|
||||
The files in the sample, modules and libgpl directories are mostly under the
|
||||
GNU GPL (see the file COPYING in the directory above.)
|
|
@ -0,0 +1,21 @@
|
|||
SUBDIRS = tools lib libutil gpllib libupload elflink/ldlinux modules mboot \
|
||||
menu samples elflink rosh cmenu hdt gfxboot sysdump lua/src chain
|
||||
|
||||
.PHONY: subdirs $(SUBDIRS)
|
||||
subdirs: $(SUBDIRS)
|
||||
$(SUBDIRS):
|
||||
@mkdir -p $(OBJ)/$@
|
||||
$(MAKE) -C $(OBJ)/$@ SRC="$(SRC)"/$@ OBJ="$(OBJ)"/$@/ \
|
||||
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
|
||||
|
||||
all tidy dist clean spotless install: subdirs
|
||||
|
||||
# Parallel dependencies
|
||||
elflink/ldlinux gpllib libupload libutil: lib
|
||||
cmenu: lib libutil
|
||||
|
||||
chain gfxboot mboot menu modules rosh: lib libutil gpllib
|
||||
hdt: lib libutil gpllib libupload cmenu
|
||||
lua/src: lib libutil gpllib cmenu
|
||||
samples: lib libutil gpllib elflink/ldlinux
|
||||
sysdump: lib libutil gpllib libupload
|
|
@ -0,0 +1,43 @@
|
|||
## -----------------------------------------------------------------------
|
||||
##
|
||||
## Copyright 2001-2009 H. Peter Anvin - All Rights Reserved
|
||||
## Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
## Copyright 2010 Shao Miller
|
||||
## Copyright 2010-2015 Michal Soltys
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
## Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
## (at your option) any later version; incorporated herein by reference.
|
||||
##
|
||||
## -----------------------------------------------------------------------
|
||||
|
||||
VPATH = $(SRC)
|
||||
include $(MAKEDIR)/elf.mk
|
||||
|
||||
OBJS = chain.o partiter.o utility.o options.o mangle.o
|
||||
CFLAGS += -fno-strict-aliasing
|
||||
|
||||
all: chain.c32
|
||||
|
||||
chain.elf: $(OBJS) $(C_LIBS)
|
||||
$(LD) $(LDFLAGS) -o $@ $^
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(MAKEDEPS) $(CFLAGS) $(CHAINEXTOPT) -c -o $@ $<
|
||||
|
||||
tidy dist:
|
||||
rm -f *.o *.lo *.a *.lst *.elf .*.d *.tmp
|
||||
|
||||
clean: tidy
|
||||
rm -f *.lnx
|
||||
|
||||
spotless: clean
|
||||
rm -f *.lss *.c32 *.com
|
||||
rm -f *~ \#*
|
||||
|
||||
install:
|
||||
|
||||
|
||||
-include .*.d
|
|
@ -0,0 +1,643 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* Please see doc/chain.txt for the detailed documentation.
|
||||
*/
|
||||
|
||||
#include <com32.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <console.h>
|
||||
#include <consoles.h>
|
||||
#include <minmax.h>
|
||||
#include <stdbool.h>
|
||||
#include <dprintf.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <syslinux/loadfile.h>
|
||||
#include <syslinux/bootrm.h>
|
||||
#include <syslinux/config.h>
|
||||
#include <syslinux/disk.h>
|
||||
#include <syslinux/video.h>
|
||||
#include "chain.h"
|
||||
#include "utility.h"
|
||||
#include "options.h"
|
||||
#include "partiter.h"
|
||||
#include "mangle.h"
|
||||
|
||||
static int fixed_cnt = 128; /* see comments in main() */
|
||||
|
||||
static int overlap(const struct data_area *a, const struct data_area *b)
|
||||
{
|
||||
return
|
||||
a->base + a->size > b->base &&
|
||||
b->base + b->size > a->base;
|
||||
}
|
||||
|
||||
static int is_phys(uint8_t sdifs)
|
||||
{
|
||||
return
|
||||
sdifs == SYSLINUX_FS_SYSLINUX ||
|
||||
sdifs == SYSLINUX_FS_EXTLINUX ||
|
||||
sdifs == SYSLINUX_FS_ISOLINUX;
|
||||
}
|
||||
|
||||
/*
|
||||
* Search for a specific drive, based on the MBR signature.
|
||||
* Return drive and iterator at 0th position.
|
||||
*/
|
||||
static int find_by_sig(uint32_t mbr_sig,
|
||||
struct part_iter **_boot_part)
|
||||
{
|
||||
struct part_iter *iter = NULL;
|
||||
struct disk_info diskinfo;
|
||||
int drive;
|
||||
|
||||
for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
|
||||
if (disk_get_params(drive, &diskinfo))
|
||||
continue; /* Drive doesn't exist */
|
||||
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
|
||||
continue;
|
||||
/* Check for a matching MBR disk */
|
||||
if (iter->type == typedos && iter->dos.disk_sig == mbr_sig)
|
||||
goto ok;
|
||||
pi_del(&iter);
|
||||
}
|
||||
drive = -1;
|
||||
ok:
|
||||
*_boot_part = iter;
|
||||
return drive;
|
||||
}
|
||||
|
||||
/*
|
||||
* Search for a specific drive/partition, based on the GPT GUID.
|
||||
* Return drive and iterator at proper position.
|
||||
*/
|
||||
static int find_by_guid(const struct guid *gpt_guid,
|
||||
struct part_iter **_boot_part)
|
||||
{
|
||||
struct part_iter *iter = NULL;
|
||||
struct disk_info diskinfo;
|
||||
int drive;
|
||||
|
||||
for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
|
||||
if (disk_get_params(drive, &diskinfo))
|
||||
continue; /* Drive doesn't exist */
|
||||
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
|
||||
continue;
|
||||
/* Check for a matching GPT disk/partition guid */
|
||||
if (iter->type == typegpt)
|
||||
do {
|
||||
if (!memcmp(&iter->gpt.part_guid, gpt_guid, sizeof *gpt_guid))
|
||||
goto ok;
|
||||
} while (!pi_next(iter));
|
||||
pi_del(&iter);
|
||||
}
|
||||
drive = -1;
|
||||
ok:
|
||||
*_boot_part = iter;
|
||||
return drive;
|
||||
}
|
||||
|
||||
/*
|
||||
* Search for a specific drive/partition, based on the GPT label.
|
||||
* Return drive and iterator at proper position.
|
||||
*/
|
||||
static int find_by_label(const char *label, struct part_iter **_boot_part)
|
||||
{
|
||||
struct part_iter *iter = NULL;
|
||||
struct disk_info diskinfo;
|
||||
int drive;
|
||||
|
||||
for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
|
||||
if (disk_get_params(drive, &diskinfo))
|
||||
continue; /* Drive doesn't exist */
|
||||
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
|
||||
continue;
|
||||
/* Check for a matching GPT partition label */
|
||||
if (iter->type == typegpt)
|
||||
while (!pi_next(iter)) {
|
||||
if (!strcmp(label, iter->gpt.part_label))
|
||||
goto ok;
|
||||
}
|
||||
pi_del(&iter);
|
||||
}
|
||||
drive = -1;
|
||||
ok:
|
||||
*_boot_part = iter;
|
||||
return drive;
|
||||
}
|
||||
|
||||
static void do_boot(struct data_area *data, int ndata)
|
||||
{
|
||||
struct syslinux_memmap *mmap;
|
||||
struct syslinux_movelist *mlist = NULL;
|
||||
addr_t endimage;
|
||||
uint8_t driveno = opt.regs.edx.b[0];
|
||||
uint8_t swapdrive = driveno & 0x80;
|
||||
int i;
|
||||
|
||||
mmap = syslinux_memory_map();
|
||||
|
||||
if (!mmap) {
|
||||
error("Cannot read system memory map.");
|
||||
return;
|
||||
}
|
||||
|
||||
endimage = 0;
|
||||
for (i = 0; i < ndata; i++) {
|
||||
if (data[i].base + data[i].size > endimage)
|
||||
endimage = data[i].base + data[i].size;
|
||||
}
|
||||
if (endimage > dosmax)
|
||||
goto too_big;
|
||||
|
||||
for (i = 0; i < ndata; i++) {
|
||||
if (syslinux_add_movelist(&mlist, data[i].base,
|
||||
(addr_t) data[i].data, data[i].size))
|
||||
goto enomem;
|
||||
}
|
||||
|
||||
if (opt.swap && driveno != swapdrive) {
|
||||
static const uint8_t swapstub_master[] = {
|
||||
/* The actual swap code */
|
||||
0x53, /* 00: push bx */
|
||||
0x0f, 0xb6, 0xda, /* 01: movzx bx,dl */
|
||||
0x2e, 0x8a, 0x57, 0x60, /* 04: mov dl,[cs:bx+0x60] */
|
||||
0x5b, /* 08: pop bx */
|
||||
0xea, 0, 0, 0, 0, /* 09: jmp far 0:0 */
|
||||
0x90, 0x90, /* 0E: nop; nop */
|
||||
/* Code to install this in the right location */
|
||||
/* Entry with DS = CS; ES = SI = 0; CX = 256 */
|
||||
0x26, 0x66, 0x8b, 0x7c, 0x4c, /* 10: mov edi,[es:si+4*0x13] */
|
||||
0x66, 0x89, 0x3e, 0x0a, 0x00, /* 15: mov [0x0A],edi */
|
||||
0x26, 0x8b, 0x3e, 0x13, 0x04, /* 1A: mov di,[es:0x413] */
|
||||
0x4f, /* 1F: dec di */
|
||||
0x26, 0x89, 0x3e, 0x13, 0x04, /* 20: mov [es:0x413],di */
|
||||
0x66, 0xc1, 0xe7, 0x16, /* 25: shl edi,16+6 */
|
||||
0x26, 0x66, 0x89, 0x7c, 0x4c, /* 29: mov [es:si+4*0x13],edi */
|
||||
0x66, 0xc1, 0xef, 0x10, /* 2E: shr edi,16 */
|
||||
0x8e, 0xc7, /* 32: mov es,di */
|
||||
0x31, 0xff, /* 34: xor di,di */
|
||||
0xf3, 0x66, 0xa5, /* 36: rep movsd */
|
||||
0xbe, 0, 0, /* 39: mov si,0 */
|
||||
0xbf, 0, 0, /* 3C: mov di,0 */
|
||||
0x8e, 0xde, /* 3F: mov ds,si */
|
||||
0x8e, 0xc7, /* 41: mov es,di */
|
||||
0x66, 0xb9, 0, 0, 0, 0, /* 43: mov ecx,0 */
|
||||
0x66, 0xbe, 0, 0, 0, 0, /* 49: mov esi,0 */
|
||||
0x66, 0xbf, 0, 0, 0, 0, /* 4F: mov edi,0 */
|
||||
0xea, 0, 0, 0, 0, /* 55: jmp 0:0 */
|
||||
/* pad out to segment boundary */
|
||||
0x90, 0x90, /* 5A: ... */
|
||||
0x90, 0x90, 0x90, 0x90, /* 5C: ... */
|
||||
};
|
||||
static uint8_t swapstub[1024];
|
||||
uint8_t *p;
|
||||
|
||||
/* Note: we can't rely on either INT 13h nor the dosmax
|
||||
vector to be correct at this stage, so we have to use an
|
||||
installer stub to put things in the right place.
|
||||
Round the installer location to a 1K boundary so the only
|
||||
possible overlap is the identity mapping. */
|
||||
endimage = (endimage + 1023u) & ~1023u;
|
||||
|
||||
/* Create swap stub */
|
||||
memcpy(swapstub, swapstub_master, sizeof swapstub_master);
|
||||
*(uint16_t *) & swapstub[0x3a] = opt.regs.ds;
|
||||
*(uint16_t *) & swapstub[0x3d] = opt.regs.es;
|
||||
*(uint32_t *) & swapstub[0x45] = opt.regs.ecx.l;
|
||||
*(uint32_t *) & swapstub[0x4b] = opt.regs.esi.l;
|
||||
*(uint32_t *) & swapstub[0x51] = opt.regs.edi.l;
|
||||
*(uint16_t *) & swapstub[0x56] = opt.regs.ip;
|
||||
*(uint16_t *) & swapstub[0x58] = opt.regs.cs;
|
||||
p = &swapstub[sizeof swapstub_master];
|
||||
|
||||
/* Mapping table; start out with identity mapping everything */
|
||||
for (i = 0; i < 256; i++)
|
||||
p[i] = i;
|
||||
|
||||
/* And the actual swap */
|
||||
p[driveno] = swapdrive;
|
||||
p[swapdrive] = driveno;
|
||||
|
||||
/* Adjust registers */
|
||||
opt.regs.ds = opt.regs.cs = endimage >> 4;
|
||||
opt.regs.esi.l = opt.regs.es = 0;
|
||||
opt.regs.ecx.l = sizeof swapstub >> 2;
|
||||
opt.regs.ip = 0x10; /* Installer offset */
|
||||
opt.regs.ebx.b[0] = opt.regs.edx.b[0] = swapdrive;
|
||||
|
||||
if (syslinux_add_movelist(&mlist, endimage, (addr_t) swapstub,
|
||||
sizeof swapstub))
|
||||
goto enomem;
|
||||
|
||||
endimage += sizeof swapstub;
|
||||
}
|
||||
|
||||
/* Tell the shuffler not to muck with this area... */
|
||||
syslinux_add_memmap(&mmap, endimage, 0xa0000 - endimage, SMT_RESERVED);
|
||||
|
||||
/* Force text mode */
|
||||
syslinux_force_text_mode();
|
||||
|
||||
puts("Booting...");
|
||||
syslinux_shuffle_boot_rm(mlist, mmap, opt.keeppxe, &opt.regs);
|
||||
error("Chainboot failed !");
|
||||
return;
|
||||
|
||||
too_big:
|
||||
error("Loader file too large.");
|
||||
return;
|
||||
|
||||
enomem:
|
||||
error("Out of memory.");
|
||||
return;
|
||||
}
|
||||
|
||||
int find_dp(struct part_iter **_iter)
|
||||
{
|
||||
struct part_iter *iter = NULL;
|
||||
struct disk_info diskinfo;
|
||||
struct guid gpt_guid;
|
||||
uint64_t fs_lba;
|
||||
int drive, hd, partition;
|
||||
const union syslinux_derivative_info *sdi;
|
||||
|
||||
sdi = syslinux_derivative_info();
|
||||
|
||||
if (!strncmp(opt.drivename, "mbr", 3)) {
|
||||
if (find_by_sig(strtoul(opt.drivename + 4, NULL, 0), &iter) < 0) {
|
||||
error("Unable to find requested MBR signature.");
|
||||
goto bail;
|
||||
}
|
||||
} else if (!strncmp(opt.drivename, "guid", 4)) {
|
||||
if (str_to_guid(opt.drivename + 5, &gpt_guid))
|
||||
goto bail;
|
||||
if (find_by_guid(&gpt_guid, &iter) < 0) {
|
||||
error("Unable to find requested GPT disk or partition by guid.");
|
||||
goto bail;
|
||||
}
|
||||
} else if (!strncmp(opt.drivename, "label", 5)) {
|
||||
if (!opt.drivename[6]) {
|
||||
error("No label specified.");
|
||||
goto bail;
|
||||
}
|
||||
if (find_by_label(opt.drivename + 6, &iter) < 0) {
|
||||
error("Unable to find requested GPT partition by label.");
|
||||
goto bail;
|
||||
}
|
||||
} else if ((opt.drivename[0] == 'h' || opt.drivename[0] == 'f') &&
|
||||
opt.drivename[1] == 'd') {
|
||||
hd = opt.drivename[0] == 'h' ? 0x80 : 0;
|
||||
opt.drivename += 2;
|
||||
drive = hd | strtol(opt.drivename, NULL, 0);
|
||||
|
||||
if (disk_get_params(drive, &diskinfo))
|
||||
goto bail;
|
||||
/* this will start iteration over FDD, possibly raw */
|
||||
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
|
||||
goto bail;
|
||||
|
||||
} else if (!strcmp(opt.drivename, "boot") || !strcmp(opt.drivename, "fs")) {
|
||||
if (!is_phys(sdi->c.filesystem)) {
|
||||
error("When syslinux is not booted from physical disk (or its emulation),\n"
|
||||
"'boot' and 'fs' are meaningless.");
|
||||
goto bail;
|
||||
}
|
||||
/* offsets match, but in case it changes in the future */
|
||||
if (sdi->c.filesystem == SYSLINUX_FS_ISOLINUX) {
|
||||
drive = sdi->iso.drive_number;
|
||||
fs_lba = *sdi->iso.partoffset;
|
||||
} else {
|
||||
drive = sdi->disk.drive_number;
|
||||
fs_lba = *sdi->disk.partoffset;
|
||||
}
|
||||
if (disk_get_params(drive, &diskinfo))
|
||||
goto bail;
|
||||
/* this will start iteration over disk emulation, possibly raw */
|
||||
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
|
||||
goto bail;
|
||||
|
||||
/* 'fs' => we should lookup the syslinux partition number and use it */
|
||||
if (!strcmp(opt.drivename, "fs")) {
|
||||
do {
|
||||
if (iter->abs_lba == fs_lba)
|
||||
break;
|
||||
} while (!pi_next(iter));
|
||||
/* broken part structure or other problems */
|
||||
if (iter->status) {
|
||||
error("Unable to find partition with syslinux (fs).");
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
error("Unparsable drive specification.");
|
||||
goto bail;
|
||||
}
|
||||
/* main options done - only thing left is explicit partition specification,
|
||||
* if we're still at the disk stage with the iterator AND user supplied
|
||||
* partition number (including disk pseudo-partition).
|
||||
*/
|
||||
if (!iter->index && opt.partition) {
|
||||
partition = strtol(opt.partition, NULL, 0);
|
||||
/* search for matching part#, including disk */
|
||||
do {
|
||||
if (iter->index == partition)
|
||||
break;
|
||||
} while (!pi_next(iter));
|
||||
if (iter->status) {
|
||||
error("Unable to find requested disk / partition combination.");
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(iter->di.disk & 0x80) && iter->index) {
|
||||
warn("Partitions on floppy devices may not work.");
|
||||
}
|
||||
|
||||
*_iter = iter;
|
||||
|
||||
return 0;
|
||||
|
||||
bail:
|
||||
pi_del(&iter);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int setup_handover(const struct part_iter *iter,
|
||||
struct data_area *data)
|
||||
{
|
||||
struct disk_dos_part_entry *ha;
|
||||
uint32_t synth_size = sizeof *ha;
|
||||
|
||||
/*
|
||||
* we have to cover both non-iterated but otherwise properly detected
|
||||
* gpt/dos schemes as well as raw disks; checking index for 0 covers both
|
||||
*/
|
||||
if (iter->index == 0) {
|
||||
uint32_t len;
|
||||
/* RAW handover protocol */
|
||||
ha = malloc(synth_size);
|
||||
if (!ha) {
|
||||
critm();
|
||||
goto bail;
|
||||
}
|
||||
len = ~0u;
|
||||
if (iter->length < len)
|
||||
len = iter->length;
|
||||
lba2chs(&ha->start, &iter->di, 0, L2C_CADD);
|
||||
lba2chs(&ha->end, &iter->di, len - 1, L2C_CADD);
|
||||
ha->active_flag = 0x80;
|
||||
ha->ostype = 0xDA; /* "Non-FS Data", anything is good here though ... */
|
||||
ha->start_lba = 0;
|
||||
ha->length = len;
|
||||
} else if (iter->type == typegpt) {
|
||||
uint32_t *plen;
|
||||
/* GPT handover protocol */
|
||||
synth_size += sizeof *plen + iter->gpt.pe_size;
|
||||
ha = malloc(synth_size);
|
||||
if (!ha) {
|
||||
critm();
|
||||
goto bail;
|
||||
}
|
||||
lba2chs(&ha->start, &iter->di, iter->abs_lba, L2C_CADD);
|
||||
lba2chs(&ha->end, &iter->di, iter->abs_lba + iter->length - 1, L2C_CADD);
|
||||
ha->active_flag = 0x80;
|
||||
ha->ostype = 0xED;
|
||||
/* All bits set by default */
|
||||
ha->start_lba = ~0u;
|
||||
ha->length = ~0u;
|
||||
/* If these fit the precision, pass them on */
|
||||
if (iter->abs_lba < ha->start_lba)
|
||||
ha->start_lba = iter->abs_lba;
|
||||
if (iter->length < ha->length)
|
||||
ha->length = iter->length;
|
||||
/* Next comes the GPT partition record length */
|
||||
plen = (uint32_t *)(ha + 1);
|
||||
plen[0] = iter->gpt.pe_size;
|
||||
/* Next comes the GPT partition record copy */
|
||||
memcpy(plen + 1, iter->record, plen[0]);
|
||||
#ifdef DEBUG
|
||||
dprintf("GPT handover:\n");
|
||||
disk_dos_part_dump(ha);
|
||||
disk_gpt_part_dump((struct disk_gpt_part_entry *)(plen + 1));
|
||||
#endif
|
||||
/* the only possible case left is dos scheme */
|
||||
} else if (iter->type == typedos) {
|
||||
/* MBR handover protocol */
|
||||
ha = malloc(synth_size);
|
||||
if (!ha) {
|
||||
critm();
|
||||
goto bail;
|
||||
}
|
||||
memcpy(ha, iter->record, synth_size);
|
||||
/* make sure these match bios imaginations and are ebr agnostic */
|
||||
lba2chs(&ha->start, &iter->di, iter->abs_lba, L2C_CADD);
|
||||
lba2chs(&ha->end, &iter->di, iter->abs_lba + iter->length - 1, L2C_CADD);
|
||||
ha->start_lba = iter->abs_lba;
|
||||
ha->length = iter->length;
|
||||
|
||||
#ifdef DEBUG
|
||||
dprintf("MBR handover:\n");
|
||||
disk_dos_part_dump(ha);
|
||||
#endif
|
||||
} else {
|
||||
/* shouldn't ever happen */
|
||||
goto bail;
|
||||
}
|
||||
|
||||
data->base = 0x7be;
|
||||
data->size = synth_size;
|
||||
data->data = (void *)ha;
|
||||
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct part_iter *iter = NULL;
|
||||
void *sbck = NULL;
|
||||
struct data_area fdat, hdat, sdat, data[3];
|
||||
int ndata = 0;
|
||||
|
||||
console_ansi_raw();
|
||||
|
||||
memset(&fdat, 0, sizeof fdat);
|
||||
memset(&hdat, 0, sizeof hdat);
|
||||
memset(&sdat, 0, sizeof sdat);
|
||||
|
||||
opt_set_defs();
|
||||
if (opt_parse_args(argc, argv))
|
||||
goto bail;
|
||||
|
||||
#if 0
|
||||
/* Get max fixed disk number */
|
||||
fixed_cnt = *(uint8_t *)(0x475);
|
||||
|
||||
/*
|
||||
* hmm, looks like we can't do that -
|
||||
* some bioses/vms just set it to 1
|
||||
* and go on living happily
|
||||
* any better options than hardcoded 0x80 - 0xFF ?
|
||||
*/
|
||||
#endif
|
||||
|
||||
/* Get disk/part iterator matching user supplied options */
|
||||
if (find_dp(&iter))
|
||||
goto bail;
|
||||
|
||||
/* Perform initial partition entry mangling */
|
||||
if (manglepe_fixchs(iter))
|
||||
goto bail;
|
||||
if (manglepe_hide(iter))
|
||||
goto bail;
|
||||
|
||||
/* Load the boot file */
|
||||
if (opt.file) {
|
||||
fdat.base = (opt.fseg << 4) + opt.foff;
|
||||
|
||||
if (loadfile(opt.file, &fdat.data, &fdat.size)) {
|
||||
error("Couldn't read the boot file.");
|
||||
goto bail;
|
||||
}
|
||||
if (fdat.base + fdat.size > dosmax) {
|
||||
error("The boot file is too big to load at this address.");
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
|
||||
/* Load the sector */
|
||||
if (opt.sect) {
|
||||
sdat.base = (opt.sseg << 4) + opt.soff;
|
||||
sdat.size = iter->di.bps;
|
||||
|
||||
if (sdat.base + sdat.size > dosmax) {
|
||||
error("The sector cannot be loaded at such high address.");
|
||||
goto bail;
|
||||
}
|
||||
if (!(sdat.data = disk_read_sectors(&iter->di, iter->abs_lba, 1))) {
|
||||
error("Couldn't read the sector.");
|
||||
goto bail;
|
||||
}
|
||||
if (opt.save) {
|
||||
if (!(sbck = malloc(sdat.size))) {
|
||||
critm();
|
||||
goto bail;
|
||||
}
|
||||
memcpy(sbck, sdat.data, sdat.size);
|
||||
}
|
||||
if (opt.file && opt.maps && overlap(&fdat, &sdat)) {
|
||||
warn("The sector won't be mmapped, as it would conflict with the boot file.");
|
||||
opt.maps = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Prep the handover */
|
||||
if (opt.hand) {
|
||||
if (setup_handover(iter, &hdat))
|
||||
goto bail;
|
||||
/* Verify possible conflicts */
|
||||
if ( ( opt.file && overlap(&fdat, &hdat)) ||
|
||||
( opt.maps && overlap(&sdat, &hdat)) ) {
|
||||
warn("Handover area won't be prepared,\n"
|
||||
"as it would conflict with the boot file and/or the sector.");
|
||||
opt.hand = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Adjust registers */
|
||||
|
||||
mangler_init(iter);
|
||||
mangler_handover(iter, &hdat);
|
||||
mangler_grldr(iter);
|
||||
|
||||
/* Patching functions */
|
||||
|
||||
if (manglef_isolinux(&fdat))
|
||||
goto bail;
|
||||
|
||||
if (manglef_grub(iter, &fdat))
|
||||
goto bail;
|
||||
#if 0
|
||||
if (manglef_drmk(&fdat))
|
||||
goto bail;
|
||||
#endif
|
||||
if (manglef_bpb(iter, &fdat))
|
||||
goto bail;
|
||||
|
||||
if (mangles_bpb(iter, &sdat))
|
||||
goto bail;
|
||||
|
||||
if (mangles_save(iter, &sdat, sbck))
|
||||
goto bail;
|
||||
|
||||
if (manglesf_bss(&sdat, &fdat))
|
||||
goto bail;
|
||||
|
||||
/* This *must* be after BPB saving or copying */
|
||||
if (mangles_cmldr(&sdat))
|
||||
goto bail;
|
||||
|
||||
/*
|
||||
* Prepare boot-time mmap data. We should to it here, as manglers could
|
||||
* potentially alter some of the data.
|
||||
*/
|
||||
|
||||
if (opt.file)
|
||||
memcpy(data + ndata++, &fdat, sizeof fdat);
|
||||
if (opt.maps)
|
||||
memcpy(data + ndata++, &sdat, sizeof sdat);
|
||||
if (opt.hand)
|
||||
memcpy(data + ndata++, &hdat, sizeof hdat);
|
||||
|
||||
#ifdef DEBUG
|
||||
dprintf("iter->di dsk, bps: %X, %u\niter->di lbacnt, C*H*S: %"PRIu64", %u\n"
|
||||
"iter->di C, H, S: %u, %u, %u\n",
|
||||
iter->di.disk, iter->di.bps,
|
||||
iter->di.lbacnt, iter->di.cyl * iter->di.head * iter->di.spt,
|
||||
iter->di.cyl, iter->di.head, iter->di.spt);
|
||||
dprintf("iter idx: %d\n", iter->index);
|
||||
dprintf("iter lba: %"PRIu64"\n", iter->abs_lba);
|
||||
if (opt.hand)
|
||||
dprintf("hand lba: %u\n",
|
||||
((struct disk_dos_part_entry *)hdat.data)->start_lba);
|
||||
#endif
|
||||
|
||||
if (opt.warn) {
|
||||
puts("Press any key to continue booting...");
|
||||
wait_key();
|
||||
}
|
||||
|
||||
if (ndata && !opt.brkchain) /* boot only if we actually chainload */
|
||||
do_boot(data, ndata);
|
||||
else
|
||||
puts("Service-only run completed, exiting.");
|
||||
bail:
|
||||
pi_del(&iter);
|
||||
/* Free allocated areas */
|
||||
free(fdat.data);
|
||||
free(sdat.data);
|
||||
free(hdat.data);
|
||||
free(sbck);
|
||||
return 255;
|
||||
}
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,29 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef COM32_CHAIN_CHAIN_H
|
||||
#define COM32_CHAIN_CHAIN_H
|
||||
|
||||
#include <syslinux/movebits.h>
|
||||
|
||||
struct data_area {
|
||||
void *data;
|
||||
addr_t base;
|
||||
addr_t size;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,682 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include <com32.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <dprintf.h>
|
||||
#include <syslinux/config.h>
|
||||
#include "chain.h"
|
||||
#include "options.h"
|
||||
#include "utility.h"
|
||||
#include "partiter.h"
|
||||
#include "mangle.h"
|
||||
|
||||
static const char cmldr_signature[8] = "cmdcons";
|
||||
|
||||
/* Create boot info table: needed when you want to chainload
|
||||
* another version of ISOLINUX (or another bootlaoder that needs
|
||||
* the -boot-info-table switch of mkisofs)
|
||||
* (will only work when run from ISOLINUX)
|
||||
*/
|
||||
int manglef_isolinux(struct data_area *data)
|
||||
{
|
||||
const union syslinux_derivative_info *sdi;
|
||||
unsigned char *isolinux_bin;
|
||||
uint32_t *checksum, *chkhead, *chktail;
|
||||
uint32_t file_lba = 0;
|
||||
|
||||
if (!(opt.file && opt.isolinux))
|
||||
return 0;
|
||||
|
||||
sdi = syslinux_derivative_info();
|
||||
|
||||
if (sdi->c.filesystem != SYSLINUX_FS_ISOLINUX) {
|
||||
error("The isolinux= option is only valid when run from ISOLINUX.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
/* Boot info table info (integers in little endian format)
|
||||
|
||||
Offset Name Size Meaning
|
||||
8 bi_pvd 4 bytes LBA of primary volume descriptor
|
||||
12 bi_file 4 bytes LBA of boot file
|
||||
16 bi_length 4 bytes Boot file length in bytes
|
||||
20 bi_csum 4 bytes 32-bit checksum
|
||||
24 bi_reserved 40 bytes Reserved
|
||||
|
||||
The 32-bit checksum is the sum of all the 32-bit words in the
|
||||
boot file starting at byte offset 64. All linear block
|
||||
addresses (LBAs) are given in CD sectors (normally 2048 bytes).
|
||||
|
||||
LBA of primary volume descriptor should already be set to 16.
|
||||
*/
|
||||
|
||||
isolinux_bin = (unsigned char *)data->data;
|
||||
|
||||
/* Get LBA address of bootfile */
|
||||
file_lba = get_file_lba(opt.file);
|
||||
|
||||
if (file_lba == 0) {
|
||||
error("Failed to find LBA offset of the boot file.");
|
||||
goto bail;
|
||||
}
|
||||
/* Set it */
|
||||
*((uint32_t *) & isolinux_bin[12]) = file_lba;
|
||||
|
||||
/* Set boot file length */
|
||||
*((uint32_t *) & isolinux_bin[16]) = data->size;
|
||||
|
||||
/* Calculate checksum */
|
||||
checksum = (uint32_t *) & isolinux_bin[20];
|
||||
chkhead = (uint32_t *) & isolinux_bin[64];
|
||||
chktail = (uint32_t *) & isolinux_bin[data->size & ~3u];
|
||||
*checksum = 0;
|
||||
while (chkhead < chktail)
|
||||
*checksum += *chkhead++;
|
||||
|
||||
/*
|
||||
* Deal with possible fractional dword at the end;
|
||||
* this *should* never happen...
|
||||
*/
|
||||
if (data->size & 3) {
|
||||
uint32_t xword = 0;
|
||||
memcpy(&xword, chkhead, data->size & 3);
|
||||
*checksum += xword;
|
||||
}
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Legacy grub's stage2 chainloading
|
||||
*/
|
||||
int manglef_grub(const struct part_iter *iter, struct data_area *data)
|
||||
{
|
||||
/* Layout of stage2 file (from byte 0x0 to 0x270) */
|
||||
struct grub_stage2_patch_area {
|
||||
/* 0x0 to 0x205 */
|
||||
char unknown[0x206];
|
||||
/* 0x206: compatibility version number major */
|
||||
uint8_t compat_version_major;
|
||||
/* 0x207: compatibility version number minor */
|
||||
uint8_t compat_version_minor;
|
||||
|
||||
/* 0x208: install_partition variable */
|
||||
struct {
|
||||
/* 0x208: sub-partition in sub-partition part2 */
|
||||
uint8_t part3;
|
||||
/* 0x209: sub-partition in top-level partition */
|
||||
uint8_t part2;
|
||||
/* 0x20a: top-level partiton number */
|
||||
uint8_t part1;
|
||||
/* 0x20b: BIOS drive number (must be 0) */
|
||||
uint8_t drive;
|
||||
} __attribute__ ((packed)) install_partition;
|
||||
|
||||
/* 0x20c: deprecated (historical reason only) */
|
||||
uint32_t saved_entryno;
|
||||
/* 0x210: stage2_ID: will always be STAGE2_ID_STAGE2 = 0 in stage2 */
|
||||
uint8_t stage2_id;
|
||||
/* 0x211: force LBA */
|
||||
uint8_t force_lba;
|
||||
/* 0x212: version string (will probably be 0.97) */
|
||||
char version_string[5];
|
||||
/* 0x217: config filename */
|
||||
char config_file[89];
|
||||
/* 0x270: start of code (after jump from 0x200) */
|
||||
char codestart[1];
|
||||
} __attribute__ ((packed)) *stage2;
|
||||
|
||||
if (!(opt.file && opt.grub))
|
||||
return 0;
|
||||
|
||||
if (data->size < sizeof *stage2) {
|
||||
error("The file specified by grub=<loader> is too small to be stage2 of GRUB Legacy.");
|
||||
goto bail;
|
||||
}
|
||||
stage2 = data->data;
|
||||
|
||||
/*
|
||||
* Check the compatibility version number to see if we loaded a real
|
||||
* stage2 file or a stage2 file that we support.
|
||||
*/
|
||||
if (stage2->compat_version_major != 3
|
||||
|| stage2->compat_version_minor != 2) {
|
||||
error("The file specified by grub=<loader> is not a supported stage2 GRUB Legacy binary.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
/*
|
||||
* GRUB Legacy wants the partition number in the install_partition
|
||||
* variable, located at offset 0x208 of stage2.
|
||||
* When GRUB Legacy is loaded, it is located at memory address 0x8208.
|
||||
*
|
||||
* It looks very similar to the "boot information format" of the
|
||||
* Multiboot specification:
|
||||
* http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Boot-information-format
|
||||
*
|
||||
* 0x208 = part3: sub-partition in sub-partition part2
|
||||
* 0x209 = part2: sub-partition in top-level partition
|
||||
* 0x20a = part1: top-level partition number
|
||||
* 0x20b = drive: BIOS drive number (must be 0)
|
||||
*
|
||||
* GRUB Legacy doesn't store the BIOS drive number at 0x20b, but at
|
||||
* another location.
|
||||
*
|
||||
* Partition numbers always start from zero.
|
||||
* Unused partition bytes must be set to 0xFF.
|
||||
*
|
||||
* We only care about top-level partition, so we only need to change
|
||||
* "part1" to the appropriate value:
|
||||
* -1: whole drive (default) (-1 = 0xFF)
|
||||
* 0-3: primary partitions
|
||||
* 4-*: logical partitions
|
||||
*/
|
||||
stage2->install_partition.part1 = iter->index - 1;
|
||||
|
||||
/*
|
||||
* Grub Legacy reserves 89 bytes (from 0x8217 to 0x826f) for the
|
||||
* config filename. The filename passed via grubcfg= will overwrite
|
||||
* the default config filename "/boot/grub/menu.lst".
|
||||
*/
|
||||
if (opt.grubcfg) {
|
||||
if (strlen(opt.grubcfg) >= sizeof stage2->config_file) {
|
||||
error("The config filename length can't exceed 88 characters.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
strcpy((char *)stage2->config_file, opt.grubcfg);
|
||||
}
|
||||
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
#if 0
|
||||
/*
|
||||
* Dell's DRMK chainloading.
|
||||
*/
|
||||
int manglef_drmk(struct data_area *data)
|
||||
{
|
||||
/*
|
||||
* DRMK entry is different than MS-DOS/PC-DOS
|
||||
* A new size, aligned to 16 bytes to ease use of ds:[bp+28].
|
||||
* We only really need 4 new, usable bytes at the end.
|
||||
*/
|
||||
|
||||
if (!(opt.file && opt.drmk))
|
||||
return 0;
|
||||
|
||||
uint32_t tsize = (data->size + 19) & 0xfffffff0;
|
||||
const union syslinux_derivative_info *sdi;
|
||||
uint64_t fs_lba;
|
||||
|
||||
sdi = syslinux_derivative_info();
|
||||
/* We should lookup the Syslinux partition offset and use it */
|
||||
fs_lba = *sdi->disk.partoffset;
|
||||
|
||||
/*
|
||||
* fs_lba should be verified against the disk as some DRMK
|
||||
* variants will check and fail if it does not match
|
||||
*/
|
||||
dprintf(" fs_lba offset is %d\n", fs_lba);
|
||||
/* DRMK only uses a DWORD */
|
||||
if (fs_lba > 0xffffffff) {
|
||||
error("LBA very large; Only using lower 32 bits; DRMK will probably fail.");
|
||||
}
|
||||
opt.regs.ss = opt.regs.fs = opt.regs.gs = 0; /* Used before initialized */
|
||||
if (!realloc(data->data, tsize)) {
|
||||
error("Failed to realloc for DRMK.");
|
||||
goto bail;
|
||||
}
|
||||
data->size = tsize;
|
||||
/* ds:bp is assumed by DRMK to be the boot sector */
|
||||
/* offset 28 is the FAT HiddenSectors value */
|
||||
opt.regs.ds = (tsize >> 4) + (opt.fseg - 2);
|
||||
/* "Patch" into tail of the new space */
|
||||
*(uint32_t *)((char*)data->data + tsize - 4) = fs_lba;
|
||||
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
/* Adjust BPB common function */
|
||||
static int mangle_bpb(const struct part_iter *iter, struct data_area *data, const char *tag)
|
||||
{
|
||||
int type = bpb_detect(data->data, tag);
|
||||
int off = drvoff_detect(type);
|
||||
|
||||
/* BPB: hidden sectors 64bit - exFAT only for now */
|
||||
if (type == bpbEXF)
|
||||
*(uint64_t *) ((char *)data->data + 0x40) = iter->abs_lba;
|
||||
/* BPB: hidden sectors 32bit*/
|
||||
else if (bpbV34 <= type && type <= bpbV70) {
|
||||
if (iter->abs_lba < ~0u)
|
||||
*(uint32_t *) ((char *)data->data + 0x1c) = iter->abs_lba;
|
||||
else
|
||||
/* won't really help much, but ... */
|
||||
*(uint32_t *) ((char *)data->data + 0x1c) = ~0u;
|
||||
/* BPB: hidden sectors 16bit*/
|
||||
} else if (bpbV30 <= type && type <= bpbV32) {
|
||||
if (iter->abs_lba < 0xFFFF)
|
||||
*(uint16_t *) ((char *)data->data + 0x1c) = iter->abs_lba;
|
||||
else
|
||||
/* won't really help much, but ... */
|
||||
*(uint16_t *) ((char *)data->data + 0x1c) = (uint16_t)~0u;
|
||||
}
|
||||
|
||||
/* BPB: legacy geometry */
|
||||
if (bpbV30 <= type && type <= bpbV70) {
|
||||
if (iter->di.cbios)
|
||||
*(uint32_t *)((char *)data->data + 0x18) = (iter->di.head << 16) | iter->di.spt;
|
||||
else {
|
||||
if (iter->di.disk & 0x80)
|
||||
*(uint32_t *)((char *)data->data + 0x18) = 0x00FF003F;
|
||||
else
|
||||
*(uint32_t *)((char *)data->data + 0x18) = 0x00020012;
|
||||
}
|
||||
}
|
||||
/* BPB: drive */
|
||||
if (off >= 0) {
|
||||
*(uint8_t *)((char *)data->data + off) = (opt.swap ? iter->di.disk & 0x80 : iter->di.disk);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Adjust BPB of a BPB-compatible file
|
||||
*/
|
||||
int manglef_bpb(const struct part_iter *iter, struct data_area *data)
|
||||
{
|
||||
if (!(opt.file && opt.filebpb))
|
||||
return 0;
|
||||
|
||||
return mangle_bpb(iter, data, "file");
|
||||
}
|
||||
|
||||
/*
|
||||
* Adjust BPB of a sector
|
||||
*/
|
||||
int mangles_bpb(const struct part_iter *iter, struct data_area *data)
|
||||
{
|
||||
if (!(opt.sect && opt.setbpb))
|
||||
return 0;
|
||||
|
||||
return mangle_bpb(iter, data, "sect");
|
||||
}
|
||||
|
||||
/*
|
||||
* This function performs full BPB patching, analogously to syslinux's
|
||||
* native BSS.
|
||||
*/
|
||||
int manglesf_bss(struct data_area *sec, struct data_area *fil)
|
||||
{
|
||||
int type1, type2;
|
||||
size_t cnt = 0;
|
||||
|
||||
if (!(opt.sect && opt.file && opt.bss))
|
||||
return 0;
|
||||
|
||||
type1 = bpb_detect(fil->data, "bss/file");
|
||||
type2 = bpb_detect(sec->data, "bss/sect");
|
||||
|
||||
if (!type1 || !type2) {
|
||||
error("Couldn't determine the BPB type for option 'bss'.");
|
||||
goto bail;
|
||||
}
|
||||
if (type1 != type2) {
|
||||
error("Option 'bss' can't be used,\n"
|
||||
"when a sector and a file have incompatible BPBs.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
/* Copy common 2.0 data */
|
||||
memcpy((char *)fil->data + 0x0B, (char *)sec->data + 0x0B, 0x0D);
|
||||
|
||||
/* Copy 3.0+ data */
|
||||
if (type1 <= bpbV30) {
|
||||
cnt = 0x06;
|
||||
} else if (type1 <= bpbV32) {
|
||||
cnt = 0x08;
|
||||
} else if (type1 <= bpbV34) {
|
||||
cnt = 0x0C;
|
||||
} else if (type1 <= bpbV40) {
|
||||
cnt = 0x2E;
|
||||
} else if (type1 <= bpbVNT) {
|
||||
cnt = 0x3C;
|
||||
} else if (type1 <= bpbV70) {
|
||||
cnt = 0x42;
|
||||
} else if (type1 <= bpbEXF) {
|
||||
cnt = 0x60;
|
||||
}
|
||||
memcpy((char *)fil->data + 0x18, (char *)sec->data + 0x18, cnt);
|
||||
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Save sector.
|
||||
*/
|
||||
int mangles_save(const struct part_iter *iter, const struct data_area *data, void *org)
|
||||
{
|
||||
if (!(opt.sect && opt.save))
|
||||
return 0;
|
||||
|
||||
if (memcmp(org, data->data, data->size)) {
|
||||
if (disk_write_sectors(&iter->di, iter->abs_lba, data->data, 1)) {
|
||||
error("Cannot write the updated sector.");
|
||||
goto bail;
|
||||
}
|
||||
/* function can be called again */
|
||||
memcpy(org, data->data, data->size);
|
||||
}
|
||||
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* To boot the Recovery Console of Windows NT/2K/XP we need to write
|
||||
* the string "cmdcons\0" to memory location 0000:7C03.
|
||||
* Memory location 0000:7C00 contains the bootsector of the partition.
|
||||
*/
|
||||
int mangles_cmldr(struct data_area *data)
|
||||
{
|
||||
if (!(opt.sect && opt.cmldr))
|
||||
return 0;
|
||||
|
||||
memcpy((char *)data->data + 3, cmldr_signature, sizeof cmldr_signature);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Set common registers */
|
||||
int mangler_init(const struct part_iter *iter)
|
||||
{
|
||||
/* Set initial registry values */
|
||||
if (opt.file) {
|
||||
opt.regs.cs = opt.regs.ds = opt.regs.ss = opt.fseg;
|
||||
opt.regs.ip = opt.fip;
|
||||
} else {
|
||||
opt.regs.cs = opt.regs.ds = opt.regs.ss = opt.sseg;
|
||||
opt.regs.ip = opt.sip;
|
||||
}
|
||||
|
||||
if (opt.regs.ip == 0x7C00 && !opt.regs.cs)
|
||||
opt.regs.esp.l = 0x7C00;
|
||||
|
||||
/* DOS kernels want the drive number in BL instead of DL. Indulge them. */
|
||||
opt.regs.ebx.b[0] = opt.regs.edx.b[0] = iter->di.disk;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ds:si & ds:bp */
|
||||
int mangler_handover(const struct part_iter *iter, const struct data_area *data)
|
||||
{
|
||||
if (opt.file && opt.maps && !opt.hptr) {
|
||||
opt.regs.esi.l = opt.regs.ebp.l = opt.soff;
|
||||
opt.regs.ds = opt.sseg;
|
||||
opt.regs.eax.l = 0;
|
||||
} else if (opt.hand) {
|
||||
/* base is really 0x7be */
|
||||
opt.regs.esi.l = opt.regs.ebp.l = data->base;
|
||||
opt.regs.ds = 0;
|
||||
if (iter->index && iter->type == typegpt) /* must be iterated and GPT */
|
||||
opt.regs.eax.l = 0x54504721; /* '!GPT' */
|
||||
else
|
||||
opt.regs.eax.l = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* GRLDR of GRUB4DOS wants the partition number in DH:
|
||||
* -1: whole drive (default)
|
||||
* 0-3: primary partitions
|
||||
* 4-*: logical partitions
|
||||
*/
|
||||
int mangler_grldr(const struct part_iter *iter)
|
||||
{
|
||||
if (opt.grldr)
|
||||
opt.regs.edx.b[1] = iter->index - 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* try to copy values from temporary iterator, if positions match
|
||||
*/
|
||||
static void mbrcpy(struct part_iter *diter, struct part_iter *siter)
|
||||
{
|
||||
if (diter->dos.cebr_lba == siter->dos.cebr_lba &&
|
||||
diter->di.disk == siter->di.disk) {
|
||||
memcpy(diter->data, siter->data, sizeof(struct disk_dos_mbr));
|
||||
}
|
||||
}
|
||||
|
||||
static int fliphide(struct part_iter *iter, struct part_iter *miter)
|
||||
{
|
||||
struct disk_dos_part_entry *dp;
|
||||
static const uint16_t mask =
|
||||
(1 << 0x01) | (1 << 0x04) | (1 << 0x06) |
|
||||
(1 << 0x07) | (1 << 0x0b) | (1 << 0x0c) | (1 << 0x0e);
|
||||
uint8_t t;
|
||||
|
||||
dp = (struct disk_dos_part_entry *)iter->record;
|
||||
t = dp->ostype;
|
||||
|
||||
if ((t <= 0x1f) && ((mask >> (t & ~0x10u)) & 1)) {
|
||||
/* It's a hideable partition type */
|
||||
if (miter->index == iter->index || opt.hide & HIDE_REV)
|
||||
t &= ~0x10u; /* unhide */
|
||||
else
|
||||
t |= 0x10u; /* hide */
|
||||
}
|
||||
if (dp->ostype != t) {
|
||||
dp->ostype = t;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* miter - iterator we match against
|
||||
* hide bits meaning:
|
||||
* ..| - enable (1) / disable (0)
|
||||
* .|. - all (1) / pri (0)
|
||||
* |.. - unhide (1) / hide (0)
|
||||
*/
|
||||
int manglepe_hide(struct part_iter *miter)
|
||||
{
|
||||
int wb = 0, werr = 0;
|
||||
struct part_iter *iter = NULL;
|
||||
int ridx;
|
||||
|
||||
if (!(opt.hide & HIDE_ON))
|
||||
return 0;
|
||||
|
||||
if (miter->type != typedos) {
|
||||
error("Option '[un]hide[all]' works only for legacy (DOS) partition scheme.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (miter->index > 4 && !(opt.hide & HIDE_EXT))
|
||||
warn("Specified partition is logical, so it can't be unhidden without 'unhideall'.");
|
||||
|
||||
if (!(iter = pi_begin(&miter->di, PIF_STEPALL | opt.piflags)))
|
||||
return -1;
|
||||
|
||||
while (!pi_next(iter) && !werr) {
|
||||
ridx = iter->index0;
|
||||
if (!(opt.hide & HIDE_EXT) && ridx > 3)
|
||||
break; /* skip when we're constrained to pri only */
|
||||
|
||||
if (iter->index != -1)
|
||||
wb |= fliphide(iter, miter);
|
||||
|
||||
/*
|
||||
* we have to update mbr and each extended partition, but only if
|
||||
* changes (wb) were detected and there was no prior write error (werr)
|
||||
*/
|
||||
if (ridx >= 3 && wb && !werr) {
|
||||
mbrcpy(miter, iter);
|
||||
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
|
||||
wb = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (iter->status < 0)
|
||||
goto bail;
|
||||
|
||||
/* last update */
|
||||
if (wb && !werr) {
|
||||
mbrcpy(miter, iter);
|
||||
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
|
||||
}
|
||||
if (werr)
|
||||
warn("Failed to write E/MBR during '[un]hide[all]'.");
|
||||
|
||||
bail:
|
||||
pi_del(&iter);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int updchs(struct part_iter *iter, int ext)
|
||||
{
|
||||
struct disk_dos_part_entry *dp;
|
||||
uint32_t ochs1, ochs2, lba;
|
||||
|
||||
dp = (struct disk_dos_part_entry *)iter->record;
|
||||
if (!ext) {
|
||||
/* primary or logical */
|
||||
lba = (uint32_t)iter->abs_lba;
|
||||
} else {
|
||||
/* extended */
|
||||
dp += 1;
|
||||
lba = iter->dos.nebr_lba;
|
||||
}
|
||||
ochs1 = *(uint32_t *)dp->start;
|
||||
ochs2 = *(uint32_t *)dp->end;
|
||||
|
||||
/*
|
||||
* We have to be a bit more careful here in case of 0 start and/or length;
|
||||
* start = 0 would be converted to the beginning of the disk (C/H/S =
|
||||
* 0/0/1) or the [B]EBR, length = 0 would actually set the end CHS to be
|
||||
* lower than the start CHS.
|
||||
*
|
||||
* Both are harmless in case of a hole (and in non-hole case will make
|
||||
* partiter complain about corrupt layout if PIF_STRICT is set), but it
|
||||
* makes everything look silly and not really correct.
|
||||
*
|
||||
* Thus the approach as seen below.
|
||||
*/
|
||||
|
||||
if (dp->start_lba || iter->index != -1) {
|
||||
lba2chs(&dp->start, &iter->di, lba, L2C_CADD);
|
||||
} else {
|
||||
memset(&dp->start, 0, sizeof dp->start);
|
||||
}
|
||||
|
||||
if ((dp->start_lba || iter->index != -1) && dp->length) {
|
||||
lba2chs(&dp->end, &iter->di, lba + dp->length - 1, L2C_CADD);
|
||||
} else {
|
||||
memset(&dp->end, 0, sizeof dp->end);
|
||||
}
|
||||
|
||||
return
|
||||
*(uint32_t *)dp->start != ochs1 ||
|
||||
*(uint32_t *)dp->end != ochs2;
|
||||
}
|
||||
|
||||
/*
|
||||
* miter - iterator we match against
|
||||
*/
|
||||
int manglepe_fixchs(struct part_iter *miter)
|
||||
{
|
||||
int wb = 0, werr = 0;
|
||||
struct part_iter *iter = NULL;
|
||||
int ridx;
|
||||
|
||||
if (!opt.fixchs)
|
||||
return 0;
|
||||
|
||||
if (miter->type != typedos) {
|
||||
error("Option 'fixchs' works only for legacy (DOS) partition scheme.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(iter = pi_begin(&miter->di, PIF_STEPALL | opt.piflags)))
|
||||
return -1;
|
||||
|
||||
while (!pi_next(iter) && !werr) {
|
||||
ridx = iter->index0;
|
||||
|
||||
wb |= updchs(iter, 0);
|
||||
if (ridx > 3)
|
||||
wb |= updchs(iter, 1);
|
||||
|
||||
/*
|
||||
* we have to update mbr and each extended partition, but only if
|
||||
* changes (wb) were detected and there was no prior write error (werr)
|
||||
*/
|
||||
if (ridx >= 3 && wb && !werr) {
|
||||
mbrcpy(miter, iter);
|
||||
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
|
||||
wb = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (iter->status < 0)
|
||||
goto bail;
|
||||
|
||||
/* last update */
|
||||
if (wb && !werr) {
|
||||
mbrcpy(miter, iter);
|
||||
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
|
||||
}
|
||||
if (werr)
|
||||
warn("Failed to write E/MBR during 'fixchs'.");
|
||||
|
||||
bail:
|
||||
pi_del(&iter);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,62 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef COM32_CHAIN_MANGLE_H
|
||||
#define COM32_CHAIN_MANGLE_H
|
||||
|
||||
#include "chain.h"
|
||||
#include "partiter.h"
|
||||
|
||||
/* file's manglers */
|
||||
int manglef_isolinux(struct data_area *data);
|
||||
int manglef_grub(const struct part_iter *iter, struct data_area *data);
|
||||
int manglef_bpb(const struct part_iter *iter, struct data_area *data);
|
||||
/* int manglef_drmk(struct data_area *data);*/
|
||||
|
||||
/* sector's manglers */
|
||||
int mangles_bpb(const struct part_iter *iter, struct data_area *data);
|
||||
int mangles_save(const struct part_iter *iter, const struct data_area *data, void *org);
|
||||
int mangles_cmldr(struct data_area *data);
|
||||
|
||||
/* sector + file's manglers */
|
||||
int manglesf_bss(struct data_area *sec, struct data_area *fil);
|
||||
|
||||
/* registers' manglers */
|
||||
int mangler_init(const struct part_iter *iter);
|
||||
int mangler_handover(const struct part_iter *iter, const struct data_area *data);
|
||||
int mangler_grldr(const struct part_iter *iter);
|
||||
|
||||
/* partition layout's manglers */
|
||||
int manglepe_fixchs(struct part_iter *miter);
|
||||
int manglepe_hide(struct part_iter *miter);
|
||||
|
||||
#endif
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,444 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include <syslinux/movebits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "chain.h"
|
||||
#include "partiter.h"
|
||||
#include "utility.h"
|
||||
#include "options.h"
|
||||
|
||||
struct options opt;
|
||||
|
||||
static int soi_s2n(char *ptr,
|
||||
addr_t *seg,
|
||||
addr_t *off,
|
||||
addr_t *ip,
|
||||
addr_t def)
|
||||
{
|
||||
addr_t segval, offval, ipval, val;
|
||||
char *p;
|
||||
|
||||
/* defaults */
|
||||
segval = 0;
|
||||
offval = def;
|
||||
ipval = def;
|
||||
|
||||
segval = strtoul(ptr, &p, 0);
|
||||
if (p[0] == ':' && p[1] && p[1] != ':')
|
||||
offval = strtoul(p+1, &p, 0);
|
||||
if (p[0] == ':' && p[1] && p[1] != ':')
|
||||
ipval = strtoul(p+1, NULL, 0);
|
||||
|
||||
/* verify if load address is within [dosmin, dosmax) */
|
||||
val = (segval << 4) + offval;
|
||||
|
||||
if (val < dosmin || val >= dosmax) {
|
||||
error("Invalid seg:off:* address specified.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
/*
|
||||
* verify if jump address is within [dosmin, dosmax) and offset is 16bit
|
||||
* sane
|
||||
*/
|
||||
val = (segval << 4) + ipval;
|
||||
|
||||
if (ipval > 0xFFFE || val < dosmin || val >= dosmax) {
|
||||
error("Invalid seg:*:ip address specified.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (seg)
|
||||
*seg = segval;
|
||||
if (off)
|
||||
*off = offval;
|
||||
if (ip)
|
||||
*ip = ipval;
|
||||
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
size_t i;
|
||||
static const char *const usage[] = {
|
||||
"Usage:",
|
||||
"",
|
||||
" disk + partition selection:",
|
||||
" chain.c32 [options]",
|
||||
" chain.c32 hd#[,#] [options]",
|
||||
" chain.c32 fd#[,#] [options]",
|
||||
" chain.c32 mbr=<id>[,#] [options]",
|
||||
" chain.c32 guid=<guid>[,#] [options]",
|
||||
" chain.c32 boot[,#] [options]",
|
||||
"",
|
||||
" direct partition selection:",
|
||||
" chain.c32 guid=<guid> [options]",
|
||||
" chain.c32 label=<label> [options]",
|
||||
" chain.c32 fs [options]",
|
||||
"",
|
||||
"You can use ':' instead of '=' and ' ' instead of ','.",
|
||||
"The default is 'boot,0'.",
|
||||
"",
|
||||
"Options:",
|
||||
" sect[=<s[:o[:i]]>] Load sector at <s:o>, jump to <s:i>",
|
||||
" - defaults to 0:0x7C00:0x7C00",
|
||||
" - omitted o/i values default to 0",
|
||||
" maps Map loaded sector into real memory",
|
||||
" setbpb Fix BPB fields in loaded sector",
|
||||
" filebpb Apply 'setbpb' to loaded file",
|
||||
" save Write adjusted sector back to disk",
|
||||
" hand Prepare handover area",
|
||||
" hptr Force ds:si and ds:bp to point to handover area",
|
||||
" swap Swap drive numbers, if bootdisk is not fd0/hd0",
|
||||
" nohide Disable all hide variations (default)",
|
||||
" hide Hide primary partitions, unhide selected partition",
|
||||
" hideall Hide *all* partitions, unhide selected partition",
|
||||
" unhide Unhide primary partitions",
|
||||
" unhideall Unhide *all* partitions",
|
||||
" fixchs Walk *all* partitions and fix E/MBRs' CHS values",
|
||||
" keeppxe Keep the PXE and UNDI stacks in memory (PXELINUX)",
|
||||
" warn Wait for a keypress to continue chainloading",
|
||||
" break Don't chainload",
|
||||
" gpthcrc Perform gpt header crc check",
|
||||
" gptlcrc Perform gpt list crc check",
|
||||
" strict[=<0|1|2>] Set the level of strictness in sanity checks",
|
||||
" - strict w/o any value is the same as strict=2",
|
||||
" relax The same as strict=0",
|
||||
" prefmbr On hybrid MBR/GPT disks, prefer legacy layout",
|
||||
" exit Don't read anything after this keyword",
|
||||
"",
|
||||
" file=<file> Load and execute <file>",
|
||||
" seg=<s[:o[:i]]> Load file at <s:o>, jump to <s:i>",
|
||||
" - defaults to 0:0x7C00:0x7C00",
|
||||
" - omitted o/i values default to 0",
|
||||
" isolinux=<loader> Load another version of ISOLINUX",
|
||||
" ntldr=<loader> Load Windows NTLDR, SETUPLDR.BIN or BOOTMGR",
|
||||
" reactos=<loader> Load ReactOS's loader",
|
||||
" cmldr=<loader> Load Recovery Console of Windows NT/2K/XP/2003",
|
||||
" freedos=<loader> Load FreeDOS KERNEL.SYS",
|
||||
" msdos=<loader> Load MS-DOS 2.xx - 6.xx IO.SYS",
|
||||
" msdos7=<loader> Load MS-DOS 7+ IO.SYS",
|
||||
" pcdos=<loader> Load PC-DOS IBMBIO.COM",
|
||||
" drmk=<loader> Load DRMK DELLBIO.BIN",
|
||||
" grub=<loader> Load GRUB Legacy stage2",
|
||||
" grubcfg=<config> Set alternative config filename for GRUB Legacy",
|
||||
" grldr=<loader> Load GRUB4DOS grldr",
|
||||
" bss=<sectimage> Emulate syslinux's BSS",
|
||||
" bs=<sectimage> Emulate syslinux's BS",
|
||||
"",
|
||||
"Please see doc/chain.txt for the detailed documentation."
|
||||
};
|
||||
for (i = 0; i < sizeof(usage)/sizeof(usage[0]); i++) {
|
||||
if (i % 20 == 19) {
|
||||
puts("Press any key...");
|
||||
wait_key();
|
||||
}
|
||||
puts(usage[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void opt_set_defs(void)
|
||||
{
|
||||
memset(&opt, 0, sizeof opt);
|
||||
opt.sect = true; /* by def. load sector */
|
||||
opt.maps = true; /* by def. map sector */
|
||||
opt.hand = true; /* by def. prepare handover */
|
||||
opt.brkchain = false; /* by def. do chainload */
|
||||
/* strict but ignore disk size, do all gpt crc checks */
|
||||
opt.piflags = PIF_STRICT | PIF_GPTHCRC | PIF_GPTLCRC;
|
||||
opt.foff = opt.soff = opt.fip = opt.sip = 0x7C00;
|
||||
opt.drivename = "boot";
|
||||
#ifdef DEBUG
|
||||
opt.warn = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
int opt_parse_args(int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
size_t v;
|
||||
char *p;
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (!strncmp(argv[i], "file=", 5)) {
|
||||
opt.file = argv[i] + 5;
|
||||
} else if (!strncmp(argv[i], "exit", 4)) {
|
||||
break;
|
||||
} else if (!strcmp(argv[i], "nofile")) {
|
||||
opt.file = NULL;
|
||||
} else if (!strncmp(argv[i], "seg=", 4)) {
|
||||
if (soi_s2n(argv[i] + 4, &opt.fseg, &opt.foff, &opt.fip, 0))
|
||||
goto bail;
|
||||
} else if (!strncmp(argv[i], "bss=", 4)) {
|
||||
opt.file = argv[i] + 4;
|
||||
opt.bss = true;
|
||||
opt.maps = false;
|
||||
opt.setbpb = true;
|
||||
} else if (!strncmp(argv[i], "bs=", 3)) {
|
||||
opt.file = argv[i] + 3;
|
||||
opt.sect = false;
|
||||
opt.filebpb = true;
|
||||
} else if (!strncmp(argv[i], "isolinux=", 9)) {
|
||||
opt.file = argv[i] + 9;
|
||||
opt.isolinux = true;
|
||||
opt.hand = false;
|
||||
opt.sect = false;
|
||||
} else if (!strncmp(argv[i], "ntldr=", 6)) {
|
||||
opt.fseg = 0x2000; /* NTLDR wants this address */
|
||||
opt.foff = 0;
|
||||
opt.fip = 0;
|
||||
opt.file = argv[i] + 6;
|
||||
opt.setbpb = true;
|
||||
opt.hand = false;
|
||||
} else if (!strncmp(argv[i], "reactos=", 8)) {
|
||||
opt.fseg = 0x0F80;
|
||||
opt.foff = 0;
|
||||
opt.fip = 0;
|
||||
opt.file = argv[i] + 8;
|
||||
opt.setbpb = true;
|
||||
opt.hand = false;
|
||||
} else if (!strncmp(argv[i], "cmldr=", 6)) {
|
||||
opt.fseg = 0x2000; /* CMLDR wants this address */
|
||||
opt.foff = 0;
|
||||
opt.fip = 0;
|
||||
opt.file = argv[i] + 6;
|
||||
opt.cmldr = true;
|
||||
opt.setbpb = true;
|
||||
opt.hand = false;
|
||||
} else if (!strncmp(argv[i], "freedos=", 8)) {
|
||||
opt.fseg = 0x60; /* FREEDOS wants this address */
|
||||
opt.foff = 0;
|
||||
opt.fip = 0;
|
||||
opt.sseg = 0x1FE0;
|
||||
opt.file = argv[i] + 8;
|
||||
opt.setbpb = true;
|
||||
opt.hand = false;
|
||||
} else if ( (v = 6, !strncmp(argv[i], "msdos=", v) ||
|
||||
!strncmp(argv[i], "pcdos=", v)) ||
|
||||
(v = 7, !strncmp(argv[i], "msdos7=", v)) ) {
|
||||
opt.fseg = 0x70; /* MS-DOS 2.00 .. 6.xx wants this address */
|
||||
opt.foff = 0;
|
||||
opt.fip = v == 7 ? 0x200 : 0; /* MS-DOS 7.0+ wants this ip */
|
||||
opt.sseg = 0x8000;
|
||||
opt.file = argv[i] + v;
|
||||
opt.setbpb = true;
|
||||
opt.hand = false;
|
||||
} else if (!strncmp(argv[i], "drmk=", 5)) {
|
||||
opt.fseg = 0x70; /* DRMK wants this address */
|
||||
opt.foff = 0;
|
||||
opt.fip = 0;
|
||||
opt.sseg = 0x2000;
|
||||
opt.soff = 0;
|
||||
opt.sip = 0;
|
||||
opt.file = argv[i] + 5;
|
||||
/* opt.drmk = true; */
|
||||
opt.setbpb = true;
|
||||
opt.hand = false;
|
||||
} else if (!strncmp(argv[i], "grub=", 5)) {
|
||||
opt.fseg = 0x800; /* stage2 wants this address */
|
||||
opt.foff = 0;
|
||||
opt.fip = 0x200;
|
||||
opt.file = argv[i] + 5;
|
||||
opt.grub = true;
|
||||
opt.hand = false;
|
||||
opt.sect = false;
|
||||
} else if (!strncmp(argv[i], "grubcfg=", 8)) {
|
||||
opt.grubcfg = argv[i] + 8;
|
||||
} else if (!strncmp(argv[i], "grldr=", 6)) {
|
||||
opt.file = argv[i] + 6;
|
||||
opt.grldr = true;
|
||||
opt.hand = false;
|
||||
opt.sect = false;
|
||||
} else if (!strcmp(argv[i], "keeppxe")) {
|
||||
opt.keeppxe = 3;
|
||||
} else if (!strcmp(argv[i], "nokeeppxe")) {
|
||||
opt.keeppxe = 0;
|
||||
} else if (!strcmp(argv[i], "maps")) {
|
||||
opt.maps = true;
|
||||
} else if (!strcmp(argv[i], "nomaps")) {
|
||||
opt.maps = false;
|
||||
} else if (!strcmp(argv[i], "hand")) {
|
||||
opt.hand = true;
|
||||
} else if (!strcmp(argv[i], "nohand")) {
|
||||
opt.hand = false;
|
||||
} else if (!strcmp(argv[i], "hptr")) {
|
||||
opt.hptr = true;
|
||||
} else if (!strcmp(argv[i], "nohptr")) {
|
||||
opt.hptr = false;
|
||||
} else if (!strcmp(argv[i], "swap")) {
|
||||
opt.swap = true;
|
||||
} else if (!strcmp(argv[i], "noswap")) {
|
||||
opt.swap = false;
|
||||
} else if (!strcmp(argv[i], "nohide")) {
|
||||
opt.hide = HIDE_OFF;
|
||||
} else if (!strcmp(argv[i], "hide")) {
|
||||
opt.hide = HIDE_ON;
|
||||
opt.piflags |= PIF_STRICT | PIF_STRICTER;
|
||||
} else if (!strcmp(argv[i], "hideall")) {
|
||||
opt.hide = HIDE_ON | HIDE_EXT;
|
||||
opt.piflags |= PIF_STRICT | PIF_STRICTER;
|
||||
} else if (!strcmp(argv[i], "unhide")) {
|
||||
opt.hide = HIDE_ON | HIDE_REV;
|
||||
opt.piflags |= PIF_STRICT | PIF_STRICTER;
|
||||
} else if (!strcmp(argv[i], "unhideall")) {
|
||||
opt.hide = HIDE_ON | HIDE_EXT | HIDE_REV;
|
||||
opt.piflags |= PIF_STRICT | PIF_STRICTER;
|
||||
} else if (!strcmp(argv[i], "setbpb")) {
|
||||
opt.setbpb = true;
|
||||
} else if (!strcmp(argv[i], "nosetbpb")) {
|
||||
opt.setbpb = false;
|
||||
} else if (!strcmp(argv[i], "filebpb")) {
|
||||
opt.filebpb = true;
|
||||
} else if (!strcmp(argv[i], "nofilebpb")) {
|
||||
opt.filebpb = false;
|
||||
} else if (!strncmp(argv[i], "sect=", 5) ||
|
||||
!strcmp(argv[i], "sect")) {
|
||||
if (argv[i][4]) {
|
||||
if (soi_s2n(argv[i] + 5, &opt.sseg, &opt.soff, &opt.sip, 0))
|
||||
goto bail;
|
||||
}
|
||||
opt.sect = true;
|
||||
} else if (!strcmp(argv[i], "nosect")) {
|
||||
opt.sect = false;
|
||||
opt.maps = false;
|
||||
} else if (!strcmp(argv[i], "save")) {
|
||||
opt.save = true;
|
||||
opt.piflags |= PIF_STRICT | PIF_STRICTER;
|
||||
} else if (!strcmp(argv[i], "nosave")) {
|
||||
opt.save = false;
|
||||
} else if (!strcmp(argv[i], "fixchs")) {
|
||||
opt.fixchs = true;
|
||||
opt.piflags |= PIF_STRICT | PIF_STRICTER;
|
||||
} else if (!strcmp(argv[i], "nofixchs")) {
|
||||
opt.fixchs = false;
|
||||
} else if (!strcmp(argv[i], "relax") || !strcmp(argv[i], "nostrict")) {
|
||||
opt.piflags &= ~(PIF_STRICT | PIF_STRICTER);
|
||||
} else if (!strcmp(argv[i], "norelax") || !strcmp(argv[i], "strict")) {
|
||||
opt.piflags |= PIF_STRICT | PIF_STRICTER;
|
||||
} else if (!strncmp(argv[i], "strict=", 7)) {
|
||||
if (argv[i][7] < '0' || argv[i][7] > '2' || !argv[i][8]) {
|
||||
error("Strict level must be 0, 1 or 2.");
|
||||
goto bail;
|
||||
}
|
||||
opt.piflags &= ~(PIF_STRICT | PIF_STRICTER);
|
||||
switch (argv[i][7]) {
|
||||
case '2': opt.piflags |= PIF_STRICTER;
|
||||
case '1': opt.piflags |= PIF_STRICT; break;
|
||||
default:;
|
||||
}
|
||||
} else if (!strcmp(argv[i], "gpthcrc")) {
|
||||
opt.piflags |= PIF_GPTHCRC;
|
||||
} else if (!strcmp(argv[i], "nogpthcrc")) {
|
||||
opt.piflags &= ~PIF_GPTHCRC;
|
||||
} else if (!strcmp(argv[i], "gptlcrc")) {
|
||||
opt.piflags |= PIF_GPTLCRC;
|
||||
} else if (!strcmp(argv[i], "nogptlcrc")) {
|
||||
opt.piflags &= ~PIF_GPTLCRC;
|
||||
} else if (!strcmp(argv[i], "warn")) {
|
||||
opt.warn = true;
|
||||
} else if (!strcmp(argv[i], "nowarn")) {
|
||||
opt.warn = false;
|
||||
} else if (!strcmp(argv[i], "prefmbr")) {
|
||||
opt.piflags |= PIF_PREFMBR;
|
||||
} else if (!strcmp(argv[i], "noprefmbr")) {
|
||||
opt.piflags &= ~PIF_PREFMBR;
|
||||
} else if (!strcmp(argv[i], "nobreak")) {
|
||||
opt.brkchain = false;
|
||||
} else if (!strcmp(argv[i], "break")) {
|
||||
opt.brkchain = true;
|
||||
opt.file = NULL;
|
||||
opt.maps = false;
|
||||
opt.hand = false;
|
||||
} else if (((argv[i][0] == 'h' || argv[i][0] == 'f')
|
||||
&& argv[i][1] == 'd')
|
||||
|| !strncmp(argv[i], "mbr:", 4)
|
||||
|| !strncmp(argv[i], "mbr=", 4)
|
||||
|| !strncmp(argv[i], "guid:", 5)
|
||||
|| !strncmp(argv[i], "guid=", 5)
|
||||
|| !strncmp(argv[i], "label:", 6)
|
||||
|| !strncmp(argv[i], "label=", 6)
|
||||
|| !strcmp(argv[i], "boot")
|
||||
|| !strncmp(argv[i], "boot,", 5)
|
||||
|| !strcmp(argv[i], "fs")) {
|
||||
opt.drivename = argv[i];
|
||||
if (strncmp(argv[i], "label", 5))
|
||||
p = strchr(opt.drivename, ',');
|
||||
else
|
||||
p = NULL;
|
||||
if (p) {
|
||||
*p = '\0';
|
||||
opt.partition = p + 1;
|
||||
} else if (argv[i + 1] && argv[i + 1][0] >= '0'
|
||||
&& argv[i + 1][0] <= '9') {
|
||||
opt.partition = argv[++i];
|
||||
}
|
||||
} else {
|
||||
usage();
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
|
||||
if (opt.grubcfg && !opt.grub) {
|
||||
error("grubcfg=<filename> must be used together with grub=<loader>.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (opt.filebpb && !opt.file) {
|
||||
error("Option 'filebpb' requires a file.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (opt.save && !opt.sect) {
|
||||
error("Option 'save' requires a sector.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (opt.setbpb && !opt.sect) {
|
||||
error("Option 'setbpb' requires a sector.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (opt.maps && !opt.sect) {
|
||||
error("Option 'maps' requires a sector.");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
return 0;
|
||||
bail:
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,81 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef COM32_CHAIN_OPTIONS_H
|
||||
#define COM32_CHAIN_OPTIONS_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <syslinux/bootrm.h>
|
||||
#include <syslinux/movebits.h>
|
||||
|
||||
enum {HIDE_OFF = 0, HIDE_ON = 1, HIDE_EXT = 2, HIDE_REV = 4};
|
||||
|
||||
struct options {
|
||||
const char *drivename;
|
||||
const char *partition;
|
||||
const char *file;
|
||||
const char *grubcfg;
|
||||
addr_t fseg;
|
||||
addr_t foff;
|
||||
addr_t fip;
|
||||
addr_t sseg;
|
||||
addr_t soff;
|
||||
addr_t sip;
|
||||
int hide;
|
||||
int piflags;
|
||||
uint16_t keeppxe;
|
||||
bool isolinux;
|
||||
bool cmldr;
|
||||
bool drmk;
|
||||
bool grub;
|
||||
bool grldr;
|
||||
bool maps;
|
||||
bool hand;
|
||||
bool hptr;
|
||||
bool swap;
|
||||
bool sect;
|
||||
bool save;
|
||||
bool bss;
|
||||
bool setbpb;
|
||||
bool filebpb;
|
||||
bool fixchs;
|
||||
bool warn;
|
||||
bool brkchain;
|
||||
struct syslinux_rm_regs regs;
|
||||
};
|
||||
|
||||
extern struct options opt;
|
||||
|
||||
void opt_set_defs(void);
|
||||
int opt_parse_args(int argc, char *argv[]);
|
||||
|
||||
#endif
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,726 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* partiter.c
|
||||
*
|
||||
* Provides disk / partition iteration.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <zlib.h>
|
||||
#include <syslinux/disk.h>
|
||||
#include "partiter.h"
|
||||
#include "utility.h"
|
||||
|
||||
#define ost_is_ext(type) ((type) == 0x05 || (type) == 0x0F || (type) == 0x85)
|
||||
#define ost_is_nondata(type) (ost_is_ext(type) || (type) == 0x00)
|
||||
#define sane(s,l) ((s)+(l) > (s))
|
||||
|
||||
/* virtual forwards */
|
||||
|
||||
static void pi_dtor_(struct part_iter *);
|
||||
static int pi_next_(struct part_iter *);
|
||||
static int pi_dos_next(struct part_iter *);
|
||||
static int pi_gpt_next(struct part_iter *);
|
||||
|
||||
/* vtab and types */
|
||||
|
||||
static struct itertype types[] = {
|
||||
[0] = {
|
||||
.dtor = &pi_dtor_,
|
||||
.next = &pi_dos_next,
|
||||
}, [1] = {
|
||||
.dtor = &pi_dtor_,
|
||||
.next = &pi_gpt_next,
|
||||
}, [2] = {
|
||||
.dtor = &pi_dtor_,
|
||||
.next = &pi_next_,
|
||||
}};
|
||||
|
||||
const struct itertype * const typedos = types;
|
||||
const struct itertype * const typegpt = types+1;
|
||||
const struct itertype * const typeraw = types+2;
|
||||
|
||||
/* pi_dtor_() - common/raw iterator cleanup */
|
||||
static void pi_dtor_(struct part_iter *iter)
|
||||
{
|
||||
/* syslinux's free is null resilient */
|
||||
free(iter->data);
|
||||
}
|
||||
|
||||
/* pi_ctor() - common/raw iterator initialization */
|
||||
static int pi_ctor(struct part_iter *iter,
|
||||
const struct disk_info *di, int flags
|
||||
)
|
||||
{
|
||||
memcpy(&iter->di, di, sizeof *di);
|
||||
iter->flags = flags;
|
||||
iter->index0 = -1;
|
||||
iter->length = di->lbacnt;
|
||||
|
||||
iter->type = typeraw;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* pi_dos_ctor() - MBR/EBR iterator specific initialization */
|
||||
static int pi_dos_ctor(struct part_iter *iter,
|
||||
const struct disk_info *di, int flags,
|
||||
const struct disk_dos_mbr *mbr
|
||||
)
|
||||
{
|
||||
if (pi_ctor(iter, di, flags))
|
||||
return -1;
|
||||
|
||||
if (!(iter->data = malloc(sizeof *mbr))) {
|
||||
critm();
|
||||
goto bail;
|
||||
}
|
||||
|
||||
memcpy(iter->data, mbr, sizeof *mbr);
|
||||
|
||||
iter->dos.bebr_index0 = -1;
|
||||
iter->dos.disk_sig = mbr->disk_sig;
|
||||
|
||||
iter->type = typedos;
|
||||
return 0;
|
||||
bail:
|
||||
pi_dtor_(iter);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* pi_gpt_ctor() - GPT iterator specific initialization */
|
||||
static int pi_gpt_ctor(struct part_iter *iter,
|
||||
const struct disk_info *di, int flags,
|
||||
const struct disk_gpt_header *gpth, const struct disk_gpt_part_entry *gptl
|
||||
)
|
||||
{
|
||||
uint64_t siz;
|
||||
|
||||
if (pi_ctor(iter, di, flags))
|
||||
return -1;
|
||||
|
||||
siz = (uint64_t)gpth->part_count * gpth->part_size;
|
||||
|
||||
if (!(iter->data = malloc((size_t)siz))) {
|
||||
critm();
|
||||
goto bail;
|
||||
}
|
||||
|
||||
memcpy(iter->data, gptl, (size_t)siz);
|
||||
|
||||
iter->gpt.pe_count = (int)gpth->part_count;
|
||||
iter->gpt.pe_size = (int)gpth->part_size;
|
||||
iter->gpt.ufirst = gpth->lba_first_usable;
|
||||
iter->gpt.ulast = gpth->lba_last_usable;
|
||||
|
||||
memcpy(&iter->gpt.disk_guid, &gpth->disk_guid, sizeof gpth->disk_guid);
|
||||
memcpy(&iter->gpt.part_guid, &gpth->disk_guid, sizeof gpth->disk_guid);
|
||||
|
||||
iter->type = typegpt;
|
||||
return 0;
|
||||
bail:
|
||||
pi_dtor_(iter);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Logical partition must be sane, meaning:
|
||||
* - must be data or empty
|
||||
* - must have non-0 start and length
|
||||
* - values must not wrap around 32bit
|
||||
* - must be inside current EBR frame
|
||||
*/
|
||||
|
||||
static int notsane_logical(const struct part_iter *iter)
|
||||
{
|
||||
const struct disk_dos_part_entry *dp;
|
||||
uint32_t end_log;
|
||||
|
||||
dp = ((struct disk_dos_mbr *)iter->data)->table;
|
||||
|
||||
if (!dp[0].ostype)
|
||||
return 0;
|
||||
|
||||
if (ost_is_ext(dp[0].ostype)) {
|
||||
error("The 1st EBR entry must be data or empty.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(iter->flags & PIF_STRICT))
|
||||
return 0;
|
||||
|
||||
end_log = dp[0].start_lba + dp[0].length;
|
||||
|
||||
if (!dp[0].start_lba ||
|
||||
!dp[0].length ||
|
||||
!sane(dp[0].start_lba, dp[0].length) ||
|
||||
end_log > iter->dos.nebr_siz) {
|
||||
|
||||
error("Logical partition (in EBR) with invalid offset and/or length.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Extended partition must be sane, meaning:
|
||||
* - must be extended or empty
|
||||
* - must have non-0 start and length
|
||||
* - values must not wrap around 32bit
|
||||
* - must be inside base EBR frame
|
||||
*/
|
||||
|
||||
static int notsane_extended(const struct part_iter *iter)
|
||||
{
|
||||
const struct disk_dos_part_entry *dp;
|
||||
uint32_t end_ebr;
|
||||
|
||||
dp = ((struct disk_dos_mbr *)iter->data)->table;
|
||||
|
||||
if (!dp[1].ostype)
|
||||
return 0;
|
||||
|
||||
if (!ost_is_nondata(dp[1].ostype)) {
|
||||
error("The 2nd EBR entry must be extended or empty.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(iter->flags & PIF_STRICT))
|
||||
return 0;
|
||||
|
||||
end_ebr = dp[1].start_lba + dp[1].length;
|
||||
|
||||
if (!dp[1].start_lba ||
|
||||
!dp[1].length ||
|
||||
!sane(dp[1].start_lba, dp[1].length) ||
|
||||
end_ebr > iter->dos.bebr_siz) {
|
||||
|
||||
error("Extended partition (EBR) with invalid offset and/or length.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Primary partition must be sane, meaning:
|
||||
* - must have non-0 start and length
|
||||
* - values must not wrap around 32bit
|
||||
*/
|
||||
|
||||
static int notsane_primary(const struct part_iter *iter)
|
||||
{
|
||||
const struct disk_dos_part_entry *dp;
|
||||
dp = ((struct disk_dos_mbr *)iter->data)->table + iter->index0;
|
||||
|
||||
if (!dp->ostype)
|
||||
return 0;
|
||||
|
||||
if (!(iter->flags & PIF_STRICT))
|
||||
return 0;
|
||||
|
||||
if (!dp->start_lba ||
|
||||
!dp->length ||
|
||||
!sane(dp->start_lba, dp->length) ||
|
||||
((iter->flags & PIF_STRICTER) && (dp->start_lba + dp->length > iter->di.lbacnt))) {
|
||||
error("Primary partition (in MBR) with invalid offset and/or length.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int notsane_gpt(const struct part_iter *iter)
|
||||
{
|
||||
const struct disk_gpt_part_entry *gp;
|
||||
gp = (const struct disk_gpt_part_entry *)
|
||||
(iter->data + iter->index0 * iter->gpt.pe_size);
|
||||
|
||||
if (guid_is0(&gp->type))
|
||||
return 0;
|
||||
|
||||
if (!(iter->flags & PIF_STRICT))
|
||||
return 0;
|
||||
|
||||
if (gp->lba_first < iter->gpt.ufirst ||
|
||||
gp->lba_last > iter->gpt.ulast) {
|
||||
error("LBA sectors of GPT partition are beyond the range allowed in GPT header.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dos_next_mbr(struct part_iter *iter, uint32_t *lba,
|
||||
struct disk_dos_part_entry **_dp)
|
||||
{
|
||||
struct disk_dos_part_entry *dp;
|
||||
|
||||
while (++iter->index0 < 4) {
|
||||
dp = ((struct disk_dos_mbr *)iter->data)->table + iter->index0;
|
||||
|
||||
if (notsane_primary(iter)) {
|
||||
iter->status = PI_INSANE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ost_is_ext(dp->ostype)) {
|
||||
if (iter->dos.bebr_index0 >= 0) {
|
||||
error("More than 1 extended partition.");
|
||||
iter->status = PI_INSANE;
|
||||
return -1;
|
||||
}
|
||||
/* record base EBR index */
|
||||
iter->dos.bebr_index0 = iter->index0;
|
||||
}
|
||||
if (!ost_is_nondata(dp->ostype) || (iter->flags & PIF_STEPALL)) {
|
||||
*lba = dp->start_lba;
|
||||
*_dp = dp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int prep_base_ebr(struct part_iter *iter)
|
||||
{
|
||||
struct disk_dos_part_entry *dp;
|
||||
|
||||
if (iter->dos.bebr_index0 < 0) /* if we don't have base extended partition at all */
|
||||
return -1;
|
||||
else if (!iter->dos.bebr_lba) { /* if not initialized yet */
|
||||
dp = ((struct disk_dos_mbr *)iter->data)->table + iter->dos.bebr_index0;
|
||||
|
||||
iter->dos.bebr_lba = dp->start_lba;
|
||||
iter->dos.bebr_siz = dp->length;
|
||||
|
||||
iter->dos.nebr_lba = dp->start_lba;
|
||||
iter->dos.nebr_siz = dp->length;
|
||||
|
||||
iter->index0--;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dos_next_ebr(struct part_iter *iter, uint32_t *lba,
|
||||
struct disk_dos_part_entry **_dp)
|
||||
{
|
||||
struct disk_dos_part_entry *dp;
|
||||
|
||||
if (prep_base_ebr(iter) < 0) {
|
||||
iter->status = PI_DONE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (++iter->index0 < 1024 && iter->dos.nebr_lba) {
|
||||
free(iter->data);
|
||||
if (!(iter->data =
|
||||
disk_read_sectors(&iter->di, iter->dos.nebr_lba, 1))) {
|
||||
error("Couldn't load EBR.");
|
||||
iter->status = PI_ERRLOAD;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* check sanity of loaded data */
|
||||
if (notsane_logical(iter) || notsane_extended(iter)) {
|
||||
iter->status = PI_INSANE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
dp = ((struct disk_dos_mbr *)iter->data)->table;
|
||||
|
||||
iter->dos.cebr_lba = iter->dos.nebr_lba;
|
||||
iter->dos.cebr_siz = iter->dos.nebr_siz;
|
||||
|
||||
/* setup next frame values */
|
||||
if (dp[1].ostype) {
|
||||
iter->dos.nebr_lba = iter->dos.bebr_lba + dp[1].start_lba;
|
||||
iter->dos.nebr_siz = dp[1].length;
|
||||
} else {
|
||||
iter->dos.nebr_lba = 0;
|
||||
iter->dos.nebr_siz = 0;
|
||||
}
|
||||
|
||||
if (!dp[0].ostype)
|
||||
iter->dos.logskipcnt++;
|
||||
|
||||
if (dp[0].ostype || (iter->flags & PIF_STEPALL)) {
|
||||
*lba = dp[0].start_lba ? iter->dos.cebr_lba + dp[0].start_lba : 0;
|
||||
*_dp = dp;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* This way it's possible to continue, if some crazy soft left a "hole"
|
||||
* - EBR with a valid extended partition without a logical one. In
|
||||
* such case, linux will not reserve a number for such hole - so we
|
||||
* don't increase index0. If PIF_STEPALL flag is set, we will never
|
||||
* reach this place.
|
||||
*/
|
||||
}
|
||||
iter->status = PI_DONE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void gpt_conv_label(struct part_iter *iter)
|
||||
{
|
||||
const struct disk_gpt_part_entry *gp;
|
||||
const int16_t *orig_lab;
|
||||
|
||||
gp = (const struct disk_gpt_part_entry *)
|
||||
(iter->data + iter->index0 * iter->gpt.pe_size);
|
||||
orig_lab = (const int16_t *)gp->name;
|
||||
|
||||
/* caveat: this is very crude conversion */
|
||||
for (int i = 0; i < PI_GPTLABSIZE/2; i++) {
|
||||
iter->gpt.part_label[i] = (char)orig_lab[i];
|
||||
}
|
||||
iter->gpt.part_label[PI_GPTLABSIZE/2] = 0;
|
||||
}
|
||||
|
||||
static inline int valid_crc(uint32_t crc, const uint8_t *buf, unsigned int siz)
|
||||
{
|
||||
return crc == crc32(crc32(0, NULL, 0), buf, siz);
|
||||
}
|
||||
|
||||
static int valid_crc_gpth(struct disk_gpt_header *gh, int flags)
|
||||
{
|
||||
uint32_t crc, crcc;
|
||||
|
||||
if (!(flags & PIF_GPTHCRC))
|
||||
return 1;
|
||||
|
||||
crc = gh->chksum;
|
||||
gh->chksum = 0;
|
||||
crcc = crc32(crc32(0, NULL, 0), (const uint8_t *)gh, gh->hdr_size);
|
||||
gh->chksum = crc;
|
||||
return crc == crcc;
|
||||
}
|
||||
|
||||
static int valid_crc_gptl(const struct disk_gpt_header *gh, const struct disk_gpt_part_entry *gl, int flags)
|
||||
{
|
||||
uint32_t crcc;
|
||||
|
||||
if (!(flags & PIF_GPTLCRC))
|
||||
return 1;
|
||||
|
||||
crcc = crc32(crc32(0, NULL, 0), (const uint8_t *)gl, gh->part_size * gh->part_count);
|
||||
return gh->table_chksum == crcc;
|
||||
}
|
||||
|
||||
static int pi_next_(struct part_iter *iter)
|
||||
{
|
||||
iter->status = PI_DONE;
|
||||
return iter->status;
|
||||
}
|
||||
|
||||
static int pi_dos_next(struct part_iter *iter)
|
||||
{
|
||||
uint32_t abs_lba = 0;
|
||||
struct disk_dos_part_entry *dos_part = NULL;
|
||||
|
||||
if (iter->status)
|
||||
return iter->status;
|
||||
|
||||
/* look for primary partitions */
|
||||
if (iter->index0 < 4 &&
|
||||
dos_next_mbr(iter, &abs_lba, &dos_part) < 0)
|
||||
return iter->status;
|
||||
|
||||
/* look for logical partitions */
|
||||
if (iter->index0 >= 4 &&
|
||||
dos_next_ebr(iter, &abs_lba, &dos_part) < 0)
|
||||
return iter->status;
|
||||
|
||||
/*
|
||||
* note special index handling:
|
||||
* in case PIF_STEPALL is set - this makes the index consistent with
|
||||
* non-PIF_STEPALL iterators
|
||||
*/
|
||||
|
||||
if (!dos_part->ostype)
|
||||
iter->index = -1;
|
||||
else
|
||||
iter->index = iter->index0 + 1 - iter->dos.logskipcnt;
|
||||
iter->abs_lba = abs_lba;
|
||||
iter->length = dos_part->length;
|
||||
iter->record = (char *)dos_part;
|
||||
|
||||
#ifdef DEBUG
|
||||
disk_dos_part_dump(dos_part);
|
||||
#endif
|
||||
|
||||
return iter->status;
|
||||
}
|
||||
|
||||
static int pi_gpt_next(struct part_iter *iter)
|
||||
{
|
||||
const struct disk_gpt_part_entry *gpt_part = NULL;
|
||||
|
||||
if (iter->status)
|
||||
return iter->status;
|
||||
|
||||
while (++iter->index0 < iter->gpt.pe_count) {
|
||||
gpt_part = (const struct disk_gpt_part_entry *)
|
||||
(iter->data + iter->index0 * iter->gpt.pe_size);
|
||||
|
||||
if (notsane_gpt(iter)) {
|
||||
iter->status = PI_INSANE;
|
||||
return iter->status;
|
||||
}
|
||||
|
||||
if (!guid_is0(&gpt_part->type) || (iter->flags & PIF_STEPALL))
|
||||
break;
|
||||
}
|
||||
/* no more partitions ? */
|
||||
if (iter->index0 == iter->gpt.pe_count) {
|
||||
iter->status = PI_DONE;
|
||||
return iter->status;
|
||||
}
|
||||
/* gpt_part is guaranteed to be valid here */
|
||||
iter->index = iter->index0 + 1;
|
||||
iter->abs_lba = gpt_part->lba_first;
|
||||
iter->length = gpt_part->lba_last - gpt_part->lba_first + 1;
|
||||
iter->record = (char *)gpt_part;
|
||||
memcpy(&iter->gpt.part_guid, &gpt_part->uid, sizeof(struct guid));
|
||||
gpt_conv_label(iter);
|
||||
|
||||
#ifdef DEBUG
|
||||
disk_gpt_part_dump(gpt_part);
|
||||
#endif
|
||||
|
||||
return iter->status;
|
||||
}
|
||||
|
||||
static struct part_iter *pi_alloc(void)
|
||||
{
|
||||
struct part_iter *iter;
|
||||
if (!(iter = malloc(sizeof *iter)))
|
||||
critm();
|
||||
else
|
||||
memset(iter, 0, sizeof *iter);
|
||||
return iter;
|
||||
}
|
||||
|
||||
/* pi_del() - delete iterator */
|
||||
void pi_del(struct part_iter **_iter)
|
||||
{
|
||||
if(!_iter || !*_iter)
|
||||
return;
|
||||
pi_dtor(*_iter);
|
||||
free(*_iter);
|
||||
*_iter = NULL;
|
||||
}
|
||||
|
||||
static int notsane_gpt_hdr(const struct disk_info *di, const struct disk_gpt_header *gpth, int flags)
|
||||
{
|
||||
uint64_t gpt_loff; /* offset to GPT partition list in sectors */
|
||||
uint64_t gpt_lsiz; /* size of GPT partition list in bytes */
|
||||
uint64_t gpt_lcnt; /* size of GPT partition in sectors */
|
||||
uint64_t gpt_sec; /* secondary gpt header */
|
||||
|
||||
if (!(flags & PIF_STRICT))
|
||||
return 0;
|
||||
|
||||
if (gpth->lba_alt < gpth->lba_cur)
|
||||
gpt_sec = gpth->lba_cur;
|
||||
else
|
||||
gpt_sec = gpth->lba_alt;
|
||||
gpt_loff = gpth->lba_table;
|
||||
gpt_lsiz = (uint64_t)gpth->part_size * gpth->part_count;
|
||||
gpt_lcnt = (gpt_lsiz + di->bps - 1) / di->bps;
|
||||
|
||||
/*
|
||||
* disk_read_sectors allows reading of max 255 sectors, so we use
|
||||
* it as a sanity check base. EFI doesn't specify max (AFAIK).
|
||||
*/
|
||||
if (gpt_loff < 2 || !gpt_lsiz || gpt_lcnt > 255u ||
|
||||
gpth->lba_first_usable > gpth->lba_last_usable ||
|
||||
!sane(gpt_loff, gpt_lcnt) ||
|
||||
(gpt_loff + gpt_lcnt > gpth->lba_first_usable && gpt_loff <= gpth->lba_last_usable) ||
|
||||
gpt_loff + gpt_lcnt > gpt_sec ||
|
||||
((flags & PIF_STRICTER) && (gpt_sec >= di->lbacnt)) ||
|
||||
gpth->part_size < sizeof(struct disk_gpt_part_entry))
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void try_gpt_we(const char *str, int sec)
|
||||
{
|
||||
if (sec)
|
||||
error(str);
|
||||
else
|
||||
warn(str);
|
||||
}
|
||||
|
||||
static struct disk_gpt_header *try_gpt_hdr(const struct disk_info *di, int sec, int flags)
|
||||
{
|
||||
const char *desc = sec ? "backup" : "primary";
|
||||
uint64_t gpt_cur = sec ? di->lbacnt - 1 : 1;
|
||||
struct disk_gpt_header *gpth;
|
||||
char errbuf[96];
|
||||
|
||||
gpth = disk_read_sectors(di, gpt_cur, 1);
|
||||
if (!gpth) {
|
||||
sprintf(errbuf, "Unable to read %s GPT header.", desc);
|
||||
goto out;
|
||||
}
|
||||
if(!valid_crc_gpth(gpth, flags)) {
|
||||
sprintf(errbuf, "Invalid checksum of %s GPT header.", desc);
|
||||
goto out;
|
||||
}
|
||||
if(notsane_gpt_hdr(di, gpth, flags)) {
|
||||
sprintf(errbuf, "Checksum of %s GPT header is valid, but values fail sanity checks.", desc);
|
||||
goto out;
|
||||
}
|
||||
return gpth;
|
||||
out:
|
||||
try_gpt_we(errbuf, sec);
|
||||
free(gpth);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct disk_gpt_part_entry *try_gpt_list(const struct disk_info *di, const struct disk_gpt_header *gpth, int alt, int flags)
|
||||
{
|
||||
int pri = gpth->lba_cur < gpth->lba_alt;
|
||||
const char *desc = alt ? "alternative" : "main";
|
||||
struct disk_gpt_part_entry *gptl;
|
||||
char errbuf[64];
|
||||
uint32_t gpt_lcnt; /* size of GPT partition in sectors */
|
||||
uint64_t gpt_loff; /* offset to GPT partition list in sectors */
|
||||
|
||||
gpt_lcnt = (gpth->part_size * gpth->part_count + di->bps - 1) / di->bps;
|
||||
if (!alt) {
|
||||
/* prefer header value for partition table if not asking for alternative */
|
||||
gpt_loff = gpth->lba_table;
|
||||
} else {
|
||||
/* try to read alternative, we have to calculate its position */
|
||||
if (!pri)
|
||||
gpt_loff = gpth->lba_alt + 1;
|
||||
else
|
||||
gpt_loff = gpth->lba_alt - gpt_lcnt;
|
||||
}
|
||||
|
||||
gptl = disk_read_sectors(di, gpt_loff, gpt_lcnt);
|
||||
if (!gptl) {
|
||||
sprintf(errbuf, "Unable to read %s GPT partition list.", desc);
|
||||
goto out;
|
||||
}
|
||||
if (!valid_crc_gptl(gpth, gptl, flags)) {
|
||||
sprintf(errbuf, "Invalid checksum of %s GPT partition list.", desc);
|
||||
goto out;
|
||||
}
|
||||
return gptl;
|
||||
out:
|
||||
try_gpt_we(errbuf, alt);
|
||||
free(gptl);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* pi_begin() - validate and and get proper iterator for a disk described by di */
|
||||
struct part_iter *pi_begin(const struct disk_info *di, int flags)
|
||||
{
|
||||
int isgpt = 0, ret = -1;
|
||||
struct part_iter *iter;
|
||||
struct disk_dos_mbr *mbr = NULL;
|
||||
struct disk_gpt_header *gpth = NULL;
|
||||
struct disk_gpt_part_entry *gptl = NULL;
|
||||
|
||||
/* Preallocate iterator */
|
||||
if (!(iter = pi_alloc()))
|
||||
goto out;
|
||||
|
||||
/* Read MBR */
|
||||
if (!(mbr = disk_read_sectors(di, 0, 1))) {
|
||||
error("Unable to read the first disk sector.");
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Check for MBR magic */
|
||||
if (mbr->sig != disk_mbr_sig_magic) {
|
||||
warn("No MBR magic, treating disk as raw.");
|
||||
/* looks like RAW */
|
||||
ret = pi_ctor(iter, di, flags);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Check for GPT protective MBR */
|
||||
for (size_t i = 0; i < 4; i++)
|
||||
isgpt |= (mbr->table[i].ostype == 0xEE);
|
||||
isgpt = isgpt && !(flags & PIF_PREFMBR);
|
||||
|
||||
/* Try to read GPT header */
|
||||
if (isgpt) {
|
||||
gpth = try_gpt_hdr(di, 0, flags);
|
||||
if (!gpth)
|
||||
/*
|
||||
* this read might fail if bios reports different disk size (different vm/pc)
|
||||
* not much we can do here to avoid it
|
||||
*/
|
||||
gpth = try_gpt_hdr(di, 1, flags);
|
||||
if (!gpth)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (gpth && gpth->rev.uint32 == 0x00010000 &&
|
||||
!memcmp(gpth->sig, disk_gpt_sig_magic, sizeof gpth->sig)) {
|
||||
/* looks like GPT v1.0 */
|
||||
#ifdef DEBUG
|
||||
dprintf("Looks like a GPT v1.0 disk.\n");
|
||||
disk_gpt_header_dump(gpth);
|
||||
#endif
|
||||
gptl = try_gpt_list(di, gpth, 0, flags);
|
||||
if (!gptl)
|
||||
gptl = try_gpt_list(di, gpth, 1, flags);
|
||||
if (!gptl)
|
||||
goto out;
|
||||
|
||||
/* looks like GPT */
|
||||
ret = pi_gpt_ctor(iter, di, flags, gpth, gptl);
|
||||
} else {
|
||||
/* looks like MBR */
|
||||
ret = pi_dos_ctor(iter, di, flags, mbr);
|
||||
}
|
||||
out:
|
||||
if (ret < 0) {
|
||||
free(iter);
|
||||
iter = NULL;
|
||||
}
|
||||
free(mbr);
|
||||
free(gpth);
|
||||
free(gptl);
|
||||
|
||||
return iter;
|
||||
}
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,119 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* partiter.h
|
||||
*
|
||||
* Provides disk / partition iteration.
|
||||
*/
|
||||
|
||||
#ifndef COM32_CHAIN_PARTITER_H
|
||||
#define COM32_CHAIN_PARTITER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <syslinux/disk.h>
|
||||
|
||||
/* status */
|
||||
|
||||
enum {PI_ERRLOAD = -31, PI_INSANE, PI_OK = 0, PI_DONE};
|
||||
|
||||
/* flags */
|
||||
|
||||
enum {PIF_STEPALL = 1, PIF_PREFMBR = 2, PIF_STRICT = 4, PIF_STRICTER = 8, PIF_GPTHCRC = 16, PIF_GPTLCRC = 32};
|
||||
|
||||
struct itertype;
|
||||
struct part_iter;
|
||||
|
||||
struct itertype {
|
||||
void (*dtor)(struct part_iter *);
|
||||
int (*next)(struct part_iter *);
|
||||
};
|
||||
|
||||
#define PI_GPTLABSIZE ((int)sizeof(((struct disk_gpt_part_entry *)0)->name))
|
||||
|
||||
struct part_iter {
|
||||
const struct itertype *type;
|
||||
char *data;
|
||||
char *record;
|
||||
uint64_t abs_lba;
|
||||
uint64_t length;
|
||||
int index0; /* including holes, from -1 (disk, then parts from 0) */
|
||||
int index; /* excluding holes, from 0 (disk, then parts from 1), -1 means hole, if PIF_STEPALL is set */
|
||||
int flags; /* flags, see #defines above */
|
||||
int status; /* current status, see enums above */
|
||||
struct disk_info di;
|
||||
union {
|
||||
struct {
|
||||
uint32_t disk_sig; /* 32bit disk signature as stored in MBR */
|
||||
|
||||
uint32_t bebr_lba; /* absolute lba of base extended partition */
|
||||
uint32_t bebr_siz; /* size of base extended partition */
|
||||
|
||||
uint32_t cebr_lba; /* absolute lba of curr ext. partition */
|
||||
uint32_t cebr_siz; /* size of curr ext. partition */
|
||||
uint32_t nebr_lba; /* absolute lba of next ext. partition */
|
||||
uint32_t nebr_siz; /* size of next ext. partition */
|
||||
|
||||
int bebr_index0; /* index of (0-3) of base ext. part., -1 if not present in MBR */
|
||||
int logskipcnt; /* how many logical holes were skipped */
|
||||
} dos;
|
||||
struct {
|
||||
struct guid disk_guid;
|
||||
struct guid part_guid;
|
||||
char part_label[PI_GPTLABSIZE/2+1];
|
||||
int pe_count;
|
||||
int pe_size;
|
||||
uint64_t ufirst;
|
||||
uint64_t ulast;
|
||||
} gpt;
|
||||
};
|
||||
};
|
||||
|
||||
extern const struct itertype * const typedos;
|
||||
extern const struct itertype * const typegpt;
|
||||
extern const struct itertype * const typeraw;
|
||||
|
||||
struct part_iter *pi_begin(const struct disk_info *, int flags);
|
||||
void pi_del(struct part_iter **);
|
||||
|
||||
/* inline virtuals */
|
||||
static inline int pi_next(struct part_iter *iter)
|
||||
{
|
||||
return iter->type->next(iter);
|
||||
}
|
||||
|
||||
static inline void pi_dtor(struct part_iter *iter)
|
||||
{
|
||||
iter->type->dtor(iter);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,256 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include <com32.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <fs.h>
|
||||
#include <syslinux/disk.h>
|
||||
#include <syslinux/pmapi.h>
|
||||
#include "utility.h"
|
||||
|
||||
static const char *bpbtypes[] = {
|
||||
[0] = "unknown",
|
||||
[1] = "2.0",
|
||||
[2] = "3.0",
|
||||
[3] = "3.2",
|
||||
[4] = "3.4",
|
||||
[5] = "4.0",
|
||||
[6] = "8.0 (NT+)",
|
||||
[7] = "7.0",
|
||||
[8] = "exFAT",
|
||||
};
|
||||
|
||||
void wait_key(void)
|
||||
{
|
||||
int cnt;
|
||||
char junk;
|
||||
|
||||
/* drain */
|
||||
do {
|
||||
errno = 0;
|
||||
cnt = read(0, &junk, 1);
|
||||
} while (cnt > 0 || (cnt < 0 && errno == EAGAIN));
|
||||
|
||||
/* wait */
|
||||
do {
|
||||
errno = 0;
|
||||
cnt = read(0, &junk, 1);
|
||||
} while (!cnt || (cnt < 0 && errno == EAGAIN));
|
||||
}
|
||||
|
||||
int guid_is0(const struct guid *guid)
|
||||
{
|
||||
return
|
||||
!(guid->data1 ||
|
||||
guid->data2 ||
|
||||
guid->data3 ||
|
||||
guid->data4);
|
||||
}
|
||||
|
||||
/*
|
||||
* mode explanation:
|
||||
*
|
||||
* cnul - "strict" mode, never returning higher value than obtained from cbios
|
||||
* cadd - if the disk is larger than reported geometry /and/ if the geometry has
|
||||
* less cylinders than 1024 - it means that the total size is somewhere
|
||||
* between cs and cs+1; in this particular case, we bump the cs to be able
|
||||
* to return matching chs triplet
|
||||
* cmax - assume we can use any cylinder value
|
||||
*
|
||||
* by default cadd seems most reasonable, giving consistent results with e.g.
|
||||
* sfdisk's behavior
|
||||
*/
|
||||
void lba2chs(disk_chs *dst, const struct disk_info *di, uint64_t lba, int mode)
|
||||
{
|
||||
uint32_t c, h, s, t;
|
||||
uint32_t cs, hs, ss;
|
||||
|
||||
/*
|
||||
* Not much reason here, but if we have no valid CHS geometry, we assume
|
||||
* "typical" ones to have something to return.
|
||||
*/
|
||||
if (di->cbios) {
|
||||
cs = di->cyl;
|
||||
hs = di->head;
|
||||
ss = di->spt;
|
||||
if (mode == L2C_CADD) {
|
||||
if (cs < 1024 && di->lbacnt > cs*hs*ss)
|
||||
cs++;
|
||||
} else if (mode == L2C_CMAX)
|
||||
cs = 1024;
|
||||
} else {
|
||||
if (di->disk & 0x80) {
|
||||
cs = 1024;
|
||||
hs = 255;
|
||||
ss = 63;
|
||||
} else {
|
||||
cs = 80;
|
||||
hs = 2;
|
||||
ss = 18;
|
||||
}
|
||||
}
|
||||
|
||||
if (lba >= cs*hs*ss) {
|
||||
s = ss;
|
||||
h = hs - 1;
|
||||
c = cs - 1;
|
||||
} else {
|
||||
s = (lba % ss) + 1;
|
||||
t = lba / ss;
|
||||
h = t % hs;
|
||||
c = t / hs;
|
||||
}
|
||||
|
||||
(*dst)[0] = h;
|
||||
(*dst)[1] = s | ((c & 0x300) >> 2);
|
||||
(*dst)[2] = c;
|
||||
}
|
||||
|
||||
uint32_t get_file_lba(const char *filename)
|
||||
{
|
||||
struct com32_filedata fd;
|
||||
uint32_t lba = 0;
|
||||
int size = 65536;
|
||||
char *buf;
|
||||
|
||||
buf = lmalloc(size);
|
||||
if (!buf)
|
||||
return 0;
|
||||
|
||||
/* Put the filename in the bounce buffer */
|
||||
strlcpy(buf, filename, size);
|
||||
|
||||
if (open_file(buf, O_RDONLY, &fd) <= 0) {
|
||||
goto fail; /* Filename not found */
|
||||
}
|
||||
|
||||
/* Since the first member is the LBA, we simply cast */
|
||||
lba = *((uint32_t *) MK_PTR(0, fd.handle));
|
||||
|
||||
/* Call comapi_close() to free the structure */
|
||||
close_file(fd.handle);
|
||||
|
||||
fail:
|
||||
lfree(buf);
|
||||
return lba;
|
||||
}
|
||||
|
||||
/* drive offset detection */
|
||||
int drvoff_detect(int type)
|
||||
{
|
||||
if (bpbV40 <= type && type <= bpbVNT) {
|
||||
return 0x24;
|
||||
} else if (type == bpbV70) {
|
||||
return 0x40;
|
||||
} else if (type == bpbEXF) {
|
||||
return 0x6F;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* heuristics could certainly be improved
|
||||
*/
|
||||
int bpb_detect(const uint8_t *sec, const char *tag)
|
||||
{
|
||||
int a, b, c, jmp = -1, rev = 0;
|
||||
|
||||
/* exFAT mess first (media descriptor is 0 here) */
|
||||
if (!memcmp(sec + 0x03, "EXFAT ", 8)) {
|
||||
rev = bpbEXF;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* media descriptor check */
|
||||
if ((sec[0x15] & 0xF0) != 0xF0)
|
||||
goto out;
|
||||
|
||||
if (sec[0] == 0xEB) /* jump short */
|
||||
jmp = 2 + *(int8_t *)(sec + 1);
|
||||
else if (sec[0] == 0xE9) /* jump near */
|
||||
jmp = 3 + *(int16_t *)(sec + 1);
|
||||
|
||||
if (jmp < 0) /* no boot code at all ? */
|
||||
goto nocode;
|
||||
|
||||
/* sanity */
|
||||
if (jmp < 0x18 || jmp > 0x1F0)
|
||||
goto out;
|
||||
|
||||
/* detect by jump */
|
||||
if (jmp >= 0x18 && jmp < 0x1E)
|
||||
rev = bpbV20;
|
||||
else if (jmp >= 0x1E && jmp < 0x20)
|
||||
rev = bpbV30;
|
||||
else if (jmp >= 0x20 && jmp < 0x24)
|
||||
rev = bpbV32;
|
||||
else if (jmp >= 0x24 && jmp < 0x46)
|
||||
rev = bpbV34;
|
||||
|
||||
/* TODO: some better V2 - V3.4 checks ? */
|
||||
|
||||
if (rev)
|
||||
goto out;
|
||||
/*
|
||||
* BPB info:
|
||||
* 2.0 == 0x0B - 0x17
|
||||
* 3.0 == 2.0 + 0x18 - 0x1D
|
||||
* 3.2 == 3.0 + 0x1E - 0x1F
|
||||
* 3.4 ==!2.0 + 0x18 - 0x23
|
||||
* 4.0 == 3.4 + 0x24 - 0x45
|
||||
* NT ==~3.4 + 0x24 - 0x53
|
||||
* 7.0 == 3.4 + 0x24 - 0x59
|
||||
*/
|
||||
|
||||
nocode:
|
||||
a = memcmp(sec + 0x03, "NTFS", 4);
|
||||
b = memcmp(sec + 0x36, "FAT", 3);
|
||||
c = memcmp(sec + 0x52, "FAT", 3); /* ext. DOS 7+ bs */
|
||||
|
||||
if ((sec[0x26] & 0xFE) == 0x28 && !b) {
|
||||
rev = bpbV40;
|
||||
} else if (sec[0x26] == 0x80 && !a) {
|
||||
rev = bpbVNT;
|
||||
} else if ((sec[0x42] & 0xFE) == 0x28 && !c) {
|
||||
rev = bpbV70;
|
||||
}
|
||||
|
||||
out:
|
||||
printf("BPB detection (%s): %s\n", tag, bpbtypes[rev]);
|
||||
return rev;
|
||||
}
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,75 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
|
||||
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
|
||||
* Copyright 2010 Shao Miller
|
||||
* Copyright 2010-2015 Michal Soltys
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef COM32_CHAIN_UTILITY_H
|
||||
#define COM32_CHAIN_UTILITY_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <syslinux/disk.h>
|
||||
#include <syslinux/movebits.h>
|
||||
|
||||
/* most (all ?) bpb "types" known to humankind as of 2012 */
|
||||
enum {bpbUNK, bpbV20, bpbV30, bpbV32, bpbV34, bpbV40, bpbVNT, bpbV70, bpbEXF};
|
||||
|
||||
/* see utility.c for details */
|
||||
enum {L2C_CNUL, L2C_CADD, L2C_CMAX};
|
||||
|
||||
/* first usable and first unusable offsets */
|
||||
#define dosmin ((addr_t)0x500u)
|
||||
#define dosmax ((addr_t)(*(uint16_t *) 0x413 << 10))
|
||||
|
||||
void wait_key(void);
|
||||
void lba2chs(disk_chs *dst, const struct disk_info *di, uint64_t lba, int mode);
|
||||
uint32_t get_file_lba(const char *filename);
|
||||
int drvoff_detect(int type);
|
||||
int bpb_detect(const uint8_t *bpb, const char *tag);
|
||||
int guid_is0(const struct guid *guid);
|
||||
|
||||
static inline int warn(const char *x)
|
||||
{
|
||||
return fprintf(stderr, "WARN: %s\n", x);
|
||||
}
|
||||
|
||||
static inline int error(const char *x)
|
||||
{
|
||||
return fprintf(stderr, "ERR: %s\n", x);
|
||||
}
|
||||
|
||||
static inline int crit(const char *x)
|
||||
{
|
||||
return fprintf(stderr, "CRIT: %s @%s:%d\n", x, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
#define critm() crit("Malloc failure.")
|
||||
|
||||
#endif
|
||||
|
||||
/* vim: set ts=8 sts=4 sw=4 noet: */
|
|
@ -0,0 +1,32 @@
|
|||
Changes in v1.2
|
||||
---------------
|
||||
* Allowed menu's to have names. Submenu's can be referred to by names
|
||||
instead of their index in the menu system. This allows user to refer
|
||||
to submenus which are not yet part of the menusystem.
|
||||
* help pages can be longer than one screen
|
||||
* menugen.py: Python script for converting .menu files to C source code
|
||||
.menu files can be used to descibe most static uses of menu system,
|
||||
including SubMenus, Checkboxes, RadioButtons, User Authentication and
|
||||
Context sensitive help. You can also restrict use of certain items
|
||||
to users with certain credentials.
|
||||
|
||||
See MENU_FORMAT for the format of .menu files
|
||||
|
||||
* display.c32: Takes the name of the text file to display and displays it
|
||||
allowing user to scroll through the text.
|
||||
|
||||
USAGE: display.c32 <filename>
|
||||
|
||||
<filename> must be an absolute filename (including the /isolinux part)
|
||||
|
||||
Changes in v1.1
|
||||
---------------
|
||||
* Additional handler type: Keys handler
|
||||
* Menuitem handlers now have a return value of type t_handler_return.
|
||||
For all simple cases, you just return ACTION_VALID or ACTION_INVALID
|
||||
(For some types of menu items, handlers are ignored, and for
|
||||
others the return value is ignored)
|
||||
* add_menu takes an extra argument (to better control memory footprint)
|
||||
You can just set it to -1 to choose the default value
|
||||
* Now the menu system support long menu's using scroll bars.
|
||||
* Support for passwords and context sensitive help is added.
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
GCC & 32-bit code
|
||||
-----------------
|
||||
Due to the limitations of the COM file format,
|
||||
(64KB limit on memory footprint) the code has been changed
|
||||
so that the code compiles to a 32-bit COMBOOT program.
|
||||
Since the code makes use of BIOS calls, this code cannot be
|
||||
compiled into a format which can execute under Linux. As a
|
||||
side effect, there is no nice way to debug this code. In order
|
||||
to debug this code, you will have to run the code under syslinux.
|
||||
|
||||
GCC & 16-bit code
|
||||
-----------------
|
||||
The code was ported to GCC by Peter Anvin.
|
||||
|
||||
OpenWatcom & 16-bit code
|
||||
------------------------
|
||||
Originally this code was written for the Openwatcom compiler
|
||||
and generated .COM files, which could execute under DOS as well as
|
||||
SYSLINUX.
|
|
@ -0,0 +1,348 @@
|
|||
Overview of writing code using the menu system
|
||||
----------------------------------------------
|
||||
|
||||
This file contains implementation and developer documentation.
|
||||
For simple cases, you should start by using simple.c as a template.
|
||||
complex.c illustrates most of the features available in the menu system.
|
||||
|
||||
Menu Features currently supported are:
|
||||
* menu items,
|
||||
* submenus,
|
||||
* disabled items,
|
||||
* checkboxes,
|
||||
* invisible items (useful for dynamic menus), and
|
||||
* Radio menus,
|
||||
* Context sensitive help
|
||||
* Authenticated users
|
||||
|
||||
The keys used are:
|
||||
|
||||
* Arrow Keys, PgUp, PgDn, Home, End Keys
|
||||
* Space to switch state of a checkbox
|
||||
* Enter to choose the item
|
||||
* Escape to exit from it
|
||||
* Shortcut keys
|
||||
|
||||
1. Overview
|
||||
-----------
|
||||
|
||||
The code usually consists of many stages.
|
||||
|
||||
* Configuring the menusytem
|
||||
* Installing global handlers [optional]
|
||||
* Populating the menusystem
|
||||
* Executing the menusystem
|
||||
* Processing the result
|
||||
|
||||
1.1 Configuring the menusystem
|
||||
------------------------------
|
||||
This includes setting the window the menu system should use,
|
||||
the choice of colors, the title of the menu etc. In most functions
|
||||
calls, a value of -1 indicates that the default value be used.
|
||||
For details about what the arguments are look at function
|
||||
declarations in menu.h
|
||||
|
||||
<code>
|
||||
// Choose the default title and setup default values for all attributes....
|
||||
init_menusystem(NULL);
|
||||
set_window_size(1,1,23,78); // Leave one row/col border all around
|
||||
|
||||
// Choose the default values for all attributes and char's
|
||||
// -1 means choose defaults (Actually the next 4 lines are not needed)
|
||||
set_normal_attr (-1,-1,-1,-1);
|
||||
set_status_info (-1,-1);
|
||||
set_title_info (-1,-1);
|
||||
set_misc_info(-1,-1,-1,-1);
|
||||
</code>
|
||||
|
||||
1.2 Populating the menusystem
|
||||
-----------------------------
|
||||
This involves adding a menu to the system, and the options which
|
||||
should appear in the menu. An example is given below.
|
||||
|
||||
<code>
|
||||
MAINMENU = add_menu(" Menu Title ",-1);
|
||||
CHECKED = 1;
|
||||
add_item("option1","Status 1",OPT_RUN,"kernel1 arg1=val1",0);
|
||||
add_item("selfloop","Status 2",OPT_SUBMENU,NULL,MAINMENU);
|
||||
add_item("othermenu","Status 3",OPT_SUBMENU,"menuname",0);
|
||||
add_sep();
|
||||
add_item("checkbox,"Checkbox Info",OPT_CHECKBOX,NULL,CHECKED);
|
||||
add_item("Exit ","Status String",OPT_EXITMENU,NULL,0);
|
||||
</code>
|
||||
|
||||
The call to add_menu has two arguments, the first being the title of
|
||||
the menu and the second an upper bound on the number of items in the menu.
|
||||
Putting a -1, will use the default (see MENUSIZE in menu.h). If you try
|
||||
to add more items than specified, the extra items will not appear in
|
||||
the menu. The accuracy of this number affects the memory required
|
||||
to run the system.
|
||||
|
||||
If you do not want to keep track of the return values, you can also use
|
||||
the following variant of add_menu
|
||||
|
||||
<code>
|
||||
add_named_menu("main"," Menu Title ",-1)
|
||||
</code>
|
||||
|
||||
This creates a new menu as before and gives it a name "main". When using named
|
||||
menus, you get an alternate way for adding submenu's. See below for details.
|
||||
|
||||
The call to add_item has five arguments.
|
||||
The first argument is the text which appears in the menu itself.
|
||||
The second argument is the text displayed in the status line.
|
||||
The third argument indicates the type of this menuitem. It is one of
|
||||
the following
|
||||
|
||||
* OPT_RUN : executable content
|
||||
* OPT_EXITMENU : exits menu to parent
|
||||
* OPT_SUBMENU : if selected, displays a submenu
|
||||
* OPT_CHECKBOX : associates a boolean with this item which can be toggled
|
||||
* OPT_RADIOMENU: associates this with a radio menu.
|
||||
After execution, the data field of this item will point
|
||||
to the option selected.
|
||||
* OPT_SEP : A menu seperator (visually divide menu into parts)
|
||||
* OPT_RADIOITEM: this item is one of the options in a RADIOMENU
|
||||
* OPT_INACTIVE : A disabled item (user cannot select this)
|
||||
* OPT_INVISIBLE: This item will not be displayed.
|
||||
|
||||
The fourth argument is the value of the data field always a string.
|
||||
Usually this string is just copied and nothing is done with it. Two
|
||||
cases, where it is used.
|
||||
|
||||
In case of a radiomenu the input string is ignored and the "data" field
|
||||
points to the menuitem chosen (Dont forget to typecast this pointer to
|
||||
(t_menuitem *) when reading this info).
|
||||
|
||||
In case of a submenu, this string if non-trivial is interpreted as the
|
||||
name of the submenu which should be linked there. This interpretation
|
||||
happens when the menu is first run and not when the menu system is being
|
||||
created. This allows the user to create the menusystem in an arbitrary
|
||||
order.
|
||||
|
||||
|
||||
The fifth argument is a number whose meaning depends on the type of the
|
||||
item. For a CHECKBOX it should be 0/1 setting the initial state of the
|
||||
checkbox. For a SUBMENU it should be the index of the menu which should
|
||||
be displayed if this option is chosen. Incase the data field is non-trivial,
|
||||
this number is ignored and computed later. For a RADIOMENU it should be the
|
||||
index of the menu which contains all the options (All items in that menu
|
||||
not of type RADIOITEM are ignored). For all other types, this
|
||||
argument has no meaning at all.
|
||||
|
||||
A call to add_sep is a convenient shorthand for calling add_item
|
||||
with the type set to OPT_SEP.
|
||||
|
||||
1.3 Executing the menusystem
|
||||
----------------------------
|
||||
This is the simplest of all. Just call showmenus, with the index
|
||||
of the main menu as its argument. It returns a pointer to the menu
|
||||
item which was selected by the user.
|
||||
|
||||
<code>
|
||||
choice = showmenus(MAIN); // Initial menu is the one with index MAIN
|
||||
// or choice = showmenus(find_menu_num("main")); // Initial menu is the one named "main"
|
||||
</code>
|
||||
|
||||
1.4 Processing the result
|
||||
-------------------------
|
||||
This pointer will either be NULL (user hit Escape) or always point
|
||||
to a menuitem which can be "executed", i.e. it will be of type OPT_RUN.
|
||||
Usually at this point, all we need to do is to ask syslinux to run
|
||||
the command associated with this menuitem. The following code executes
|
||||
the command stored in choice->data (there is no other use for the data
|
||||
field, except for radiomenu's)
|
||||
|
||||
<code>
|
||||
if (choice)
|
||||
{
|
||||
if (choice->action == OPT_RUN)
|
||||
{
|
||||
if (syslinux) runcommand(choice->data);
|
||||
else csprint(choice->data,0x07);
|
||||
return 1;
|
||||
}
|
||||
csprint("Error in programming!",0x07);
|
||||
}
|
||||
</code>
|
||||
|
||||
2. Advanced features
|
||||
--------------------
|
||||
Everycall to add_item actually returns a pointer to the menuitem
|
||||
created. This can be useful when using any of the advanced features.
|
||||
|
||||
2.1 extra_data
|
||||
--------------
|
||||
For example, every menuitem has an "extra_data" field (a pointer)
|
||||
which the user can use to point any data he/she pleases. The menusystem
|
||||
itself does not use this field in anyway.
|
||||
|
||||
2.2 helpid
|
||||
----------
|
||||
Every item also has a field called "helpid". It is meant to hold some
|
||||
kind of identifier which can be referenced and used to generate
|
||||
a context sensitive help system. This can be set after a call to
|
||||
add_item as follows
|
||||
<code>
|
||||
add_item("selfloop","Status 2",OPT_SUBMENU,NULL,MAINMENU);
|
||||
set_item_options('A',4516);
|
||||
</code>
|
||||
|
||||
The first is the shortcut key for this entry. You can put -1 to ensure
|
||||
that the shortcut key is not reset. The second is some unsigned integer.
|
||||
If this value is 0xFFFF, then the helpid is not changed.
|
||||
|
||||
2.3 Installing global handlers
|
||||
------------------------------
|
||||
It is possible to register handlers for the menu system. These are
|
||||
user functions which are called by the menusystem in certain
|
||||
situations. Usually the handlers get a pointer to the menusystem
|
||||
datastructure as well as a pointer to the current item selected.
|
||||
Some handlers may get additional information. Some handlers are
|
||||
required to return values while others are not required to do so.
|
||||
|
||||
Currently the menusystem support three types of global handlers
|
||||
* timeout handler
|
||||
* screen handler
|
||||
* keys handler
|
||||
|
||||
2.3.1 timeout handler
|
||||
---------------------
|
||||
This is installed using a call to "reg_ontimeout(fn,numsteps,stepsize)"
|
||||
function. fn is a pointer to a function which takes no arguments and
|
||||
returns one of CODE_WAIT, CODE_ENTER, CODE_ESCAPE. This function is
|
||||
called when numsteps*stepsize Centiseconds have gone by without any
|
||||
user input. If the function returns CODE_WAIT then the menusystem
|
||||
waits for user input (for another numsteps*stepsize Centiseconds). If
|
||||
CODE_ENTER or CODE_ESCAPE is returned, then the system pretends that
|
||||
the user hit ENTER or ESCAPE on the keyboard and acts accordingly.
|
||||
|
||||
2.3.2 Screen handler
|
||||
--------------------
|
||||
This is installed using a call to "reg_handler(HDLR_SCREEN,fn)". fn is
|
||||
a pointer to a function which takes a pointer to the menusystem
|
||||
datastructure and the current item selected and returns nothing.
|
||||
This is called everytime a menu is drawn (i.e. everytime user changes
|
||||
the current selection). This is meant for displaying any additional
|
||||
information which reflects the current state of the system.
|
||||
|
||||
2.3.3 Keys handler
|
||||
------------------
|
||||
This is installed using a call to "reg_handler(HDLR_KEYS,fn)". fn is
|
||||
a pointer to a function which takes a pointer to the menusystem
|
||||
datastructure, the current item and the scan code of a key and returns
|
||||
nothing. This function is called when the user presses a key which
|
||||
the menusystem does not know to dealwith. In any case, when this call
|
||||
returns the screen should not have changed in any way. Usually,
|
||||
one can change the active page and display any output needed and
|
||||
reset the active page when you return from this call.
|
||||
|
||||
complex.c implements a key_handler, which implements a simple
|
||||
context sensitive help system, by displaying the contents of a
|
||||
file whose name is based on the helpid of the active item.
|
||||
|
||||
Also, complex.c's handler allows certain users to make changes
|
||||
to edit the commands associated with a menu item.
|
||||
|
||||
2.4 Installing item level handlers
|
||||
----------------------------------
|
||||
In addition to global handlers, one can also install handlers for each
|
||||
individual item. A handler for an individual item is a function which
|
||||
takes a pointer to the menusystem datastructure and a pointer to the
|
||||
current item and return a structure of type t_handler_return. Currently
|
||||
it has two bit fields "valid" and "refresh".
|
||||
|
||||
This handler is called when the user hits "enter" on a RUN item, or
|
||||
changes the status of a CHECKBOX, or called *after* a radio menu choice
|
||||
has been set. In all other cases, installing a handler has no effect.
|
||||
|
||||
The handler can change any of the internal datastructures it pleases.
|
||||
For e.g. in a radiomenu handler, one can change the text displayed
|
||||
on the menuitem depending on which choice was selected (see complex.c
|
||||
for an example). The return values are ignored for RADIOMENU's.
|
||||
|
||||
In case of RUN items: the return values are used as follows. If the
|
||||
return value of "valid" was false, then this user choice is ignored.
|
||||
This is useful if the handler has useful side effects. For e.g.
|
||||
complex.c has a Login item, whose handler always return INVALID. It
|
||||
sets a global variable to the name of the user logged in, and enables
|
||||
some menu items, and makes some invisible items visible.
|
||||
|
||||
* If the handler does not change the visibility status of any items,
|
||||
the handler should set "refresh" to 0.
|
||||
* If the handler changes the visibility status of items in the current
|
||||
menu set "refresh" to 1.
|
||||
* If you are changing the visibility status of items in menu's currently
|
||||
not displayed, then you can set "refresh" to 0.
|
||||
* Changing the visibility status of items in another menu
|
||||
which is currently displayed, is not supported. If you do it,
|
||||
the screen contents may not reflect the change until you get to the
|
||||
menu which was changed. When you do get to that menu, you may notice
|
||||
pieces of the old menu still on the screen.
|
||||
|
||||
In case of CHECKBOXES: the return value of "valid" is ignored. Because,
|
||||
the handler can change the value of checkbox if the user selected value
|
||||
is not appropriate. only the value of "refresh" is honored. In this case
|
||||
all the caveats in the previous paragraph apply.
|
||||
|
||||
menu.h defines two instances of t_handler_return
|
||||
ACTION_VALID and ACTION_INVALID for common use. These set the valid flag
|
||||
to 1 and 0 respectively and the refresh flag to 0.
|
||||
|
||||
3. Things to look out for
|
||||
-------------------------
|
||||
When you define the menu system, always declare it in the opposite
|
||||
order, i.e. all lower level menu's should be defined before the higher
|
||||
level menus. This is because in order to define the MAINMENU, you need
|
||||
to know the index assigned to all its submenus.
|
||||
|
||||
4. Additional Modules
|
||||
---------------------
|
||||
You can make use of the following additional modules, in writing your
|
||||
handlers.
|
||||
|
||||
* Passwords
|
||||
* Help
|
||||
|
||||
4.1 Passwords
|
||||
-------------
|
||||
This module was written by Th. Gebhardt. This is basically a modification
|
||||
of the DES crypt function obtained by removing the dependence of the
|
||||
original crypt function on C libraries. The following functions are
|
||||
defined
|
||||
|
||||
init_passwords(PWDFILE)
|
||||
// Read in the password database from the file
|
||||
authenticate_user(user,pwd)
|
||||
// Checks if user,pwd is valid
|
||||
isallowed(user,perm)
|
||||
// Checks if the user has a specified permission
|
||||
close_passwords()
|
||||
// Unloads password database from memory
|
||||
|
||||
See the sample password file for more details about the file format
|
||||
and the implementation of permissions.
|
||||
|
||||
See complex.c for a example of how to use this.
|
||||
|
||||
4.2 Help
|
||||
--------
|
||||
This can be used to set up a context sensitive help system. The following
|
||||
functions are defined
|
||||
|
||||
init_help(HELPBASEDIR)
|
||||
// Initialises the help system. All help files will be loaded
|
||||
// from the directory specified.
|
||||
runhelpsystem(context)
|
||||
// Displays the contents of HELPBASEDIR/hlp<context>.txt
|
||||
|
||||
In order to have a functioning help system, you just need to create
|
||||
the hlp<NNNNN>.txt files and initialize the help system by specifying
|
||||
the base directory.
|
||||
|
||||
The first line of this file assumed to be the title of the help screen.
|
||||
You can use ^N and ^O to change attributes absolutely and relatively,
|
||||
i.e. [^O]46 (i.e. Ctrl-O followed by chars 4 and 6) will set the
|
||||
attribute to 46, while [^N]08 will XOR the current attribute with
|
||||
specified number, thus in this case the first [^N]08 will turn on
|
||||
highlighting and the second one will turn it off.
|
|
@ -0,0 +1,262 @@
|
|||
A .menu file can be used to describe basic menu structures which can be converted
|
||||
into C code which can then be compiled into a .c32 file for use with SYSLINUX.
|
||||
The format of a .menu file is similar to an ini file, but with important
|
||||
differences.
|
||||
|
||||
Lines starting with # and ; are treated as comments. Blank lines are used to
|
||||
separate the attributes of one menu item from another. Multiple blank lines are
|
||||
equivalent to a single one. In other contexts Blank lines are not significant.
|
||||
|
||||
Menus
|
||||
-----
|
||||
Each menu declaration starts with a line containing the name of menu in [ ].
|
||||
This is the "nickname" of the menu and should be different for different menus.
|
||||
This is not visible to the user of the menu system. The initial menu must
|
||||
be called "main"
|
||||
|
||||
The menu declaration is followed by lines which set the attributes of the menu.
|
||||
This is followed by a blank line and followed by declaration of menu items in
|
||||
that menu.
|
||||
|
||||
All lines which occur before the first menu declaration is considered as
|
||||
a global declaration.
|
||||
|
||||
Abstract Format
|
||||
---------------
|
||||
|
||||
The overall format should look like this
|
||||
|
||||
--------------------------------------------------------
|
||||
<GLOBAL SETTINGS>
|
||||
|
||||
[menuname1]
|
||||
|
||||
<MENU SETTINGS>
|
||||
|
||||
<ITEM 1>
|
||||
|
||||
...
|
||||
|
||||
<ITEM N>
|
||||
|
||||
[menuname2]
|
||||
|
||||
<MENU SETTINGS>
|
||||
|
||||
<ITEM A>
|
||||
|
||||
<ITEM B>
|
||||
|
||||
----------------------------------------------------------
|
||||
|
||||
GLOBAL SETTINGS
|
||||
---------------
|
||||
The following global settings are now supported. Many of the keywords
|
||||
accept what we call a "DOT COMMAND" as argument. Simply put they are
|
||||
instructions to the menu system to perform certain actions.
|
||||
The syntax and semantics of DOT COMMANDS are given later in the section
|
||||
titled "DOT COMMANDS".
|
||||
|
||||
videomode: (default 0xFF) [Use with care]
|
||||
The textmode in which the whole menu system should operate.
|
||||
Must be a number (use 0x notation for hexadecimal).
|
||||
Lookup Ralph Brown Interrupt List and search for Video Mode
|
||||
to find a number to put here.
|
||||
|
||||
setting to 0xFF will mean, menu system will use the current
|
||||
video mode.
|
||||
|
||||
title:
|
||||
The title of the whole menu system
|
||||
|
||||
top, left, bot, right: (default 0,0,21,79)
|
||||
The area of the screen used by the menu system. The remaining
|
||||
part of the screen can be used by the user for anything.
|
||||
|
||||
helpdir: (default /isolinux/help)
|
||||
Location of the directory where help information is stored. The
|
||||
help files must be called "hlpNNNNN.txt" where NNNNN is the helpid.
|
||||
|
||||
pwdfile: (default /isolinux/passwd)
|
||||
The name of the password file which contains user, password and permissions
|
||||
See "passwd" file for details regarding format of this file
|
||||
|
||||
editrow: (default 23)
|
||||
the row on the screen where one can edit the command line. This must
|
||||
be outside the menu area. Set this to a negative number to disable
|
||||
editing the command line. In case of authenticated users, the current
|
||||
user must have "editcmd" permissions to edit the command line
|
||||
|
||||
pwdrow: (default 23)
|
||||
The row on the screen used for user authentication. Must be outside
|
||||
menu area (can be same as editrow). Set to negative to disable
|
||||
user authentication
|
||||
|
||||
skipif: (default 0)
|
||||
The OR of the bits in the Shift-flags any of which can cause the menu system
|
||||
to be skipped all together (0 means menu system always runs). It can also
|
||||
be a combination of "Alt","Ctrl","Shift","Caps","Ins","Scroll".
|
||||
When menu system starts it checks if any of the specified keys are On/pressed.
|
||||
If true, the system exits immediately and executes the skipcmd.
|
||||
|
||||
e.g. setting it to "shift-alt-caps" means menu will be skipped if alt OR shift
|
||||
is pressed OR caps is on. setting to "0" means menu will always run.
|
||||
|
||||
skipcmd: (default .exit)
|
||||
valid terminal commands: .exit .ignore or any syslinux command
|
||||
command to execute if menu system is skipped. This must be a non-trivial
|
||||
syslinux command if skipcondn is not "0". ".exit" means menu system
|
||||
quits back to the boot prompt.
|
||||
|
||||
startfile: (default "")
|
||||
if non-empty the system will display the contents of this file before launching
|
||||
the menusystem. This happens only if the menusystem is not skipped. Can be used
|
||||
to display licensing, usage or welcome messages. A file with given name
|
||||
is expected to be found in the helpdir directory.
|
||||
|
||||
exitcmd: (default .exit)
|
||||
valid terminal commands: .exit .repeat or any syslinux command
|
||||
The default command to execute when user quits the menu system.
|
||||
|
||||
exitcmdroot: (default =exitcmd)
|
||||
Same as exitcmd except applies when current user has "root" privileges. If not
|
||||
specified, it is assumed to be the same as exitcmd
|
||||
|
||||
timeout: (default 3000)
|
||||
The amount of time (in multiple of 0.1 seconds) to wait for user keypress. If no
|
||||
key pressed for specified duration then the timeoutcmd is executed.
|
||||
|
||||
totaltimeout: (default 0)
|
||||
The total amount of time (in multiples of 0.1 seconds) the system will wait for
|
||||
user to make a decision. If no decision has been made in the specified duration
|
||||
totaltimeoutcmd will be executed
|
||||
|
||||
NOTE: This does not include the time spent browsing the help system or
|
||||
the time taken for the user to enter his/her authentication credentials.
|
||||
|
||||
timeoutcmd: (default .beep)
|
||||
valid terminal commands: .wait .enter .escape or any syslinux command
|
||||
command to execute when we timeout waiting for user input. The commands
|
||||
.enter and .escape tell the menu system to pretend the user typed ENTER or
|
||||
ESCAPE on the keyboard, while .wait tells the menusystem to wait for one
|
||||
more time period
|
||||
|
||||
totaltimeoutcmd: (default .wait)
|
||||
choices are the same as for timeoutcmd
|
||||
|
||||
MENU SETTINGS
|
||||
-------------
|
||||
|
||||
title: (must be specified)
|
||||
Title of this menu
|
||||
|
||||
row,col: [Usage not recomended]
|
||||
position in screen where this menu should be placed. By default the
|
||||
system will choose an appropriate location.
|
||||
|
||||
ITEM ATTRIBUTES
|
||||
---------------
|
||||
|
||||
item:
|
||||
The string displayed to the user. Characters enclosed in < > are highlighted.
|
||||
|
||||
shortcut: (default -1) valid values A-Za-z0-9 or -1 [Usage not recommended]
|
||||
Sets the shortcut key for this item. If set to -1, the system scans for the first
|
||||
highlighted letter in the given range and sets that as the shortcut key.
|
||||
|
||||
info: (default same as data)
|
||||
Additional textual information displayed in the status bar
|
||||
|
||||
type:
|
||||
the type of entry this item represents. This is one of the following:
|
||||
|
||||
run: choosing this will run something in SYSLINUX
|
||||
use data to specify the actual command to execute
|
||||
exitmenu: exit to parent menu
|
||||
submenu: choosing will open up submenu
|
||||
use data to specify the "nickname" of the menu
|
||||
which should come here
|
||||
sep: Position a separator here
|
||||
inactive: menu item is disabled
|
||||
checkbox: this is a checkbox
|
||||
use state to set initial state
|
||||
invisible: User does not see this item
|
||||
radioitem: One choice in a radiomenu
|
||||
radiomenu: Allow user to choose one of many choices
|
||||
(initial choice is always NULL)
|
||||
login: Selecting this will allow user to login to system
|
||||
|
||||
data:
|
||||
for run items, the syslinux command to execute
|
||||
for submenus and radiomenus, nickname of menu
|
||||
for checkboxes, string to be added to kernel command line (if set)
|
||||
for radioitems, string to be added to kernel command line (if chosen)
|
||||
|
||||
ipappend:
|
||||
ipappend flag to pass to PXELINUX (harmless for other variants of SYSLINUX)
|
||||
See syslinux documentation for meaning of the FLAGS
|
||||
|
||||
helpid: (default 65535 which is not a valid id)
|
||||
associates a context for the help system.
|
||||
|
||||
state: (default 0)
|
||||
Initial state of a checkbox (for other items this has no meaning)
|
||||
|
||||
perms: (default "")
|
||||
string containing the name of the permission which user must
|
||||
have to activate this item. For eg. if this item is a submenu
|
||||
then user needs the permission in order to open the submenu
|
||||
|
||||
argsmenu: (default "")
|
||||
Name of the menu to be scanned for setting additional arguments to
|
||||
pass to command line when this item is chosen for execution. Submenus
|
||||
of specified menu are also scanned. Only checkboxes and radiomenu's
|
||||
are scanned. Items of other type in this menu is silently ignored.
|
||||
|
||||
|
||||
DOT COMMANDS
|
||||
------------
|
||||
Dot commands are basically instructions to the menu system to do certain things.
|
||||
|
||||
A "single command" is one of the following
|
||||
|
||||
[NT] A syslinux command (any DOT command not starting with a "." is assumed to be this)
|
||||
[NT] .beep [n]
|
||||
[NT] .help <file>
|
||||
[NT] .nop
|
||||
[T] .exit or .quit (equivalent)
|
||||
[T] .repeat or .wait or .ignore (all three are equivalent)
|
||||
|
||||
A dot command is a sequence of "single commands" separated by a "%". When a dot command
|
||||
is executed the system executes all the given "single commands" in the specified order.
|
||||
All the commands marked "[T]" are terminal commands, i.e. when the system encounters
|
||||
such a command it stops processing the dot command and returns the terminal command
|
||||
which caused the termination to the caller (who usually interprets the command
|
||||
appropriately).
|
||||
|
||||
All commands marked with [NT] are non-terminal commands, i.e. once these commands are
|
||||
processed the system continues to process the remaining "single commands" specified in
|
||||
the "DOT COMMAND".
|
||||
|
||||
Note: The case of a syslinux command is tricky. When executed, the command should never return
|
||||
(if the specified kernel exists) so the fact that we consider it a [NT] should be taken with
|
||||
a pinch of salt. However, if the syslinux command does return (in case of no kernel), then
|
||||
remaining "single commands" are processed. In particular "ker1 arg1 % ker2 arg2 % ker3 args"
|
||||
has the effect of executing the first kernel which exists
|
||||
|
||||
.nop:
|
||||
Does nothing.
|
||||
.beep:
|
||||
.beep [n] produces a beep n times. n must be between 0 and 9. If not specified n=1.
|
||||
(hence .beep 0 is equivalent to .nop)
|
||||
.help:
|
||||
.help <file>
|
||||
Displays the help file <file> which is assumed to be in the "help" directory. Its name
|
||||
does not have to be in the form "hlpNNNNN.txt" (as required by the context sensitive help).
|
||||
Executing this command will mean the appropriate help screen is displayed till the user hits
|
||||
ESCAPE
|
||||
|
||||
The meaning of the Terminal commands can vary with the context in which it is used. For example,
|
||||
a ".enter" or ".escape" does not have any meaning in the "onerrorcmd" context but it has a meaning
|
||||
in the "ontimeout" context. In case the user gives a Terminal command which does not make sense, it
|
||||
is upto the code (in this case adv_menu.tpl) to do what it pleases.
|
|
@ -0,0 +1,74 @@
|
|||
## -----------------------------------------------------------------------
|
||||
##
|
||||
## Copyright 2001-2009 H. Peter Anvin - All Rights Reserved
|
||||
## Copyright 2009 Intel Corporation; author: H. Peter Anvin
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
## Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
## (at your option) any later version; incorporated herein by reference.
|
||||
##
|
||||
## -----------------------------------------------------------------------
|
||||
|
||||
##
|
||||
## Makefile for the complex menu system
|
||||
##
|
||||
|
||||
NOGPL := 1
|
||||
|
||||
LIBS = libmenu/libmenu.c32 \
|
||||
$(objdir)/com32/libutil/libutil.c32 \
|
||||
$(objdir)/com32/lib/libcom32.c32
|
||||
|
||||
C_LIBS = libmenu/libmenu.c32
|
||||
|
||||
VPATH = $(SRC)
|
||||
include $(MAKEDIR)/elf.mk
|
||||
|
||||
CFLAGS += -I$(SRC)/libmenu
|
||||
|
||||
LIBMENU = libmenu/syslnx.o libmenu/com32io.o libmenu/tui.o \
|
||||
libmenu/menu.o libmenu/passwords.o libmenu/des.o libmenu/help.o \
|
||||
$(objdir)/com32/libutil/libutil.c32 $(objdir)/com32/lib/libcom32.c32
|
||||
|
||||
CMENUS = $(patsubst %.c,%.c32,$(sort $(wildcard $(SRC)/*.c)))
|
||||
IMENUS = $(patsubst %.menu,%.c32,$(sort $(wildcard $(SRC)/*.menu)))
|
||||
|
||||
MENUS = $(LIBS) $(subst $(SRC)/,,$(CMENUS) $(IMENUS))
|
||||
|
||||
.SUFFIXES: .S .c .o .elf .c32 .menu
|
||||
|
||||
.PRECIOUS: %.c
|
||||
%.c: %.menu adv_menu.tpl
|
||||
$(PYTHON) $(SRC)/menugen.py --input=$< --output=$@ --template=$(SRC)/adv_menu.tpl
|
||||
|
||||
all: makeoutputdirs menus
|
||||
|
||||
makeoutputdirs:
|
||||
@mkdir -p $(OBJ)/libmenu
|
||||
|
||||
libmenu/libmenu.elf: $(LIBMENU)
|
||||
$(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \
|
||||
-o $@ $^
|
||||
|
||||
tidy dist:
|
||||
rm -f *.o *.lo *.lst *.elf */*.o */*.elf .*.d */.*.d
|
||||
|
||||
libclean:
|
||||
rm -f libmenu/*.c32
|
||||
|
||||
clean: tidy menuclean
|
||||
rm -f *.lss *.com
|
||||
|
||||
menuclean:
|
||||
rm -f $(patsubst %.menu,%.c,$(sort $(wildcard *.menu)))
|
||||
|
||||
spotless: clean libclean menuclean
|
||||
rm -f *~ \#* *.c32
|
||||
|
||||
menus: $(MENUS)
|
||||
|
||||
install: # Don't install samples
|
||||
|
||||
-include .*.d */.*.d
|
|
@ -0,0 +1,95 @@
|
|||
Text User Interface using comboot
|
||||
---------------------------------
|
||||
|
||||
This is a menu system written by Murali Krishnan Ganapathy and ported
|
||||
from OpenWatcom to gcc by HPA. It is currently being maintained by the
|
||||
original author.
|
||||
|
||||
To configure the menus, you need to set up a menu configuration file
|
||||
to have the menu items you desire, then build the menu system using
|
||||
make. You can use either simple.c or complex.c as a starting point
|
||||
for your own menu configuration file; If your menu system is only going
|
||||
to have entries corresponding to things which can be executed directly,
|
||||
then you can create a file in ".menu" format instead of the C code.
|
||||
|
||||
See MENU_FORMAT for the syntax of .menu files
|
||||
|
||||
The resulting code is a 32-bit COMBOOT code, and hence can be executed
|
||||
only under syslinux. You can use tools like bochs to help debug your
|
||||
code.
|
||||
|
||||
Menu Features currently supported are:
|
||||
* menu items,
|
||||
* submenus,
|
||||
* disabled items,
|
||||
* checkboxes,
|
||||
* invisible items (useful for dynamic menus), and
|
||||
* Radio menus,
|
||||
* Context sensitive help
|
||||
* Authenticated users
|
||||
* Editing commands associated with items
|
||||
|
||||
The keys used are:
|
||||
|
||||
* Arrow Keys, PgUp, PgDn, Home, End Keys
|
||||
* Space to switch state of a checkbox
|
||||
* Enter to choose the item
|
||||
* Escape to exit from it
|
||||
* Shortcut keys
|
||||
|
||||
Features
|
||||
--------
|
||||
This is a general purpose menu system implemented using only BIOS calls,
|
||||
so it can be executed in a COMBOOT environment as well. It is highly
|
||||
customizable. Some features include:
|
||||
|
||||
* Status line
|
||||
Display any help information associated with each menu item.
|
||||
* Window
|
||||
Specify a window within which the menu system draws all its menu's.
|
||||
It is upto the user to ensure that the menu's fit within the window.
|
||||
* Positioning submenus
|
||||
By default, each submenu is positioned just below the corresponding
|
||||
entry of the parent menu. However, the user may position each menu
|
||||
at a specific location of his choice. This is useful, when the menu's
|
||||
have lots of options.
|
||||
* Registering handlers for each menu item
|
||||
This is mainly used for checkboxes and radiomenu's, where a selection may
|
||||
result in disabling other menu items/checkboxes
|
||||
* Global Screen Handler
|
||||
This is called every time the menu is redrawn. The user can display
|
||||
additional information (usually outside the window where the menu is
|
||||
being displayed). See the complex.c for an example, where the global
|
||||
handler is used to display the choices made so far.
|
||||
* Global Keys Handler
|
||||
This is called every time the user presses a key which the menu
|
||||
system does not understand. This can be used to display context
|
||||
sensitive help. See complex.c for how to use this hook to implement
|
||||
a context sensitive help system as well as "On the fly" editing
|
||||
of commands associated with menus.
|
||||
* Shortcut Keys
|
||||
With each item one can register a shortcut key from [A-Za-z0-9].
|
||||
Pressing a key within that range, will take you to the next item
|
||||
with that shortcut key (so you can have multiple items with the
|
||||
same shortcut key). The default shortcut key for each item, is
|
||||
the lower case version of the first char of the item in the range
|
||||
[A-Za-z0-9].
|
||||
* Escape Keys
|
||||
Each item entry can have a substring enclosed in < and >. This part
|
||||
is highlighted. Can be used to highlight the shortcut keys. By default
|
||||
if an item has a <, then the first char inside < and > in the range
|
||||
[A-Za-z0-9] is converted to lower case and set as the shortcut key.
|
||||
* Ontimeout handler
|
||||
The user can register an ontimeout handler, which gets called if
|
||||
no key has been pressed for a user specific amount of time (default 5 min).
|
||||
For an example see the complex.c file.
|
||||
|
||||
Credits
|
||||
-------
|
||||
* The Watcom developers and Peter Anvin for figuring out an OS
|
||||
independent startup code.
|
||||
* Thomas for porting the crypt function and removing all C library
|
||||
dependencies
|
||||
* Peter Anvin for porting the code to GCC
|
||||
|
||||
- Murali (gmurali+guicd@cs.uchicago.edu)
|
|
@ -0,0 +1,2 @@
|
|||
* Write COMBOOT code to read .menu files and parse them directly
|
||||
- take the name of menu file to parse from commandline
|
|
@ -0,0 +1,465 @@
|
|||
All the lines in this file not in between --something BEGINS-- and --something ENDS--
|
||||
is ignored completely and will not make it into the generated C file
|
||||
|
||||
This file has sections of C code each section delimited by --secname BEGINS--
|
||||
and --secname ENDS--. In the generated C code certain section may be used multiple
|
||||
times. Currently the different section which must be defined are
|
||||
|
||||
header, system, item, login and footer
|
||||
|
||||
Any additional sections you define will be processed but will probably not make it
|
||||
to the C code if you do not modify menugen.py to use it.
|
||||
|
||||
header and footer go through unmolested. The remaining are % substituted using
|
||||
python rules. Basically it means %(var)s gets replaced by the value of the variable
|
||||
"var" which is a processed form of what is read from the .menu file
|
||||
|
||||
NOTE: There is absolutely no C code in the python script, so you are free to
|
||||
modify this template to suit your needs
|
||||
|
||||
--header BEGINS--
|
||||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2006 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *) 0)
|
||||
#endif
|
||||
|
||||
#include "cmenu.h"
|
||||
#include "help.h"
|
||||
#include "passwords.h"
|
||||
#include "com32io.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define MAX_CMD_LINE_LENGTH 514
|
||||
|
||||
typedef struct s_xtra {
|
||||
long ipappend; // Stores the ipappend flag to send (useful for PXELINUX only)
|
||||
char *argsmenu; // Stores the name of menu which contains options for the given RUN item
|
||||
char *perms; // stores the permissions required to activate the item
|
||||
} t_xtra;
|
||||
|
||||
typedef t_xtra *pt_xtra; // Pointer to extra datastructure
|
||||
|
||||
// Types of dot commands for which caller takes responsibility of handling
|
||||
// In some case some commands may not make sense, it is up to the caller
|
||||
// to handle cases which do not make sense
|
||||
typedef enum {QUIT_CMD, REPEAT_CMD, ENTER_CMD, ESCAPE_CMD} t_dotcmd;
|
||||
|
||||
|
||||
/*----------------- Global Variables */
|
||||
|
||||
// default user
|
||||
#define GUEST_USER "guest"
|
||||
|
||||
// for local commands. return value of execdotcmd
|
||||
#define QUIT_CMD 0
|
||||
#define RPT_CMD 1
|
||||
|
||||
char username[12]; // Name of user currently using the system
|
||||
|
||||
int PWD_ROW; // Line number where user authentication happens
|
||||
int EDIT_ROW; // row where User Tab
|
||||
|
||||
char loginstr[] = "<L>ogin ";
|
||||
char logoutstr[30];
|
||||
|
||||
int vmode; // The video mode we want to be in
|
||||
char timeoutcmd[MAX_CMD_LINE_LENGTH]; // Command to execute on timeout
|
||||
char totaltimeoutcmd[MAX_CMD_LINE_LENGTH]; // Command to execute on totaltimeout
|
||||
|
||||
char QUITSTR[] = ".quit"; // same as exit
|
||||
char IGNORESTR[]=".ignore"; // same as repeat, wait
|
||||
|
||||
/*---------------- End globals */
|
||||
|
||||
// returns pointer to first non-space char
|
||||
// and advances end of str by removing trailing spaces
|
||||
char * strip(char *str)
|
||||
{
|
||||
char *p,*s,*e;
|
||||
if (!str) return NULL;
|
||||
p = str;
|
||||
s = NULL;
|
||||
e = NULL;
|
||||
while (*p) {
|
||||
if (*p != ' ') {
|
||||
// mark start of string or record the last visited non-space char
|
||||
if (!s) s=p; else e=p;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
*(++e)='\0'; // kill string earlier
|
||||
return s;
|
||||
}
|
||||
|
||||
// executes a list of % separated commands
|
||||
// non-dot commands are assumed to be syslinux commands
|
||||
// All syslinux commands are appended with the contents of kerargs
|
||||
// If it fails (kernel not found) then the next one is tried in the
|
||||
// list
|
||||
// returns QUIT_CMD or RPT_CMD
|
||||
t_dotcmd execdotcmd(const char *cmd, char *defcmd, const char *kerargs)
|
||||
{
|
||||
char cmdline[MAX_CMD_LINE_LENGTH];
|
||||
char dotcmd[MAX_CMD_LINE_LENGTH];
|
||||
char *curr,*next,*p,*args;
|
||||
char ctr;
|
||||
|
||||
strcpy(dotcmd,cmd);
|
||||
next = dotcmd;
|
||||
cmdline[0] = '\0';
|
||||
while (*next) { // if something to do
|
||||
curr = next;
|
||||
p = strchr(next,'%');
|
||||
if (p) {
|
||||
*p--='\0'; next=p+2;
|
||||
while (*p == ' ') p--;
|
||||
*(++p)='\0'; // remove trailing spaces
|
||||
} else {
|
||||
if (*defcmd) { // execute defcmd next
|
||||
next=defcmd;
|
||||
defcmd=NULL; // exec def cmd only once
|
||||
} else next=NULL;
|
||||
}
|
||||
// now we just need to execute the command "curr"
|
||||
curr = strip(curr);
|
||||
if (curr[0] != '.') { // just run the kernel
|
||||
strcpy(cmdline,curr);
|
||||
if (kerargs) strcat(cmdline,kerargs);
|
||||
runsyslinuximage(cmdline,0); // No IPAppend
|
||||
} else { // We have a DOT command
|
||||
// split command into command and args (may be empty)
|
||||
args = curr;
|
||||
while ( (*args != ' ') && (*args != '\0') ) args++;
|
||||
if (*args) { // found a space
|
||||
*args++ = '\0';
|
||||
while (*args == ' ') args++; // skip over spaces
|
||||
}
|
||||
if ( (strcmp(curr,".exit")==0) ||
|
||||
(strcmp(curr,".quit")==0)
|
||||
)
|
||||
return QUIT_CMD;
|
||||
if ( (strcmp(curr,".repeat")==0) ||
|
||||
(strcmp(curr,".ignore")==0) ||
|
||||
(strcmp(curr,".wait")==0)
|
||||
)
|
||||
return RPT_CMD;
|
||||
if (strcmp(curr,".beep")==0) {
|
||||
if ((args) && ('0' <= args[0]) && (args[0] <= '9'))
|
||||
ctr = args[0]-'0';
|
||||
else ctr=1;
|
||||
for (;ctr>0; ctr--) beep();
|
||||
}
|
||||
if (strcmp(curr,".help")==0) runhelp(args);
|
||||
}
|
||||
}
|
||||
return RPT_CMD; // by default we do not quit
|
||||
}
|
||||
|
||||
|
||||
TIMEOUTCODE timeout(const char *cmd)
|
||||
{
|
||||
t_dotcmd c;
|
||||
c = execdotcmd(cmd,".wait",NULL);
|
||||
switch(c) {
|
||||
case ENTER_CMD:
|
||||
return CODE_ENTER;
|
||||
case ESCAPE_CMD:
|
||||
return CODE_ESCAPE;
|
||||
default:
|
||||
return CODE_WAIT;
|
||||
}
|
||||
}
|
||||
|
||||
TIMEOUTCODE ontimeout(void)
|
||||
{
|
||||
return timeout(timeoutcmd);
|
||||
}
|
||||
|
||||
TIMEOUTCODE ontotaltimeout(void)
|
||||
{
|
||||
return timeout(totaltimeoutcmd);
|
||||
}
|
||||
|
||||
void keys_handler(t_menusystem * ms __attribute__ (( unused )), t_menuitem * mi, int scancode)
|
||||
{
|
||||
int nc, nr;
|
||||
|
||||
if (getscreensize(1, &nr, &nc)) {
|
||||
/* Unknown screen size? */
|
||||
nc = 80;
|
||||
nr = 24;
|
||||
}
|
||||
|
||||
if ( (scancode == KEY_F1) && (mi->helpid != 0xFFFF) ) { // If scancode of F1 and non-trivial helpid
|
||||
runhelpsystem(mi->helpid);
|
||||
}
|
||||
|
||||
// If user hit TAB, and item is an "executable" item
|
||||
// and user has privileges to edit it, edit it in place.
|
||||
if ((scancode == KEY_TAB) && (mi->action == OPT_RUN) &&
|
||||
(EDIT_ROW < nr) && (EDIT_ROW > 0) &&
|
||||
(isallowed(username,"editcmd") || isallowed(username,"root"))) {
|
||||
// User typed TAB and has permissions to edit command line
|
||||
gotoxy(EDIT_ROW,1);
|
||||
csprint("Command line:",0x07);
|
||||
editstring(mi->data,ACTIONLEN);
|
||||
gotoxy(EDIT_ROW,1);
|
||||
cprint(' ',0x07,nc-1);
|
||||
}
|
||||
}
|
||||
|
||||
t_handler_return login_handler(t_menusystem *ms, t_menuitem *mi)
|
||||
{
|
||||
(void)mi; // Unused
|
||||
char pwd[40];
|
||||
char login[40];
|
||||
int nc, nr;
|
||||
t_handler_return rv;
|
||||
|
||||
(void)ms;
|
||||
|
||||
rv = ACTION_INVALID;
|
||||
if (PWD_ROW < 0) return rv; // No need to authenticate
|
||||
|
||||
if (mi->item == loginstr) { /* User wants to login */
|
||||
if (getscreensize(1, &nr, &nc)) {
|
||||
/* Unknown screen size? */
|
||||
nc = 80;
|
||||
nr = 24;
|
||||
}
|
||||
|
||||
gotoxy(PWD_ROW,1);
|
||||
csprint("Enter Username: ",0x07);
|
||||
getstring(login, sizeof username);
|
||||
gotoxy(PWD_ROW,1);
|
||||
cprint(' ',0x07,nc);
|
||||
csprint("Enter Password: ",0x07);
|
||||
getpwd(pwd, sizeof pwd);
|
||||
gotoxy(PWD_ROW,1);
|
||||
cprint(' ',0x07,nc);
|
||||
|
||||
if (authenticate_user(login,pwd))
|
||||
{
|
||||
strcpy(username,login);
|
||||
strcpy(logoutstr,"<L>ogout ");
|
||||
strcat(logoutstr,username);
|
||||
mi->item = logoutstr; // Change item to read "Logout"
|
||||
rv.refresh = 1; // refresh the screen (as item contents changed)
|
||||
}
|
||||
else strcpy(username,GUEST_USER);
|
||||
}
|
||||
else // User needs to logout
|
||||
{
|
||||
strcpy(username,GUEST_USER);
|
||||
strcpy(logoutstr,"");
|
||||
mi->item = loginstr;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
t_handler_return check_perms(t_menusystem *ms, t_menuitem *mi)
|
||||
{
|
||||
char *perms;
|
||||
pt_xtra x;
|
||||
|
||||
(void) ms; // To keep compiler happy
|
||||
|
||||
x = (pt_xtra) mi->extra_data;
|
||||
perms = ( x ? x->perms : NULL);
|
||||
if (!perms) return ACTION_VALID;
|
||||
|
||||
if (isallowed(username,"root") || isallowed(username,perms)) // If allowed
|
||||
return ACTION_VALID;
|
||||
else return ACTION_INVALID;
|
||||
}
|
||||
|
||||
// Compute the full command line to add and if non-trivial
|
||||
// prepend the string prepend to final command line
|
||||
// Assume cmdline points to buffer long enough to hold answer
|
||||
void gencommand(pt_menuitem mi, char *cmdline)
|
||||
{
|
||||
pt_xtra x;
|
||||
cmdline[0] = '\0';
|
||||
strcat(cmdline,mi->data);
|
||||
x = (pt_xtra) mi->extra_data;
|
||||
if ( (x) && (x->argsmenu)) gen_append_line(x->argsmenu,cmdline);
|
||||
}
|
||||
|
||||
|
||||
// run the given command together with additional options which may need passing
|
||||
void runcommand(pt_menuitem mi)
|
||||
{
|
||||
char *line;
|
||||
pt_xtra x;
|
||||
long ipappend;
|
||||
|
||||
line = (char *)malloc(sizeof(char)*MAX_CMD_LINE_LENGTH);
|
||||
gencommand(mi,line);
|
||||
x = (pt_xtra) mi->extra_data;
|
||||
ipappend = (x ? x->ipappend : 0);
|
||||
|
||||
runsyslinuximage(line,ipappend);
|
||||
free(line);
|
||||
}
|
||||
|
||||
// set the extra info for the specified menu item.
|
||||
void set_xtra(pt_menuitem mi, const char *argsmenu, const char *perms, unsigned int helpid, long ipappend)
|
||||
{
|
||||
pt_xtra xtra;
|
||||
int bad_argsmenu, bad_perms, bad_ipappend;
|
||||
|
||||
mi->extra_data = NULL; // initalize
|
||||
mi->helpid = helpid; // set help id
|
||||
|
||||
if (mi->action != OPT_RUN) return;
|
||||
|
||||
bad_argsmenu = bad_perms = bad_ipappend = 0;
|
||||
if ( (argsmenu==NULL) || (strlen(argsmenu)==0)) bad_argsmenu = 1;
|
||||
if ( (perms==NULL) || (strlen(perms)==0)) bad_perms = 1;
|
||||
if ( ipappend==0) bad_ipappend = 1;
|
||||
|
||||
if (bad_argsmenu && bad_perms && bad_ipappend) return;
|
||||
|
||||
xtra = (pt_xtra) malloc(sizeof(t_xtra));
|
||||
mi->extra_data = (void *) xtra;
|
||||
xtra->argsmenu = xtra->perms = NULL;
|
||||
xtra->ipappend = ipappend;
|
||||
if (!bad_argsmenu) {
|
||||
xtra->argsmenu = (char *) malloc(sizeof(char)*(strlen(argsmenu)+1));
|
||||
strcpy(xtra->argsmenu,argsmenu);
|
||||
}
|
||||
if (!bad_perms) {
|
||||
xtra->perms = (char *) malloc(sizeof(char)*(strlen(perms)+1));
|
||||
strcpy(xtra->perms,perms);
|
||||
mi->handler = &check_perms;
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
pt_menuitem curr;
|
||||
char quit;
|
||||
char exitcmd[MAX_CMD_LINE_LENGTH];
|
||||
char exitcmdroot[MAX_CMD_LINE_LENGTH];
|
||||
char onerrcmd[MAX_CMD_LINE_LENGTH];
|
||||
char startfile[MAX_CMD_LINE_LENGTH];
|
||||
char *ecmd; // effective exit command or onerrorcmd
|
||||
char skipbits;
|
||||
char skipcmd[MAX_CMD_LINE_LENGTH];
|
||||
int timeout; // time in multiples of 0.1 seconds
|
||||
int totaltimeout; // time in multiples of 0.1 seconds
|
||||
t_dotcmd dotrv; // to store the return value of execdotcmd
|
||||
int temp;
|
||||
|
||||
strcpy(username,GUEST_USER);
|
||||
--header ENDS--
|
||||
--system BEGINS--
|
||||
/* ---- Initializing menu system parameters --- */
|
||||
vmode = %(videomode)s;
|
||||
skipbits = %(skipcondn)s;
|
||||
PWD_ROW = %(pwdrow)s;
|
||||
EDIT_ROW = %(editrow)s;
|
||||
strcpy(onerrcmd,"%(onerrorcmd)s");
|
||||
strcpy(exitcmd,"%(exitcmd)s");
|
||||
strcpy(exitcmdroot,"%(exitcmdroot)s");
|
||||
// If not specified exitcmdroot = exitcmd
|
||||
if (exitcmdroot[0] == '\0') strcpy(exitcmdroot,exitcmd);
|
||||
// Timeout stuff
|
||||
timeout = %(timeout)s;
|
||||
strcpy(timeoutcmd,"%(timeoutcmd)s");
|
||||
totaltimeout = %(totaltimeout)s;
|
||||
strcpy(totaltimeoutcmd,"%(totaltimeoutcmd)s");
|
||||
strcpy(startfile,"%(startfile)s");
|
||||
|
||||
init_help("%(helpdir)s");
|
||||
init_passwords("%(pwdfile)s");
|
||||
init_menusystem("%(title)s");
|
||||
set_window_size(%(top)s,%(left)s,%(bot)s,%(right)s);
|
||||
|
||||
// Register the ontimeout handler, with a time out of 10 seconds
|
||||
reg_ontimeout(ontimeout,timeout*10,0);
|
||||
reg_ontotaltimeout(ontotaltimeout,totaltimeout*10);
|
||||
|
||||
// Register menusystem handlers
|
||||
reg_handler(HDLR_KEYS,&keys_handler);
|
||||
/* ---- End of initialization --- */
|
||||
--system ENDS--
|
||||
--item BEGINS--
|
||||
|
||||
curr = add_item("%(item)s","%(info)s",%(type)s,"%(data)s",%(state)d);
|
||||
set_xtra(curr,"%(argsmenu)s","%(perms)s",%(helpid)d,%(ipappend)d); // Set associated extra info
|
||||
set_shortcut(%(shortcut)s);
|
||||
--item ENDS--
|
||||
--login BEGINS--
|
||||
|
||||
curr = add_item(loginstr,"Login/Logout of authentication system",OPT_RUN,NULL,0);
|
||||
curr->helpid = %(helpid)d;
|
||||
curr->handler = &login_handler;
|
||||
--login ENDS--
|
||||
--menu BEGINS--
|
||||
|
||||
/* ------- MENU %(name)s ----- */
|
||||
add_named_menu("%(name)s","%(title)s",-1);
|
||||
--menu ENDS--
|
||||
--footer BEGINS--
|
||||
/* ------- END OF MENU declarations ----- */
|
||||
|
||||
// Check if we should skip the menu altogether
|
||||
quit = 0; // Dont skip the menu
|
||||
if (getshiftflags() & skipbits) { // we must skip the menu altogther and execute skipcmd
|
||||
dotrv = execdotcmd(skipcmd,".beep%.exit",NULL); // Worst case we beep and exit
|
||||
if (dotrv == QUIT_CMD) quit = 1;
|
||||
}
|
||||
|
||||
// Switch vide mode if required
|
||||
if (vmode != 0xFF) setvideomode(vmode);
|
||||
|
||||
// Do we have a startfile to display?
|
||||
if (startfile[0] != '\0') runhelp(startfile);
|
||||
|
||||
// The main loop
|
||||
while (quit == 0) { // As long as quit is zero repeat
|
||||
curr = showmenus(find_menu_num("main")); // Initial menu is the one called "main"
|
||||
|
||||
if (curr) {
|
||||
if (curr->action == OPT_RUN) {
|
||||
ecmd = (char *)malloc(sizeof(char)*MAX_CMD_LINE_LENGTH);
|
||||
gencommand(curr,ecmd);
|
||||
temp = (curr->extra_data ? ((pt_xtra)curr->extra_data)->ipappend : 0);
|
||||
runsyslinuximage(ecmd,temp);
|
||||
// kernel not found so execute the appropriate dot command
|
||||
dotrv = execdotcmd(onerrcmd,".quit",ecmd); // pass bad cmdline as arg
|
||||
if (dotrv== QUIT_CMD) quit = 1;
|
||||
free(ecmd); ecmd = NULL;
|
||||
}
|
||||
else csprint("Error in programming!",0x07);
|
||||
} else {
|
||||
// find effective exit command
|
||||
ecmd = ( isallowed(username,"root") ? exitcmdroot : exitcmd);
|
||||
dotrv = execdotcmd(ecmd,".repeat",NULL);
|
||||
quit = (dotrv == QUIT_CMD ? 1 : 0); // should we exit now
|
||||
}
|
||||
}
|
||||
|
||||
// Deallocate space used and quit
|
||||
close_passwords();
|
||||
close_help();
|
||||
close_menusystem();
|
||||
return 0;
|
||||
}
|
||||
|
||||
--footer ENDS--
|
|
@ -0,0 +1,450 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *) 0)
|
||||
#endif
|
||||
|
||||
#include "cmenu.h"
|
||||
#include "com32io.h"
|
||||
#include "help.h"
|
||||
#include "passwords.h"
|
||||
#include "des.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <getkey.h>
|
||||
|
||||
/* Global variables */
|
||||
char infoline[160];
|
||||
char buffer[80];
|
||||
|
||||
// Different network options
|
||||
static char nonet[] = "<n>etwork [none]";
|
||||
static char dhcpnet[] = "<n>etwork [dhcp]";
|
||||
static char statnet[] = "<n>etwork [static]";
|
||||
|
||||
static char loginstr[] = "<L>ogin ";
|
||||
static char logoutstr[] = "<L>ogout ";
|
||||
|
||||
struct {
|
||||
unsigned int baseurl:1; // Do we need to specify by url
|
||||
unsigned int mountcd:1; // Should we mount the cd
|
||||
unsigned int winrep:1; // Want to repair windows?
|
||||
unsigned int linrep:1; // Want to repair linux?
|
||||
} flags;
|
||||
|
||||
// Some menu options
|
||||
t_menuitem *baseurl, *mountcd, *network, *runprep, *winrep, *linrep;
|
||||
t_menuitem *stat, *dhcp, *none, *prepopt, *secret;
|
||||
|
||||
// all the menus we are going to declare
|
||||
unsigned char TESTING, RESCUE, MAIN, PREPMENU, NETMENU, LONGMENU, SECRETMENU;
|
||||
|
||||
char username[12]; // Name of user currently using the system
|
||||
|
||||
/* End globals */
|
||||
|
||||
TIMEOUTCODE ontimeout(void)
|
||||
{
|
||||
beep();
|
||||
return CODE_WAIT;
|
||||
}
|
||||
|
||||
#define INFLINE 22
|
||||
#define PWDLINE 3
|
||||
#define PWDPROMPT 21
|
||||
#define PWDCOLUMN 60
|
||||
#define PWDATTR 0x74
|
||||
#define EDITPROMPT 21
|
||||
|
||||
void keys_handler(t_menusystem * ms __attribute__ (( unused )), t_menuitem * mi, int scancode)
|
||||
{
|
||||
int nc, nr;
|
||||
|
||||
if ((scancode) == KEY_F1 && mi->helpid != 0xFFFF) { // If scancode of F1
|
||||
runhelpsystem(mi->helpid);
|
||||
}
|
||||
// If user hit TAB, and item is an "executable" item
|
||||
// and user has privileges to edit it, edit it in place.
|
||||
if ((scancode == KEY_TAB) && (mi->action == OPT_RUN) &&
|
||||
(isallowed(username, "editcmd") || isallowed(username, "root"))) {
|
||||
if (getscreensize(1, &nr, &nc)) {
|
||||
/* Unknown screen size? */
|
||||
nc = 80;
|
||||
nr = 24;
|
||||
}
|
||||
// User typed TAB and has permissions to edit command line
|
||||
gotoxy(EDITPROMPT, 1);
|
||||
csprint("Command line:", 0x07);
|
||||
editstring(mi->data, ACTIONLEN);
|
||||
gotoxy(EDITPROMPT, 1);
|
||||
clear_line();
|
||||
}
|
||||
}
|
||||
|
||||
t_handler_return login_handler(t_menusystem * ms, t_menuitem * mi)
|
||||
{
|
||||
(void)mi; // Unused
|
||||
char pwd[40];
|
||||
char login[40];
|
||||
int nc, nr;
|
||||
t_handler_return rv;
|
||||
|
||||
(void)ms;
|
||||
|
||||
if (mi->item == loginstr) { /* User wants to login */
|
||||
if (getscreensize(1, &nr, &nc)) {
|
||||
/* Unknown screen size? */
|
||||
nc = 80;
|
||||
nr = 24;
|
||||
}
|
||||
gotoxy(PWDPROMPT, 1);
|
||||
csprint("Enter Username: ", 0x07);
|
||||
getstring(login, sizeof username);
|
||||
gotoxy(PWDPROMPT, 1);
|
||||
clear_line();
|
||||
csprint("Enter Password: ", 0x07);
|
||||
getpwd(pwd, sizeof pwd);
|
||||
gotoxy(PWDPROMPT, 1);
|
||||
clear_line();
|
||||
|
||||
if (authenticate_user(login, pwd)) {
|
||||
strcpy(username, login);
|
||||
mi->item = logoutstr; // Change item to read "Logout"
|
||||
} else
|
||||
strcpy(username, GUEST_USER);
|
||||
} else // User needs to logout
|
||||
{
|
||||
strcpy(username, GUEST_USER);
|
||||
mi->item = loginstr;
|
||||
}
|
||||
|
||||
if (strcmp(username, GUEST_USER) == 0) {
|
||||
prepopt->action = OPT_INACTIVE;
|
||||
secret->action = OPT_INVISIBLE;
|
||||
} else {
|
||||
prepopt->action = OPT_SUBMENU;
|
||||
prepopt->itemdata.radiomenunum = PREPMENU;
|
||||
secret->action = OPT_SUBMENU;
|
||||
secret->itemdata.submenunum = SECRETMENU;
|
||||
}
|
||||
rv.valid = 0;
|
||||
rv.refresh = 1;
|
||||
rv.reserved = 0;
|
||||
return rv;
|
||||
}
|
||||
|
||||
void msys_handler(t_menusystem * ms, t_menuitem * mi)
|
||||
{
|
||||
int nc, nr;
|
||||
void *v;
|
||||
|
||||
if (getscreensize(1, &nr, &nc)) {
|
||||
/* Unknown screen size? */
|
||||
nc = 80;
|
||||
nr = 24;
|
||||
}
|
||||
gotoxy(PWDLINE, PWDCOLUMN);
|
||||
csprint("User: ", PWDATTR);
|
||||
cprint(ms->fillchar, ms->fillattr, sizeof username);
|
||||
gotoxy(PWDLINE, PWDCOLUMN + 6);
|
||||
csprint(username, PWDATTR);
|
||||
|
||||
if (mi->parindex != PREPMENU) // If we are not in the PREP MENU
|
||||
{
|
||||
gotoxy(INFLINE, 0);
|
||||
reset_colors();
|
||||
clear_line();
|
||||
gotoxy(INFLINE + 1, 0);
|
||||
clear_line();
|
||||
return;
|
||||
}
|
||||
strcpy(infoline, " ");
|
||||
if (flags.baseurl)
|
||||
strcat(infoline, "baseurl=http://192.168.11.12/gui ");
|
||||
if (flags.mountcd)
|
||||
strcat(infoline, "mountcd=yes ");
|
||||
v = (void *)network->data;
|
||||
if (v != NULL) // Some network option specified
|
||||
{
|
||||
strcat(infoline, "network=");
|
||||
strcat(infoline, (char *)(((t_menuitem *) v)->data));
|
||||
}
|
||||
if (flags.winrep)
|
||||
strcat(infoline, "repair=win ");
|
||||
if (flags.linrep)
|
||||
strcat(infoline, "repair=lin ");
|
||||
|
||||
gotoxy(INFLINE, 0);
|
||||
reset_colors();
|
||||
clear_line();
|
||||
gotoxy(INFLINE + 1, 0);
|
||||
clear_line();
|
||||
gotoxy(INFLINE, 0);
|
||||
csprint("Kernel Arguments:", 0x07);
|
||||
gotoxy(INFLINE, 17);
|
||||
csprint(infoline, 0x07);
|
||||
}
|
||||
|
||||
t_handler_return network_handler(t_menusystem * ms, t_menuitem * mi)
|
||||
{
|
||||
// mi=network since this is handler only for that.
|
||||
(void)ms; // Unused
|
||||
|
||||
if (mi->data == (void *)none)
|
||||
mi->item = nonet;
|
||||
if (mi->data == (void *)stat)
|
||||
mi->item = statnet;
|
||||
if (mi->data == (void *)dhcp)
|
||||
mi->item = dhcpnet;
|
||||
return ACTION_INVALID; // VALID or INVALID does not matter
|
||||
}
|
||||
|
||||
t_handler_return checkbox_handler(t_menusystem * ms, t_menuitem * mi)
|
||||
{
|
||||
(void)ms; /* Unused */
|
||||
|
||||
t_handler_return rv;
|
||||
|
||||
if (mi->action != OPT_CHECKBOX)
|
||||
return ACTION_INVALID;
|
||||
|
||||
if (strcmp(mi->data, "baseurl") == 0)
|
||||
flags.baseurl = (mi->itemdata.checked ? 1 : 0);
|
||||
if (strcmp(mi->data, "winrepair") == 0) {
|
||||
if (mi->itemdata.checked) {
|
||||
flags.winrep = 1;
|
||||
linrep->action = OPT_INACTIVE;
|
||||
} else {
|
||||
flags.winrep = 0;
|
||||
linrep->action = OPT_CHECKBOX;
|
||||
}
|
||||
}
|
||||
if (strcmp(mi->data, "linrepair") == 0) {
|
||||
if (mi->itemdata.checked) {
|
||||
flags.linrep = 1;
|
||||
winrep->action = OPT_INACTIVE;
|
||||
} else {
|
||||
flags.winrep = 0;
|
||||
winrep->action = OPT_CHECKBOX;
|
||||
}
|
||||
}
|
||||
if (strcmp(mi->data, "mountcd") == 0)
|
||||
flags.mountcd = (mi->itemdata.checked ? 1 : 0);
|
||||
|
||||
rv.valid = 0;
|
||||
rv.refresh = 1;
|
||||
rv.reserved = 0;
|
||||
return rv;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
t_menuitem *curr;
|
||||
char cmd[160];
|
||||
char ip[30];
|
||||
|
||||
// Set default username as guest
|
||||
strcpy(username, GUEST_USER);
|
||||
|
||||
// Switch video mode here
|
||||
// setvideomode(0x18); // or whatever mode you want
|
||||
|
||||
// Choose the default title and setup default values for all attributes....
|
||||
init_passwords("/isolinux/password");
|
||||
init_help("/isolinux/help");
|
||||
init_menusystem(NULL);
|
||||
set_window_size(1, 1, 20, 78); // Leave some space around
|
||||
|
||||
// Choose the default values for all attributes and char's
|
||||
// -1 means choose defaults (Actually the next 4 lines are not needed)
|
||||
//set_normal_attr (-1,-1,-1,-1);
|
||||
//set_status_info (-1,-1); // Display status on the last line
|
||||
//set_title_info (-1,-1);
|
||||
//set_misc_info(-1,-1,-1,-1);
|
||||
|
||||
// Register the menusystem handler
|
||||
reg_handler(HDLR_SCREEN, &msys_handler);
|
||||
reg_handler(HDLR_KEYS, &keys_handler);
|
||||
// Register the ontimeout handler, with a time out of 10 seconds
|
||||
reg_ontimeout(ontimeout, 10, 0);
|
||||
|
||||
NETMENU = add_menu(" Init Network ", -1);
|
||||
none = add_item("<N>one", "Dont start network", OPT_RADIOITEM, "no ", 0);
|
||||
dhcp = add_item("<d>hcp", "Use DHCP", OPT_RADIOITEM, "dhcp ", 0);
|
||||
stat =
|
||||
add_item("<s>tatic", "Use static IP I will specify later",
|
||||
OPT_RADIOITEM, "static ", 0);
|
||||
|
||||
TESTING = add_menu(" Testing ", -1);
|
||||
set_menu_pos(5, 55);
|
||||
add_item("<M>emory Test", "Perform extensive memory testing", OPT_RUN,
|
||||
"memtest", 0);
|
||||
add_item("<I>nvisible", "You dont see this", OPT_INVISIBLE, "junk", 0);
|
||||
add_item("<E>xit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
|
||||
|
||||
RESCUE = add_menu(" Rescue Options ", -1);
|
||||
add_item("<L>inux Rescue", "linresc", OPT_RUN, "linresc", 0);
|
||||
add_item("<D>os Rescue", "dosresc", OPT_RUN, "dosresc", 0);
|
||||
add_item("<W>indows Rescue", "winresc", OPT_RUN, "winresc", 0);
|
||||
add_item("<E>xit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
|
||||
|
||||
PREPMENU = add_menu(" Prep options ", -1);
|
||||
baseurl =
|
||||
add_item("<b>aseurl by IP?", "Specify gui baseurl by IP address",
|
||||
OPT_CHECKBOX, "baseurl", 0);
|
||||
mountcd =
|
||||
add_item("<m>ountcd?", "Mount the cdrom drive?", OPT_CHECKBOX,
|
||||
"mountcd", 0);
|
||||
network =
|
||||
add_item(dhcpnet, "How to initialise network device?", OPT_RADIOMENU,
|
||||
NULL, NETMENU);
|
||||
add_sep();
|
||||
winrep =
|
||||
add_item("Reinstall <w>indows",
|
||||
"Re-install the windows side of a dual boot setup",
|
||||
OPT_CHECKBOX, "winrepair", 0);
|
||||
linrep =
|
||||
add_item("Reinstall <l>inux",
|
||||
"Re-install the linux side of a dual boot setup", OPT_CHECKBOX,
|
||||
"linrepair", 0);
|
||||
add_sep();
|
||||
runprep =
|
||||
add_item("<R>un prep now", "Execute prep with the above options",
|
||||
OPT_RUN, "prep", 0);
|
||||
add_item("<E>xit this menu", "Go up one level", OPT_EXITMENU, "exitmenu",
|
||||
0);
|
||||
baseurl->handler = &checkbox_handler;
|
||||
mountcd->handler = &checkbox_handler;
|
||||
winrep->handler = &checkbox_handler;
|
||||
linrep->handler = &checkbox_handler;
|
||||
network->handler = &network_handler;
|
||||
flags.baseurl = 0;
|
||||
flags.mountcd = 0;
|
||||
flags.winrep = 0;
|
||||
flags.linrep = 0;
|
||||
|
||||
SECRETMENU = add_menu(" Secret Menu ", -1);
|
||||
add_item("secret 1", "Secret", OPT_RUN, "A", 0);
|
||||
add_item("secret 2", "Secret", OPT_RUN, "A", 0);
|
||||
|
||||
LONGMENU = add_menu(" Long Menu ", 40); // Override default here
|
||||
add_item("<A>a", "Aa", OPT_RUN, "A", 0);
|
||||
add_item("<B>b", "Ab", OPT_RUN, "A", 0);
|
||||
add_item("<C>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<D>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<E>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<F>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<G>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<H>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<I>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<J>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<K>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<L>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<J>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<K>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<L>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<M>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<N>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<O>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<P>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<Q>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<R>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<S>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<T>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<U>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<V>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<W>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<X>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<Y>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<Z>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<1>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<2>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<3>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<4>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<5>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<6>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<7>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<8>", "A", OPT_RUN, "A", 0);
|
||||
add_item("<9>", "A", OPT_RUN, "A", 0);
|
||||
|
||||
MAIN = add_menu(" Main Menu ", 8);
|
||||
curr = add_item(loginstr, "Login as a privileged user", OPT_RUN, NULL, 0);
|
||||
set_item_options(-1, 23);
|
||||
curr->handler = &login_handler;
|
||||
|
||||
add_item("<P>repare", "prep", OPT_RUN, "prep", 0);
|
||||
set_item_options(-1, 24);
|
||||
prepopt =
|
||||
add_item("<P>rep options...",
|
||||
"Options for prep image: Requires authenticated user",
|
||||
OPT_INACTIVE, NULL, PREPMENU);
|
||||
set_item_options(-1, 25);
|
||||
|
||||
add_item("<R>escue options...", "Troubleshoot a system", OPT_SUBMENU, NULL,
|
||||
RESCUE);
|
||||
set_item_options(-1, 26);
|
||||
add_item("<T>esting...", "Options to test hardware", OPT_SUBMENU, NULL,
|
||||
TESTING);
|
||||
set_item_options(-1, 27);
|
||||
add_item("<L>ong Menu...", "test menu system", OPT_SUBMENU, NULL, LONGMENU);
|
||||
set_item_options(-1, 28);
|
||||
secret =
|
||||
add_item("<S>ecret Menu...", "Secret menu", OPT_INVISIBLE, NULL,
|
||||
SECRETMENU);
|
||||
set_item_options(-1, 29);
|
||||
add_item("<E>xit to prompt", "Exit the menu system", OPT_EXITMENU, "exit",
|
||||
0);
|
||||
set_item_options(-1, 30);
|
||||
csprint("Press any key within 5 seconds to show menu...", 0x07);
|
||||
if (get_key(stdin, 50) == KEY_NONE) // Granularity of 100 milliseconds
|
||||
{
|
||||
csprint("Sorry! Time's up.\r\n", 0x07);
|
||||
return 1;
|
||||
}
|
||||
curr = showmenus(MAIN);
|
||||
if (curr) {
|
||||
if (curr->action == OPT_RUN) {
|
||||
strcpy(cmd, curr->data);
|
||||
if (curr == runprep) {
|
||||
strcat(cmd, infoline);
|
||||
if (network->data == (void *)stat) // We want static
|
||||
{
|
||||
csprint("Enter IP address (last two octets only): ", 0x07);
|
||||
strcpy(ip, "Junk");
|
||||
editstring(ip, sizeof ip);
|
||||
strcat(cmd, "ipaddr=192.168.");
|
||||
strcat(cmd, ip);
|
||||
}
|
||||
}
|
||||
if (issyslinux())
|
||||
runsyslinuxcmd(cmd);
|
||||
else
|
||||
csprint(cmd, 0x07);
|
||||
return 1; // Should not happen when run from SYSLINUX
|
||||
}
|
||||
}
|
||||
// If user quits the menu system, control comes here
|
||||
// If you want to execute some specific command uncomment the next two lines
|
||||
|
||||
// if (syslinux) runcommand(YOUR_COMMAND_HERE);
|
||||
// else csprint(YOUR_COMMAND_HERE,0x07);
|
||||
|
||||
// Deallocate space used for these data structures
|
||||
close_passwords();
|
||||
close_help();
|
||||
close_menusystem();
|
||||
|
||||
// Return to prompt
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2006 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *) 0)
|
||||
#endif
|
||||
|
||||
#include "help.h"
|
||||
#include "com32io.h"
|
||||
#include "cmenu.h"
|
||||
#include "tui.h"
|
||||
#include <stdlib.h>
|
||||
#include <com32.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 2) {
|
||||
csprint("Usage: display.c32 <textfile>\n", 0x07);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
init_help(NULL); // No base dir, so all filenames must be absolute
|
||||
runhelp(argv[1]);
|
||||
close_help();
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,294 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/* This program can be compiled for DOS with the OpenWatcom compiler
|
||||
* (http://www.openwatcom.org/):
|
||||
*
|
||||
* wcl -3 -osx -mt <filename>.c
|
||||
*/
|
||||
|
||||
#ifndef __MENU_H__
|
||||
#define __MENU_H__
|
||||
|
||||
#include "com32io.h"
|
||||
#include "tui.h"
|
||||
#include "syslnx.h"
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// TIMEOUT PARAMETERS
|
||||
/* If no key is pressed within TIMEOUTNUMSTEPS * TIMEOUTSTEPSIZE milliseconds
|
||||
and if a timeout handler is registered, then that will be called.
|
||||
The handler should either either take control from there on, or return without
|
||||
producing any change in the current video settings.
|
||||
|
||||
For e.g. the handler could
|
||||
* Could just quit the menu program
|
||||
* beep and return.
|
||||
|
||||
TIMEOUTSTEPSIZE is the interval for which the program sleeps without checking for
|
||||
any keystroke. So increasing this will make the response of the system slow.
|
||||
Decreasing this will make a lot of interrupt calls using up your CPU. Default
|
||||
value of TIMEOUTSTEPSIZE of 0.1 seconds should be right in most cases.
|
||||
|
||||
TIMEOUTNUMSTEPS of 3000 corresponds to a wait time of 300 seconds or 5 minutes
|
||||
*/
|
||||
|
||||
#define TIMEOUTSTEPSIZE 10
|
||||
#define TIMEOUTNUMSTEPS 30000L
|
||||
|
||||
// Attributes
|
||||
#define NORMALATTR 0x17
|
||||
#define NORMALHLITE 0x1F // Normal Highlight attribute
|
||||
#define REVERSEATTR 0x70
|
||||
#define REVERSEHLITE 0x78 // Reverse Hightlight attribute
|
||||
#define INACTATTR 0x18
|
||||
#define INACTHLITE 0x10 // Inactive Highlight attribute
|
||||
#define REVINACTATTR 0x78
|
||||
#define REVINACTHLITE 0x70 // Reverse Inactive Highlight attr
|
||||
|
||||
#define STATUSATTR 0x74
|
||||
#define STATUSHLITE 0x7B // Status highlight
|
||||
|
||||
#define FILLCHAR ' '
|
||||
#define FILLATTR NORMALATTR
|
||||
#define SHADOWATTR 0x00
|
||||
#define SPACECHAR ' '
|
||||
|
||||
#define TFILLCHAR ' '
|
||||
#define TITLEATTR 0x70
|
||||
|
||||
#define ENABLEHLITE '<' // Char which turns on highlight
|
||||
#define DISABLEHLITE '>' // Char which turns off highlight
|
||||
#define NOHLITE 0 // The offset into attrib array for non-hilite
|
||||
#define HLITE 1 // The offset for Hlite attrib
|
||||
|
||||
#define MOREABOVE '^' // char to print when more menu items available above
|
||||
#define MOREBELOW 'v' // more items available below
|
||||
|
||||
// Attributes of the menu system
|
||||
#define MAXMENUS 250 // Maximum number of menu's allowed
|
||||
#define MAXMENUSIZE 100 // Default value for max num of entries in each menu
|
||||
#define MAXMENUHEIGHT 20 // Maximum number of entries displayed
|
||||
#define MENUBOXTYPE BOX_SINSIN // Default box type Look at tui.h for other values
|
||||
|
||||
// Upper bounds on lengths
|
||||
// We copy the given string, so user can reuse the space used to store incoming arguments.
|
||||
#define MENULEN 78 // Each menu entry is atmost MENULEN chars
|
||||
#define STATLEN 78 // Maximum length of status string
|
||||
#define TITLELEN 78 // Maximum length of title string
|
||||
#define ACTIONLEN 255 // Maximum length of an action string
|
||||
|
||||
// Layout of menu
|
||||
#define MENUROW 3 // Row where menu is displayed (relative to window)
|
||||
#define MENUCOL 4 // Col where menu is displayed (relative to window)
|
||||
#define MENUPAGE 1 // show in display page 1
|
||||
#define STATLINE 24 // Line number where status line starts (relative to window)
|
||||
|
||||
// Used for printing debugging messages
|
||||
#define DEBUGLINE 23 // debugging info goes here
|
||||
|
||||
// Other Chars
|
||||
#define RADIOMENUCHAR '>' // > symbol for radio menu?
|
||||
#define CHECKED '\140' // Check mark
|
||||
#define UNCHECKED '\146' // Light bullet
|
||||
#define RADIOSEL '.' // Current Radio Selection
|
||||
#define RADIOUNSEL ' ' // Radio option not selected
|
||||
|
||||
typedef unsigned char uchar;
|
||||
|
||||
// Types of menu's
|
||||
#define NORMALMENU 1
|
||||
#define RADIOMENU 2
|
||||
|
||||
typedef enum { OPT_INACTIVE, OPT_SUBMENU, OPT_RUN, OPT_EXITMENU, OPT_CHECKBOX,
|
||||
OPT_RADIOMENU, OPT_SEP, OPT_INVISIBLE,
|
||||
OPT_RADIOITEM
|
||||
} t_action;
|
||||
|
||||
typedef union {
|
||||
uchar submenunum; // For submenu's
|
||||
uchar checked; // For check boxes
|
||||
uchar radiomenunum; // Item mapping to a radio menu
|
||||
} t_itemdata;
|
||||
|
||||
struct s_menuitem;
|
||||
struct s_menu;
|
||||
struct s_menusystem;
|
||||
|
||||
typedef struct {
|
||||
unsigned int valid:1; // Is action valid?
|
||||
unsigned int refresh:1; // Should we recompute menu stuff?
|
||||
unsigned int reserved:6; // For future expansion
|
||||
} t_handler_return;
|
||||
|
||||
t_handler_return ACTION_VALID, ACTION_INVALID; // Specific values
|
||||
|
||||
typedef t_handler_return(*t_item_handler) (struct s_menusystem *,
|
||||
struct s_menuitem *);
|
||||
typedef void (*t_menusystem_handler) (struct s_menusystem *,
|
||||
struct s_menuitem *);
|
||||
typedef void (*t_keys_handler) (struct s_menusystem *, struct s_menuitem *,
|
||||
unsigned int scancode);
|
||||
// Last parameter = HIGH BYTE = scan code , LOW BYTE = ASCII CODE
|
||||
|
||||
typedef enum { HDLR_SCREEN, HDLR_KEYS } t_handler;
|
||||
// Types of handlers for menu system
|
||||
|
||||
// TIMEOUT is the list of possible values which can be returned by the handler
|
||||
// instructing the menusystem what to do. The default is CODE_WAIT
|
||||
typedef enum { CODE_WAIT, CODE_ENTER, CODE_ESCAPE } TIMEOUTCODE;
|
||||
typedef TIMEOUTCODE(*t_timeout_handler) (void);
|
||||
|
||||
typedef struct s_menuitem {
|
||||
char *item;
|
||||
char *status;
|
||||
char *data; // string containing kernel to run.. but...
|
||||
// for radio menu's this is a pointer to the item selected or NULL (initially)
|
||||
// for submenu's this string could be name of menu
|
||||
void *extra_data; // Any other data user can point to
|
||||
unsigned int helpid; // Used for Context sensitive help
|
||||
t_item_handler handler; // Pointer to function of type menufn
|
||||
t_action action;
|
||||
t_itemdata itemdata; // Data depends on action value
|
||||
uchar shortcut; // one of [A-Za-z0-9] shortcut for this menu item
|
||||
uchar index; // Index within the menu array
|
||||
uchar parindex; // Index of the menu in which this item appears.
|
||||
|
||||
} t_menuitem;
|
||||
|
||||
typedef t_menuitem *pt_menuitem; // Pointer to type menuitem
|
||||
|
||||
typedef struct s_menu {
|
||||
pt_menuitem *items; // pointer to array of pointer to menuitems
|
||||
char *title; // Title string for menu
|
||||
char *name; // menu can be referred to by this string
|
||||
int maxmenusize; // the size of array allocated
|
||||
uchar numitems; // how many items do we actually have
|
||||
uchar menuwidth;
|
||||
uchar row, col; // Position where this menu should be displayed
|
||||
uchar menuheight; // Maximum number of items to be displayed
|
||||
} t_menu;
|
||||
|
||||
typedef t_menu *pt_menu; // Pointer to type menu
|
||||
|
||||
typedef struct s_menusystem {
|
||||
pt_menu menus[MAXMENUS];
|
||||
char *title;
|
||||
t_menusystem_handler handler; // Menu system handler
|
||||
t_keys_handler keys_handler; // Handler for unknown keys
|
||||
t_timeout_handler ontimeout; // Timeout handler
|
||||
unsigned long tm_numsteps;
|
||||
// Time to wait for key press=numsteps * stepsize milliseconds
|
||||
unsigned int tm_stepsize; // Timeout step size (in milliseconds)
|
||||
// Total timeout max time spent idle before we call handler
|
||||
unsigned long tm_total_timeout; // (in milli seconds)
|
||||
unsigned long tm_sofar_timeout; // All accumulated timeout
|
||||
// total timeout handler
|
||||
t_timeout_handler ontotaltimeout; // Total timeout handler
|
||||
|
||||
int maxmenuheight;
|
||||
uchar nummenus;
|
||||
uchar normalattr[2]; // [0] is non-hlite attr, [1] is hlite attr
|
||||
uchar reverseattr[2];
|
||||
uchar inactattr[2];
|
||||
uchar revinactattr[2];
|
||||
uchar statusattr[2];
|
||||
uchar fillchar;
|
||||
uchar fillattr;
|
||||
uchar spacechar;
|
||||
uchar tfillchar;
|
||||
uchar titleattr;
|
||||
uchar shadowattr;
|
||||
uchar statline;
|
||||
uchar menupage;
|
||||
int maxrow, minrow, numrows; // Number of rows in the window
|
||||
int maxcol, mincol, numcols; // Number of columns in the window
|
||||
|
||||
// Menu box look
|
||||
char box_horiz, box_ltrt, box_rtlt; // Some chars of the box, for redrawing portions of the box
|
||||
|
||||
} t_menusystem;
|
||||
|
||||
typedef t_menusystem *pt_menusystem; // Pointer to type menusystem
|
||||
|
||||
pt_menuitem showmenus(uchar startmenu);
|
||||
|
||||
pt_menusystem init_menusystem(const char *title);
|
||||
|
||||
void close_menusystem(void); // Deallocate memory used
|
||||
|
||||
void set_normal_attr(uchar normal, uchar selected, uchar inactivenormal,
|
||||
uchar inactiveselected);
|
||||
|
||||
void set_normal_hlite(uchar normal, uchar selected, uchar inactivenormal,
|
||||
uchar inactiveselected);
|
||||
|
||||
void set_status_info(uchar statusattr, uchar statushlite, uchar statline);
|
||||
|
||||
void set_title_info(uchar tfillchar, uchar titleattr);
|
||||
|
||||
void set_misc_info(uchar fillchar, uchar fillattr, uchar spacechar,
|
||||
uchar shadowattr);
|
||||
|
||||
void set_window_size(uchar top, uchar left, uchar bot, uchar right); // Set the window which menusystem should use
|
||||
|
||||
void set_menu_options(uchar maxmenuheight);
|
||||
// maximum height of a menu
|
||||
|
||||
void reg_handler(t_handler htype, void *handler); // Register handler
|
||||
|
||||
void unreg_handler(t_handler htype);
|
||||
|
||||
void reg_ontimeout(t_timeout_handler, unsigned int numsteps,
|
||||
unsigned int stepsize);
|
||||
// Set timeout handler, set 0 for default values.
|
||||
// So stepsize=0 means numsteps is measured in centiseconds.
|
||||
void unreg_ontimeout(void);
|
||||
|
||||
void reg_ontotaltimeout(t_timeout_handler, unsigned long numcentiseconds);
|
||||
void unreg_ontotaltimeout(void);
|
||||
|
||||
// Find the number of the menu given the name
|
||||
// Returns -1 if not found
|
||||
uchar find_menu_num(const char *name);
|
||||
|
||||
// Create a new menu and return its position
|
||||
uchar add_menu(const char *title, int maxmenusize);
|
||||
|
||||
// Create a named menu and return its position
|
||||
uchar add_named_menu(const char *name, const char *title, int maxmenusize);
|
||||
|
||||
void set_menu_pos(uchar row, uchar col); // Set the position of this menu.
|
||||
|
||||
// Add item to the "current" menu
|
||||
pt_menuitem add_item(const char *item, const char *status, t_action action,
|
||||
const char *data, uchar itemdata);
|
||||
|
||||
// Set shortcut key and help id
|
||||
void set_item_options(uchar shortcut, int helpid);
|
||||
|
||||
// Set the shortcut key for the current item
|
||||
static inline void set_shortcut(uchar shortcut)
|
||||
{
|
||||
set_item_options(shortcut, 0xFFFF);
|
||||
}
|
||||
|
||||
// Add a separator to the "current" menu
|
||||
pt_menuitem add_sep(void);
|
||||
|
||||
// Generate string based on state of checkboxes and radioitem in given menu
|
||||
// and append string to existing contents of "line"
|
||||
// line must have enough space allocated
|
||||
void gen_append_line(const char *menu_name, char *line);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,78 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include <string.h>
|
||||
#include <com32.h>
|
||||
#include "com32io.h"
|
||||
#include "tui.h"
|
||||
#include "syslnx.h"
|
||||
|
||||
com32sys_t inreg, outreg; // Global register sets for use
|
||||
|
||||
void getpos(char *row, char *col, char page)
|
||||
{
|
||||
memset(&inreg, 0, sizeof inreg);
|
||||
REG_AH(inreg) = 0x03;
|
||||
REG_BH(inreg) = page;
|
||||
__intcall(0x10, &inreg, &outreg);
|
||||
*row = REG_DH(outreg);
|
||||
*col = REG_DL(outreg);
|
||||
}
|
||||
|
||||
char inputc(char *scancode)
|
||||
{
|
||||
syslinux_idle(); /* So syslinux can perform periodic activity */
|
||||
memset(&inreg, 0, sizeof inreg);
|
||||
REG_AH(inreg) = 0x10;
|
||||
__intcall(0x16, &inreg, &outreg);
|
||||
if (scancode)
|
||||
*scancode = REG_AH(outreg);
|
||||
return REG_AL(outreg);
|
||||
}
|
||||
|
||||
void getcursorshape(char *start, char *end)
|
||||
{
|
||||
char page = 0; // XXX TODO
|
||||
memset(&inreg, 0, sizeof inreg);
|
||||
REG_AH(inreg) = 0x03;
|
||||
REG_BH(inreg) = page;
|
||||
__intcall(0x10, &inreg, &outreg);
|
||||
*start = REG_CH(outreg);
|
||||
*end = REG_CL(outreg);
|
||||
}
|
||||
|
||||
void setcursorshape(char start, char end)
|
||||
{
|
||||
memset(&inreg, 0, sizeof inreg);
|
||||
REG_AH(inreg) = 0x01;
|
||||
REG_CH(inreg) = start;
|
||||
REG_CL(inreg) = end;
|
||||
__intcall(0x10, &inreg, &outreg);
|
||||
}
|
||||
|
||||
void setvideomode(char mode)
|
||||
{
|
||||
memset(&inreg, 0, sizeof inreg);
|
||||
REG_AH(inreg) = 0x00;
|
||||
REG_AL(inreg) = mode;
|
||||
__intcall(0x10, &inreg, &outreg);
|
||||
}
|
||||
|
||||
// Get char displayed at current position
|
||||
unsigned char getcharat(char page)
|
||||
{
|
||||
memset(&inreg, 0, sizeof inreg);
|
||||
REG_AH(inreg) = 0x08;
|
||||
REG_BH(inreg) = page;
|
||||
__intcall(0x16, &inreg, &outreg);
|
||||
return REG_AL(outreg);
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef __COM32IO_H__
|
||||
#define __COM32IO_H__
|
||||
|
||||
#include <com32.h>
|
||||
#include <stdio.h>
|
||||
#include <libansi.h>
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
|
||||
/* Bits representing ShiftFlags, See Int16/Function 2 or Mem[0x417] to get this info */
|
||||
|
||||
#define INSERT_ON (1<<7)
|
||||
#define CAPSLOCK_ON (1<<6)
|
||||
#define NUMLOCK_ON (1<<5)
|
||||
#define SCRLLOCK_ON (1<<4)
|
||||
#define ALT_PRESSED (1<<3)
|
||||
#define CTRL_PRESSED (1<<2)
|
||||
// actually 1<<1 is Left Shift, 1<<0 is right shift
|
||||
#define SHIFT_PRESSED (1<<1 | 1 <<0)
|
||||
|
||||
/* BIOS Assisted output routines */
|
||||
|
||||
void getpos(char *row, char *col, char page);
|
||||
|
||||
char inputc(char *scancode); // Return ASCII char by val, and scancode by reference
|
||||
|
||||
void setcursorshape(char start, char end); // Set cursor shape
|
||||
void getcursorshape(char *start, char *end); // Get shape for current page
|
||||
|
||||
// Get char displayed at current position in specified page
|
||||
unsigned char getcharat(char page);
|
||||
|
||||
static inline unsigned char readbiosb(unsigned int ofs)
|
||||
{
|
||||
return *((unsigned char *)MK_PTR(0, ofs));
|
||||
}
|
||||
|
||||
static inline char getshiftflags(void)
|
||||
{
|
||||
return readbiosb(0x417);
|
||||
}
|
||||
|
||||
void scrollupwindow(char top, char left, char bot, char right, char attr, char numlines); //Scroll up given window
|
||||
|
||||
void setvideomode(char mode); // Set the video mode.
|
||||
|
||||
static inline char getvideomode(void) // Get the current video mode
|
||||
{
|
||||
return readbiosb(0x449);
|
||||
}
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
|||
|
||||
#ifndef _DES_H_
|
||||
#define _DES_H_
|
||||
|
||||
// des crypt
|
||||
extern char *crypt(const char *key, const char *salt);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,231 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include "help.h"
|
||||
#include <stdio.h>
|
||||
#include "string.h"
|
||||
#include "com32io.h"
|
||||
#include <syslinux/loadfile.h> // to read entire file into memory
|
||||
|
||||
int nc, nr; // Number of columns/rows of the screen
|
||||
char helpbasedir[HELPDIRLEN]; // name of help directory limited to HELPDIRLEN
|
||||
|
||||
// Find the occurence of the count'th \n in buffer (or NULL) if not found
|
||||
static char *findline(char *buffer, int count)
|
||||
{
|
||||
int ctr;
|
||||
char *p = buffer - 1;
|
||||
|
||||
if (count < 1)
|
||||
return buffer;
|
||||
for (ctr = 0; ctr < count; ctr++) {
|
||||
p = strchr(p + 1, '\n');
|
||||
if (p == NULL)
|
||||
return NULL;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
// return the number of lines in buffer
|
||||
static int countlines(char *buffer)
|
||||
{
|
||||
int ans;
|
||||
const char *p;
|
||||
|
||||
p = buffer - 1;
|
||||
ans = 1;
|
||||
while (p) {
|
||||
p = strchr(p + 1, '\n');
|
||||
ans++;
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
|
||||
// Print numlines of text starting from buf
|
||||
static void printtext(char *buf, int from)
|
||||
{
|
||||
char *f, *t;
|
||||
int nlines, i;
|
||||
|
||||
// clear window to print
|
||||
nlines = nr - HELP_BODY_ROW - HELP_BOTTOM_MARGIN - 1;
|
||||
|
||||
f = findline(buf, from);
|
||||
if (!f)
|
||||
return; // nothing to print
|
||||
if (*f == '\n')
|
||||
f++; // start of from+1st line
|
||||
t = f;
|
||||
|
||||
for (i = 0; i < nlines; i++) {
|
||||
gotoxy(HELP_BODY_ROW + i, HELP_LEFT_MARGIN);
|
||||
clear_end_of_line();
|
||||
putchar(SO);
|
||||
gotoxy(HELP_BODY_ROW + i, nc - 1);
|
||||
putch(LEFT_BORDER, 0x07);
|
||||
putchar(SI);
|
||||
|
||||
gotoxy(HELP_BODY_ROW + i, HELP_LEFT_MARGIN);
|
||||
while (*t != '\n') {
|
||||
if (*t == '\0')
|
||||
return;
|
||||
putchar(*t);
|
||||
t++;
|
||||
}
|
||||
putchar('\n');
|
||||
t++;
|
||||
}
|
||||
}
|
||||
|
||||
void showhelp(const char *filename)
|
||||
{
|
||||
char ph;
|
||||
char *title, *text;
|
||||
union {
|
||||
char *buffer;
|
||||
void *vbuf;
|
||||
} buf; // This is to avoild type-punning issues
|
||||
|
||||
char line[512];
|
||||
size_t size;
|
||||
int scan;
|
||||
int rv, numlines, curr_line;
|
||||
|
||||
if (getscreensize(1, &nr, &nc)) {
|
||||
/* Unknown screen size? */
|
||||
nc = 80;
|
||||
nr = 24;
|
||||
}
|
||||
ph = nr - HELP_BODY_ROW;
|
||||
cls();
|
||||
|
||||
/* Turn autowrap off, to avoid scrolling the menu */
|
||||
printf(CSI "?7l");
|
||||
|
||||
if (filename == NULL) { // print file contents
|
||||
strcpy(line, "Filename not given");
|
||||
goto puke;
|
||||
}
|
||||
|
||||
rv = loadfile(filename, (void **)&buf.vbuf, &size); // load entire file into memory
|
||||
if (rv < 0) { // Error reading file or no such file
|
||||
sprintf(line, "Error reading file or file not found\n file=%s", filename);
|
||||
goto puke;
|
||||
}
|
||||
|
||||
title = buf.buffer;
|
||||
text = findline(title, 1); // end of first line
|
||||
*text++ = '\0'; // end the title string and increment text
|
||||
|
||||
// Now we have a file just print it.
|
||||
numlines = countlines(text);
|
||||
curr_line = 0;
|
||||
scan = KEY_ESC + 1; // anything except ESCAPE
|
||||
|
||||
/* top, left, bottom, right, attr */
|
||||
drawbox(0, 0, nr - 1, nc - 1, 0x07);
|
||||
while (scan != KEY_ESC) {
|
||||
/* Title */
|
||||
gotoxy(1, (nc - strlen(title)) / 2);
|
||||
fputs(title, stdout);
|
||||
drawhorizline(2, HELP_LEFT_MARGIN - 1, nc - HELP_RIGHT_MARGIN, 0x07, 0); // dumb==0
|
||||
/* Text */
|
||||
printtext(text, curr_line);
|
||||
gotoxy(HELP_BODY_ROW - 1, nc - HELP_RIGHT_MARGIN);
|
||||
if (curr_line > 0)
|
||||
putchar(HELP_MORE_ABOVE);
|
||||
else
|
||||
putchar(' ');
|
||||
gotoxy(nr - HELP_BOTTOM_MARGIN - 1, nc - HELP_RIGHT_MARGIN);
|
||||
if (curr_line < numlines - ph)
|
||||
putchar(HELP_MORE_BELOW);
|
||||
else
|
||||
putchar(' ');
|
||||
|
||||
scan = get_key(stdout, 0); // wait for user keypress
|
||||
|
||||
switch (scan) {
|
||||
case KEY_HOME:
|
||||
curr_line = 0;
|
||||
break;
|
||||
case KEY_END:
|
||||
curr_line = numlines;
|
||||
break;
|
||||
case KEY_UP:
|
||||
curr_line--;
|
||||
break;
|
||||
case KEY_DOWN:
|
||||
curr_line++;
|
||||
break;
|
||||
case KEY_PGUP:
|
||||
curr_line -= ph;
|
||||
break;
|
||||
case KEY_PGDN:
|
||||
curr_line += ph;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (curr_line > numlines - ph)
|
||||
curr_line = numlines - ph;
|
||||
if (curr_line < 0)
|
||||
curr_line = 0;
|
||||
}
|
||||
out:
|
||||
cls();
|
||||
return;
|
||||
|
||||
puke:
|
||||
gotoxy(HELP_BODY_ROW, HELP_LEFT_MARGIN);
|
||||
fputs(line, stdout);
|
||||
while (1) {
|
||||
scan = get_key(stdin, 0);
|
||||
if (scan == KEY_ESC)
|
||||
break;
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
void runhelp(const char *filename)
|
||||
{
|
||||
char fullname[HELPDIRLEN + 16];
|
||||
|
||||
cls();
|
||||
cursoroff();
|
||||
if (helpbasedir[0] != 0) {
|
||||
strcpy(fullname, helpbasedir);
|
||||
strcat(fullname, "/");
|
||||
strcat(fullname, filename);
|
||||
showhelp(fullname);
|
||||
} else
|
||||
showhelp(filename); // Assume filename is absolute
|
||||
}
|
||||
|
||||
void runhelpsystem(unsigned int helpid)
|
||||
{
|
||||
char filename[15];
|
||||
|
||||
sprintf(filename, "hlp%05d.txt", helpid);
|
||||
runhelp(filename);
|
||||
}
|
||||
|
||||
void init_help(const char *helpdir)
|
||||
{
|
||||
if (helpdir != NULL)
|
||||
strcpy(helpbasedir, helpdir);
|
||||
else
|
||||
helpbasedir[0] = 0;
|
||||
}
|
||||
|
||||
void close_help(void)
|
||||
{
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef __HELP_H_
|
||||
#define __HELP_H_
|
||||
|
||||
#include "cmenu.h"
|
||||
#include "com32io.h"
|
||||
#include "tui.h"
|
||||
#include <string.h>
|
||||
|
||||
// How many rows for the title
|
||||
#define HELP_TITLE_HEIGHT 1
|
||||
#define HELP_BODY_ROW (HELP_TITLE_HEIGHT+3)
|
||||
#define HELP_LEFT_MARGIN 2
|
||||
#define HELP_RIGHT_MARGIN 2 // Assume all lines dont cross this
|
||||
#define HELP_BOTTOM_MARGIN 1 // Number of lines not use from bottom of screen
|
||||
|
||||
#define HELPBOX BOX_SINSIN
|
||||
#define HELPDIRLEN 64
|
||||
#define HELPPAGE 2
|
||||
|
||||
#define HELP_MORE_ABOVE '^' // to print when more is available above
|
||||
#define HELP_MORE_BELOW 'v' // same as above but for below
|
||||
|
||||
// Display one screen of help information
|
||||
void showhelp(const char *filename);
|
||||
|
||||
// Start the help system using id helpid
|
||||
void runhelpsystem(unsigned int helpid);
|
||||
|
||||
// Start help system with specified file
|
||||
void runhelp(const char *filename);
|
||||
|
||||
// Directory where help files are located
|
||||
void init_help(const char *helpdir);
|
||||
// Free internal datastructures
|
||||
void close_help(void);
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,159 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Bostom MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include "passwords.h"
|
||||
#include "des.h"
|
||||
#include "string.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "tui.h"
|
||||
|
||||
#define MAX_LINE 512
|
||||
// Max line length in a pwdfile
|
||||
p_pwdentry userdb[MAX_USERS]; // Array of pointers
|
||||
int numusers; // Actual number of users
|
||||
|
||||
// returns true or false, i.e. 1 or 0
|
||||
char authenticate_user(const char *username, const char *pwd)
|
||||
{
|
||||
char salt[12];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < numusers; i++) {
|
||||
if (userdb[i] == NULL)
|
||||
continue;
|
||||
if (strcmp(username, userdb[i]->username) == 0) {
|
||||
strcpy(salt, userdb[i]->pwdhash);
|
||||
salt[2] = '\0';
|
||||
if (strcmp(userdb[i]->pwdhash, crypt(pwd, salt)) == 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Does user USERNAME have permission PERM
|
||||
char isallowed(const char *username, const char *perm)
|
||||
{
|
||||
int i;
|
||||
char *dperm;
|
||||
char *tmp;
|
||||
|
||||
// If no users, then everybody is allowed to do everything
|
||||
if (numusers == 0)
|
||||
return 1;
|
||||
if (strcmp(username, GUEST_USER) == 0)
|
||||
return 0;
|
||||
dperm = (char *)malloc(strlen(perm) + 3);
|
||||
strcpy(dperm + 1, perm);
|
||||
dperm[0] = ':';
|
||||
dperm[strlen(perm) + 1] = ':';
|
||||
dperm[strlen(perm) + 2] = 0;
|
||||
// Now dperm = ":perm:"
|
||||
for (i = 0; i < numusers; i++) {
|
||||
if (strcmp(userdb[i]->username, username) == 0) // Found the user
|
||||
{
|
||||
if (userdb[i]->perms == NULL)
|
||||
return 0; // No permission
|
||||
tmp = strstr(userdb[i]->perms, dperm); // Search for permission
|
||||
free(dperm); // Release memory
|
||||
if (tmp == NULL)
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
// User not found return 0
|
||||
free(dperm);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Initialise the list of of user passwords permissions from file
|
||||
void init_passwords(const char *filename)
|
||||
{
|
||||
int i;
|
||||
char line[MAX_LINE], *p, *user, *pwdhash, *perms;
|
||||
FILE *f;
|
||||
|
||||
for (i = 0; i < MAX_USERS; i++)
|
||||
userdb[i] = NULL;
|
||||
numusers = 0;
|
||||
|
||||
if (!filename)
|
||||
return; // No filename specified
|
||||
|
||||
f = fopen(filename, "r");
|
||||
if (!f)
|
||||
return; // File does not exist
|
||||
|
||||
// Process each line
|
||||
while (fgets(line, sizeof line, f)) {
|
||||
// Replace EOLN with \0
|
||||
p = strchr(line, '\r');
|
||||
if (p)
|
||||
*p = '\0';
|
||||
p = strchr(line, '\n');
|
||||
if (p)
|
||||
*p = '\0';
|
||||
|
||||
// If comment line or empty ignore line
|
||||
p = line;
|
||||
while (*p == ' ')
|
||||
p++; // skip initial spaces
|
||||
if ((*p == '#') || (*p == '\0'))
|
||||
continue; // Skip comment lines
|
||||
|
||||
user = p; // This is where username starts
|
||||
p = strchr(user, ':');
|
||||
if (p == NULL)
|
||||
continue; // Malformed line skip
|
||||
*p = '\0';
|
||||
pwdhash = p + 1;
|
||||
if (*pwdhash == 0)
|
||||
continue; // Malformed line (no password specified)
|
||||
p = strchr(pwdhash, ':');
|
||||
if (p == NULL) { // No perms specified
|
||||
perms = NULL;
|
||||
} else {
|
||||
*p = '\0';
|
||||
perms = p + 1;
|
||||
if (*perms == 0)
|
||||
perms = NULL;
|
||||
}
|
||||
// At this point we have user,pwdhash and perms setup
|
||||
userdb[numusers] = (p_pwdentry) malloc(sizeof(pwdentry));
|
||||
strcpy(userdb[numusers]->username, user);
|
||||
strcpy(userdb[numusers]->pwdhash, pwdhash);
|
||||
if (perms == NULL)
|
||||
userdb[numusers]->perms = NULL;
|
||||
else {
|
||||
userdb[numusers]->perms = (char *)malloc(strlen(perms) + 3);
|
||||
(userdb[numusers]->perms)[0] = ':';
|
||||
strcpy(userdb[numusers]->perms + 1, perms);
|
||||
(userdb[numusers]->perms)[strlen(perms) + 1] = ':';
|
||||
(userdb[numusers]->perms)[strlen(perms) + 2] = 0;
|
||||
// Now perms field points to ":perms:"
|
||||
}
|
||||
numusers++;
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
void close_passwords(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < numusers; i++)
|
||||
if (userdb[i] != NULL)
|
||||
free(userdb[i]);
|
||||
numusers = 0;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
#ifndef _PASSWORDS_H_
|
||||
#define _PASSWORDS_H_
|
||||
|
||||
char authenticate_user(const char *username, const char *pwd);
|
||||
|
||||
char isallowed(const char *username, const char *perm);
|
||||
|
||||
// Initialise the list of of user passwords permissions from file
|
||||
void init_passwords(const char *filename);
|
||||
// Free all space used for internal data structures
|
||||
void close_passwords(void);
|
||||
|
||||
#define MAX_USERS 128 // Maximum number of users
|
||||
#define USERNAME_LENGTH 12 // Max length of user name
|
||||
#define PWDHASH_LENGTH 40 // Max lenght of pwd hash
|
||||
|
||||
typedef struct {
|
||||
char username[USERNAME_LENGTH + 1];
|
||||
char pwdhash[PWDHASH_LENGTH + 1];
|
||||
char *perms; // pointer to string containing ":" delimited permissions
|
||||
} pwdentry;
|
||||
|
||||
typedef pwdentry *p_pwdentry;
|
||||
|
||||
#define GUEST_USER "guest"
|
||||
|
||||
#endif
|
|
@ -0,0 +1,65 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include <string.h>
|
||||
#include <com32.h>
|
||||
#include <core.h>
|
||||
#include <graphics.h>
|
||||
#include "syslnx.h"
|
||||
#include <syslinux/config.h>
|
||||
#include <syslinux/video.h>
|
||||
|
||||
com32sys_t inreg, outreg; // Global registers for this module
|
||||
|
||||
void runsyslinuxcmd(const char *cmd)
|
||||
{
|
||||
char *bounce;
|
||||
|
||||
bounce = lmalloc(strlen(cmd) + 1);
|
||||
if (!bounce)
|
||||
return;
|
||||
|
||||
strcpy(bounce, cmd);
|
||||
load_kernel(bounce);
|
||||
}
|
||||
|
||||
void gototxtmode(void)
|
||||
{
|
||||
syslinux_force_text_mode();
|
||||
}
|
||||
|
||||
void syslinux_idle(void)
|
||||
{
|
||||
__idle();
|
||||
}
|
||||
|
||||
unsigned int getversion(char *deriv, unsigned int *numfun)
|
||||
{
|
||||
if (deriv)
|
||||
*deriv = __syslinux_version.filesystem;
|
||||
if (numfun)
|
||||
*numfun = __syslinux_version.max_api;
|
||||
return __syslinux_version.version;
|
||||
}
|
||||
|
||||
char issyslinux(void)
|
||||
{
|
||||
return !!getversion(NULL, NULL);
|
||||
}
|
||||
|
||||
void runsyslinuximage(const char *cmd, long ipappend)
|
||||
{
|
||||
(void)ipappend; // XXX: Unused?!
|
||||
|
||||
getversion(NULL, NULL);
|
||||
runsyslinuxcmd(cmd);
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef __SYSLNX_H__
|
||||
#define __SYSLNX_H__
|
||||
|
||||
#include <com32.h>
|
||||
|
||||
//Macros which help user not have to remember the structure of register
|
||||
// Data structure
|
||||
|
||||
#define REG_AH(x) ((x).eax.b[1])
|
||||
#define REG_AL(x) ((x).eax.b[0])
|
||||
#define REG_AX(x) ((x).eax.w[0])
|
||||
#define REG_EAX(x) ((x).eax.l)
|
||||
|
||||
#define REG_BH(x) ((x).ebx.b[1])
|
||||
#define REG_BL(x) ((x).ebx.b[0])
|
||||
#define REG_BX(x) ((x).ebx.w[0])
|
||||
#define REG_EBX(x) ((x).ebx.l)
|
||||
|
||||
#define REG_CH(x) ((x).ecx.b[1])
|
||||
#define REG_CL(x) ((x).ecx.b[0])
|
||||
#define REG_CX(x) ((x).ecx.w[0])
|
||||
#define REG_ECX(x) ((x).ecx.l)
|
||||
|
||||
#define REG_DH(x) ((x).edx.b[1])
|
||||
#define REG_DL(x) ((x).edx.b[0])
|
||||
#define REG_DX(x) ((x).edx.w[0])
|
||||
#define REG_EDX(x) ((x).edx.l)
|
||||
|
||||
#define REG_DS(x) ((x).ds)
|
||||
#define REG_ES(x) ((x).es)
|
||||
#define REG_FS(x) ((x).fs)
|
||||
#define REG_GS(x) ((x).gs)
|
||||
|
||||
#define REG_SI(x) ((x).esi.w[0])
|
||||
#define REG_ESI(x) ((x).esi.l)
|
||||
|
||||
#define REG_DI(x) ((x).edi.w[0])
|
||||
#define REG_EDI(x) ((x).edi.l)
|
||||
|
||||
char issyslinux(void); /* Check if syslinux is running */
|
||||
|
||||
void runsyslinuxcmd(const char *cmd); /* Run specified command */
|
||||
|
||||
void gototxtmode(void); /* Change mode to text mode */
|
||||
|
||||
void syslinux_idle(void); /* Call syslinux idle loop */
|
||||
|
||||
/* Run command line with ipappend, returns if kernel image not found
|
||||
If syslinux version too old, then defaults to runsyslinuxcmd */
|
||||
void runsyslinuximage(const char *cmd, long ipappend);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,258 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2006 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include "tui.h"
|
||||
#include <string.h>
|
||||
#include <com32.h>
|
||||
#include <stdlib.h>
|
||||
#include "com32io.h"
|
||||
|
||||
com32sys_t inreg, outreg; // Global register sets for use
|
||||
|
||||
char bkspstr[] = " \b$";
|
||||
char eolstr[] = "\n$";
|
||||
|
||||
// Reads a line of input from stdin. Replace CR with NUL byte
|
||||
// password <> 0 implies not echoed on screen
|
||||
// showoldvalue <> 0 implies currentvalue displayed first
|
||||
// If showoldvalue <> 0 then caller responsibility to ensure that
|
||||
// str is NULL terminated.
|
||||
void getuserinput(char *stra, unsigned int size, unsigned int password,
|
||||
unsigned int showoldvalue)
|
||||
{
|
||||
unsigned int c;
|
||||
char *p, *q; // p = current char of string, q = tmp
|
||||
char *last; // The current last char of string
|
||||
char *str; // pointer to string which is going to be allocated
|
||||
char row, col;
|
||||
char start, end; // Cursor shape
|
||||
char fudge; // How many chars should be removed from output
|
||||
char insmode; // Are we in insert or overwrite
|
||||
|
||||
getpos(&row, &col, 0); // Get current position
|
||||
getcursorshape(&start, &end);
|
||||
insmode = 1;
|
||||
|
||||
str = (char *)malloc(size + 1); // Allocate memory to store user input
|
||||
memset(str, 0, size + 1); // Zero it out
|
||||
if (password != 0)
|
||||
showoldvalue = 0; // Password's never displayed
|
||||
|
||||
if (showoldvalue != 0)
|
||||
strcpy(str, stra); // If show old value copy current value
|
||||
|
||||
last = str;
|
||||
while (*last) {
|
||||
last++;
|
||||
} // Find the terminating null byte
|
||||
p = str + strlen(str);
|
||||
|
||||
if (insmode == 0)
|
||||
setcursorshape(1, 7); // Block cursor
|
||||
else
|
||||
setcursorshape(6, 7); // Normal cursor
|
||||
|
||||
// Invariants: p is the current char
|
||||
// col is the corresponding column on the screen
|
||||
if (password == 0) // Not a password, print initial value
|
||||
{
|
||||
gotoxy(row, col);
|
||||
csprint(str, GETSTRATTR);
|
||||
}
|
||||
while (1) { // Do forever
|
||||
c = get_key(stdin, 0);
|
||||
if (c == KEY_ENTER)
|
||||
break; // User hit Enter getout of loop
|
||||
if (c == KEY_ESC) // User hit escape getout and nullify string
|
||||
{
|
||||
*str = 0;
|
||||
break;
|
||||
}
|
||||
fudge = 0;
|
||||
// if scan code is regognized do something
|
||||
// else if char code is recognized do something
|
||||
// else ignore
|
||||
switch (c) {
|
||||
case KEY_HOME:
|
||||
p = str;
|
||||
break;
|
||||
case KEY_END:
|
||||
p = last;
|
||||
break;
|
||||
case KEY_LEFT:
|
||||
if (p > str)
|
||||
p--;
|
||||
break;
|
||||
case KEY_CTRL(KEY_LEFT):
|
||||
if (p == str)
|
||||
break;
|
||||
if (*p == ' ')
|
||||
while ((p > str) && (*p == ' '))
|
||||
p--;
|
||||
else {
|
||||
if (*(p - 1) == ' ') {
|
||||
p--;
|
||||
while ((p > str) && (*p == ' '))
|
||||
p--;
|
||||
}
|
||||
}
|
||||
while ((p > str) && ((*p == ' ') || (*(p - 1) != ' ')))
|
||||
p--;
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
if (p < last)
|
||||
p++;
|
||||
break;
|
||||
case KEY_CTRL(KEY_RIGHT):
|
||||
if (*p == 0)
|
||||
break; // At end of string
|
||||
if (*p != ' ')
|
||||
while ((*p != 0) && (*p != ' '))
|
||||
p++;
|
||||
while ((*p != 0) && ((*p == ' ') && (*(p + 1) != ' ')))
|
||||
p++;
|
||||
if (*p == ' ')
|
||||
p++;
|
||||
break;
|
||||
case KEY_DEL:
|
||||
case KEY_DELETE:
|
||||
q = p;
|
||||
while (*(q + 1)) {
|
||||
*q = *(q + 1);
|
||||
q++;
|
||||
}
|
||||
if (last > str)
|
||||
last--;
|
||||
fudge = 1;
|
||||
break;
|
||||
case KEY_INSERT:
|
||||
insmode = 1 - insmode; // Switch mode
|
||||
if (insmode == 0)
|
||||
setcursorshape(1, 7); // Block cursor
|
||||
else
|
||||
setcursorshape(6, 7); // Normal cursor
|
||||
break;
|
||||
case KEY_BACKSPACE: // Move over by one
|
||||
q = p;
|
||||
while (q <= last) {
|
||||
*(q - 1) = *q;
|
||||
q++;
|
||||
}
|
||||
if (last > str)
|
||||
last--;
|
||||
if (p > str)
|
||||
p--;
|
||||
fudge = 1;
|
||||
break;
|
||||
case KEY_CTRL('U'): /* Ctrl-U: kill input */
|
||||
fudge = last - str;
|
||||
while (p > str)
|
||||
*p-- = 0;
|
||||
p = str;
|
||||
*p = 0;
|
||||
last = str;
|
||||
break;
|
||||
default: // Handle insert and overwrite mode
|
||||
if ((c >= ' ') && (c < 128) &&
|
||||
((unsigned int)(p - str) < size - 1)) {
|
||||
if (insmode == 0) { // Overwrite mode
|
||||
if (p == last)
|
||||
last++;
|
||||
*last = 0;
|
||||
*p++ = c;
|
||||
} else { // Insert mode
|
||||
if (p == last) { // last char
|
||||
last++;
|
||||
*last = 0;
|
||||
*p++ = c;
|
||||
} else { // Non-last char
|
||||
q = last++;
|
||||
while (q >= p) {
|
||||
*q = *(q - 1);
|
||||
q--;
|
||||
}
|
||||
*p++ = c;
|
||||
}
|
||||
}
|
||||
} else
|
||||
beep();
|
||||
break;
|
||||
}
|
||||
// Now the string has been modified, print it
|
||||
if (password == 0) {
|
||||
gotoxy(row, col);
|
||||
csprint(str, GETSTRATTR);
|
||||
if (fudge > 0)
|
||||
cprint(' ', GETSTRATTR, fudge);
|
||||
gotoxy(row, col + (p - str));
|
||||
}
|
||||
} /* while */
|
||||
*p = '\0';
|
||||
if (password == 0)
|
||||
csprint("\r\n", GETSTRATTR);
|
||||
setcursorshape(start, end); // Block cursor
|
||||
// If user hit ESCAPE so return without any changes
|
||||
if (c != KEY_ESC)
|
||||
strcpy(stra, str);
|
||||
free(str);
|
||||
}
|
||||
|
||||
//////////////////////////////Box Stuff
|
||||
|
||||
// Draw box and lines
|
||||
void drawbox(const char top, const char left, const char bot,
|
||||
const char right, const char attr)
|
||||
{
|
||||
unsigned char x;
|
||||
putchar(SO);
|
||||
// Top border
|
||||
gotoxy(top, left);
|
||||
putch(TOP_LEFT_CORNER_BORDER, attr);
|
||||
cprint(TOP_BORDER, attr, right - left - 1);
|
||||
putch(TOP_RIGHT_CORNER_BORDER, attr);
|
||||
// Bottom border
|
||||
gotoxy(bot, left);
|
||||
putch(BOTTOM_LEFT_CORNER_BORDER, attr);
|
||||
cprint(BOTTOM_BORDER, attr, right - left - 1);
|
||||
putch(BOTTOM_RIGHT_CORNER_BORDER, attr);
|
||||
// Left & right borders
|
||||
for (x = top + 1; x < bot; x++) {
|
||||
gotoxy(x, left);
|
||||
putch(LEFT_BORDER, attr);
|
||||
gotoxy(x, right);
|
||||
putch(RIGHT_BORDER, attr);
|
||||
}
|
||||
putchar(SI);
|
||||
}
|
||||
|
||||
void drawhorizline(const char top, const char left, const char right,
|
||||
const char attr, char dumb)
|
||||
{
|
||||
unsigned char start, end;
|
||||
if (dumb == 0) {
|
||||
start = left + 1;
|
||||
end = right - 1;
|
||||
} else {
|
||||
start = left;
|
||||
end = right;
|
||||
}
|
||||
gotoxy(top, start);
|
||||
putchar(SO);
|
||||
cprint(MIDDLE_BORDER, attr, end - start + 1);
|
||||
if (dumb == 0) {
|
||||
gotoxy(top, left);
|
||||
putch(MIDDLE_BORDER, attr);
|
||||
gotoxy(top, right);
|
||||
putch(MIDDLE_BORDER, attr);
|
||||
}
|
||||
putchar(SI);
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef __TUI_H__
|
||||
#define __TUI_H__
|
||||
|
||||
#include <com32.h>
|
||||
#include <getkey.h>
|
||||
#include <consoles.h>
|
||||
#include "syslnx.h"
|
||||
#include "com32io.h"
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
|
||||
#define SO '\016'
|
||||
#define SI '\017'
|
||||
|
||||
#define TOP_LEFT_CORNER_BORDER '\154'
|
||||
#define TOP_BORDER '\161'
|
||||
#define TOP_RIGHT_CORNER_BORDER '\153'
|
||||
#define BOTTOM_LEFT_CORNER_BORDER '\155'
|
||||
#define BOTTOM_BORDER '\161'
|
||||
#define BOTTOM_RIGHT_CORNER_BORDER '\152'
|
||||
#define LEFT_BORDER '\170'
|
||||
#define RIGHT_BORDER '\170'
|
||||
#define LEFT_MIDDLE_BORDER '\164'
|
||||
#define MIDDLE_BORDER '\161'
|
||||
#define RIGHT_MIDDLE_BORDER '\165'
|
||||
|
||||
#define BELL 0x07
|
||||
#define GETSTRATTR 0x07
|
||||
|
||||
// Generic user input,
|
||||
// password = 0 iff chars echoed on screen
|
||||
// showoldvalue <> 0 iff current displayed for editing
|
||||
void getuserinput(char *str, unsigned int size,
|
||||
unsigned int password, unsigned int showoldvalue);
|
||||
|
||||
static inline void getstring(char *str, unsigned int size)
|
||||
{
|
||||
getuserinput(str, size, 0, 0);
|
||||
}
|
||||
|
||||
static inline void editstring(char *str, unsigned int size)
|
||||
{
|
||||
getuserinput(str, size, 0, 1);
|
||||
}
|
||||
|
||||
static inline void getpwd(char *str, unsigned int size)
|
||||
{
|
||||
getuserinput(str, size, 1, 0);
|
||||
}
|
||||
|
||||
void drawbox(const char, const char, const char, const char,
|
||||
const char);
|
||||
|
||||
// Draw a horizontal line
|
||||
// dumb == 1, means just draw the line
|
||||
// dumb == 0 means check the first and last positions and depending on what is
|
||||
// currently on the screen make it a LTRT and/or RTLT appropriately.
|
||||
void drawhorizline(const char, const char, const char, const char,
|
||||
const char dumb);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,307 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import sys, re, getopt
|
||||
|
||||
class Menusystem:
|
||||
|
||||
types = {"run" : "OPT_RUN",
|
||||
"inactive" : "OPT_INACTIVE",
|
||||
"checkbox" : "OPT_CHECKBOX",
|
||||
"radiomenu": "OPT_RADIOMENU",
|
||||
"sep" : "OPT_SEP",
|
||||
"invisible": "OPT_INVISIBLE",
|
||||
"radioitem": "OPT_RADIOITEM",
|
||||
"exitmenu" : "OPT_EXITMENU",
|
||||
"login" : "login", # special type
|
||||
"submenu" : "OPT_SUBMENU"}
|
||||
|
||||
entry_init = { "item" : "",
|
||||
"info" : "",
|
||||
"data" : "",
|
||||
"ipappend" : 0, # flag to send in case of PXELINUX
|
||||
"helpid" : 65535, # 0xFFFF
|
||||
"shortcut":"-1",
|
||||
"state" : 0, # initial state of checkboxes
|
||||
"argsmenu": "", # name of menu containing arguments
|
||||
"perms" : "", # permission required to execute this entry
|
||||
"_updated" : None, # has this dictionary been updated
|
||||
"type" : "run" }
|
||||
|
||||
menu_init = { "title" : "",
|
||||
"row" : "0xFF", # let system decide position
|
||||
"col" : "0xFF",
|
||||
"_updated" : None,
|
||||
"name" : "" }
|
||||
|
||||
system_init ={ "videomode" : "0xFF",
|
||||
"title" : "Menu System",
|
||||
"top" : "1",
|
||||
"left" : "1" ,
|
||||
"bot" : "21",
|
||||
"right":"79",
|
||||
"helpdir" : "/isolinux/help",
|
||||
"pwdfile" : "",
|
||||
"pwdrow" : "23",
|
||||
"editrow" : "23",
|
||||
"skipcondn" : "0",
|
||||
"skipcmd" : ".exit",
|
||||
"startfile": "",
|
||||
"onerrorcmd":".repeat",
|
||||
"exitcmd" : ".exit",
|
||||
"exitcmdroot" : "",
|
||||
"timeout" : "600",
|
||||
"timeoutcmd":".beep",
|
||||
"totaltimeout" : "0",
|
||||
"totaltimeoutcmd" : ".wait"
|
||||
}
|
||||
|
||||
shift_flags = { "alt" : "ALT_PRESSED",
|
||||
"ctrl" : "CTRL_PRESSED",
|
||||
"shift": "SHIFT_PRESSED",
|
||||
"caps" : "CAPSLOCK_ON",
|
||||
"num" : "NUMLOCK_ON",
|
||||
"ins" : "INSERT_ON"
|
||||
}
|
||||
|
||||
reqd_templates = ["item","login","menu","system"]
|
||||
|
||||
def __init__(self,template):
|
||||
self.state = "system"
|
||||
self.code_template_filename = template
|
||||
self.menus = []
|
||||
self.init_entry()
|
||||
self.init_menu()
|
||||
self.init_system()
|
||||
self.vtypes = " OR ".join(list(self.types.keys()))
|
||||
self.vattrs = " OR ".join([x for x in list(self.entry.keys()) if x[0] != "_"])
|
||||
self.mattrs = " OR ".join([x for x in list(self.menu.keys()) if x[0] != "_"])
|
||||
|
||||
def init_entry(self):
|
||||
self.entry = self.entry_init.copy()
|
||||
|
||||
def init_menu(self):
|
||||
self.menu = self.menu_init.copy()
|
||||
|
||||
def init_system(self):
|
||||
self.system = self.system_init.copy()
|
||||
|
||||
def add_menu(self,name):
|
||||
self.add_item()
|
||||
self.init_menu()
|
||||
self.menu["name"] = name
|
||||
self.menu["_updated"] = 1
|
||||
self.menus.append( (self.menu,[]) )
|
||||
|
||||
def add_item(self):
|
||||
if self.menu["_updated"]: # menu details have changed
|
||||
self.menus[-1][0].update(self.menu)
|
||||
self.init_menu()
|
||||
if self.entry["_updated"]:
|
||||
if not self.entry["info"]:
|
||||
self.entry["info"] = self.entry["data"]
|
||||
if not self.menus:
|
||||
print("Error before line %d" % self.lineno)
|
||||
print("REASON: menu must be declared before a menu item is declared")
|
||||
sys.exit(1)
|
||||
self.menus[-1][1].append(self.entry)
|
||||
self.init_entry()
|
||||
|
||||
def set_item(self,name,value):
|
||||
if name not in self.entry:
|
||||
msg = ["Unknown attribute %s in line %d" % (name,self.lineno)]
|
||||
msg.append("REASON: Attribute must be one of %s" % self.vattrs)
|
||||
return "\n".join(msg)
|
||||
if name=="type" and value not in self.types:
|
||||
msg = [ "Unrecognized type %s in line %d" % (value,self.lineno)]
|
||||
msg.append("REASON: Valid types are %s" % self.vtypes)
|
||||
return "\n".join(msg)
|
||||
if name=="shortcut":
|
||||
if (value != "-1") and not re.match("^[A-Za-z0-9]$",value):
|
||||
msg = [ "Invalid shortcut char '%s' in line %d" % (value,self.lineno) ]
|
||||
msg.append("REASON: Valid values are [A-Za-z0-9]")
|
||||
return "\n".join(msg)
|
||||
elif value != "-1": value = "'%s'" % value
|
||||
elif name in ["state","helpid","ipappend"]:
|
||||
try:
|
||||
value = int(value)
|
||||
except:
|
||||
return "Value of %s in line %d must be an integer" % (name,self.lineno)
|
||||
self.entry[name] = value
|
||||
self.entry["_updated"] = 1
|
||||
return ""
|
||||
|
||||
def set_menu(self,name,value):
|
||||
if name not in self.menu:
|
||||
return "Error: Unknown keyword %s" % name
|
||||
self.menu[name] = value
|
||||
self.menu["_updated"] = 1
|
||||
return ""
|
||||
|
||||
def set_system(self,name,value):
|
||||
if name not in self.system:
|
||||
return "Error: Unknown keyword %s" % name
|
||||
if name == "skipcondn":
|
||||
try: # is skipcondn a number?
|
||||
a = int(value)
|
||||
except: # it is a "-" delimited sequence
|
||||
value = value.lower()
|
||||
parts = [ self.shift_flags.get(x.strip(),None) for x in value.split("-") ]
|
||||
self.system["skipcondn"] = " | ".join([_f for _f in parts if _f])
|
||||
else:
|
||||
self.system[name] = value
|
||||
|
||||
def set(self,name,value):
|
||||
# remove quotes if given
|
||||
if (value[0] == value[-1]) and (value[0] in ['"',"'"]): # remove quotes
|
||||
value = value[1:-1]
|
||||
if self.state == "system":
|
||||
err = self.set_system(name,value)
|
||||
if not err: return
|
||||
if self.state == "menu":
|
||||
err = self.set_menu(name,value)
|
||||
# change state to entry it menu returns error
|
||||
if err:
|
||||
err = None
|
||||
self.state = "item"
|
||||
if self.state == "item":
|
||||
err = self.set_item(name,value)
|
||||
|
||||
if not err: return
|
||||
|
||||
# all errors so return item's error message
|
||||
print(err)
|
||||
sys.exit(1)
|
||||
|
||||
def print_entry(self,entry,fd):
|
||||
entry["type"] = self.types[entry["type"]]
|
||||
if entry["type"] == "login": #special type
|
||||
fd.write(self.templates["login"] % entry)
|
||||
else:
|
||||
fd.write(self.templates["item"] % entry)
|
||||
|
||||
def print_menu(self,menu,fd):
|
||||
if menu["name"] == "main": self.foundmain = 1
|
||||
fd.write(self.templates["menu"] % menu)
|
||||
if (menu["row"] != "0xFF") or (menu["col"] != "0xFF"):
|
||||
fd.write(' set_menu_pos(%(row)s,%(col)s);\n' % menu)
|
||||
|
||||
|
||||
def output(self,filename):
|
||||
curr_template = None
|
||||
contents = []
|
||||
self.templates = {}
|
||||
regbeg = re.compile(r"^--(?P<name>[a-z]+) BEGINS?--\n$")
|
||||
regend = re.compile(r"^--[a-z]+ ENDS?--\n$")
|
||||
ifd = open(self.code_template_filename,"r")
|
||||
for line in ifd.readlines():
|
||||
b = regbeg.match(line)
|
||||
e = regend.match(line)
|
||||
if e: # end of template
|
||||
if curr_template:
|
||||
self.templates[curr_template] = "".join(contents)
|
||||
curr_template = None
|
||||
continue
|
||||
if b:
|
||||
curr_template = b.group("name")
|
||||
contents = []
|
||||
continue
|
||||
if not curr_template: continue # lines between templates are ignored
|
||||
contents.append(line)
|
||||
ifd.close()
|
||||
|
||||
missing = None
|
||||
for x in self.reqd_templates:
|
||||
if x not in self.templates: missing = x
|
||||
if missing:
|
||||
print("Template %s required but not defined in %s" % (missing,self.code_template_filename))
|
||||
|
||||
if filename == "-":
|
||||
fd = sys.stdout
|
||||
else: fd = open(filename,"w")
|
||||
self.foundmain = None
|
||||
fd.write(self.templates["header"])
|
||||
fd.write(self.templates["system"] % self.system)
|
||||
for (menu,items) in self.menus:
|
||||
self.print_menu(menu,fd)
|
||||
for entry in items: self.print_entry(entry,fd)
|
||||
fd.write(self.templates["footer"])
|
||||
fd.close()
|
||||
if not self.foundmain:
|
||||
print("main menu not found")
|
||||
print(self.menus)
|
||||
sys.exit(1)
|
||||
|
||||
def input(self,filename):
|
||||
if filename == "-":
|
||||
fd = sys.stdin
|
||||
else: fd = open(filename,"r")
|
||||
self.lineno = 0
|
||||
self.state = "system"
|
||||
for line in fd.readlines():
|
||||
self.lineno = self.lineno + 1
|
||||
if line and line[-1] in ["\r","\n"]: line = line[:-1]
|
||||
if line and line[-1] in ["\r","\n"]: line = line[:-1]
|
||||
line = line.strip()
|
||||
if line and line[0] in ["#",";"]: continue
|
||||
|
||||
try:
|
||||
# blank line -> starting a new entry
|
||||
if not line:
|
||||
if self.state == "item": self.add_item()
|
||||
continue
|
||||
|
||||
# starting a new section?
|
||||
if line[0] == "[" and line[-1] == "]":
|
||||
self.state = "menu"
|
||||
self.add_menu(line[1:-1])
|
||||
continue
|
||||
|
||||
# add property of current entry
|
||||
pos = line.find("=") # find the first = in string
|
||||
if pos < 0:
|
||||
print("Syntax error in line %d" % self.lineno)
|
||||
print("REASON: non-section lines must be of the form ATTRIBUTE=VALUE")
|
||||
sys.exit(1)
|
||||
attr = line[:pos].strip().lower()
|
||||
value = line[pos+1:].strip()
|
||||
self.set(attr,value)
|
||||
except:
|
||||
print("Error while parsing line %d: %s" % (self.lineno,line))
|
||||
raise
|
||||
fd.close()
|
||||
self.add_item()
|
||||
|
||||
def usage():
|
||||
print(sys.argv[0]," [options]")
|
||||
print("--input=<file> is the name of the .menu file declaring the menu structure")
|
||||
print("--output=<file> is the name of generated C source")
|
||||
print("--template=<file> is the name of template to be used")
|
||||
print()
|
||||
print("input and output default to - (stdin and stdout respectively)")
|
||||
print("template defaults to adv_menu.tpl")
|
||||
sys.exit(1)
|
||||
|
||||
def main():
|
||||
tfile = "adv_menu.tpl"
|
||||
ifile = "-"
|
||||
ofile = "-"
|
||||
opts,args = getopt.getopt(sys.argv[1:], "hi:o:t:",["input=","output=","template=","help"])
|
||||
if args:
|
||||
print("Unknown options %s" % args)
|
||||
usage()
|
||||
for o,a in opts:
|
||||
if o in ["-i","--input"]:
|
||||
ifile = a
|
||||
elif o in ["-o", "--output"]:
|
||||
ofile = a
|
||||
elif o in ["-t","--template"]:
|
||||
tfile = a
|
||||
elif o in ["-h","--help"]:
|
||||
usage()
|
||||
|
||||
inst = Menusystem(tfile)
|
||||
inst.input(ifile)
|
||||
inst.output(ofile)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -0,0 +1,18 @@
|
|||
# This file should be available as /isolinux/password
|
||||
# for complex.c to use.
|
||||
#
|
||||
# All lines starting with # and empty lines are ignored
|
||||
#
|
||||
# All non-comment lines here are of the form
|
||||
# USERNAME:PWDHASH:PERM1:PERM2:...:
|
||||
#
|
||||
# where USERNAME is maximum of 12 chars,
|
||||
# PWDHASH is maximum of 40 chars (DES ENCRYPTED)
|
||||
# PERM1,... are arbitrary strings
|
||||
#
|
||||
# The current lines correspond to
|
||||
# user1:secret1, user2:secret2, user3:secret3
|
||||
|
||||
user1:LcMRo3YZGtP0c:editcmd
|
||||
user2:FqewzyxP78a7A:
|
||||
user3:MKjmc.IHoXBNU:root
|
|
@ -0,0 +1,82 @@
|
|||
/* -*- c -*- ------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
* Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *) 0)
|
||||
#endif
|
||||
|
||||
#include "cmenu.h"
|
||||
#include "com32io.h"
|
||||
#include <string.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
t_menuitem *curr;
|
||||
|
||||
// Change the video mode here
|
||||
// setvideomode(0)
|
||||
|
||||
// Choose the default title and setup default values for all attributes....
|
||||
init_menusystem(NULL);
|
||||
set_window_size(1, 1, 23, 78); // Leave one row/col border all around
|
||||
|
||||
// Choose the default values for all attributes and char's
|
||||
// -1 means choose defaults (Actually the next 4 lines are not needed)
|
||||
//set_normal_attr (-1,-1,-1,-1);
|
||||
//set_status_info (-1,-1);
|
||||
//set_title_info (-1,-1);
|
||||
//set_misc_info(-1,-1,-1,-1);
|
||||
|
||||
// menuindex = add_named_menu("name"," Menu Title ",-1);
|
||||
// add_item("Item string","Status String",TYPE,"any string",NUM)
|
||||
// TYPE = OPT_RUN | OPT_EXITMENU | OPT_SUBMENU | OPT_CHECKBOX | OPT_INACTIVE
|
||||
// "any string" useful for storing kernel names
|
||||
// In case of OPT_SUBMENU, "any string" can be set to "name" of menu to be linked
|
||||
// in which case value NUM is ignored
|
||||
// NUM = index of submenu if OPT_SUBMENU,
|
||||
// 0/1 default checked state if OPT_CHECKBOX
|
||||
// unused otherwise.
|
||||
|
||||
add_named_menu("testing", " Testing ", -1);
|
||||
add_item("Self Loop", "Go to testing", OPT_SUBMENU, "testing", 0);
|
||||
add_item("Memory Test", "Perform extensive memory testing", OPT_RUN,
|
||||
"memtest", 0);
|
||||
add_item("Exit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
|
||||
|
||||
add_named_menu("rescue", " Rescue Options ", -1);
|
||||
add_item("Linux Rescue", "linresc", OPT_RUN, "linresc", 0);
|
||||
add_item("Dos Rescue", "dosresc", OPT_RUN, "dosresc", 0);
|
||||
add_item("Windows Rescue", "winresc", OPT_RUN, "winresc", 0);
|
||||
add_item("Exit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
|
||||
|
||||
add_named_menu("main", " Main Menu ", -1);
|
||||
add_item("Prepare", "prep", OPT_RUN, "prep", 0);
|
||||
add_item("Rescue options...", "Troubleshoot a system", OPT_SUBMENU,
|
||||
"rescue", 0);
|
||||
add_item("Testing...", "Options to test hardware", OPT_SUBMENU, "testing",
|
||||
0);
|
||||
add_item("Exit to prompt", "Exit the menu system", OPT_EXITMENU, "exit", 0);
|
||||
|
||||
curr = showmenus(find_menu_num("main")); // Initial menu is the one called "main"
|
||||
|
||||
if (curr) {
|
||||
if (curr->action == OPT_RUN) {
|
||||
if (issyslinux())
|
||||
runsyslinuxcmd(curr->data);
|
||||
else
|
||||
csprint(curr->data, 0x07);
|
||||
return 1;
|
||||
}
|
||||
csprint("Error in programming!", 0x07);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
# choose default title
|
||||
title = "A test of the test.menu file"
|
||||
top = 1
|
||||
left = 1
|
||||
bot = 23
|
||||
right = 78
|
||||
|
||||
[testing]
|
||||
title = " Testing "
|
||||
|
||||
item="Self Loop"
|
||||
info="Go to Testing"
|
||||
type=submenu
|
||||
data=testing
|
||||
|
||||
item="Memory Test"
|
||||
info="Perform extensive memory testing"
|
||||
data="memtest"
|
||||
|
||||
item="Exit this menu"
|
||||
info="Go one level up"
|
||||
type=exitmenu
|
||||
|
||||
[rescue]
|
||||
title = " Rescue Options "
|
||||
row = 10
|
||||
col = 10
|
||||
|
||||
item="Linux Rescue"
|
||||
data="linresc"
|
||||
|
||||
item="Dos Rescue"
|
||||
data="dosresc"
|
||||
|
||||
item="Windows Rescue"
|
||||
data="winresc"
|
||||
|
||||
item="Exit this menu"
|
||||
info="Go one level up"
|
||||
type=exitmenu
|
||||
|
||||
[main]
|
||||
title = " Main Menu "
|
||||
|
||||
item="Prepare"
|
||||
data="prep"
|
||||
|
||||
item="Rescue options..."
|
||||
info="Troubleshoot a system"
|
||||
type=submenu
|
||||
data="rescue"
|
||||
|
||||
item="Testing..."
|
||||
info="Options to test hardware"
|
||||
type=submenu
|
||||
data="testing"
|
||||
|
||||
item="Exit this menu"
|
||||
info="Go one level up"
|
||||
type=exitmenu
|
|
@ -0,0 +1,142 @@
|
|||
|
||||
title=" COMBOOT Menu System "
|
||||
|
||||
# location of help directory
|
||||
helpdir="/isolinux/help"
|
||||
pwdfile="/isolinux/password"
|
||||
|
||||
# skip the menu if shift is pressed or Caps is on
|
||||
# if the menu is skipped run "skipcmd"
|
||||
# in our case we run the OS on the first harddisk
|
||||
skipcondn=shift-caps
|
||||
skipcmd="chain.c32 hd 0"
|
||||
|
||||
# person with root privileges can exit menu
|
||||
# others just repeat
|
||||
exitcmd=".exit"
|
||||
onerrorcmd=".beep 2 % % .help hlp00025.txt % .exit"
|
||||
|
||||
startfile="hlp00026.txt"
|
||||
|
||||
timeoutcmd=".wait"
|
||||
totaltimeoutcmd="chain.c32 hd 0"
|
||||
|
||||
[netmenu]
|
||||
title=" Init Network "
|
||||
|
||||
item="<N>one"
|
||||
info="Dont start network"
|
||||
type=radioitem
|
||||
data="network=no"
|
||||
|
||||
item="<d>hcp"
|
||||
info="Use DHCP"
|
||||
type=radioitem
|
||||
data="network=dhcp"
|
||||
|
||||
[testing]
|
||||
title=" Testing "
|
||||
|
||||
item="<M>emory Test"
|
||||
info="Perform extensive memory testing"
|
||||
data="memtest"
|
||||
helpid=25
|
||||
ipappend=3
|
||||
|
||||
item="<I>nvisible"
|
||||
info="You dont see this"
|
||||
type=invisible
|
||||
|
||||
item="<E>xit menu"
|
||||
info="Go one level up"
|
||||
type=exitmenu
|
||||
|
||||
[rescue]
|
||||
title=" Rescue Options "
|
||||
|
||||
item="<L>inux Rescue"
|
||||
info="Run linresc"
|
||||
data="linresc"
|
||||
|
||||
item="<D>os Rescue"
|
||||
info="dosresc"
|
||||
data="dosresc"
|
||||
|
||||
item="<W>indows Rescue"
|
||||
info="winresc"
|
||||
data="winresc"
|
||||
|
||||
item="<E>xit this menu"
|
||||
info="Go one level up"
|
||||
type=exitmenu
|
||||
|
||||
[prep]
|
||||
title=" Prep options "
|
||||
|
||||
item="<b>aseurl by IP?"
|
||||
info="Specify gui baseurl by IP address"
|
||||
type=checkbox
|
||||
data="baseurl=http://192.168.0.1"
|
||||
|
||||
item="<m>ountcd?"
|
||||
info="Mount the cdrom drive?"
|
||||
type=checkbox
|
||||
data="mountcd"
|
||||
|
||||
item="Network Initialization"
|
||||
info="How to initialise network device?"
|
||||
type=radiomenu
|
||||
data="netmenu"
|
||||
|
||||
type=sep
|
||||
|
||||
item="Reinstall <w>indows"
|
||||
info="Re-install the windows side of a dual boot setup"
|
||||
type=checkbox
|
||||
data="repair=win"
|
||||
|
||||
item="Reinstall <l>inux"
|
||||
info="Re-install the linux side of a dual boot setup"
|
||||
type=checkbox
|
||||
data="repair=lin"
|
||||
|
||||
type=sep
|
||||
|
||||
item="<R>un prep now"
|
||||
info="Execute prep with the above options"
|
||||
data="prep"
|
||||
argsmenu="prep"
|
||||
|
||||
item="<E>xit this menu"
|
||||
info="Go up one level"
|
||||
type=exitmenu
|
||||
|
||||
[main]
|
||||
|
||||
title=" Main Menu "
|
||||
|
||||
type=login
|
||||
|
||||
item="<P>repare"
|
||||
info="prep"
|
||||
data="prep"
|
||||
|
||||
item="<P>rep options..."
|
||||
info="Options for prep"
|
||||
type=submenu
|
||||
data="prep"
|
||||
|
||||
item="<R>escue options..."
|
||||
info="Troubleshoot a system"
|
||||
type=submenu
|
||||
data="rescue"
|
||||
helpid=26
|
||||
|
||||
item="<T>esting..."
|
||||
info="Options to test hardware"
|
||||
type=submenu
|
||||
data="testing"
|
||||
|
||||
item="<E>xit to prompt"
|
||||
info="Exit the menu system"
|
||||
type=exitmenu
|
|
@ -0,0 +1,36 @@
|
|||
## -----------------------------------------------------------------------
|
||||
##
|
||||
## Copyright 2001-2008 H. Peter Anvin - All Rights Reserved
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
## Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
## (at your option) any later version; incorporated herein by reference.
|
||||
##
|
||||
## -----------------------------------------------------------------------
|
||||
|
||||
MODULES =
|
||||
TESTFILES =
|
||||
|
||||
all: $(MODULES) $(TESTFILES)
|
||||
|
||||
test_memalign.elf : test_memalign.o $(LIBS) $(C_LIBS)
|
||||
$(LD) $(LDFLAGS) -o $@ $^
|
||||
|
||||
test_com32.elf: CFLAGS += -DELF_DEBUG
|
||||
test_com32.elf: test_com32.o ../lib/libcom32min.a $(LIBGCC)
|
||||
$(LD) -n $(LDFLAGS) -o $@ test_com32.o $(LIBGCC) --whole-archive ../lib/libcom32min.a -Map test_com32.map
|
||||
|
||||
tidy dist:
|
||||
rm -f *.o *.lo *.a *.lst *.elf .*.d *.map
|
||||
|
||||
clean: tidy
|
||||
rm -f *.lss *.c32 *.lnx *.com
|
||||
|
||||
spotless: clean
|
||||
rm -f *~ \#*
|
||||
|
||||
install:
|
||||
|
||||
-include .*.d
|
|
@ -0,0 +1,59 @@
|
|||
## -----------------------------------------------------------------------
|
||||
##
|
||||
## Copyright 2011-2013 Intel Corporation - All Rights Reserved
|
||||
##
|
||||
## This program is free software; you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
|
||||
## Boston MA 02111-1307, USA; either version 2 of the License, or
|
||||
## (at your option) any later version; incorporated herein by reference.
|
||||
##
|
||||
## -----------------------------------------------------------------------
|
||||
|
||||
VPATH = $(SRC)
|
||||
include $(MAKEDIR)/elf.mk
|
||||
|
||||
CFLAGS += -I$(topdir)/core/elflink -I$(topdir)/core/include -I$(topdir)/com32/lib -fvisibility=hidden
|
||||
LIBS = --whole-archive $(objdir)/com32/lib/libcom32min.a
|
||||
|
||||
OBJS = ldlinux.o cli.o readconfig.o refstr.o colors.o getadv.o adv.o \
|
||||
execute.o chainboot.o kernel.o get_key.o advwrite.o setadv.o \
|
||||
loadhigh.o msg.o
|
||||
|
||||
BTARGET = $(LDLINUX)
|
||||
|
||||
ifeq ($(FWCLASS),EFI)
|
||||
%.e$(BITS): %.elf
|
||||
$(OBJCOPY) --strip-debug --strip-unneeded $< $@
|
||||
SONAME = $(patsubst %.elf,%.e$(BITS),$(@F))
|
||||
else
|
||||
SONAME = $(patsubst %.elf,%.c32,$(@F))
|
||||
endif
|
||||
|
||||
all: $(BTARGET) ldlinux_lnx.a
|
||||
|
||||
ldlinux.elf : $(OBJS)
|
||||
$(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS)
|
||||
|
||||
LNXCFLAGS += -D__export='__attribute__((visibility("default")))'
|
||||
LNXLIBOBJS = get_key.lo
|
||||
ldlinux_lnx.a: $(LNXLIBOBJS)
|
||||
rm -f $@
|
||||
$(AR) cq $@ $(LNXLIBOBJS)
|
||||
$(RANLIB) $@
|
||||
|
||||
tidy dist:
|
||||
rm -f *.o *.lo *.a *.lst .*.d
|
||||
|
||||
clean: tidy
|
||||
rm -f *.lss *.lnx *.com
|
||||
|
||||
spotless: clean
|
||||
rm -f *~ \#* $(BTARGET)
|
||||
|
||||
install: all
|
||||
mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)
|
||||
install -m 644 $(BTARGET) $(INSTALLROOT)$(AUXDIR)
|
||||
|
||||
|
||||
-include .*.d
|
|
@ -0,0 +1,42 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2007-2008 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* syslinux/adv.c
|
||||
*
|
||||
* Access the syslinux auxiliary data vector
|
||||
*/
|
||||
|
||||
#include <syslinux/adv.h>
|
||||
#include <syslinux/firmware.h>
|
||||
#include <klibc/compiler.h>
|
||||
#include <syslinux/adv.h>
|
||||
|
||||
void __constructor __syslinux_init(void)
|
||||
{
|
||||
firmware->adv_ops->init();
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2007-2008 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* syslinux/advwrite.c
|
||||
*
|
||||
* Write back the ADV
|
||||
*/
|
||||
|
||||
#include <klibc/compiler.h>
|
||||
#include <syslinux/adv.h>
|
||||
#include <syslinux/firmware.h>
|
||||
|
||||
__export int syslinux_adv_write(void)
|
||||
{
|
||||
return firmware->adv_ops->write();
|
||||
}
|
|
@ -0,0 +1,156 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2012 Intel Corporation, author: H. Peter Anvin
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
* Boston MA 02110-1301, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* chainbooting - replace the current bootloader completely. This
|
||||
* is BIOS-specific.
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <dprintf.h>
|
||||
|
||||
#include <com32.h>
|
||||
#include <sys/exec.h>
|
||||
#include <sys/io.h>
|
||||
#include "core.h"
|
||||
#include "menu.h"
|
||||
#include "fs.h"
|
||||
#include "config.h"
|
||||
#include "localboot.h"
|
||||
#include "bios.h"
|
||||
|
||||
#include <syslinux/boot.h>
|
||||
#include <syslinux/bootrm.h>
|
||||
#include <syslinux/movebits.h>
|
||||
#include <syslinux/config.h>
|
||||
|
||||
void chainboot_file(const char *file, uint32_t type)
|
||||
{
|
||||
uint8_t keeppxe = 0;
|
||||
const union syslinux_derivative_info *sdi;
|
||||
struct syslinux_rm_regs regs;
|
||||
struct syslinux_movelist *fraglist = NULL;
|
||||
struct syslinux_memmap *mmap = NULL;
|
||||
struct com32_filedata fd;
|
||||
com32sys_t reg;
|
||||
char *stack;
|
||||
void *buf;
|
||||
int rv, max, size;
|
||||
|
||||
max = 0xA0000; /* Maximum load */
|
||||
buf = malloc(max);
|
||||
if (!buf)
|
||||
goto bail;
|
||||
|
||||
rv = open_file(file, O_RDONLY, &fd);
|
||||
if (rv == -1)
|
||||
goto bail;
|
||||
|
||||
reg.eax.l = max;
|
||||
reg.ebx.l = 0;
|
||||
reg.edx.w[0] = 0;
|
||||
reg.edi.l = (uint32_t)buf;
|
||||
reg.ebp.l = -1; /* XXX: limit? */
|
||||
reg.esi.w[0] = rv;
|
||||
|
||||
pm_load_high(®);
|
||||
|
||||
size = reg.edi.l - (unsigned long)buf;
|
||||
if (size > 0xA0000 - 0x7C00) {
|
||||
printf("Too large for a boostrap (need LINUX instead of KERNEL?)\n");
|
||||
goto bail;
|
||||
}
|
||||
|
||||
mmap = syslinux_memory_map();
|
||||
if (!mmap)
|
||||
goto bail;
|
||||
|
||||
sdi = syslinux_derivative_info();
|
||||
|
||||
memset(®s, 0, sizeof(regs));
|
||||
regs.ip = 0x7c00;
|
||||
|
||||
if (sdi->c.filesystem == SYSLINUX_FS_SYSLINUX ||
|
||||
sdi->c.filesystem == SYSLINUX_FS_EXTLINUX) {
|
||||
if (syslinux_add_movelist(&fraglist, 0x800 - 18,
|
||||
(addr_t)sdi->r.esbx, 16))
|
||||
goto bail;
|
||||
|
||||
/* DS:SI points to partition info */
|
||||
regs.esi.l = 0x800 - 18;
|
||||
}
|
||||
|
||||
/*
|
||||
* For a BSS boot sector we have to transfer the
|
||||
* superblock.
|
||||
*/
|
||||
if (sdi->c.filesystem == SYSLINUX_FS_SYSLINUX &&
|
||||
type == IMAGE_TYPE_BSS && this_fs->fs_ops->copy_super(buf))
|
||||
goto bail;
|
||||
|
||||
if (sdi->c.filesystem == SYSLINUX_FS_PXELINUX) {
|
||||
keeppxe = 0x03; /* Chainloading + keep PXE */
|
||||
stack = (char *)sdi->r.fssi;
|
||||
|
||||
/*
|
||||
* Set up the registers with their initial values
|
||||
*/
|
||||
|
||||
regs.eax.l = *(uint32_t *)&stack[36];
|
||||
regs.ecx.l = *(uint32_t *)&stack[32];
|
||||
regs.edx.l = *(uint32_t *)&stack[28];
|
||||
regs.ebx.l = *(uint32_t *)&stack[24];
|
||||
regs.esp.l = sdi->rr.r.esi.w[0] + 44;
|
||||
regs.ebp.l = *(uint32_t *)&stack[16];
|
||||
regs.esi.l = *(uint32_t *)&stack[12];
|
||||
regs.edi.l = *(uint32_t *)&stack[8];
|
||||
regs.es = *(uint16_t *)&stack[4];
|
||||
regs.ss = sdi->rr.r.fs;
|
||||
regs.ds = *(uint16_t *)&stack[6];
|
||||
regs.fs = *(uint16_t *)&stack[2];
|
||||
regs.gs = *(uint16_t *)&stack[0];
|
||||
} else {
|
||||
const uint16_t *esdi = (const uint16_t *)sdi->disk.esdi_ptr;
|
||||
|
||||
regs.esp.l = (uint16_t)(unsigned long)StackBuf + 44;
|
||||
|
||||
/*
|
||||
* DON'T DO THIS FOR PXELINUX...
|
||||
* For PXE, ES:BX -> PXENV+, and this would
|
||||
* corrupt that use.
|
||||
*
|
||||
* Restore ES:DI -> $PnP (if we were ourselves
|
||||
* called that way...)
|
||||
*/
|
||||
regs.edi.w[0] = esdi[0]; /* New DI */
|
||||
regs.es = esdi[2]; /* New ES */
|
||||
|
||||
regs.edx.l = sdi->rr.r.edx.b[0]; /* Drive number -> DL */
|
||||
}
|
||||
|
||||
if (syslinux_add_movelist(&fraglist, 0x7c00, (addr_t)buf, size))
|
||||
goto bail;
|
||||
|
||||
syslinux_shuffle_boot_rm(fraglist, mmap, keeppxe, ®s);
|
||||
|
||||
bail:
|
||||
if (fraglist)
|
||||
syslinux_free_movelist(fraglist);
|
||||
if (mmap)
|
||||
syslinux_free_memmap(mmap);
|
||||
if (buf)
|
||||
free(buf);
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,486 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <console.h>
|
||||
#include <com32.h>
|
||||
#include <syslinux/adv.h>
|
||||
#include <syslinux/config.h>
|
||||
#include <setjmp.h>
|
||||
#include <netinet/in.h>
|
||||
#include <limits.h>
|
||||
#include <minmax.h>
|
||||
#include <linux/list.h>
|
||||
#include <sys/exec.h>
|
||||
#include <sys/module.h>
|
||||
#include <dprintf.h>
|
||||
#include <core.h>
|
||||
|
||||
#include "getkey.h"
|
||||
#include "menu.h"
|
||||
#include "cli.h"
|
||||
#include "config.h"
|
||||
|
||||
static struct list_head cli_history_head;
|
||||
|
||||
void clear_screen(void)
|
||||
{
|
||||
//dprintf("enter");
|
||||
fputs("\033e\033%@\033)0\033(B\1#0\033[?25l\033[2J", stdout);
|
||||
}
|
||||
|
||||
static int mygetkey_timeout(clock_t *kbd_to, clock_t *tto)
|
||||
{
|
||||
clock_t t0, t1;
|
||||
int key;
|
||||
|
||||
t0 = times(NULL);
|
||||
key = get_key(stdin, *kbd_to ? *kbd_to : *tto);
|
||||
|
||||
/* kbdtimeout only applies to the first character */
|
||||
if (*kbd_to)
|
||||
*kbd_to = 0;
|
||||
|
||||
t1 = times(NULL) - t0;
|
||||
if (*tto) {
|
||||
/* Timed out. */
|
||||
if (*tto <= (long long)t1)
|
||||
key = KEY_NONE;
|
||||
else {
|
||||
/* Did it wrap? */
|
||||
if (*tto > totaltimeout)
|
||||
key = KEY_NONE;
|
||||
|
||||
*tto -= t1;
|
||||
}
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
static const char * cmd_reverse_search(int *cursor, clock_t *kbd_to,
|
||||
clock_t *tto)
|
||||
{
|
||||
int key;
|
||||
int i = 0;
|
||||
char buf[MAX_CMDLINE_LEN];
|
||||
const char *p = NULL;
|
||||
struct cli_command *last_found;
|
||||
struct cli_command *last_good = NULL;
|
||||
|
||||
last_found = list_entry(cli_history_head.next, typeof(*last_found), list);
|
||||
|
||||
memset(buf, 0, MAX_CMDLINE_LEN);
|
||||
|
||||
printf("\033[1G\033[1;36m(reverse-i-search)`': \033[0m");
|
||||
while (1) {
|
||||
key = mygetkey_timeout(kbd_to, tto);
|
||||
|
||||
if (key == KEY_CTRL('C')) {
|
||||
return NULL;
|
||||
} else if (key == KEY_CTRL('R')) {
|
||||
if (i == 0)
|
||||
continue; /* User typed nothing yet */
|
||||
/* User typed 'CTRL-R' again, so try the next */
|
||||
last_found = list_entry(last_found->list.next, typeof(*last_found), list);
|
||||
} else if (key >= ' ' && key <= 'z') {
|
||||
buf[i++] = key;
|
||||
} else {
|
||||
/* Treat other input chars as terminal */
|
||||
break;
|
||||
}
|
||||
|
||||
while (last_found) {
|
||||
p = strstr(last_found->command, buf);
|
||||
if (p)
|
||||
break;
|
||||
|
||||
if (list_is_last(&last_found->list, &cli_history_head))
|
||||
break;
|
||||
|
||||
last_found = list_entry(last_found->list.next, typeof(*last_found), list);
|
||||
}
|
||||
|
||||
if (!p && !last_good) {
|
||||
return NULL;
|
||||
} else if (!p) {
|
||||
continue;
|
||||
} else {
|
||||
last_good = last_found;
|
||||
*cursor = p - last_good->command;
|
||||
}
|
||||
|
||||
printf("\033[?7l\033[?25l");
|
||||
/* Didn't handle the line wrap case here */
|
||||
printf("\033[1G\033[1;36m(reverse-i-search)\033[0m`%s': %s",
|
||||
buf, last_good->command ? : "");
|
||||
printf("\033[K\r");
|
||||
}
|
||||
|
||||
return last_good ? last_good->command : NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const char *edit_cmdline(const char *input, int top /*, int width */ ,
|
||||
int (*pDraw_Menu) (int, int, int),
|
||||
void (*show_fkey) (int), bool *timedout)
|
||||
{
|
||||
static char cmdline[MAX_CMDLINE_LEN] = { };
|
||||
int key, len, prev_len, cursor;
|
||||
int redraw = 0;
|
||||
int x, y;
|
||||
bool done = false;
|
||||
const char *ret;
|
||||
int width = 0;
|
||||
struct cli_command *comm_counter = NULL;
|
||||
clock_t kbd_to = kbdtimeout;
|
||||
clock_t tto = totaltimeout;
|
||||
|
||||
if (!width) {
|
||||
int height;
|
||||
if (getscreensize(1, &height, &width))
|
||||
width = 80;
|
||||
}
|
||||
|
||||
len = cursor = 0;
|
||||
prev_len = 0;
|
||||
x = y = 0;
|
||||
|
||||
/*
|
||||
* Before we start messing with the x,y coordinates print 'input'
|
||||
* so that it follows whatever text has been written to the screen
|
||||
* previously.
|
||||
*/
|
||||
printf("%s ", input);
|
||||
|
||||
while (!done) {
|
||||
if (redraw > 1) {
|
||||
/* Clear and redraw whole screen */
|
||||
/* Enable ASCII on G0 and DEC VT on G1; do it in this order
|
||||
to avoid confusing the Linux console */
|
||||
clear_screen();
|
||||
if (pDraw_Menu)
|
||||
(*pDraw_Menu) (-1, top, 1);
|
||||
prev_len = 0;
|
||||
printf("\033[2J\033[H");
|
||||
// printf("\033[0m\033[2J\033[H");
|
||||
}
|
||||
|
||||
if (redraw > 0) {
|
||||
int dy, at;
|
||||
|
||||
prev_len = max(len, prev_len);
|
||||
|
||||
/* Redraw the command line */
|
||||
printf("\033[?25l");
|
||||
printf("\033[1G%s ", input);
|
||||
|
||||
x = strlen(input);
|
||||
y = 0;
|
||||
at = 0;
|
||||
while (at < prev_len) {
|
||||
putchar(at >= len ? ' ' : cmdline[at]);
|
||||
at++;
|
||||
x++;
|
||||
if (x >= width) {
|
||||
printf("\r\n");
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
}
|
||||
printf("\033[K\r");
|
||||
|
||||
dy = y - (cursor + strlen(input) + 1) / width;
|
||||
x = (cursor + strlen(input) + 1) % width;
|
||||
|
||||
if (dy) {
|
||||
printf("\033[%dA", dy);
|
||||
y -= dy;
|
||||
}
|
||||
if (x)
|
||||
printf("\033[%dC", x);
|
||||
printf("\033[?25h");
|
||||
prev_len = len;
|
||||
redraw = 0;
|
||||
}
|
||||
|
||||
key = mygetkey_timeout(&kbd_to, &tto);
|
||||
|
||||
switch (key) {
|
||||
case KEY_NONE:
|
||||
/* We timed out. */
|
||||
*timedout = true;
|
||||
return NULL;
|
||||
|
||||
case KEY_CTRL('L'):
|
||||
redraw = 2;
|
||||
break;
|
||||
|
||||
case KEY_ENTER:
|
||||
case KEY_CTRL('J'):
|
||||
ret = cmdline;
|
||||
done = true;
|
||||
break;
|
||||
|
||||
case KEY_BACKSPACE:
|
||||
case KEY_DEL:
|
||||
if (cursor) {
|
||||
memmove(cmdline + cursor - 1, cmdline + cursor,
|
||||
len - cursor + 1);
|
||||
len--;
|
||||
cursor--;
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_CTRL('D'):
|
||||
case KEY_DELETE:
|
||||
if (cursor < len) {
|
||||
memmove(cmdline + cursor, cmdline + cursor + 1, len - cursor);
|
||||
len--;
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_CTRL('U'):
|
||||
if (len) {
|
||||
len = cursor = 0;
|
||||
cmdline[len] = '\0';
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_CTRL('W'):
|
||||
if (cursor) {
|
||||
int prevcursor = cursor;
|
||||
|
||||
while (cursor && my_isspace(cmdline[cursor - 1]))
|
||||
cursor--;
|
||||
|
||||
while (cursor && !my_isspace(cmdline[cursor - 1]))
|
||||
cursor--;
|
||||
|
||||
#if 0
|
||||
memmove(cmdline + cursor, cmdline + prevcursor,
|
||||
len - prevcursor + 1);
|
||||
#else
|
||||
{
|
||||
int i;
|
||||
char *q = cmdline + cursor;
|
||||
char *p = cmdline + prevcursor;
|
||||
for (i = 0; i < len - prevcursor + 1; i++)
|
||||
*q++ = *p++;
|
||||
}
|
||||
#endif
|
||||
len -= (prevcursor - cursor);
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_LEFT:
|
||||
case KEY_CTRL('B'):
|
||||
if (cursor) {
|
||||
cursor--;
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_RIGHT:
|
||||
case KEY_CTRL('F'):
|
||||
if (cursor < len) {
|
||||
putchar(cmdline[cursor]);
|
||||
cursor++;
|
||||
x++;
|
||||
if (x >= width) {
|
||||
printf("\r\n");
|
||||
y++;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_CTRL('K'):
|
||||
if (cursor < len) {
|
||||
cmdline[len = cursor] = '\0';
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_HOME:
|
||||
case KEY_CTRL('A'):
|
||||
if (cursor) {
|
||||
cursor = 0;
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_END:
|
||||
case KEY_CTRL('E'):
|
||||
if (cursor != len) {
|
||||
cursor = len;
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_F1:
|
||||
case KEY_F2:
|
||||
case KEY_F3:
|
||||
case KEY_F4:
|
||||
case KEY_F5:
|
||||
case KEY_F6:
|
||||
case KEY_F7:
|
||||
case KEY_F8:
|
||||
case KEY_F9:
|
||||
case KEY_F10:
|
||||
case KEY_F11:
|
||||
case KEY_F12:
|
||||
if (show_fkey != NULL) {
|
||||
(*show_fkey) (key);
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
case KEY_CTRL('P'):
|
||||
case KEY_UP:
|
||||
{
|
||||
if (!list_empty(&cli_history_head)) {
|
||||
struct list_head *next;
|
||||
|
||||
if (!comm_counter)
|
||||
next = cli_history_head.next;
|
||||
else
|
||||
next = comm_counter->list.next;
|
||||
|
||||
comm_counter =
|
||||
list_entry(next, typeof(*comm_counter), list);
|
||||
|
||||
if (&comm_counter->list != &cli_history_head)
|
||||
strcpy(cmdline, comm_counter->command);
|
||||
|
||||
cursor = len = strlen(cmdline);
|
||||
redraw = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_CTRL('N'):
|
||||
case KEY_DOWN:
|
||||
{
|
||||
if (!list_empty(&cli_history_head)) {
|
||||
struct list_head *prev;
|
||||
|
||||
if (!comm_counter)
|
||||
prev = cli_history_head.prev;
|
||||
else
|
||||
prev = comm_counter->list.prev;
|
||||
|
||||
comm_counter =
|
||||
list_entry(prev, typeof(*comm_counter), list);
|
||||
|
||||
if (&comm_counter->list != &cli_history_head)
|
||||
strcpy(cmdline, comm_counter->command);
|
||||
|
||||
cursor = len = strlen(cmdline);
|
||||
redraw = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_CTRL('R'):
|
||||
{
|
||||
/*
|
||||
* Handle this case in another function, since it's
|
||||
* a kind of special.
|
||||
*/
|
||||
const char *p = cmd_reverse_search(&cursor, &kbd_to, &tto);
|
||||
if (p) {
|
||||
strcpy(cmdline, p);
|
||||
len = strlen(cmdline);
|
||||
} else {
|
||||
cmdline[0] = '\0';
|
||||
cursor = len = 0;
|
||||
}
|
||||
redraw = 1;
|
||||
}
|
||||
break;
|
||||
case KEY_TAB:
|
||||
{
|
||||
const char *p;
|
||||
size_t len;
|
||||
|
||||
/* Label completion enabled? */
|
||||
if (nocomplete)
|
||||
break;
|
||||
|
||||
p = cmdline;
|
||||
len = 0;
|
||||
while(*p && !my_isspace(*p)) {
|
||||
p++;
|
||||
len++;
|
||||
}
|
||||
|
||||
print_labels(cmdline, len);
|
||||
redraw = 1;
|
||||
break;
|
||||
}
|
||||
case KEY_CTRL('V'):
|
||||
if (BIOSName)
|
||||
printf("%s%s%s", syslinux_banner,
|
||||
(char *)MK_PTR(0, BIOSName), copyright_str);
|
||||
else
|
||||
printf("%s%s", syslinux_banner, copyright_str);
|
||||
|
||||
redraw = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
if (key >= ' ' && key <= 0xFF && len < MAX_CMDLINE_LEN - 1) {
|
||||
if (cursor == len) {
|
||||
cmdline[len++] = key;
|
||||
cmdline[len] = '\0';
|
||||
putchar(key);
|
||||
cursor++;
|
||||
x++;
|
||||
if (x >= width) {
|
||||
printf("\r\n\033[K");
|
||||
y++;
|
||||
x = 0;
|
||||
}
|
||||
prev_len++;
|
||||
} else {
|
||||
if (cursor > len)
|
||||
return NULL;
|
||||
|
||||
memmove(cmdline + cursor + 1, cmdline + cursor,
|
||||
len - cursor + 1);
|
||||
cmdline[cursor++] = key;
|
||||
len++;
|
||||
redraw = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
printf("\033[?7h");
|
||||
|
||||
/* Add the command to the history if its length is larger than 0 */
|
||||
len = strlen(ret);
|
||||
if (len > 0) {
|
||||
comm_counter = malloc(sizeof(struct cli_command));
|
||||
comm_counter->command = malloc(sizeof(char) * (len + 1));
|
||||
strcpy(comm_counter->command, ret);
|
||||
list_add(&(comm_counter->list), &cli_history_head);
|
||||
}
|
||||
|
||||
return len ? ret : NULL;
|
||||
}
|
||||
|
||||
static int __constructor cli_init(void)
|
||||
{
|
||||
INIT_LIST_HEAD(&cli_history_head);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __destructor cli_exit(void)
|
||||
{
|
||||
/* Nothing to do */
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2008 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
* Boston MA 02110-1301, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <colortbl.h>
|
||||
#include "menu.h"
|
||||
|
||||
/*
|
||||
* The color/attribute indexes (\1#X, \2#XX, \3#XXX) are as follows
|
||||
*
|
||||
* 00 - screen Rest of the screen
|
||||
* 01 - border Border area
|
||||
* 02 - title Title bar
|
||||
* 03 - unsel Unselected menu item
|
||||
* 04 - hotkey Unselected hotkey
|
||||
* 05 - sel Selection bar
|
||||
* 06 - hotsel Selected hotkey
|
||||
* 07 - scrollbar Scroll bar
|
||||
* 08 - tabmsg Press [Tab] message
|
||||
* 09 - cmdmark Command line marker
|
||||
* 10 - cmdline Command line
|
||||
* 11 - pwdborder Password box border
|
||||
* 12 - pwdheader Password box header
|
||||
* 13 - pwdentry Password box contents
|
||||
* 14 - timeout_msg Timeout message
|
||||
* 15 - timeout Timeout counter
|
||||
* 16 - help Current entry help text
|
||||
* 17 - disabled Disabled menu item
|
||||
*/
|
||||
|
||||
static const struct color_table default_colors[] = {
|
||||
{"screen", "37;40", 0x80ffffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"border", "30;44", 0x40000000, 0x00000000, SHADOW_NORMAL},
|
||||
{"title", "1;36;44", 0xc00090f0, 0x00000000, SHADOW_NORMAL},
|
||||
{"unsel", "37;44", 0x90ffffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"hotkey", "1;37;44", 0xffffffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"sel", "7;37;40", 0xe0000000, 0x20ff8000, SHADOW_ALL},
|
||||
{"hotsel", "1;7;37;40", 0xe0400000, 0x20ff8000, SHADOW_ALL},
|
||||
{"scrollbar", "30;44", 0x40000000, 0x00000000, SHADOW_NORMAL},
|
||||
{"tabmsg", "31;40", 0x90ffff00, 0x00000000, SHADOW_NORMAL},
|
||||
{"cmdmark", "1;36;40", 0xc000ffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"cmdline", "37;40", 0xc0ffffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"pwdborder", "30;47", 0x80ffffff, 0x20ffffff, SHADOW_NORMAL},
|
||||
{"pwdheader", "31;47", 0x80ff8080, 0x20ffffff, SHADOW_NORMAL},
|
||||
{"pwdentry", "30;47", 0x80ffffff, 0x20ffffff, SHADOW_NORMAL},
|
||||
{"timeout_msg", "37;40", 0x80ffffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"timeout", "1;37;40", 0xc0ffffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"help", "37;40", 0xc0ffffff, 0x00000000, SHADOW_NORMAL},
|
||||
{"disabled", "1;30;44", 0x60cccccc, 0x00000000, SHADOW_NORMAL},
|
||||
};
|
||||
|
||||
#define NCOLORS (sizeof default_colors/sizeof default_colors[0])
|
||||
const int message_base_color = NCOLORS;
|
||||
const int menu_color_table_size = NCOLORS + 256;
|
||||
|
||||
/* Algorithmically generate the msgXX colors */
|
||||
void set_msg_colors_global(struct color_table *tbl,
|
||||
unsigned int fg, unsigned int bg,
|
||||
enum color_table_shadow shadow)
|
||||
{
|
||||
struct color_table *cp = tbl + message_base_color;
|
||||
unsigned int i;
|
||||
unsigned int fga, bga;
|
||||
unsigned int fgh, bgh;
|
||||
unsigned int fg_idx, bg_idx;
|
||||
unsigned int fg_rgb, bg_rgb;
|
||||
|
||||
static const unsigned int pc2rgb[8] =
|
||||
{ 0x000000, 0x0000ff, 0x00ff00, 0x00ffff, 0xff0000, 0xff00ff, 0xffff00,
|
||||
0xffffff
|
||||
};
|
||||
|
||||
/* Converting PC RGBI to sensible RGBA values is an "interesting"
|
||||
proposition. This algorithm may need plenty of tweaking. */
|
||||
|
||||
fga = fg & 0xff000000;
|
||||
fgh = ((fg >> 1) & 0xff000000) | 0x80000000;
|
||||
|
||||
bga = bg & 0xff000000;
|
||||
bgh = ((bg >> 1) & 0xff000000) | 0x80000000;
|
||||
|
||||
for (i = 0; i < 256; i++) {
|
||||
fg_idx = i & 15;
|
||||
bg_idx = i >> 4;
|
||||
|
||||
fg_rgb = pc2rgb[fg_idx & 7] & fg;
|
||||
bg_rgb = pc2rgb[bg_idx & 7] & bg;
|
||||
|
||||
if (fg_idx & 8) {
|
||||
/* High intensity foreground */
|
||||
fg_rgb |= fgh;
|
||||
} else {
|
||||
fg_rgb |= fga;
|
||||
}
|
||||
|
||||
if (bg_idx == 0) {
|
||||
/* Default black background, assume transparent */
|
||||
bg_rgb = 0;
|
||||
} else if (bg_idx & 8) {
|
||||
bg_rgb |= bgh;
|
||||
} else {
|
||||
bg_rgb |= bga;
|
||||
}
|
||||
|
||||
cp->argb_fg = fg_rgb;
|
||||
cp->argb_bg = bg_rgb;
|
||||
cp->shadow = shadow;
|
||||
cp++;
|
||||
}
|
||||
}
|
||||
|
||||
struct color_table *default_color_table(void)
|
||||
{
|
||||
unsigned int i;
|
||||
const struct color_table *dp;
|
||||
struct color_table *cp;
|
||||
struct color_table *color_table;
|
||||
static const int pc2ansi[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
|
||||
static char msg_names[6 * 256];
|
||||
char *mp;
|
||||
|
||||
color_table = calloc(NCOLORS + 256, sizeof(struct color_table));
|
||||
|
||||
dp = default_colors;
|
||||
cp = color_table;
|
||||
|
||||
for (i = 0; i < NCOLORS; i++) {
|
||||
*cp = *dp;
|
||||
cp->ansi = refstrdup(dp->ansi);
|
||||
cp++;
|
||||
dp++;
|
||||
}
|
||||
|
||||
mp = msg_names;
|
||||
for (i = 0; i < 256; i++) {
|
||||
cp->name = mp;
|
||||
mp += sprintf(mp, "msg%02x", i) + 1;
|
||||
|
||||
rsprintf(&cp->ansi, "%s3%d;4%d", (i & 8) ? "1;" : "",
|
||||
pc2ansi[i & 7], pc2ansi[(i >> 4) & 7]);
|
||||
cp++;
|
||||
}
|
||||
|
||||
/*** XXX: This needs to move to run_menu() ***/
|
||||
console_color_table = color_table;
|
||||
console_color_table_size = NCOLORS + 256;
|
||||
|
||||
set_msg_colors_global(color_table, MSG_COLORS_DEF_FG,
|
||||
MSG_COLORS_DEF_BG, MSG_COLORS_DEF_SHADOW);
|
||||
|
||||
return color_table;
|
||||
}
|
||||
|
||||
struct color_table *copy_color_table(const struct color_table *master)
|
||||
{
|
||||
const struct color_table *dp;
|
||||
struct color_table *color_table, *cp;
|
||||
unsigned int i;
|
||||
|
||||
color_table = calloc(NCOLORS + 256, sizeof(struct color_table));
|
||||
|
||||
dp = master;
|
||||
cp = color_table;
|
||||
|
||||
for (i = 0; i < NCOLORS + 256; i++) {
|
||||
*cp = *dp;
|
||||
cp->ansi = refstr_get(dp->ansi);
|
||||
cp++;
|
||||
dp++;
|
||||
}
|
||||
|
||||
return color_table;
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright 2011 Intel Corporation - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
* Boston MA 02110-1301, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H__
|
||||
#define __CONFIG_H__
|
||||
|
||||
/*
|
||||
* These values correspond to the "default" and "ui" commands
|
||||
* respectively. "ui" takes precendence over "default".
|
||||
*/
|
||||
#define LEVEL_DEFAULT 1
|
||||
#define LEVEL_UI 2
|
||||
|
||||
extern short uappendlen; //bytes in append= command
|
||||
extern short ontimeoutlen; //bytes in ontimeout command
|
||||
extern short onerrorlen; //bytes in onerror command
|
||||
extern short forceprompt; //force prompt
|
||||
extern short noescape; //no escape
|
||||
extern short nocomplete; //no label completion on TAB key
|
||||
extern short allowimplicit; //allow implicit kernels
|
||||
extern short allowoptions; //user-specified options allowed
|
||||
extern short includelevel; //nesting level
|
||||
extern short defaultlevel; //the current level of default
|
||||
extern short vkernel; //have we seen any "label" statements?
|
||||
extern short displaycon; //conio.inc
|
||||
extern short nohalt; //idle.inc
|
||||
|
||||
extern const char *default_cmd; //"default" command line
|
||||
extern const char *onerror; //"onerror" command line
|
||||
extern const char *ontimeout; //"ontimeout" command line
|
||||
|
||||
extern void cat_help_file(int key);
|
||||
extern struct menu_entry *find_label(const char *str);
|
||||
extern void print_labels(const char *prefix, size_t len);
|
||||
|
||||
extern int new_linux_kernel(char *okernel, char *ocmdline);
|
||||
|
||||
extern void pm_load_high(com32sys_t *regs);
|
||||
|
||||
extern void ldlinux_enter_command(void);
|
||||
extern void ldlinux_console_init(void);
|
||||
extern const char *apply_extension(const char *kernel, const char *ext);
|
||||
|
||||
#endif /* __CONFIG_H__ */
|
|
@ -0,0 +1,176 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2008 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
* Boston MA 02110-1301, USA; either version 2 of the License, or
|
||||
* (at your option) any later version; incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <dprintf.h>
|
||||
|
||||
#include <com32.h>
|
||||
#include <sys/exec.h>
|
||||
#include <sys/io.h>
|
||||
#include <sys/module.h>
|
||||
#include "core.h"
|
||||
#include "menu.h"
|
||||
#include "fs.h"
|
||||
#include "config.h"
|
||||
#include "localboot.h"
|
||||
#include "bios.h"
|
||||
|
||||
#include <syslinux/bootrm.h>
|
||||
#include <syslinux/movebits.h>
|
||||
#include <syslinux/config.h>
|
||||
#include <syslinux/boot.h>
|
||||
|
||||
const struct image_types image_boot_types[] = {
|
||||
{ "localboot", IMAGE_TYPE_LOCALBOOT },
|
||||
{ "kernel", IMAGE_TYPE_KERNEL },
|
||||
{ "linux", IMAGE_TYPE_LINUX },
|
||||
{ "boot", IMAGE_TYPE_BOOT },
|
||||
{ "bss", IMAGE_TYPE_BSS },
|
||||
{ "pxe", IMAGE_TYPE_PXE },
|
||||
{ "fdimage", IMAGE_TYPE_FDIMAGE },
|
||||
{ "com32", IMAGE_TYPE_COM32 },
|
||||
{ "config", IMAGE_TYPE_CONFIG },
|
||||
{ NULL, 0 },
|
||||
};
|
||||
|
||||
extern jmp_buf __return_to_command_prompt;
|
||||
extern int create_args_and_load(char *);
|
||||
|
||||
__export void execute(const char *cmdline, uint32_t type, bool sysappend)
|
||||
{
|
||||
const char *kernel, *args;
|
||||
const char *p;
|
||||
com32sys_t ireg;
|
||||
char *q, ch;
|
||||
|
||||
memset(&ireg, 0, sizeof ireg);
|
||||
|
||||
if (strlen(cmdline) >= MAX_CMDLINE_LEN) {
|
||||
printf("cmdline too long\n");
|
||||
return;
|
||||
}
|
||||
|
||||
q = malloc(MAX_CMDLINE_LEN);
|
||||
if (!q) {
|
||||
printf("%s(): Fail to malloc a buffer to exec %s\n",
|
||||
__func__, cmdline);
|
||||
return;
|
||||
}
|
||||
|
||||
kernel = q;
|
||||
p = cmdline;
|
||||
while (*p && !my_isspace(*p))
|
||||
*q++ = *p++;
|
||||
*q++ = '\0';
|
||||
|
||||
args = q;
|
||||
while (*p && my_isspace(*p))
|
||||
p++;
|
||||
|
||||
do {
|
||||
*q++ = ch = *p++;
|
||||
} while (ch);
|
||||
|
||||
if (sysappend) {
|
||||
/* If we've seen some args, insert a space */
|
||||
if (--q != args)
|
||||
*q++ = ' ';
|
||||
|
||||
do_sysappend(q);
|
||||
}
|
||||
|
||||
dprintf("kernel is %s, args = %s type = %d \n", kernel, args, type);
|
||||
|
||||
if (kernel[0] == '.') {
|
||||
/* It might be a type specifier */
|
||||
const struct image_types *t;
|
||||
for (t = image_boot_types; t->name; t++) {
|
||||
if (!strcmp(kernel + 1, t->name)) {
|
||||
/*
|
||||
* Strip the type specifier, apply the
|
||||
* filename extension if COM32 and
|
||||
* retry.
|
||||
*/
|
||||
p = args;
|
||||
if (t->type == IMAGE_TYPE_COM32) {
|
||||
p = apply_extension(p, ".c32");
|
||||
if (!p)
|
||||
return;
|
||||
}
|
||||
|
||||
execute(p, t->type, sysappend);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (type == IMAGE_TYPE_COM32) {
|
||||
/*
|
||||
* We may be called with the console in an unknown
|
||||
* state, so initialise it.
|
||||
*/
|
||||
ldlinux_console_init();
|
||||
|
||||
/* new entry for elf format c32 */
|
||||
if (create_args_and_load((char *)cmdline))
|
||||
printf("Failed to load COM32 file %s\n", kernel);
|
||||
|
||||
/*
|
||||
* The old COM32 module code would run the module then
|
||||
* drop the user back at the command prompt,
|
||||
* irrespective of how the COM32 module was loaded,
|
||||
* e.g. from vesamenu.c32.
|
||||
*/
|
||||
unload_modules_since(LDLINUX);
|
||||
|
||||
/* Restore the console */
|
||||
ldlinux_console_init();
|
||||
|
||||
/* Jump back to the main to call ldlinux_enter_command */
|
||||
longjmp(__return_to_command_prompt, 1);
|
||||
} else if (type == IMAGE_TYPE_CONFIG) {
|
||||
char *argv[] = { LDLINUX, NULL, NULL };
|
||||
char *config;
|
||||
int rv;
|
||||
|
||||
/* kernel contains the config file name */
|
||||
config = malloc(FILENAME_MAX);
|
||||
if (!config)
|
||||
goto out;
|
||||
|
||||
realpath(config, kernel, FILENAME_MAX);
|
||||
|
||||
/* If we got anything on the command line, do a chdir */
|
||||
if (*args)
|
||||
mangle_name(config_cwd, args);
|
||||
|
||||
argv[1] = config;
|
||||
rv = start_ldlinux(2, argv);
|
||||
printf("Failed to exec %s: %s\n", LDLINUX, strerror(rv));
|
||||
} else if (type == IMAGE_TYPE_LOCALBOOT) {
|
||||
local_boot(strtoul(kernel, NULL, 0));
|
||||
} else if (type == IMAGE_TYPE_PXE || type == IMAGE_TYPE_BSS ||
|
||||
type == IMAGE_TYPE_BOOT) {
|
||||
chainboot_file(kernel, type);
|
||||
} else {
|
||||
/* Need add one item for kernel load, as we don't use
|
||||
* the assembly runkernel.inc any more */
|
||||
new_linux_kernel((char *)kernel, (char *)args);
|
||||
}
|
||||
|
||||
out:
|
||||
free((void *)kernel);
|
||||
|
||||
/* If this returns, something went bad; return to menu */
|
||||
}
|
|
@ -0,0 +1,243 @@
|
|||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004-2008 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* get_key.c
|
||||
*
|
||||
* Get a single key, and try to pick apart function key codes.
|
||||
* This doesn't decode anywhere close to all possiblities, but
|
||||
* hopefully is enough to be useful.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <sys/times.h>
|
||||
#include <getkey.h>
|
||||
#include <libutil.h>
|
||||
#include <sys/file.h>
|
||||
|
||||
struct keycode {
|
||||
int code;
|
||||
int seqlen;
|
||||
const unsigned char *seq;
|
||||
};
|
||||
|
||||
#define CODE(x,y) { x, (sizeof y)-1, (const unsigned char *)(y) }
|
||||
|
||||
static const struct keycode keycodes[] = {
|
||||
/* First, the BIOS combined codes */
|
||||
CODE(KEY_F1, "\0\x3B"),
|
||||
CODE(KEY_F2, "\0\x3C"),
|
||||
CODE(KEY_F3, "\0\x3D"),
|
||||
CODE(KEY_F4, "\0\x3E"),
|
||||
CODE(KEY_F5, "\0\x3F"),
|
||||
CODE(KEY_F6, "\0\x40"),
|
||||
CODE(KEY_F7, "\0\x41"),
|
||||
CODE(KEY_F8, "\0\x42"),
|
||||
CODE(KEY_F9, "\0\x43"),
|
||||
CODE(KEY_F10, "\0\x44"),
|
||||
CODE(KEY_F11, "\0\x85"),
|
||||
CODE(KEY_F12, "\0\x86"),
|
||||
|
||||
CODE(KEY_UP, "\0\x48"),
|
||||
CODE(KEY_DOWN, "\0\x50"),
|
||||
CODE(KEY_LEFT, "\0\x4B"),
|
||||
CODE(KEY_RIGHT, "\0\x4D"),
|
||||
CODE(KEY_PGUP, "\0\x49"),
|
||||
CODE(KEY_PGDN, "\0\x51"),
|
||||
CODE(KEY_HOME, "\0\x47"),
|
||||
CODE(KEY_END, "\0\x4F"),
|
||||
CODE(KEY_INSERT, "\0\x52"),
|
||||
CODE(KEY_DELETE, "\0\x53"),
|
||||
|
||||
/* Now, VT/xterm/Linux codes */
|
||||
CODE(KEY_F1, "\033[[A"),
|
||||
CODE(KEY_F1, "\033OP"),
|
||||
CODE(KEY_F2, "\033[[B"),
|
||||
CODE(KEY_F2, "\033OQ"),
|
||||
CODE(KEY_F3, "\033[[C"),
|
||||
CODE(KEY_F3, "\033OR"),
|
||||
CODE(KEY_F4, "\033[[D"),
|
||||
CODE(KEY_F4, "\033OS"),
|
||||
CODE(KEY_F5, "\033[[E"),
|
||||
CODE(KEY_F5, "\033[15~"),
|
||||
CODE(KEY_F6, "\033[17~"),
|
||||
CODE(KEY_F7, "\033[18~"),
|
||||
CODE(KEY_F8, "\033[19~"),
|
||||
CODE(KEY_F9, "\033[20~"),
|
||||
CODE(KEY_F10, "\033[21~"),
|
||||
CODE(KEY_F11, "\033[23~"),
|
||||
CODE(KEY_F12, "\033[24~"),
|
||||
|
||||
CODE(KEY_UP, "\033[A"),
|
||||
CODE(KEY_DOWN, "\033[B"),
|
||||
CODE(KEY_LEFT, "\033[D"),
|
||||
CODE(KEY_RIGHT, "\033[C"),
|
||||
CODE(KEY_PGUP, "\033[5~"),
|
||||
CODE(KEY_PGUP, "\033[V"),
|
||||
CODE(KEY_PGDN, "\033[6~"),
|
||||
CODE(KEY_PGDN, "\033[U"),
|
||||
CODE(KEY_HOME, "\033[1~"),
|
||||
CODE(KEY_HOME, "\033[H"),
|
||||
CODE(KEY_END, "\033[4~"),
|
||||
CODE(KEY_END, "\033[F"),
|
||||
CODE(KEY_END, "\033OF"),
|
||||
CODE(KEY_INSERT, "\033[2~"),
|
||||
CODE(KEY_INSERT, "\033[@"),
|
||||
CODE(KEY_DELETE, "\033[3~"),
|
||||
|
||||
/* EFI scan codes */
|
||||
CODE(KEY_UP, "\0\x01"),
|
||||
CODE(KEY_DOWN, "\0\x02"),
|
||||
CODE(KEY_RIGHT, "\0\x03"),
|
||||
CODE(KEY_LEFT, "\0\x04"),
|
||||
CODE(KEY_HOME, "\0\x05"),
|
||||
CODE(KEY_END, "\0\x06"),
|
||||
CODE(KEY_INSERT, "\0\x07"),
|
||||
CODE(KEY_DELETE, "\0\x08"),
|
||||
CODE(KEY_PGUP, "\0\x09"),
|
||||
CODE(KEY_PGDN, "\0\x0a"),
|
||||
CODE(KEY_F1, "\0\x0b"),
|
||||
CODE(KEY_F2, "\0\x0c"),
|
||||
CODE(KEY_F3, "\0\x0d"),
|
||||
CODE(KEY_F4, "\0\x0e"),
|
||||
CODE(KEY_F5, "\0\x0f"),
|
||||
CODE(KEY_F6, "\0\x10"),
|
||||
CODE(KEY_F7, "\0\x11"),
|
||||
CODE(KEY_F8, "\0\x12"),
|
||||
CODE(KEY_F9, "\0\x13"),
|
||||
CODE(KEY_F10, "\0\x14"),
|
||||
CODE(KEY_F11, "\0\x15"),
|
||||
CODE(KEY_F12, "\0\x16"),
|
||||
CODE(KEY_ESC, "\0\x17"),
|
||||
};
|
||||
|
||||
#define NCODES ((int)(sizeof keycodes/sizeof(struct keycode)))
|
||||
|
||||
#define KEY_TIMEOUT ((CLK_TCK+9)/10)
|
||||
|
||||
/*
|
||||
* Attempt to decode the key sequence in 'buffer'.
|
||||
*
|
||||
* On success (the data in 'buffer' matches a key code) put the
|
||||
* corresponding key code in 'code' and return 0. Return 1 if 'buffer'
|
||||
* partially matches a key code, i.e. we need more data before we can
|
||||
* make an unambiguous match. Return -1 if the buffer does not contain
|
||||
* a key code.
|
||||
*/
|
||||
int get_key_decode(char *buffer, int nc, int *code)
|
||||
{
|
||||
const struct keycode *kc;
|
||||
int i, rv;
|
||||
|
||||
rv = -1;
|
||||
for (i = 0, kc = keycodes; i < NCODES; i++, kc++) {
|
||||
if (nc == kc->seqlen && !memcmp(buffer, kc->seq, nc)) {
|
||||
*code = kc->code;
|
||||
rv = 0;
|
||||
break;
|
||||
} else if (nc < kc->seqlen && !memcmp(buffer, kc->seq, nc)) {
|
||||
rv = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
#ifdef __COM32__
|
||||
extern ssize_t __rawcon_read(struct file_info *fp, void *buf, size_t count);
|
||||
|
||||
int raw_read(int fd, void *buf, size_t count)
|
||||
{
|
||||
(void)fd;
|
||||
|
||||
/*
|
||||
* Instead of using the read(2) stdlib function use
|
||||
* __rawcon_read() directly since we want a single key and
|
||||
* don't want any processing/batching of the user input to
|
||||
* occur - we want the raw data.
|
||||
*/
|
||||
return __rawcon_read(NULL, buf, count);
|
||||
}
|
||||
#else
|
||||
extern int raw_read(int fd, void *buf, size_t count);
|
||||
#endif
|
||||
|
||||
__export int get_key(FILE * f, clock_t timeout)
|
||||
{
|
||||
char buffer[KEY_MAXLEN];
|
||||
int nc, rv;
|
||||
int another;
|
||||
char ch;
|
||||
clock_t start;
|
||||
int code;
|
||||
|
||||
/* We typically start in the middle of a clock tick */
|
||||
if (timeout)
|
||||
timeout++;
|
||||
|
||||
nc = 0;
|
||||
start = times(NULL);
|
||||
do {
|
||||
rv = raw_read(fileno(f), &ch, 1);
|
||||
if (rv == 0 || (rv == -1 && errno == EAGAIN)) {
|
||||
clock_t lateness = times(NULL) - start;
|
||||
if (nc && lateness > 1 + KEY_TIMEOUT) {
|
||||
if (nc == 1)
|
||||
return (unsigned char)buffer[0]; /* timeout */
|
||||
else if (timeout && lateness > timeout)
|
||||
return KEY_NONE;
|
||||
} else if (!nc && timeout && lateness > timeout)
|
||||
return KEY_NONE; /* timeout before sequence */
|
||||
|
||||
do_idle();
|
||||
|
||||
another = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
start = times(NULL);
|
||||
|
||||
buffer[nc++] = ch;
|
||||
|
||||
another = 0;
|
||||
rv = get_key_decode(buffer, nc, &code);
|
||||
if (!rv)
|
||||
return code;
|
||||
else if (rv == 1)
|
||||
another = 1;
|
||||
|
||||
} while (another);
|
||||
|
||||
/* We got an unrecognized sequence; return the first character */
|
||||
/* We really should remember this and return subsequent characters later */
|
||||
return (unsigned char)buffer[0];
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue