mirror of
https://github.com/simon987/antiword.git
synced 2025-04-04 07:53:00 +00:00
antiword 0.37 original source
This commit is contained in:
commit
71f6baaafa
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.o
|
||||
antiword
|
342
Docs/COPYING
Normal file
342
Docs/COPYING
Normal file
@ -0,0 +1,342 @@
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, 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
|
||||
|
||||
Appendix: 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., 675 Mass Ave, Cambridge, MA 02139, 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.
|
||||
|
219
Docs/ChangeLog
Normal file
219
Docs/ChangeLog
Normal file
@ -0,0 +1,219 @@
|
||||
****************************************************************************
|
||||
* Changes in Antiword from versions 0.22 to 0.37 *
|
||||
****************************************************************************
|
||||
|
||||
Changes 0.36 to 0.37
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug reported by Suzanne Skinner <tril@igs.net> (and others) fixed
|
||||
New features:
|
||||
- XML/DocBook output now contains <footnote> tags
|
||||
- Antiword is now based on DeskLib instead of RISC_OSLib (RISC OS only)
|
||||
- Show page headers and footers (PostScript and PDF output only)
|
||||
- Show text that was removed by the revisioning system
|
||||
- Improved kantiword, based on information from Stefan Wiens <s.wi@gmx.net>
|
||||
|
||||
Changes 0.35 to 0.36
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug reported by Michael Minn <mail@michaelminn.com> fixed
|
||||
New features:
|
||||
- The default mapping file is now based on the locale (Unix/Linux) or on
|
||||
the active codepage (DOS)
|
||||
- A Word document can now be saved as "formatted" text. That means with things
|
||||
like *bold* to show bold text, /italics/ to show italics and _undeline_ to
|
||||
show underlined text are added to the plain text. Based on patches send by
|
||||
Ofir Reichenberg <ofir@qlusters.com>
|
||||
- Improved table parsing. Based on information supplied by Bastien Legras
|
||||
<bastien.legras@nectech.fr> and Alex de Kruijff <freebsd@akruijff.dds.nl>
|
||||
- A Word document can now be saved in PDF.
|
||||
- First attempt to support PostScript output in the Cyrillic alphabet. Based
|
||||
on work done by Alexander Belyaev <isle@free.kursknet.ru>
|
||||
- Better support for the Cyrillic alphabet
|
||||
|
||||
Changes 0.34 to 0.35
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Fixed the bug in the use of the environment variable ANTIWORDHOME
|
||||
New features:
|
||||
- The XML/DocBook output is slightly better.
|
||||
- Scale view window is closed when the main window is closed. Thanks to Tony
|
||||
Moore <old_coaster@yahoo.co.uk> (RISC OS only)
|
||||
- More support for WinWord 1.x documents
|
||||
|
||||
Changes 0.33 to 0.34
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug in UTF-8 tables fixed
|
||||
- Bug reported by Stewart Goldwater <sg@janus.freeserve.co.uk> fixed
|
||||
- Bug reported by Karl-Otto Linn <linn@informatik.fh-wiesbaden.de> fixed
|
||||
- Fixed a bug that made DOS hang when Antiword processed a document > 8 MB.
|
||||
New features:
|
||||
- Better approximations for fancy characters in the output
|
||||
- A Word document can now be saved as XML/DocBook.
|
||||
- Linux Makefile is now closer to conventions.
|
||||
- Support for Text Boxes
|
||||
- An environment variable ANTIWORDHOME was added to create a more flexable
|
||||
place for the fontnames file and the mapping files.
|
||||
- Antiword is now Latin9 enabled. Thanks to Stefan Bellon
|
||||
<sbellon@sbellon.de> (RISC OS only)
|
||||
- Some support for MacWord 4 and 5 documents
|
||||
- More support for Word-for-DOS documents
|
||||
- Support for superscripts and subscripts
|
||||
- Displays slightly more images.
|
||||
- Improved lists, especially in documents from Word 97 or later.
|
||||
|
||||
Changes 0.32 to 0.33
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug reported by Yannick PERRET <yperret@bat710.univ-lyon1.fr> fixed
|
||||
Old features:
|
||||
- The -X option is no longer supported. Replace "-X 2" by "-m 8859-2.txt"
|
||||
New features:
|
||||
- Slightly more accurate font translation
|
||||
- Full support for WinWord 2.0 documents
|
||||
- Some support for Word-for-DOS and WinWord 1.x documents
|
||||
- Selective header numbering
|
||||
- Implementation of stylesheets
|
||||
- The system-wide directory for the mapping files was changed from
|
||||
"/opt/antiword/share" to "/usr/share/antiword", in accordance with FHS,
|
||||
the file-system hierarchy standard, as suggested by Anand Buddhdev
|
||||
<arb@anand.org>.
|
||||
- Antiword now turns white text into light gray text.
|
||||
- Antiword is now closer to "64-bit clean". Based on information supplied by
|
||||
Duncan Haldane <f.duncan.m.haldane@worldnet.att.net>.
|
||||
|
||||
Changes 0.31 to 0.32
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug reported by Forrest J. Cavalier III <mibsoft@mibsoftware.com> fixed
|
||||
- Bug reported by Jan ONDREJ (SAL) <ondrejj@salstar.sk> fixed
|
||||
- Bug in dealing with RLE compressed bitmap images fixed
|
||||
- Bug in image scaling fixed (RISC OS only)
|
||||
New features:
|
||||
- Improved leading (Unix only; PostScript version only)
|
||||
- Antiword can now read from the standard input. This is based on an idea by
|
||||
Matthew Miller <mattdm@mattdm.org>. (Unix only)
|
||||
- A white background looks much better. (RISC OS only)
|
||||
- A system-wide directory for the mapping files, as suggested by Sven Geggus
|
||||
<sven@geggus.net> and many others. (Unix only)
|
||||
- Antiword can now deal with documents larger than 7 MB.
|
||||
|
||||
Changes 0.30 to 0.31
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug in the "Show hidden (by Word) text" feature fixed
|
||||
- Bug reported by David Aspinwall <aspinwall@timesten.com> fixed
|
||||
- Bug reported by Robert Steinmetz <rob@steinmetznet.com> fixed
|
||||
Old features:
|
||||
- The -g and -c options are no longer supported. The -c option was the default
|
||||
and is now used automatically. (Unix only)
|
||||
New features:
|
||||
- Ability to display some of the images
|
||||
- Ability to use landscape mode (Unix only; PostScript version only)
|
||||
- Support for all ISO-8859 character sets plus KOI8 and some code pages
|
||||
(Unix only; text version only)
|
||||
- Antiword will now give a warning if the specified PostScript paper size is
|
||||
unsupported. Thanks to Greg Robinson <Greg.Robinson@dsto.defence.gov.au>
|
||||
- Changed from PostScript version 1 to version 2
|
||||
- Antiword now returns 1 if no Word document is found among the files listed
|
||||
on the command line, as suggested by Jens Schleusener
|
||||
<Jens.Schleusener@dlr.de>.
|
||||
- Takes the right margin into account
|
||||
- The PostScript part now supports the AvantGarde, Bookman, Helvetica-Narrow,
|
||||
NewCenturySchlbk and Palatino fonts (Unix only)
|
||||
- More accurate fontnames translation table
|
||||
- Initial scale factor is now configurable (RISC OS only)
|
||||
|
||||
Changes 0.29 to 0.30
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug in the generated PostScript (nocurrentpoint) fixed
|
||||
- Bug reported by Keith Bamford <kbamford@eurobell.co.uk> fixed
|
||||
- Bug in the chapter numbering font fixed
|
||||
New features:
|
||||
- Improved handling of changes in the font size on a single line.
|
||||
- Some support for long file names (RISC OS only)
|
||||
- Thanks to David Kanareck <david@davidkanareck.demon.co.uk>, Antiword can
|
||||
now deal with documents made by "Word for Asian languages", but only
|
||||
when these documents are written in a European language.
|
||||
- Character properties "Caps" and "SmallCaps" for accented characters
|
||||
- More accurate fontnames translation table. (RISC OS only)
|
||||
- PostScript part now supports the Times and Helvetica fonts. (Unix only)
|
||||
|
||||
Changes 0.28 to 0.29
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Bug reported by Paul McCann <P.J.McCann@cfm1220.x400.icl.co.uk> fixed
|
||||
- Character property "SmallCaps" works better now
|
||||
- Bug reported by Richard Lambley <richard@wireless.demon.co.uk> fixed
|
||||
- Fixed a bug in the linewidth computation (Unix only)
|
||||
New features:
|
||||
- A Word document can now be saved as PostScript (Unix only, Courier font only)
|
||||
- Left, Center, Right and Justify alignment added for Word 97
|
||||
- Supports the Macintosh character set
|
||||
|
||||
Changes 0.27 to 0.28
|
||||
--------------------
|
||||
Licence:
|
||||
- Distributed under the GNU General Public License
|
||||
Bug fixes:
|
||||
- Bug reported by Richard Lambley <richard@wireless.demon.co.uk> has not
|
||||
been fixed yet.
|
||||
- Deals correctly with fancy quotes in files from a Macintosh
|
||||
New features:
|
||||
- Supports character properties "SmallCaps", "Caps" and "Hidden Text"
|
||||
- The use of fonts and font sizes for "fast saved" documents is now supported.
|
||||
- Separators between the text, the footnotes and the endnotes
|
||||
- Footnotes are now numbered in Arabic numericals (1, 2, 3), endnotes are now
|
||||
numbered in Roman numericals (i, ii, iii).
|
||||
|
||||
Changes 0.26 to 0.27
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- The main title now shows the first 12 characters of the file name.
|
||||
New features:
|
||||
- "Fast saved" documents are now supported for Word 97.
|
||||
- All tables are now supported for Word 97.
|
||||
- It is now possible to scale the text.
|
||||
|
||||
Changes 0.25 to 0.26
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Fixed several problems with the Choices file
|
||||
- Closed a small memory leak
|
||||
New features:
|
||||
- The use of fonts and font sizes for "full saved" documents is now supported.
|
||||
- Most tables are now supported for Word 97.
|
||||
- Header numbers are now supported for Word 97.
|
||||
|
||||
Changes 0.24 to 0.25
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Improved handling of memory shortages
|
||||
- Some special tables were messed up.
|
||||
New features:
|
||||
- "Fast saved" documents are now supported for Word 6 and 7.
|
||||
- A new option to permit Antiword to change the filetype of Word documents to
|
||||
MSWord (&ae6).
|
||||
- A Wordfile can now be saved as a Drawfile.
|
||||
- The look and feel has been changed from editor-like to browser-like
|
||||
|
||||
Changes 0.23 to 0.24
|
||||
--------------------
|
||||
Bug fixes:
|
||||
- Empty paragraphs in numbered list were not always numbered correctly.
|
||||
- In very complex tables some text could get lost.
|
||||
New features:
|
||||
- F3 is now a shortcut to the "Save as" dialogue box.
|
||||
- Left, Center, Right and Justify alignment added for Word 6 and 7
|
||||
- [pic] marks the place where an image should have been.
|
||||
- It is now possible to have a writeable Choices file, even when Antiword
|
||||
itself is on a read-only medium.
|
||||
|
||||
Changes 0.22 to 0.23
|
||||
--------------------
|
||||
New features:
|
||||
- Paragraph breaks are now an option.
|
||||
- Bulleted single level lists for files from Word 6 and 7
|
||||
- Numbered single level lists (some styles) for files from Word 6 and 7
|
134
Docs/Emacs
Normal file
134
Docs/Emacs
Normal file
@ -0,0 +1,134 @@
|
||||
From: Alex Schroeder <alex@emacswiki.org>
|
||||
Subject: Re: MS Word mode?
|
||||
Date: Fri, 08 Nov 2002 00:40:15 +0100
|
||||
|
||||
Roger Mason <rmason@sparky2.esd.mun.ca> writes:
|
||||
|
||||
> There was a question about this recently on this forum. Look for
|
||||
> undoc.el, I got it from the wiki (I think). It has worked very well for
|
||||
> me to date, although I have not attempted ro read complex documents.
|
||||
|
||||
Well, it makes things readable, but it is far from perfect -- it seems
|
||||
to just delete any non-ascii characters, such that sometimes you will
|
||||
see words such as "Alex8" where "8" is some garbage that just looked
|
||||
like being part of a real word... In other words, interfacing to
|
||||
something like catdoc, antiword, or wvText (included with AbiWord)
|
||||
might be cool. Actually all you need is this:
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.doc\\'" . no-word))
|
||||
|
||||
(defun no-word ()
|
||||
"Run antiword on the entire buffer."
|
||||
(shell-command-on-region (point-min) (point-max) "antiword - " t t))
|
||||
|
||||
Alex.
|
||||
|
||||
===============================================================================
|
||||
|
||||
From: Arnaldo Mandel <am@ime.usp.br>
|
||||
Subject: Re: MS Word mode?
|
||||
Date: Fri, 8 Nov 2002 11:52:33 -0200
|
||||
|
||||
Alex Schroeder wrote (on Nov 8, 2002):
|
||||
|
||||
> Actually all you need is this:
|
||||
>
|
||||
> (add-to-list 'auto-mode-alist '("\\.doc\\'" . no-word))
|
||||
>
|
||||
> (defun no-word ()
|
||||
> "Run antiword on the entire buffer."
|
||||
> (shell-command-on-region (point-min) (point-max) "antiword - " t t))
|
||||
|
||||
On my system there are lots of filenames ending in .doc whose files
|
||||
are not Word files. So I modified your function thusly
|
||||
|
||||
(defun no-word ()
|
||||
"Run antiword on the entire buffer."
|
||||
(if (string-match "Microsoft "
|
||||
(shell-command-to-string (concat "file " buffer-file-name)))
|
||||
(shell-command-on-region (point-min) (point-max) "antiword - " t t)))
|
||||
|
||||
Works in Solaris and Linux, and should work on other unixes as well.
|
||||
|
||||
am
|
||||
|
||||
===============================================================================
|
||||
|
||||
From: Alex Schroeder <alex@emacswiki.org>
|
||||
Subject: Re: MS Word mode?
|
||||
Date: Fri, 08 Nov 2002 18:24:07 +0100
|
||||
|
||||
Arnaldo Mandel <am@ime.usp.br> writes:
|
||||
|
||||
> (defun no-word ()
|
||||
> "Run antiword on the entire buffer."
|
||||
> (if (string-match "Microsoft "
|
||||
> (shell-command-to-string (concat "file " buffer-file-name)))
|
||||
> (shell-command-on-region (point-min) (point-max) "antiword - " t t)))
|
||||
|
||||
Cool. I did not know about "file"... :)
|
||||
|
||||
My stuff is on the wiki, btw:
|
||||
|
||||
* http://www.emacswiki.org/cgi-bin/wiki.pl?AntiWord
|
||||
|
||||
Alex.
|
||||
|
||||
===============================================================================
|
||||
|
||||
From: Benjamin Riefenstahl <Benjamin.Riefenstahl@epost.de>
|
||||
Subject: Re: emacs rmail. How to convert .doc to plain text
|
||||
Date: 24 Nov 2002 18:08:22 +0100
|
||||
|
||||
Hi,
|
||||
|
||||
Puff Addison <puff@theaddisons.demon.co.uk> writes:
|
||||
> Yes, please post your Emacs integration code.
|
||||
|
||||
Ok, see below. I should note that it is probably also possible to
|
||||
(ab-)use jka-compr for this, which would make my two functions
|
||||
obsolete.
|
||||
|
||||
so long, benny
|
||||
|
||||
>>>>>>>
|
||||
|
||||
(defun benny-antiword-file-handler (operation &rest args)
|
||||
;; First check for the specific operations
|
||||
;; that we have special handling for.
|
||||
(cond ((eq operation 'insert-file-contents)
|
||||
(apply 'benny-antiword-insert-file args))
|
||||
((eq operation 'file-writable-p)
|
||||
nil)
|
||||
((eq operation 'write-region)
|
||||
(error "Word documents can't be written"))
|
||||
;; Handle any operation we don't know about.
|
||||
(t (let ((inhibit-file-name-handlers
|
||||
(cons 'benny-antiword-file-handler
|
||||
(and (eq inhibit-file-name-operation operation)
|
||||
inhibit-file-name-handlers)))
|
||||
(inhibit-file-name-operation operation))
|
||||
(apply operation args)))))
|
||||
|
||||
(defun benny-antiword-insert-file (filename &optional visit beg end replace)
|
||||
(set-buffer-modified-p nil)
|
||||
(setq buffer-file-name (file-truename filename))
|
||||
(setq buffer-read-only t)
|
||||
(let ((start (point))
|
||||
(inhibit-read-only t))
|
||||
(if replace (delete-region (point-min) (point-max)))
|
||||
(save-excursion
|
||||
(let ((coding-system-for-read 'utf-8)
|
||||
(filename (encode-coding-string
|
||||
buffer-file-name
|
||||
(or file-name-coding-system
|
||||
default-file-name-coding-system))))
|
||||
(call-process "antiword" nil t nil "-m" "UTF-8.txt"
|
||||
filename))
|
||||
(list buffer-file-name (- (point) start)))))
|
||||
|
||||
(setq file-name-handler-alist
|
||||
(cons '("\\.doc\\'" . benny-antiword-file-handler)
|
||||
file-name-handler-alist))
|
||||
|
||||
<<<<<<<
|
14
Docs/Exmh
Normal file
14
Docs/Exmh
Normal file
@ -0,0 +1,14 @@
|
||||
From: Glenn Burkhardt <glenn@vtecus.com>
|
||||
Subject: It's great!
|
||||
Date: Wed, 22 Aug 2001 12:02:54 -0400
|
||||
|
||||
Thank you for this program. Thank you very much! Thank you immensely!!
|
||||
|
||||
|
||||
P.S. I find entry helpful as a /etc/mailcap rule:
|
||||
|
||||
application/msword;/usr/local/bin/antiword -t %s | less; needsterminal; \
|
||||
copiousoutput; print=antiword -p letter %s|lpr
|
||||
|
||||
I completely integrates the text mode with my mailer, exmh. You might
|
||||
want to include it in your documentation.
|
113
Docs/FAQ
Normal file
113
Docs/FAQ
Normal file
@ -0,0 +1,113 @@
|
||||
Frequently Asked Questions
|
||||
==========================
|
||||
|
||||
These questions and answers are mainly Linux/Unix oriented. For other
|
||||
Operating Systems you may want to read the documentation provided by the
|
||||
people who ported Antiword.
|
||||
|
||||
Q1: How do I install Antiword?
|
||||
A1: (a) Make a suitable directory such as '$HOME/src/antiword' and copy the
|
||||
'antiword.tar.gz' file to this directory.
|
||||
(b) decompress: 'gunzip antiword.tar.gz'
|
||||
(c) unpack: 'tar xvf antiword.tar'
|
||||
(d) compile: 'make all'
|
||||
(e) install: 'make install'. This will install Antiword in the $HOME/bin
|
||||
directory.
|
||||
(f) copy the file 'fontnames' and one or more mapping files from the
|
||||
Resources directory to the $HOME/.antiword directory (note the dot
|
||||
before antiword!).
|
||||
NOTE: you can skip point (f) if your system administrator already copied
|
||||
these files to /usr/share/antiword.
|
||||
|
||||
Q2: I get the message "I can't open your mapping file (xxxx-x.txt)"
|
||||
A2: This means that the mapping file has not been installed. The installation
|
||||
may have to be done manually. See above answer A1, point (f).
|
||||
NOTE: Antiword assumes that a file that can't be opened for reading is a
|
||||
file that doesn't exist.
|
||||
|
||||
Q3: How do I use Antiword?
|
||||
A3: Type antiword -h and see.
|
||||
|
||||
Q4: I tried "antiword -m /some/directory/8859-1.txt word.doc", but this
|
||||
doesn't work.
|
||||
A4: The -m option is followed by the name of a mapping file, a full pathname
|
||||
won't work.
|
||||
|
||||
Q5: How does Antiword deal with Word macro viruses?
|
||||
A5: Antiword does not run any Word macros because it can't do so.
|
||||
Therefore such a virus will not harm your computer system.
|
||||
|
||||
Q6: What is the purpose of the file 'fontnames' in the '/usr/share/antiword/'
|
||||
or '$HOME/.antiword' directory?
|
||||
A6: This file provides a translation table from the font names used in a Word
|
||||
document to the font names used by a PostScript printer.
|
||||
The file 'fontnames' can be edited to match the font collection used by
|
||||
your PostScript printer.
|
||||
|
||||
Q7: What is 'Hidden Text'?
|
||||
A7: Hidden Text is Microsoft speak for text that may or may not be shown
|
||||
on the screen, subject to the user's preferences, but such text is never
|
||||
printed.
|
||||
|
||||
Q8: Antiword claims to support all ISO-8859 character sets, but I can't see
|
||||
any of this.
|
||||
A8: There is support for all ISO-8859 character sets, but only in the text
|
||||
output, not in the PostScript output.
|
||||
The result can only be seen if your xterm, vtterm, kvt or similar
|
||||
terminal emulation program uses a font compatible with that ISO-8859
|
||||
character set.
|
||||
|
||||
Q9: Which mapping file (-m option) is correct in my situation?
|
||||
A9: The correct mapping file depends on the character set you need for output
|
||||
in a specific language.
|
||||
For Western European languages (like English, French, German) this is
|
||||
8859-1.txt. (OS/2: cp1252.txt) (DOS: cp850.txt)
|
||||
For Eastern European languages (like Polish, Czech, Slovak, Croatian) this
|
||||
is 8859-2.txt. (OS/2: cp1250.txt) (DOS: cp852.txt)
|
||||
For Esperanto use 8859-3.txt.
|
||||
For Russian use 8859-5.txt or koi8-r.txt. (OS/2: cp1251.txt)
|
||||
(DOS: cp866.txt)
|
||||
For Ukrainian use koi8-u.txt.
|
||||
For Arabic use 8859-6.txt. (DOS: cp864.txt)
|
||||
For Hebrew use 8859-8.txt. (DOS: cp862.txt)
|
||||
For Thai use 8859-11.txt.
|
||||
If your system supports it, you might also try UTF-8.txt.
|
||||
|
||||
NOTE: UTF-8 also enables Antiword to show text in languages like Chinese,
|
||||
Japanese and Korean.
|
||||
|
||||
Q10: I tried UTF-8, but some documents show more garbage than text. Why?
|
||||
A10: UTF-8 will only work if the document was saved by a Unicode enabled
|
||||
version of Word (or if Word used ISO-8859-1 as its internal encoding).
|
||||
The following versions of Word are known to be Unicode enabled:
|
||||
Word 6 and Word 7 for Asian languages, all versions of Word 97,
|
||||
Word 98 (Mac), Word 2000, Word 2001 (Mac) and Word 2002 (aka Word XP).
|
||||
|
||||
Q11: Why can't Antiword read from stdin directly? Why use a temporary file?
|
||||
A11: The information in a Word document is not stored sequentially. Therefore
|
||||
the use of the "fseek" function can't be avoided. So Antiword must copy
|
||||
stdin to a temporary file first and then process that file.
|
||||
|
||||
Q12: Why does the XML output of Antiword sometimes contain such a strange
|
||||
structure or practically no structure at all?
|
||||
A12: Remember that Word is basically 'text plus appearance' and XML is
|
||||
basically 'text plus structure'. If a Word document is written by a
|
||||
competent person there will be a balance between appearance and structure,
|
||||
but if a Word document is written by an inexperienced or incompetent
|
||||
person the Word document can end up without a structure, or worse, with a
|
||||
terrible structure.
|
||||
Antiword can't create a structure when there is none.
|
||||
|
||||
Q13: Why is the Postscript output in Cyrillic in ISO-8869-5? Nobody uses that
|
||||
character set.
|
||||
A13: For Cyrillic you a have:
|
||||
(a) koi8 does not cover all languages that use Cyrillic,
|
||||
(b) cp866, cp1251 and Mac-Cyrillic are proprietary,
|
||||
(c) Unicode and UTF-8 are not supported by PostScript yet and
|
||||
(d) ISO-8859-5, the character set that nobody uses.
|
||||
|
||||
Q14: I have used "antiword -p a4 -m 8869-5.txt file.doc > file.ps", but I get
|
||||
no Cyrillic characters.
|
||||
A14: Programs like Ghostscript and Ghostview need Cyrillic enabled fonts in
|
||||
order to show Cyrillic characters. A PostScript printer needs to be
|
||||
Cyrillic enabled in order to show Cyrillic characters.
|
44
Docs/History
Normal file
44
Docs/History
Normal file
@ -0,0 +1,44 @@
|
||||
History of Antiword by (C) Adri van Os
|
||||
------------------------------------
|
||||
|
||||
|
||||
The Name
|
||||
--------
|
||||
The name comes from: "The antidote against people who send Microsoft(R) Word
|
||||
files to everybody, because they believe that everybody runs Windows(R) and
|
||||
therefore runs Word".
|
||||
|
||||
|
||||
Version 0.37 (21 Oct 2005)
|
||||
--------------------------
|
||||
Beta release, for evaluation by the public.
|
||||
|
||||
|
||||
Known Limitations
|
||||
-----------------
|
||||
|
||||
1) The layout of Word documents is kept secret by Microsoft(R). Therefore
|
||||
Antiword is based on information gathered from the Internet and on
|
||||
guesswork.
|
||||
2) Antiword doesn't show all the images included in a Word document.
|
||||
3) Antiword doesn't do any hyphenation, because hyphenation is language
|
||||
dependent.
|
||||
4) Antiword places footnotes at the end of the text.
|
||||
5) Antiword places box text after normal text and not in a box.
|
||||
6) Antiword doesn't try to emulate any of Word's DTP abilities.
|
||||
7) PostScript ouput will not work in combination with UTF-8. It only works in
|
||||
combination with character sets ISO-8859-1, ISO-8859-2 and ISO-8859-5.
|
||||
8) Antiword's error messages are not very helpful.
|
||||
|
||||
|
||||
Known Bugs
|
||||
----------
|
||||
|
||||
1) Antiword cannot handle encrypted documents.
|
||||
2) Antiword assumes default tab stops.
|
||||
3) Antiword doesn't handle frames.
|
||||
4) Antiword ignores page headers and footers.
|
||||
5) Antiword only handles lists in some of the styles.
|
||||
6) Antiword cannot handle some types of multilevel lists.
|
||||
7) Antiword assumes that all Word documents made on a Macintosh with Word
|
||||
version 6 or older use the MacRoman character set.
|
88
Docs/Mozilla
Normal file
88
Docs/Mozilla
Normal file
@ -0,0 +1,88 @@
|
||||
Date: Mon, 11 Nov 2002 11:36:21 +0000
|
||||
From: Cam <camilo@mesias.co.uk>
|
||||
Subject: Re: antiword
|
||||
|
||||
Hi
|
||||
|
||||
I have updated the script for the latest Mozilla with plugger, as found
|
||||
in RedHat 8. This makes the default action a very quick text view of a
|
||||
document, much better IMHO than starting ooffice or abiword. If users
|
||||
want to edit the file they can still save as.
|
||||
|
||||
Here is a slightly improved script for gnome users:
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
tmpfile=/tmp/aw$$.txt
|
||||
|
||||
lastditch=`which vi`
|
||||
|
||||
editor=${EDITOR:-$lastditch}
|
||||
|
||||
if [ ! -x $editor ] ; then
|
||||
editor=$lastditch
|
||||
fi
|
||||
|
||||
|
||||
tmpfile=/tmp/aw$$.txt
|
||||
|
||||
gtopts="-t antiword-helper --hide-menubar"
|
||||
|
||||
antiword "$1" > $tmpfile
|
||||
chmod -w $tmpfile
|
||||
gnome-terminal $gtopts -x $editor $tmpfile ; chmod +w $tmpfile ; rm $tmpfile
|
||||
|
||||
|
||||
|
||||
Here is the script for non-gnome users:
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
tmpfile=/tmp/aw$$.txt
|
||||
|
||||
lastditch=`which vi`
|
||||
|
||||
editor=${EDITOR:-$lastditch}
|
||||
|
||||
if [ ! -x $editor ] ; then
|
||||
editor=$lastditch
|
||||
fi
|
||||
|
||||
|
||||
antiword "$1" > $tmpfile
|
||||
chmod -w $tmpfile
|
||||
xterm -T "antiword-helper" -e $editor $tmpfile
|
||||
chmod +w $tmpfile
|
||||
rm $tmpfile
|
||||
|
||||
|
||||
|
||||
To use the scripts add an entry into your plugger config file
|
||||
(pluggerrc, for locations check man plugger). Mine is in
|
||||
/home/cxm/.netscape/pluggerrc:
|
||||
|
||||
The line to add is (it has a leading tab):
|
||||
|
||||
ignore_errors exits: antiword-helper "$file"
|
||||
|
||||
|
||||
Here is my config file after I added the line
|
||||
|
||||
application/rtf: rtf: Rich Text Format
|
||||
application/x-msword: doc, dot: Microsoft Word Document
|
||||
application/msword: doc, dot: Microsoft Word Document
|
||||
ignore_errors exits: antiword-helper "$file"
|
||||
nokill exits: oowriter "$file"
|
||||
repeat swallow(AbiWord) fill: AbiWord -nosplash -geometry
|
||||
+9000+9000 "$file" >/dev/null 2>/dev/null
|
||||
repeat swallow(PCFileViewer) fill: sdtpcv "$file"
|
||||
repeat swallow(PCFileViewer) fill: /opt/SUNWdtpcv/bin/sdtpcv
|
||||
"$file"
|
||||
|
||||
|
||||
Then start Mozilla / Netscape and you should be able to quickly view
|
||||
word docs from the browser and as email attachments.
|
||||
|
||||
Hope that helps,
|
||||
|
||||
-Cam
|
24
Docs/Mutt
Normal file
24
Docs/Mutt
Normal file
@ -0,0 +1,24 @@
|
||||
From: Sven Geggus (sven@geggus.net)
|
||||
Subject: Re: Word attachments in Mutt
|
||||
Newsgroups: comp.mail.mutt
|
||||
Date: 2001-05-16 01:21:11 PST
|
||||
|
||||
Bob Zimmerman <bobzim@no.spam.org> wrote:
|
||||
|
||||
> I receive MS Word attachments in Mutt reguarly. Is there a way to
|
||||
> read these via Mutt in a Linux/Solaris environment? (e.g. Lynx or
|
||||
> some type of viewer)?
|
||||
|
||||
The best M$-word to ASCII converter has to be antiword!
|
||||
|
||||
Just put the following line into .mailcap:
|
||||
|
||||
application/msword; antiword %s; copiousoutput
|
||||
|
||||
Sven
|
||||
|
||||
--
|
||||
"We just typed make"
|
||||
(Stephen Lambrigh, Director of Server Product Marketing at Informix
|
||||
about porting their Database to Linux)
|
||||
/me is giggls@ircnet, http://geggus.net/sven/ on the Web
|
129
Docs/Netscape
Normal file
129
Docs/Netscape
Normal file
@ -0,0 +1,129 @@
|
||||
From: "Craig D. Miller" <Craig.D.Miller@jpl.nasa.gov>
|
||||
|
||||
Hi,
|
||||
|
||||
Steps to integrate antiword into NetScape 4.73 (should also work with earlier
|
||||
versions).
|
||||
|
||||
Programs that launch from netscape must startup an X window to display their
|
||||
output (otherwise output ends up it the bit bucket on your system). I wrote the
|
||||
following script to do this for antiword (and saved it as
|
||||
"/usr/local/bin/xantiword":
|
||||
|
||||
#!/bin/csh -f
|
||||
setenv FILE $1
|
||||
setenv NEWFILE ${FILE}.xantiword
|
||||
/usr/local/bin/antiword $FILE >&$NEWFILE
|
||||
/usr/bin/X11/xterm -title "$FILE (MS Word)" -e /usr/bsd/more $NEWFILE
|
||||
rm -f $NEWFILE
|
||||
|
||||
The above script works, but may not be the best way to do it. If you come up
|
||||
with a more elegant solution, then please let me know.
|
||||
|
||||
Next you'll have to tell netscape to execute the "/usr/local/bin/xantiword"
|
||||
script when word documents are clicked on. The easiest way to do this is to
|
||||
change the /usr/local/lib/netscape/mailcap netscape configuration file. For
|
||||
SGI version of netscape the following two lines are changed. For other versions
|
||||
of netscape, one should find similar lines or will need to add the new lines.
|
||||
|
||||
Old lines (try to run SoftWindows, which is not installed on my system):
|
||||
|
||||
application/x-dos_ms_word; /usr/local/lib/netscape/swinexec %s winword; \
|
||||
description="Microsoft Word-for-Windows Document";
|
||||
application/msword; /usr/local/lib/netscape/swinexec %s winword; \
|
||||
description="Microsoft Word-for-Windows Document";
|
||||
|
||||
New lines (for antiword execution), which replace old lines on my system:
|
||||
|
||||
application/x-dos_ms_word; /usr/local/bin/xantiword %s; \
|
||||
description="Microsoft Word-for-Windows Document";
|
||||
application/msword; /usr/local/bin/xantiword %s; \
|
||||
description="Microsoft Word-for-Windows Document";
|
||||
|
||||
These changes can also be made via the netscape preferences, under
|
||||
Navigator/Applications, but then the changes would only be for the user that
|
||||
changed them. The above change to the mailcap file affects all users, which is
|
||||
what you'll usually want.
|
||||
|
||||
Note that the above file paths may be different for your system. On our linux
|
||||
box, a quick search DID NOT show where the mailcap for netscape was stored, but
|
||||
I did find one in /etc/mailcap. I don't have time to experiment to see if this
|
||||
is the same one that netscape uses.
|
||||
|
||||
If you have questions then please E-mail me.
|
||||
|
||||
- Craig
|
||||
|
||||
===============================================================================
|
||||
|
||||
From: "Craig D. Miller" <Craig.D.Miller@jpl.nasa.gov>
|
||||
|
||||
Hi,
|
||||
|
||||
I just discovered a program called "xless". It would actually be easier to use
|
||||
than my previous xterm/more solution. To use it change the
|
||||
"/usr/local/bin/xantiword" script to:
|
||||
|
||||
#!/bin/csh -f
|
||||
setenv FILE $1
|
||||
/usr/local/bin/antiword $FILE | /usr/freeware/bin/xless \
|
||||
-title "$FILE (MS Word)" -geometry 100x60
|
||||
|
||||
Note that one also needs to have xless installed. It can be found on the
|
||||
SGI Freeware Feb 1999 (or later) CD-ROM.
|
||||
|
||||
- Craig
|
||||
|
||||
===============================================================================
|
||||
|
||||
From: Bruno Crochet <bruno.crochet@pse.unige.ch>
|
||||
|
||||
Hi!
|
||||
|
||||
Another way to integrate antiword into netscape is to copy the following
|
||||
line in your .mailcap file :
|
||||
|
||||
application/msword; ns="%s"\; nf="${ns}".ps\; antiword -pa4 "${ns}" >
|
||||
"${nf}"\; gv "${nf}"\; sleep 2 \; rm "${nf}"
|
||||
|
||||
Bruno.
|
||||
|
||||
===============================================================================
|
||||
|
||||
From: Andoni Zarate <azarate@saincotrafico.com>
|
||||
|
||||
In order to view the file into netscape you can write the xantiword file
|
||||
like this:
|
||||
|
||||
#!/bin/csh -f
|
||||
setenv FILE $1
|
||||
setenv NEWFILE ${FILE}.xantiword
|
||||
/usr/local/bin/antiword $FILE >&$NEWFILE
|
||||
netscape -remote 'openFile('$NEWFILE')'
|
||||
|
||||
Andoni Zárate.
|
||||
|
||||
===============================================================================
|
||||
|
||||
From: Evelyne Pinter <epinter@ptcs.ch>
|
||||
|
||||
I include a script for netscape to see the document with ghostview.
|
||||
|
||||
#!/bin/csh -f
|
||||
setenv FILE $1
|
||||
setenv NEWFILE ${FILE}.xantiword
|
||||
/usr/local/bin/antiword -pa4 $FILE >&$NEWFILE
|
||||
/usr/X11R6/bin/gv $NEWFILE
|
||||
rm -f $NEWFILE
|
||||
|
||||
In netscape the application must be called like that
|
||||
"/usr/local/bin/xantiword %s"
|
||||
|
||||
This is just a small change(done by Roger Luechinger) to the xantiword
|
||||
you included in the distribution 0.31
|
||||
|
||||
Thanks
|
||||
|
||||
SG E.M.S.P.
|
||||
|
||||
===============================================================================
|
59
Docs/QandA
Normal file
59
Docs/QandA
Normal file
@ -0,0 +1,59 @@
|
||||
Questions and Answers (RISC OS version)
|
||||
=======================================
|
||||
|
||||
Q1: How do I install Antiword?
|
||||
A1: Copy the application-directory and all the files within it to a
|
||||
suitable directory.
|
||||
|
||||
Q2: How do I use Antiword?
|
||||
A2: Double click on a Word document, filetype MSWord (&ae6). Or drag and drop
|
||||
a file onto the Antiword icon on the iconbar.
|
||||
|
||||
Q3: How does Antiword deal with Word macro viruses?
|
||||
A3: Antiword does not run any Word macros because it cannot do so.
|
||||
Therefore your Archimedes will not be harmed by such a virus.
|
||||
|
||||
Q4: What does the 'Paragraph breaks' option do?
|
||||
A4: This option controls the maximum number of characters per line in
|
||||
paragraphs. If your screen is 640 pixels wide (like modes 20 and 27)
|
||||
than 76 is probably best. If your screen is 800 or more pixels wide
|
||||
(like mode 31) then numbers near 94 work best. You can switch this
|
||||
option off if the (text only) output of Antiword will be the input to a
|
||||
wordprocessor or a DTP program.
|
||||
The pagebreak setting refers to the number of characters when you use
|
||||
the system font. When you use an outline font only the width of that
|
||||
number of characters in the system font is used.
|
||||
|
||||
Q5: What does the 'Auto filetype' option do?
|
||||
A5: When auto filetype is allowed, Antiword will change the filetype of
|
||||
Word documents to MSWord (&ae6)
|
||||
|
||||
Q6: When Antiword uses outline fonts it becomes terribly slow. What can I
|
||||
do about this?
|
||||
A6: When Antiword uses outline fonts it needs a large font cache. A small
|
||||
font cache will make Antiword (very) slow. The larger the font cache the
|
||||
better, but usually 160K or 256K will do.
|
||||
|
||||
Q7: What is the purpose of the file 'FontNames' in the Choices directory?
|
||||
A7: This file provides a translation table from the font names found in a
|
||||
Word document to the font names used by the RISC OS font-manager.
|
||||
The file 'FontNames' is can be edited to match your font collection.
|
||||
Some examples are provided in the Resources directory.
|
||||
|
||||
Q8: What is 'Hidden Text'?
|
||||
A8: Hidden Text is Microsoft speak for text that may or may not be shown
|
||||
on the screen, subject to the user's preferences, but such text is never
|
||||
printed.
|
||||
|
||||
Q9: After upgrading to a new version of Antiword, I found that Antiword does
|
||||
not put a new _updated_ version of FontNames in !Choices. Why not?
|
||||
A9: The user can change the file Fontnames to reflect the fonts available
|
||||
on a specific computer. Antiword cannot be permitted to overwrite changes
|
||||
made by a user. So after upgrading you should remove or rename the old
|
||||
FontNames file.
|
||||
|
||||
Q10: Why does Antiword freeze my computer while converting the Word document?
|
||||
A10: This can happen when the Word document contains a very large image and
|
||||
the image must be scaled to a much smaller size before displaying. The
|
||||
delay occurs while RISC OS does the scaling, so there is not much
|
||||
Antiword can do about it.
|
114
Docs/ReadMe
Normal file
114
Docs/ReadMe
Normal file
@ -0,0 +1,114 @@
|
||||
___ _ _ _
|
||||
/ _ \ | | (_) | |
|
||||
| |_| |_ __ | |_ ___ _____ _ __ __| |
|
||||
| _ | '_ \| __| \ \ /\ / / _ \| '__/ _` |
|
||||
| | | | | | | |_| |\ V V / (_) | | | (_| |
|
||||
|_| |_|_| |_|\__|_| \_/\_/ \___/|_| \__,_|
|
||||
|
||||
Antiword
|
||||
========
|
||||
|
||||
Version 0.37 (21 Oct 2005)
|
||||
--------------------------
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Antiword is an application for displaying Microsoft(R) Word documents.
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
This program is distributed under the GNU General Public License - see the
|
||||
accompanying COPYING file for more details.
|
||||
|
||||
|
||||
Problems
|
||||
--------
|
||||
|
||||
Any bugs found should be reported to the author with full details of how to
|
||||
get the problem to occur, but don't *expect* support for a product that you
|
||||
have not paid for!
|
||||
|
||||
Please include Antiword's version number and version date, otherwise you
|
||||
make it impossible for the author to help.
|
||||
|
||||
|
||||
Thanks To
|
||||
---------
|
||||
|
||||
Victor B. Wagner <vitus@agropc.msk.su> creator of "catdoc"
|
||||
Duncan Simpson <word2x@duncan.telstar.net> creator of "word2x"
|
||||
Martin Schwartz <schwartz@cs.tu-berlin.de> creator of "laola" and "elser"
|
||||
Caolan McNamara <Caolan.McNamara@ul.ie> creator of "mswordview"
|
||||
Andrew Scriven <andy.scriven@research.natpower.co.uk> creator of "OLEdecode"
|
||||
Craig Southeren <geoffw@extro.ucc.oz.au> creator of "nenscript"
|
||||
Thomas Merz <tm@muc.de> creator of "jpeg2ps"
|
||||
Ulrich von Zadow <uzadow@cs.tu-berlin.de> creator of "paintlib"
|
||||
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
ISO-8859-2 support by: Pawel Turnau <uzturnau@cyf-kr.edu.pl>
|
||||
Character set mapping by: Dmitry Chernyak
|
||||
<Dmitry.Chernyak@p998.f983.n5030.z2.fidonet.org>
|
||||
UTF-8 support by: Karl Koehler <koehler@or.uni-bonn.de> and
|
||||
Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk>
|
||||
PostScript Cyrillic by: Alexander Belyaev <isle@free.kursknet.ru>
|
||||
|
||||
|
||||
Ports
|
||||
-----
|
||||
|
||||
Antiword was ported to BeOS by Pete Goodeve <pete@jwgibbs.cchem.berkeley.edu>
|
||||
Antiword was ported to OS/2 by Dave Yeo <dave_yeo@paralynx.com>
|
||||
Antiword was ported to Mac OS X by Ronaldo Nascimento <ronaldo@ronaldo.com>
|
||||
Antiword was ported to Amiga by Raffaele Pisapia <rafpis@libero.it>
|
||||
Antiword was ported to VMS by Joseph Huber <huber@mppmu.mpg.de>
|
||||
Antiword was ported to NetWare by Guenter Knauf <info@gknw.de>
|
||||
Antiword was ported to EPOC by Max Tomin <tomin@samaramail.ru>
|
||||
Antiword was ported to Zaurus PDA by Piotr Jachimczyk
|
||||
<P.Jachimczyk@prioris.mini.pw.edu.pl>
|
||||
Antiword was ported to DOS by myself ;-)
|
||||
Yen-Ming Lee <leeym@freebsd.org> is the maintainer of the FreeBSD version of
|
||||
Antiword.
|
||||
|
||||
|
||||
Acknowledgements
|
||||
----------------
|
||||
|
||||
Microsoft is a registered trademark and Windows is a trademark of Microsoft
|
||||
Corporation.
|
||||
UNIX is a registered trademark of the X/Open Company, Ltd.
|
||||
Linux is a registered trademark of Linus Torvalds.
|
||||
Postscript is a trademark of Adobe Systems Incorporated.
|
||||
All other trademarks are acknowledged.
|
||||
|
||||
|
||||
Future Versions
|
||||
---------------
|
||||
|
||||
If you have any comments, bug reports or suggestions for future versions
|
||||
don't hesitate to write to me.
|
||||
New versions of the program will only be available if sufficient people
|
||||
are using this program. So let me know!
|
||||
|
||||
|
||||
Most recent version
|
||||
-------------------
|
||||
|
||||
Most recent version of Antiword can be found on the author's website:
|
||||
==>> http://www.winfield.demon.nl/index.html <<==
|
||||
==>> http://antiword.cjb.net/ <<==
|
||||
|
||||
|
||||
Author
|
||||
------
|
||||
|
||||
The author can be reached by e-mail:
|
||||
antiword@winfield.demon.nl
|
||||
comments@antiword.cjb.net
|
||||
|
||||
But PLEASE read the FAQ before you write!!
|
158
Docs/antiword.1
Normal file
158
Docs/antiword.1
Normal file
@ -0,0 +1,158 @@
|
||||
.TH ANTIWORD 1 "Oct 29, 2005" "Antiword 0.37" "Linux User's Manual"
|
||||
.SH NAME
|
||||
antiword - show the text and images of MS Word documents
|
||||
.SH SYNOPSIS
|
||||
.B antiword
|
||||
[
|
||||
.I options
|
||||
]
|
||||
.I wordfiles
|
||||
.SH DESCRIPTION
|
||||
.I Antiword
|
||||
is an application that displays the text and the images of Microsoft Word
|
||||
documents.
|
||||
.br
|
||||
A wordfile named - stands for a Word document read from the standard input.
|
||||
.br
|
||||
Only documents made by MS Word version 2 and version 6 or later are supported.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI "\-a " papersize
|
||||
Output in Adobe PDF form. Printable on paper of the specified size: 10x14,
|
||||
a3, a4, a5, b4, b5, executive, folio, legal, letter, note, quarto, statement
|
||||
or tabloid.
|
||||
.TP
|
||||
.B \-f
|
||||
Output in formatted text form. That means that bold text is printed like
|
||||
*bold*, italics like /italics/ and underlined text as _underlined_.
|
||||
.TP
|
||||
.B \-h
|
||||
Give a help message.
|
||||
.TP
|
||||
.BI "\-i " "image level"
|
||||
The image level determines how images will be shown.
|
||||
.RS
|
||||
.TP 3
|
||||
0:
|
||||
Use non-standard extensions from Ghostscript. This output may not print on
|
||||
any PostScript printer, but is useful in case no hard copy is needed. It is
|
||||
also useful when Ghostscript is used as a filter to print a PostScript file to
|
||||
a non-PostScript printer.
|
||||
.TP 3
|
||||
1:
|
||||
Show no images.
|
||||
.TP 3
|
||||
2:
|
||||
PostScript level 2 compatible. (default)
|
||||
.TP 3
|
||||
3:
|
||||
PostScript level 3 compatible. (EXPERIMENTAL, Portable Network Graphics (PNG)
|
||||
images are not printed correctly)
|
||||
.RE
|
||||
.TP
|
||||
.BI "\-m " "mapping file"
|
||||
This file is used to map Unicode characters to your local character set.
|
||||
The default mapping file depends on the locale.
|
||||
.TP
|
||||
.BI "\-p " papersize
|
||||
Output in PostScript form. Printable on paper of the specified size: 10x14,
|
||||
a3, a4, a5, b4, b5, executive, folio, legal, letter, note, quarto, statement
|
||||
or tabloid.
|
||||
.TP
|
||||
.B \-r
|
||||
Include text removed by the revisioning system.
|
||||
.TP
|
||||
.B \-s
|
||||
Include text with the so-called "hidden text" attribute.
|
||||
.TP
|
||||
.B \-t
|
||||
Output in text form. (default)
|
||||
.TP
|
||||
.BI "\-w " width
|
||||
In text mode this is the line width in characters. A value of zero puts an
|
||||
entire paragraph on a line, useful when the text is to used as input for
|
||||
another wordprocessor. This value is ignored in PostScript mode.
|
||||
.TP
|
||||
.BI "\-x " "document type definition"
|
||||
Output in XML form. Currently the only document type definition is db
|
||||
(for DocBook).
|
||||
.TP
|
||||
.B \-L
|
||||
In PostScript mode: use landscape mode.
|
||||
.RE
|
||||
.SH FILES
|
||||
.TP
|
||||
Mapping files like 8859-1.txt
|
||||
.br
|
||||
Antiword looks for its mapping files in three directories, in the order given:
|
||||
.br
|
||||
(1) The directory specified by $ANTIWORDHOME
|
||||
.br
|
||||
(2) The directory specified by $HOME/.antiword
|
||||
.br
|
||||
(3) Directory /usr/share/antiword
|
||||
.TP
|
||||
The fontnames file
|
||||
.br
|
||||
Antiword will look for its fontname file in the same directories as used for the
|
||||
mapping files.
|
||||
.br
|
||||
The fontnames file contains the translation table from font names used by MS
|
||||
Word to font names used by PostScript.
|
||||
.TP
|
||||
NOTE:
|
||||
.br
|
||||
Antiword cannot tell the difference between a file that does not exist and a
|
||||
file that cannot be opened for reading.
|
||||
.SH ENVIRONMENT
|
||||
Antiword uses the environment variable ``ANTIWORDHOME'' as the first directory
|
||||
to look for its files. Antiword uses the environment variable ``HOME'' to find
|
||||
the user's home directory. When in text mode it uses the variable ``COLUMNS''
|
||||
to set the width of the output (unless overridden by the -w option).
|
||||
|
||||
Antiword uses the environment variables ``LC_ALL'', ``LC_CTYPE'' and ``LANG''
|
||||
(in that order) to get the current locale and uses this information to
|
||||
select the default mapping file.
|
||||
.SH BUGS
|
||||
Antiword is far from complete. Many features are still missing. Many images are
|
||||
not shown yet. Some of the images that are shown, are shown in the wrong place.
|
||||
PostScript output is only available in ISO 8859-1 and ISO 8859-2.
|
||||
.SH WEB SITES
|
||||
The most recent released version of Antiword is always available from:
|
||||
.br
|
||||
http://www.winfield.demon.nl/index.html
|
||||
.br
|
||||
or try
|
||||
.br
|
||||
http://antiword.cjb.net/
|
||||
.SH AUTHOR
|
||||
Adri van Os <antiword@winfield.demon.nl>
|
||||
.br
|
||||
or try <comments@antiword.cjb.net>
|
||||
.sp
|
||||
R.F. Smith <rsmith@xs4all.nl> and
|
||||
.br
|
||||
Sindi Keesan <keesan@cyberspace.org>
|
||||
.br
|
||||
contributed to this manual page.
|
||||
.SH LICENSE
|
||||
Antiword 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
|
||||
.SH ACKNOWLEDGEMENTS
|
||||
Linux is a registered trademark of Linus Torvalds.
|
||||
.br
|
||||
Adobe, PDF and PostScript are trademarks of Adobe Systems Incorporated.
|
||||
.br
|
||||
Microsoft is a registered trademark and Windows is a trademark of Microsoft
|
||||
Corporation.
|
146
Docs/antiword.man
Normal file
146
Docs/antiword.man
Normal file
@ -0,0 +1,146 @@
|
||||
ANTIWORD(1) Linux User's Manual ANTIWORD(1)
|
||||
|
||||
|
||||
|
||||
NAME
|
||||
antiword - show the text and images of MS Word documents
|
||||
|
||||
SYNOPSIS
|
||||
antiword [ options ] wordfiles
|
||||
|
||||
DESCRIPTION
|
||||
Antiword is an application that displays the text and the images of
|
||||
Microsoft Word documents.
|
||||
A wordfile named - stands for a Word document read from the standard
|
||||
input.
|
||||
Only documents made by MS Word version 2 and version 6 or later are
|
||||
supported.
|
||||
|
||||
OPTIONS
|
||||
-a papersize
|
||||
Output in Adobe PDF form. Printable on paper of the specified
|
||||
size: 10x14, a3, a4, a5, b4, b5, executive, folio, legal, let-
|
||||
ter, note, quarto, statement or tabloid.
|
||||
|
||||
-f Output in formatted text form. That means that bold text is
|
||||
printed like *bold*, italics like /italics/ and underlined text
|
||||
as _underlined_.
|
||||
|
||||
-h Give a help message.
|
||||
|
||||
-i image level
|
||||
The image level determines how images will be shown.
|
||||
|
||||
0: Use non-standard extensions from Ghostscript. This output may
|
||||
not print on any PostScript printer, but is useful in case no
|
||||
hard copy is needed. It is also useful when Ghostscript is
|
||||
used as a filter to print a PostScript file to a non-
|
||||
PostScript printer.
|
||||
|
||||
1: Show no images.
|
||||
|
||||
2: PostScript level 2 compatible. (default)
|
||||
|
||||
3: PostScript level 3 compatible. (EXPERIMENTAL, Portable Net-
|
||||
work Graphics (PNG) images are not printed correctly)
|
||||
|
||||
-m mapping file
|
||||
This file is used to map Unicode characters to your local char-
|
||||
acter set. The default mapping file depends on the locale.
|
||||
|
||||
-p papersize
|
||||
Output in PostScript form. Printable on paper of the specified
|
||||
size: 10x14, a3, a4, a5, b4, b5, executive, folio, legal, let-
|
||||
ter, note, quarto, statement or tabloid.
|
||||
|
||||
-r Include text removed by the revisioning system.
|
||||
|
||||
-s Include text with the so-called "hidden text" attribute.
|
||||
|
||||
-t Output in text form. (default)
|
||||
|
||||
-w width
|
||||
In text mode this is the line width in characters. A value of
|
||||
zero puts an entire paragraph on a line, useful when the text is
|
||||
to used as input for another wordprocessor. This value is
|
||||
ignored in PostScript mode.
|
||||
|
||||
-x document type definition
|
||||
Output in XML form. Currently the only document type definition
|
||||
is db (for DocBook).
|
||||
|
||||
-L In PostScript mode: use landscape mode.
|
||||
|
||||
FILES
|
||||
Mapping files like 8859-1.txt
|
||||
Antiword looks for its mapping files in three directories, in
|
||||
the order given:
|
||||
(1) The directory specified by $ANTIWORDHOME
|
||||
(2) The directory specified by $HOME/.antiword
|
||||
(3) Directory /usr/share/antiword
|
||||
|
||||
The fontnames file
|
||||
Antiword will look for its fontname file in the same directories
|
||||
as used for the mapping files.
|
||||
The fontnames file contains the translation table from font
|
||||
names used by MS Word to font names used by PostScript.
|
||||
|
||||
NOTE:
|
||||
Antiword cannot tell the difference between a file that does not
|
||||
exist and a file that cannot be opened for reading.
|
||||
|
||||
ENVIRONMENT
|
||||
Antiword uses the environment variable ``ANTIWORDHOME'' as the first
|
||||
directory to look for its files. Antiword uses the environment variable
|
||||
``HOME'' to find the user's home directory. When in text mode it uses
|
||||
the variable ``COLUMNS'' to set the width of the output (unless over-
|
||||
ridden by the -w option).
|
||||
|
||||
Antiword uses the environment variables ``LC_ALL'', ``LC_CTYPE'' and
|
||||
``LANG'' (in that order) to get the current locale and uses this infor-
|
||||
mation to select the default mapping file.
|
||||
|
||||
BUGS
|
||||
Antiword is far from complete. Many features are still missing. Many
|
||||
images are not shown yet. Some of the images that are shown, are shown
|
||||
in the wrong place. PostScript output is only available in ISO 8859-1
|
||||
and ISO 8859-2.
|
||||
|
||||
WEB SITES
|
||||
The most recent released version of Antiword is always available from:
|
||||
http://www.winfield.demon.nl/index.html
|
||||
or try
|
||||
http://antiword.cjb.net/
|
||||
|
||||
AUTHOR
|
||||
Adri van Os <antiword@winfield.demon.nl>
|
||||
or try <comments@antiword.cjb.net>
|
||||
|
||||
R.F. Smith <rsmith@xs4all.nl> and
|
||||
Sindi Keesan <keesan@cyberspace.org>
|
||||
contributed to this manual page.
|
||||
|
||||
LICENSE
|
||||
Antiword 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 MER-
|
||||
CHANTABILITY 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
|
||||
|
||||
ACKNOWLEDGEMENTS
|
||||
Linux is a registered trademark of Linus Torvalds.
|
||||
Adobe, PDF and PostScript are trademarks of Adobe Systems Incorporated.
|
||||
Microsoft is a registered trademark and Windows is a trademark of
|
||||
Microsoft Corporation.
|
||||
|
||||
|
||||
|
||||
Antiword 0.37 Oct 29, 2005 ANTIWORD(1)
|
34
Docs/antiword.old.php
Normal file
34
Docs/antiword.old.php
Normal file
@ -0,0 +1,34 @@
|
||||
From: Paul Southworth <pauls@etext.org>
|
||||
Subject: antiword PHP script
|
||||
Date: Thu, 24 Oct 2002 14:01:05 -0700 (PDT)
|
||||
|
||||
Please find attached a trivial example of using a web form to process an
|
||||
uploaded Word doc to text using antiword. Perhaps other antiword users
|
||||
would find it useful.
|
||||
|
||||
--Paul
|
||||
|
||||
<?
|
||||
/* antiword.php
|
||||
A PHP script to convert uploaded MS Word docs to text using antiword.
|
||||
This script is public domain, no copyright.
|
||||
September 11, 2002
|
||||
Paul Southworth
|
||||
*/
|
||||
function print_form() {
|
||||
?>
|
||||
<html><head><title>antiword</title></head><body>
|
||||
<form method=post action=antiword.php enctype="multipart/form-data">
|
||||
<input name=upload type=file>
|
||||
<input type=submit name=submit value=convert>
|
||||
</form>
|
||||
</body></html>
|
||||
<?
|
||||
}
|
||||
if ($_FILES['upload']) {
|
||||
header ("Content-type: text/plain");
|
||||
system("/usr/local/bin/antiword " . $_FILES['upload']['tmp_name']);
|
||||
} else {
|
||||
print_form();
|
||||
}
|
||||
?>
|
141
Docs/antiword.php
Normal file
141
Docs/antiword.php
Normal file
@ -0,0 +1,141 @@
|
||||
| <?php
|
||||
/*
|
||||
(C) 2005 Vidar Løkken <vidarlo@vestdata.no>
|
||||
|
||||
V.3: I've added escapeshellcmd to all user input that shows up directly
|
||||
in exec()
|
||||
*/
|
||||
switch ($_REQUEST['output']) {
|
||||
case "PostScript":
|
||||
$output=escapeshellcmd("-p $_REQUEST[paper]");
|
||||
break;
|
||||
case "PDF":
|
||||
$output=escapeshellcmd("-a $_REQUEST[paper]");
|
||||
$pdf=1;
|
||||
break;
|
||||
case "InLine":
|
||||
$output="-t";
|
||||
break;
|
||||
}
|
||||
if (isset($_FILES['userfile']['name'])) {
|
||||
$uploaddir = '/tmp/';
|
||||
$uploadfile = $uploaddir . $_FILES['userfile']['name'];
|
||||
$userfile = $_FILES['userfile']['name'];
|
||||
if (move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile)) {
|
||||
$delims=".";
|
||||
if (strstr($output,"-p")) {
|
||||
$psfile=strtok($userfile,$delims).".ps";
|
||||
header("Content-Type: Application/PostScript");
|
||||
header("Content-Disposition: attachment; filename=".$psfile);
|
||||
$file=escapeshellcmd($uploadfile);
|
||||
$command="antiword $output $file";
|
||||
passthru($command);
|
||||
unlink($uploadfile);
|
||||
} elseif (strstr($output,"-a")) {
|
||||
$psfile=strtok($userfile,$delims).".pdf";
|
||||
header("Content-Type: Application/PDF");
|
||||
// header("Content-Disposition: attachment; filename=".$psfile);
|
||||
// $command="antiword $output $uploadfile";
|
||||
$file=escapeshellcmd($uploadfile);
|
||||
$command="antiword $output $file";
|
||||
passthru($command);
|
||||
unlink($uploadfile);
|
||||
} else {
|
||||
echo "<pre>";
|
||||
$file=escapeshellcmd($uploadfile);
|
||||
$command="antiword $output $file";
|
||||
// echo $command;
|
||||
// $command="antiword $output $uploadfile";
|
||||
passthru($command);
|
||||
unlink($uploadfile);
|
||||
}
|
||||
}
|
||||
elseif (isset($_REQUEST['url'])) {
|
||||
echo $command;
|
||||
$url=$_REQUEST['url'];
|
||||
$uri=escapeshellcmd($_REQUEST['url']);
|
||||
$delim="/";
|
||||
$docfile=explode($delim,$uri);
|
||||
exec("wget -O /tmp/$docfile $url");
|
||||
if (strstr($output,"-p")) {
|
||||
$psfile=strtok(end($docfile),".").".ps";
|
||||
$safe=escapeshellcmd($docfile);
|
||||
$command="antiword $output /tmp/$safe";
|
||||
header("Content-Type: Application/PostScript");
|
||||
header("Content-Disposition: attachment; filename=".$psfile);
|
||||
passthru($command);
|
||||
@@ unlink("/tmp/$docfile");
|
||||
} elseif (strstr($output,"-a")) {
|
||||
$psfile=strtok(end($docfile),".").".pdf";
|
||||
$safe=escapeshellcmd($docfile);
|
||||
$command="antiword $output /tmp/$safe";
|
||||
header("Content-Type: Application/PDF");
|
||||
header("Content-Disposition: attachment; filename=".$psfile);
|
||||
passthru($command);
|
||||
@@ unlink("/tmp/$docfile");
|
||||
} else {
|
||||
echo "<pre>";
|
||||
$safe=escapeshellcmd($docfile);
|
||||
$command="antiword $output /tmp/$safe";
|
||||
passthru($command);
|
||||
@@ unlink("/tmp/$docfile");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!isset($_FILES['userfile']['name'])) {
|
||||
?>
|
||||
<p>
|
||||
This script converts a word file (most versions supported) into a
|
||||
pure ASCII, a PDF or a PostScript version. Currently, only PostScript
|
||||
and PDF carry images, and those images might be distorted or such. It's
|
||||
based on the nice program antiword. see <a
|
||||
href=http://antiword.cjb.net>antiword.cjb.net</a> for more information
|
||||
about antiword. Currently, max file size is 3MiB for the upload. This
|
||||
should be enough!
|
||||
</p><p>Currently, I tend to end up with the ascii version being 1/100th
|
||||
of the word document, and the pdf/ps versions being 1/10th of the size.
|
||||
So if you're gonna send me a word document, rethink that. I'll not read
|
||||
it. I'll read ascii, and probably pdf/ps too.</p>
|
||||
</p>
|
||||
<form enctype="multipart/form-data" action="antiword.php" method="post">
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
|
||||
URL:<br /><input type="text" name="url" size=50 /><br />
|
||||
Send this file:<br /> <input name="userfile" type="file"/>
|
||||
<br />Output: <br />
|
||||
<SELECT name="output">
|
||||
<OPTGROUP>
|
||||
<OPTION name=txt>InLine</OPTION>
|
||||
<OPTION name=ps>PostScript</OPTION>
|
||||
<OPTION name=PDF>PDF</OPTION>
|
||||
</OPTGROUP>
|
||||
</SELECT>
|
||||
Papersize: <SELECT name="paper"/>
|
||||
<OPTGROUP>
|
||||
<OPTION>a4</OPTION>
|
||||
<OPTION>a3</OPTION>
|
||||
<OPTION>a5</OPTION>
|
||||
<OPTION>b4</OPTION>
|
||||
<OPTION>b5</OPTION>
|
||||
<OPTION>10x14</OPTION>
|
||||
<OPTION>executive</OPTION>
|
||||
<OPTION>folio</OPTION>
|
||||
<OPTION>legal</OPTION>
|
||||
<OPTION>letter</OPTION>
|
||||
<OPTION>note</OPTION>
|
||||
<OPTION>quarto</OPTION>
|
||||
<OPTION>statement</OPTION>
|
||||
<OPTION>tabloid</OPTION>
|
||||
</select>
|
||||
<br />
|
||||
<input type="submit" value="Send File" />
|
||||
</form>
|
||||
<p>This is running <a href="http://antiword.cjb.net">antiword</a> 0.36. <br>
|
||||
Please drop me a note at antiword (at) bitsex.net if you have
|
||||
comments for this.
|
||||
<hr>
|
||||
<font size=-1>(C)Vidar Løkken 2005</font>
|
||||
<!-- Version: 0.2 as of 19. oct. 2005 -->
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
|
BIN
Docs/testdoc.doc
Normal file
BIN
Docs/testdoc.doc
Normal file
Binary file not shown.
97
Makefile
Normal file
97
Makefile
Normal file
@ -0,0 +1,97 @@
|
||||
#
|
||||
# Makefile for antiword (Linux version)
|
||||
#
|
||||
|
||||
CC = gcc
|
||||
LD = gcc
|
||||
|
||||
INSTALL = cp -f
|
||||
INSTALL_PROGRAM = $(INSTALL)
|
||||
INSTALL_DATA = $(INSTALL)
|
||||
|
||||
# must be equal to DEBUG or NDEBUG
|
||||
DB = NDEBUG
|
||||
# Optimization: -O<n> or debugging: -g
|
||||
OPT = -O2
|
||||
|
||||
LDLIBS =
|
||||
|
||||
CFLAGS = -Wall -pedantic $(OPT) -D$(DB)
|
||||
LDFLAGS =
|
||||
|
||||
OBJS =\
|
||||
main_u.o asc85enc.o blocklist.o chartrans.o datalist.o depot.o\
|
||||
dib2eps.o doclist.o fail.o finddata.o findtext.o fmt_text.o fontlist.o\
|
||||
fonts.o fonts_u.o hdrftrlist.o imgexam.o imgtrans.o jpeg2eps.o\
|
||||
listlist.o misc.o notes.o options.o out2window.o output.o pdf.o\
|
||||
pictlist.o png2eps.o postscript.o prop0.o prop2.o prop6.o prop8.o\
|
||||
properties.o propmod.o rowlist.o sectlist.o stylelist.o stylesheet.o\
|
||||
summary.o tabstop.o text.o unix.o utf8.o word2text.o worddos.o\
|
||||
wordlib.o wordmac.o wordole.o wordwin.o xmalloc.o xml.o
|
||||
|
||||
PROGS =\
|
||||
antiword\
|
||||
kantiword
|
||||
|
||||
LOCAL_INSTALL_DIR = $(HOME)/bin
|
||||
LOCAL_RESOURCES_DIR = $(HOME)/.antiword
|
||||
|
||||
GLOBAL_INSTALL_DIR = /usr/local/bin
|
||||
GLOBAL_RESOURCES_DIR = /usr/share/antiword
|
||||
|
||||
all: $(PROGS)
|
||||
|
||||
install: all
|
||||
mkdir -p $(LOCAL_INSTALL_DIR)
|
||||
cp -pf $(PROGS) $(LOCAL_INSTALL_DIR)
|
||||
mkdir -p $(LOCAL_RESOURCES_DIR)
|
||||
cp -pf Resources/* $(LOCAL_RESOURCES_DIR)
|
||||
|
||||
# NOTE: you might have to be root to do this
|
||||
global_install: all
|
||||
# @[ `id -u` -eq 0 ] || (echo "You must be root to do this" && false)
|
||||
mkdir -p $(DESTDIR)$(GLOBAL_INSTALL_DIR)
|
||||
$(INSTALL_PROGRAM) $(PROGS) $(DESTDIR)$(GLOBAL_INSTALL_DIR)
|
||||
cd $(DESTDIR)$(GLOBAL_INSTALL_DIR); chmod 755 $(PROGS)
|
||||
mkdir -p $(DESTDIR)$(GLOBAL_RESOURCES_DIR)
|
||||
chmod 755 $(DESTDIR)$(GLOBAL_RESOURCES_DIR)
|
||||
$(INSTALL_DATA) Resources/*.txt $(DESTDIR)$(GLOBAL_RESOURCES_DIR)
|
||||
$(INSTALL_DATA) Resources/fontnames $(DESTDIR)$(GLOBAL_RESOURCES_DIR)
|
||||
cd $(DESTDIR)$(GLOBAL_RESOURCES_DIR); chmod 644 *.txt fontnames
|
||||
|
||||
# NOTE: you might have to be root to do this
|
||||
global_uninstall:
|
||||
# @[ `id -u` -eq 0 ] || (echo "You must be root to do this" && false)
|
||||
cd $(DESTDIR)$(GLOBAL_INSTALL_DIR); rm -f $(PROGS)
|
||||
-rmdir $(DESTDIR)$(GLOBAL_INSTALL_DIR)
|
||||
cd $(DESTDIR)$(GLOBAL_RESOURCES_DIR); rm -f *.txt fontnames
|
||||
-rmdir $(DESTDIR)$(GLOBAL_RESOURCES_DIR)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS)
|
||||
rm -f $(PROGS)
|
||||
|
||||
antiword: $(OBJS)
|
||||
@rm -f $@
|
||||
$(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $@
|
||||
@chmod 750 $@
|
||||
|
||||
kantiword: Unix-only/KDE3-only/kantiword.sh
|
||||
@rm -f $@
|
||||
echo "#!/bin/bash" > $@
|
||||
cat $? >> $@
|
||||
@chmod 750 $@
|
||||
|
||||
.c.o:
|
||||
$(CC) $(CFLAGS) -c $<
|
||||
|
||||
main_u.o: version.h
|
||||
postscript.o: version.h
|
||||
pdf.o: version.h
|
||||
fonts_u.o: fontinfo.h
|
||||
|
||||
fontinfo.h: Unix-only/fontinfo.h
|
||||
cp -rp $? $@
|
||||
|
||||
Unix-only/fontinfo.h: Unix-only/fontinfo.pl
|
||||
Unix-only/fontinfo.pl > Unix-only/fontinfo.h
|
303
Resources/8859-1.txt
Normal file
303
Resources/8859-1.txt
Normal file
@ -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
|
303
Resources/8859-10.txt
Normal file
303
Resources/8859-10.txt
Normal file
@ -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
|
299
Resources/8859-11.txt
Normal file
299
Resources/8859-11.txt
Normal file
@ -0,0 +1,299 @@
|
||||
#
|
||||
# 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
|
||||
|
||||
|
299
Resources/8859-13.txt
Normal file
299
Resources/8859-13.txt
Normal file
@ -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
|
301
Resources/8859-14.txt
Normal file
301
Resources/8859-14.txt
Normal file
@ -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 <mkuhn@acm.org>
|
||||
# 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
|
||||
|
303
Resources/8859-15.txt
Normal file
303
Resources/8859-15.txt
Normal file
@ -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 <mkuhn@acm.org>
|
||||
# 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
|
||||
|
299
Resources/8859-16.txt
Normal file
299
Resources/8859-16.txt
Normal file
@ -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 <mkuhn@acm.org>
|
||||
#
|
||||
# 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
|
303
Resources/8859-2.txt
Normal file
303
Resources/8859-2.txt
Normal file
@ -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
|
296
Resources/8859-3.txt
Normal file
296
Resources/8859-3.txt
Normal file
@ -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
|
303
Resources/8859-4.txt
Normal file
303
Resources/8859-4.txt
Normal file
@ -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
|
303
Resources/8859-5.txt
Normal file
303
Resources/8859-5.txt
Normal file
@ -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
|
260
Resources/8859-6.txt
Normal file
260
Resources/8859-6.txt
Normal file
@ -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
|
302
Resources/8859-7.txt
Normal file
302
Resources/8859-7.txt
Normal file
@ -0,0 +1,302 @@
|
||||
#
|
||||
# Name: ISO 8859-7:1987 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 8859-7:1987 characters map into Unicode.
|
||||
#
|
||||
# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
|
||||
# and ECMA 118.
|
||||
#
|
||||
# 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
|
||||
#
|
||||
# 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 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||
0xA2 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA6 0x00A6 # BROKEN BAR
|
||||
0xA7 0x00A7 # SECTION SIGN
|
||||
0xA8 0x00A8 # DIAERESIS
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
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
|
270
Resources/8859-8.txt
Normal file
270
Resources/8859-8.txt
Normal file
@ -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
|
||||
|
307
Resources/8859-9.txt
Normal file
307
Resources/8859-9.txt
Normal file
@ -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
|
||||
|
||||
|
81
Resources/Default
Normal file
81
Resources/Default
Normal file
@ -0,0 +1,81 @@
|
||||
# Default fontnames translation table
|
||||
# uses only fonts present in the RISC OS 3 ROMs
|
||||
#
|
||||
# MS-Word fontname, Italic, Bold, Acorn fontname, Special
|
||||
Arial, 0, 0, Homerton.Medium, 0
|
||||
Arial, 0, 1, Homerton.Bold, 0
|
||||
Arial, 1, 0, Homerton.Medium.Oblique,0
|
||||
Arial, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Arial Black, 0, 0, Homerton.Medium, 0
|
||||
Arial Black, 0, 1, Homerton.Bold, 0
|
||||
Arial Black, 1, 0, Homerton.Medium.Oblique,0
|
||||
Arial Black, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Arial CE, 0, 0, Homerton.Medium, 0
|
||||
Arial CE, 0, 1, Homerton.Bold, 0
|
||||
Arial CE, 1, 0, Homerton.Medium.Oblique,0
|
||||
Arial CE, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Arial Narrow, 0, 0, Homerton.Medium, 0
|
||||
Arial Narrow, 0, 1, Homerton.Bold, 0
|
||||
Arial Narrow, 1, 0, Homerton.Medium.Oblique,0
|
||||
Arial Narrow, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Comic Sans MS, 0, 0, Homerton.Medium, 0
|
||||
Comic Sans MS, 0, 1, Homerton.Bold, 0
|
||||
Comic Sans MS, 1, 0, Homerton.Medium.Oblique,0
|
||||
Comic Sans MS, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Courier, 0, 0, Corpus.Medium, 0
|
||||
Courier, 0, 1, Corpus.Bold, 0
|
||||
Courier, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Courier, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Courier New, 0, 0, Corpus.Medium, 0
|
||||
Courier New, 0, 1, Corpus.Bold, 0
|
||||
Courier New, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Courier New, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Fixedsys, 0, 0, Corpus.Medium, 0
|
||||
Fixedsys, 0, 1, Corpus.Bold, 0
|
||||
Fixedsys, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Fixedsys, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Helvetica, 0, 0, Homerton.Medium, 0
|
||||
Helvetica, 0, 1, Homerton.Bold, 0
|
||||
Helvetica, 1, 0, Homerton.Medium.Oblique,0
|
||||
Helvetica, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Helvetica-Narrow, 0, 0, Homerton.Medium, 0
|
||||
Helvetica-Narrow, 0, 1, Homerton.Bold, 0
|
||||
Helvetica-Narrow, 1, 0, Homerton.Medium.Oblique,0
|
||||
Helvetica-Narrow, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Lucida Console, 0, 0, Corpus.Medium, 0
|
||||
Lucida Console, 0, 1, Corpus.Bold, 0
|
||||
Lucida Console, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Lucida Console, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Monotype.com, 0, 0, Corpus.Medium, 0
|
||||
Monotype.com, 0, 1, Corpus.Bold, 0
|
||||
Monotype.com, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Monotype.com, 1, 1, Corpus.Bold.Oblique, 0
|
||||
MS Sans Serif, 0, 0, Homerton.Medium, 0
|
||||
MS Sans Serif, 0, 1, Homerton.Bold, 0
|
||||
MS Sans Serif, 1, 0, Homerton.Medium.Oblique,0
|
||||
MS Sans Serif, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Swiss, 0, 0, Homerton.Medium, 0
|
||||
Swiss, 0, 1, Homerton.Bold, 0
|
||||
Swiss, 1, 0, Homerton.Medium.Oblique,0
|
||||
Swiss, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Tahoma, 0, 0, Homerton.Medium, 0
|
||||
Tahoma, 0, 1, Homerton.Bold, 0
|
||||
Tahoma, 1, 0, Homerton.Medium.Oblique,0
|
||||
Tahoma, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Trebuchet MS, 0, 0, Homerton.Medium, 0
|
||||
Trebuchet MS, 0, 1, Homerton.Bold, 0
|
||||
Trebuchet MS, 1, 0, Homerton.Medium.Oblique,0
|
||||
Trebuchet MS, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Verdana, 0, 0, Homerton.Medium, 0
|
||||
Verdana, 0, 1, Homerton.Bold, 0
|
||||
Verdana, 1, 0, Homerton.Medium.Oblique,0
|
||||
Verdana, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Univers, 0, 0, Homerton.Medium, 0
|
||||
Univers, 0, 1, Homerton.Bold, 0
|
||||
Univers, 1, 0, Homerton.Medium.Oblique,0
|
||||
Univers, 1, 1, Homerton.Bold.Oblique, 0
|
||||
# All the other fonts
|
||||
*, 0, 0, Trinity.Medium, 0
|
||||
*, 0, 1, Trinity.Bold, 0
|
||||
*, 1, 0, Trinity.Medium.Italic, 0
|
||||
*, 1, 1, Trinity.Bold.Italic, 0
|
80
Resources/Example
Normal file
80
Resources/Example
Normal file
@ -0,0 +1,80 @@
|
||||
# An example of a fontnames translation table
|
||||
#
|
||||
# MS-Word fontname, Italic, Bold, Acorn fontname, Special
|
||||
Arial, 0, 0, Homerton.Medium, 0
|
||||
Arial, 0, 1, Homerton.Bold, 0
|
||||
Arial, 1, 0, Homerton.Medium.Oblique,0
|
||||
Arial, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Arial Black, 0, 0, Homerton.Medium, 0
|
||||
Arial Black, 0, 1, Homerton.Bold, 0
|
||||
Arial Black, 1, 0, Homerton.Medium.Oblique,0
|
||||
Arial Black, 1, 1, Homerton.Bold.Oblique, 0
|
||||
AvantGarde, 0, 0, Clare.Medium, 0
|
||||
AvantGarde, 0, 1, Clare.Demi, 0
|
||||
AvantGarde, 1, 0, Clare.Medium.Oblique, 0
|
||||
AvantGarde, 1, 1, Clare.Demi.Oblique, 0
|
||||
Bookman, 0, 0, Robinson.Light, 0
|
||||
Bookman, 0, 1, Robinson.Demi, 0
|
||||
Bookman, 1, 0, Robinson.Light.Italic, 0
|
||||
Bookman, 1, 1, Robinson.Demi.Italic, 0
|
||||
Bookman Old Style, 0, 0, Robinson.Light, 0
|
||||
Bookman Old Style, 0, 1, Robinson.Demi, 0
|
||||
Bookman Old Style, 1, 0, Robinson.Light.Italic, 0
|
||||
Bookman Old Style, 1, 1, Robinson.Demi.Italic, 0
|
||||
Courier, 0, 0, Corpus.Medium, 0
|
||||
Courier, 0, 1, Corpus.Bold, 0
|
||||
Courier, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Courier, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Courier New, 0, 0, Corpus.Medium, 0
|
||||
Courier New, 0, 1, Corpus.Bold, 0
|
||||
Courier New, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Courier New, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Fixedsys, 0, 0, Corpus.Medium, 0
|
||||
Fixedsys, 0, 1, Corpus.Bold, 0
|
||||
Fixedsys, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Fixedsys, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Helvetica, 0, 0, Homerton.Medium, 0
|
||||
Helvetica, 0, 1, Homerton.Bold, 0
|
||||
Helvetica, 1, 0, Homerton.Medium.Oblique,0
|
||||
Helvetica, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Lucida Console, 0, 0, Corpus.Medium, 0
|
||||
Lucida Console, 0, 1, Corpus.Bold, 0
|
||||
Lucida Console, 1, 0, Corpus.Medium.Oblique, 0
|
||||
Lucida Console, 1, 1, Corpus.Bold.Oblique, 0
|
||||
Palatino, 0, 0, Pembroke.Medium, 0
|
||||
Palatino, 0, 1, Pembroke.Bold, 0
|
||||
Palatino, 1, 0, Pembroke.Medium.Italic, 0
|
||||
Palatino, 1, 1, Pembroke.Bold.Italic, 0
|
||||
Swiss, 0, 0, Homerton.Medium, 0
|
||||
Swiss, 0, 1, Homerton.Bold, 0
|
||||
Swiss, 1, 0, Homerton.Medium.Oblique,0
|
||||
Swiss, 1, 1, Homerton.Bold.Oblique, 0
|
||||
Symbol, 0, 0, Sidney, 1
|
||||
Symbol, 0, 1, Sidney, 1
|
||||
Symbol, 1, 0, Sidney, 1
|
||||
Symbol, 1, 1, Sidney, 1
|
||||
Times, 0, 0, Trinity.Medium, 0
|
||||
Times, 0, 1, Trinity.Bold, 0
|
||||
Times, 1, 0, Trinity.Medium.Italic, 0
|
||||
Times, 1, 1, Trinity.Bold.Italic, 0
|
||||
Times New Roman, 0, 0, Trinity.Medium, 0
|
||||
Times New Roman, 0, 1, Trinity.Bold, 0
|
||||
Times New Roman, 1, 0, Trinity.Medium.Italic, 0
|
||||
Times New Roman, 1, 1, Trinity.Bold.Italic, 0
|
||||
Times Roman, 0, 0, Trinity.Medium, 0
|
||||
Times Roman, 0, 1, Trinity.Bold, 0
|
||||
Times Roman, 1, 0, Trinity.Medium.Italic, 0
|
||||
Times Roman, 1, 1, Trinity.Bold.Italic, 0
|
||||
Univers, 0, 0, Homerton.Medium, 0
|
||||
Univers, 0, 1, Homerton.Bold, 0
|
||||
Univers, 1, 0, Homerton.Medium.Oblique,0
|
||||
Univers, 1, 1, Homerton.Bold.Oblique, 0
|
||||
ZapfDingbats, 0, 0, Selwyn, 2
|
||||
ZapfDingbats, 0, 1, Selwyn, 2
|
||||
ZapfDingbats, 1, 0, Selwyn, 2
|
||||
ZapfDingbats, 1, 1, Selwyn, 2
|
||||
# All the other fonts
|
||||
*, 0, 0, Trinity.Medium, 0
|
||||
*, 0, 1, Trinity.Bold, 0
|
||||
*, 1, 0, Trinity.Medium.Italic, 0
|
||||
*, 1, 1, Trinity.Bold.Italic, 0
|
344
Resources/MacCyrillic.txt
Normal file
344
Resources/MacCyrillic.txt
Normal file
@ -0,0 +1,344 @@
|
||||
#=======================================================================
|
||||
# File name: CYRILLIC.TXT
|
||||
#
|
||||
# Contents: Map (external version) from Mac OS Cyrillic
|
||||
# character set to Unicode 2.1 through Unicode 3.2
|
||||
#
|
||||
# Copyright: (c) 1995-2002 by Apple Computer, Inc., all rights
|
||||
# reserved.
|
||||
#
|
||||
# Contact: charsets@apple.com
|
||||
#
|
||||
# Changes:
|
||||
#
|
||||
# b3,c1 2002-Dec-19 Update URLs, notes. Matches internal
|
||||
# utom<b2>.
|
||||
# b02 1999-Sep-22 Encoding changed for Mac OS 9.0 to merge
|
||||
# with Mac OS Ukrainian and support EURO SIGN;
|
||||
# Change mappings for 0xA2, 0xB6, and 0xFF.
|
||||
# Update contact e-mail address. Matches
|
||||
# internal utom<b2>, ufrm<b2>, and Text
|
||||
# Encoding Converter version 1.5.
|
||||
# n05 1998-Feb-05 Update header comments to new format; no
|
||||
# mapping changes. Matches internal utom<n3>,
|
||||
# ufrm<n13>, and Text Encoding Converter
|
||||
# version 1.3.
|
||||
# n03 1995-Apr-15 First version (after fixing some typos).
|
||||
# Matches internal ufrm<n5>.
|
||||
#
|
||||
# Standard header:
|
||||
# ----------------
|
||||
#
|
||||
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||
# Computer, Inc., registered in the United States and other countries.
|
||||
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||
# throughout this document, "Macintosh" can be used to refer to
|
||||
# Macintosh computers and "Unicode" can be used to refer to the
|
||||
# Unicode standard.
|
||||
#
|
||||
# Apple makes no warranty or representation, either express or
|
||||
# implied, with respect to these tables, their quality, accuracy, or
|
||||
# fitness for a particular purpose. In no event will Apple be liable
|
||||
# for direct, indirect, special, incidental, or consequential damages
|
||||
# resulting from any defect or inaccuracy in this document or the
|
||||
# accompanying tables.
|
||||
#
|
||||
# These mapping tables and character lists are subject to change.
|
||||
# The latest tables should be available from the following:
|
||||
#
|
||||
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||
#
|
||||
# For general information about Mac OS encodings and these mapping
|
||||
# tables, see the file "README.TXT".
|
||||
#
|
||||
# Format:
|
||||
# -------
|
||||
#
|
||||
# Three tab-separated columns;
|
||||
# '#' begins a comment which continues to the end of the line.
|
||||
# Column #1 is the Mac OS Cyrillic code (in hex as 0xNN)
|
||||
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||
# Column #3 is a comment containing the Unicode name
|
||||
#
|
||||
# The entries are in Mac OS Cyrillic code order.
|
||||
#
|
||||
# Control character mappings are not shown in this table, following
|
||||
# the conventions of the standard UTC mapping tables. However, the
|
||||
# Mac OS Cyrillic character set uses the standard control characters
|
||||
# at 0x00-0x1F and 0x7F.
|
||||
#
|
||||
# Notes on Mac OS Cyrillic:
|
||||
# -------------------------
|
||||
#
|
||||
# This is the "Euro sign" version of Mac Cyrillic for Mac OS 9.0 and
|
||||
# later. Before Mac OS 9.0, there were two separate Slavic Cyrillic
|
||||
# encodings:
|
||||
#
|
||||
# 1. The Cyrillic currency sign variant (used for localized Russian
|
||||
# and Bulgarian systems), which had the following:
|
||||
# 0xA2 U+00A2 CENT SIGN
|
||||
# 0xB6 U+2202 PARTIAL DIFFERENTIAL
|
||||
# 0xFF U+00A4 CURRENCY SIGN
|
||||
#
|
||||
# 2. The Ukrainian currency sign variant (used for localized Ukrainian
|
||||
# systems and the pre-9.0 Cyrillic Language Kit), which had the
|
||||
# following:
|
||||
# 0xA2 U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
# 0xB6 U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
# 0xFF U+00A4 CURRENCY SIGN
|
||||
#
|
||||
# This new Cyrillic Euro sign version is based on the old Ukrainian
|
||||
# currency sign variant, with 0xFF changed to be EURO SIGN.
|
||||
#
|
||||
# The Mac OS Cyrillic encoding includes the Cyrillic letter repertoire
|
||||
# of ISO 8859-5 (although not at the same code points). This covers
|
||||
# most of the Slavic languages written in Cyrillic script.
|
||||
#
|
||||
# The Mac OS Cyrillic encoding also includes a number of characters
|
||||
# needed for the Mac OS user interface and localization (e.g.
|
||||
# ellipsis, bullet, copyright sign). All of the characters in Mac OS
|
||||
# Cyrillic that are also in the Mac OS Roman encoding are at the
|
||||
# same code point in both; this improves application compatibility.
|
||||
#
|
||||
# Note: There is a common Ukrainian glyph variation in which the glyph
|
||||
# for CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I may or may not
|
||||
# have a dot above.
|
||||
#
|
||||
# Unicode mapping issues and notes:
|
||||
# ---------------------------------
|
||||
#
|
||||
# Details of mapping changes in each version:
|
||||
# -------------------------------------------
|
||||
#
|
||||
# Changes from version n05 to version b02:
|
||||
#
|
||||
# - Encoding changed for Mac OS 9.0 to merge with Mac OS Ukrainian and
|
||||
# support EURO SIGN. 0xA2 changed from U+00A2 to U+0490; 0xB6 changed
|
||||
# from U+2202 to U+0491; 0xFF changed from U+00A4 to U+20AC.
|
||||
#
|
||||
##################
|
||||
|
||||
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
|
||||
#
|
||||
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 0x2020 # DAGGER
|
||||
0xA1 0x00B0 # DEGREE SIGN
|
||||
0xA2 0x0490 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A7 # SECTION SIGN
|
||||
0xA5 0x2022 # BULLET
|
||||
0xA6 0x00B6 # PILCROW SIGN
|
||||
0xA7 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xA8 0x00AE # REGISTERED SIGN
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x2122 # TRADE MARK SIGN
|
||||
0xAB 0x0402 # CYRILLIC CAPITAL LETTER DJE
|
||||
0xAC 0x0452 # CYRILLIC SMALL LETTER DJE
|
||||
0xAD 0x2260 # NOT EQUAL TO
|
||||
0xAE 0x0403 # CYRILLIC CAPITAL LETTER GJE
|
||||
0xAF 0x0453 # CYRILLIC SMALL LETTER GJE
|
||||
0xB0 0x221E # INFINITY
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||
0xB4 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||
0xB7 0x0408 # CYRILLIC CAPITAL LETTER JE
|
||||
0xB8 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xB9 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xBA 0x0407 # CYRILLIC CAPITAL LETTER YI
|
||||
0xBB 0x0457 # CYRILLIC SMALL LETTER YI
|
||||
0xBC 0x0409 # CYRILLIC CAPITAL LETTER LJE
|
||||
0xBD 0x0459 # CYRILLIC SMALL LETTER LJE
|
||||
0xBE 0x040A # CYRILLIC CAPITAL LETTER NJE
|
||||
0xBF 0x045A # CYRILLIC SMALL LETTER NJE
|
||||
0xC0 0x0458 # CYRILLIC SMALL LETTER JE
|
||||
0xC1 0x0405 # CYRILLIC CAPITAL LETTER DZE
|
||||
0xC2 0x00AC # NOT SIGN
|
||||
0xC3 0x221A # SQUARE ROOT
|
||||
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||
0xC5 0x2248 # ALMOST EQUAL TO
|
||||
0xC6 0x2206 # INCREMENT
|
||||
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||
0xCA 0x00A0 # NO-BREAK SPACE
|
||||
0xCB 0x040B # CYRILLIC CAPITAL LETTER TSHE
|
||||
0xCC 0x045B # CYRILLIC SMALL LETTER TSHE
|
||||
0xCD 0x040C # CYRILLIC CAPITAL LETTER KJE
|
||||
0xCE 0x045C # CYRILLIC SMALL LETTER KJE
|
||||
0xCF 0x0455 # CYRILLIC SMALL LETTER DZE
|
||||
0xD0 0x2013 # EN DASH
|
||||
0xD1 0x2014 # EM DASH
|
||||
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||
0xD6 0x00F7 # DIVISION SIGN
|
||||
0xD7 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||
0xD8 0x040E # CYRILLIC CAPITAL LETTER SHORT U
|
||||
0xD9 0x045E # CYRILLIC SMALL LETTER SHORT U
|
||||
0xDA 0x040F # CYRILLIC CAPITAL LETTER DZHE
|
||||
0xDB 0x045F # CYRILLIC SMALL LETTER DZHE
|
||||
0xDC 0x2116 # NUMERO SIGN
|
||||
0xDD 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xDE 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xDF 0x044F # CYRILLIC SMALL 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 0x20AC # EURO SIGN
|
362
Resources/MacRoman.txt
Normal file
362
Resources/MacRoman.txt
Normal file
@ -0,0 +1,362 @@
|
||||
#=======================================================================
|
||||
# File name: ROMAN.TXT
|
||||
#
|
||||
# Contents: Map (external version) from Mac OS Roman
|
||||
# character set to Unicode 2.1 through Unicode 3.2
|
||||
#
|
||||
# Copyright: (c) 1994-2002 by Apple Computer, Inc., all rights
|
||||
# reserved.
|
||||
#
|
||||
# Contact: charsets@apple.com
|
||||
#
|
||||
# Changes:
|
||||
#
|
||||
# b4,c1 2002-Dec-19 Update URLs, notes. Matches internal
|
||||
# utom<b5>.
|
||||
# b03 1999-Sep-22 Update contact e-mail address. Matches
|
||||
# internal utom<b4>, ufrm<b3>, and Text
|
||||
# Encoding Converter version 1.5.
|
||||
# b02 1998-Aug-18 Encoding changed for Mac OS 8.5; change
|
||||
# mapping of 0xDB from CURRENCY SIGN to
|
||||
# EURO SIGN. Matches internal utom<b3>,
|
||||
# ufrm<b3>.
|
||||
# n08 1998-Feb-05 Minor update to header comments
|
||||
# n06 1997-Dec-14 Add warning about future changes to 0xDB
|
||||
# from CURRENCY SIGN to EURO SIGN. Clarify
|
||||
# some header information
|
||||
# n04 1997-Dec-01 Update to match internal utom<n3>, ufrm<n22>:
|
||||
# Change standard mapping for 0xBD from U+2126
|
||||
# to its canonical decomposition, U+03A9.
|
||||
# n03 1995-Apr-15 First version (after fixing some typos).
|
||||
# Matches internal ufrm<n9>.
|
||||
#
|
||||
# Standard header:
|
||||
# ----------------
|
||||
#
|
||||
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||
# Computer, Inc., registered in the United States and other countries.
|
||||
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||
# throughout this document, "Macintosh" can be used to refer to
|
||||
# Macintosh computers and "Unicode" can be used to refer to the
|
||||
# Unicode standard.
|
||||
#
|
||||
# Apple makes no warranty or representation, either express or
|
||||
# implied, with respect to these tables, their quality, accuracy, or
|
||||
# fitness for a particular purpose. In no event will Apple be liable
|
||||
# for direct, indirect, special, incidental, or consequential damages
|
||||
# resulting from any defect or inaccuracy in this document or the
|
||||
# accompanying tables.
|
||||
#
|
||||
# These mapping tables and character lists are subject to change.
|
||||
# The latest tables should be available from the following:
|
||||
#
|
||||
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||
#
|
||||
# For general information about Mac OS encodings and these mapping
|
||||
# tables, see the file "README.TXT".
|
||||
#
|
||||
# Format:
|
||||
# -------
|
||||
#
|
||||
# Three tab-separated columns;
|
||||
# '#' begins a comment which continues to the end of the line.
|
||||
# Column #1 is the Mac OS Roman code (in hex as 0xNN)
|
||||
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||
# Column #3 is a comment containing the Unicode name
|
||||
#
|
||||
# The entries are in Mac OS Roman code order.
|
||||
#
|
||||
# One of these mappings requires the use of a corporate character.
|
||||
# See the file "CORPCHAR.TXT" and notes below.
|
||||
#
|
||||
# Control character mappings are not shown in this table, following
|
||||
# the conventions of the standard UTC mapping tables. However, the
|
||||
# Mac OS Roman character set uses the standard control characters at
|
||||
# 0x00-0x1F and 0x7F.
|
||||
#
|
||||
# Notes on Mac OS Roman:
|
||||
# ----------------------
|
||||
#
|
||||
# This character set is used for at least the following Mac OS
|
||||
# localizations: U.S., British, Canadian French, French, Swiss
|
||||
# French, German, Swiss German, Italian, Swiss Italian, Dutch,
|
||||
# Swedish, Norwegian, Danish, Finnish, Spanish, Catalan,
|
||||
# Portuguese, Brazilian, and the default International system.
|
||||
#
|
||||
# Variants of Mac OS Roman are used for Croatian, Icelandic,
|
||||
# Turkish, Romanian, and other encodings. Separate mapping tables
|
||||
# are available for these encodings.
|
||||
#
|
||||
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
|
||||
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
|
||||
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
|
||||
# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
|
||||
# a "currency sign" variant of the Mac OS Roman encoding that still
|
||||
# maps 0xDB to U+00A4; this can be used for older fonts.
|
||||
#
|
||||
# Before Mac OS 8.5, the ROM bitmap versions of the fonts Chicago,
|
||||
# New York, Geneva, and Monaco did not implement the full Mac OS
|
||||
# Roman character set; they only supported character codes up to
|
||||
# 0xD8. The TrueType versions of these fonts have always implemented
|
||||
# the full character set, as with the bitmap and TrueType versions
|
||||
# of the other standard Roman fonts.
|
||||
#
|
||||
# In all Mac OS encodings, fonts such as Chicago which are used
|
||||
# as "system" fonts (for menus, dialogs, etc.) have four glyphs
|
||||
# at code points 0x11-0x14 for transient use by the Menu Manager.
|
||||
# These glyphs are not intended as characters for use in normal
|
||||
# text, and the associated code points are not generally
|
||||
# interpreted as associated with these glyphs; they are usually
|
||||
# interpreted (if at all) as the control codes DC1-DC4.
|
||||
#
|
||||
# Unicode mapping issues and notes:
|
||||
# ---------------------------------
|
||||
#
|
||||
# The following corporate zone Unicode character is used in this
|
||||
# mapping:
|
||||
#
|
||||
# 0xF8FF Apple logo
|
||||
#
|
||||
# NOTE: The graphic image associated with the Apple logo character
|
||||
# is not authorized for use without permission of Apple, and
|
||||
# unauthorized use might constitute trademark infringement.
|
||||
#
|
||||
# Details of mapping changes in each version:
|
||||
# -------------------------------------------
|
||||
#
|
||||
# Changes from version n08 to version b02:
|
||||
#
|
||||
# - Encoding changed for Mac OS 8.5; change mapping of 0xDB from
|
||||
# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
|
||||
#
|
||||
# Changes from version n03 to version n04:
|
||||
#
|
||||
# - Change mapping of 0xBD from U+2126 to its canonical
|
||||
# decomposition, U+03A9.
|
||||
#
|
||||
##################
|
||||
|
||||
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
|
||||
#
|
||||
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||
0xA0 0x2020 # DAGGER
|
||||
0xA1 0x00B0 # DEGREE SIGN
|
||||
0xA2 0x00A2 # CENT SIGN
|
||||
0xA3 0x00A3 # POUND SIGN
|
||||
0xA4 0x00A7 # SECTION SIGN
|
||||
0xA5 0x2022 # BULLET
|
||||
0xA6 0x00B6 # PILCROW SIGN
|
||||
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||
0xA8 0x00AE # REGISTERED SIGN
|
||||
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||
0xAA 0x2122 # TRADE MARK SIGN
|
||||
0xAB 0x00B4 # ACUTE ACCENT
|
||||
0xAC 0x00A8 # DIAERESIS
|
||||
0xAD 0x2260 # NOT EQUAL TO
|
||||
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
|
||||
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||
0xB0 0x221E # INFINITY
|
||||
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||
0xB4 0x00A5 # YEN SIGN
|
||||
0xB5 0x00B5 # MICRO SIGN
|
||||
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||
0xB7 0x2211 # N-ARY SUMMATION
|
||||
0xB8 0x220F # N-ARY PRODUCT
|
||||
0xB9 0x03C0 # GREEK SMALL LETTER PI
|
||||
0xBA 0x222B # INTEGRAL
|
||||
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
|
||||
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||
0xBE 0x00E6 # LATIN SMALL LETTER AE
|
||||
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||
0xC0 0x00BF # INVERTED QUESTION MARK
|
||||
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||
0xC2 0x00AC # NOT SIGN
|
||||
0xC3 0x221A # SQUARE ROOT
|
||||
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||
0xC5 0x2248 # ALMOST EQUAL TO
|
||||
0xC6 0x2206 # INCREMENT
|
||||
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||
0xCA 0x00A0 # NO-BREAK SPACE
|
||||
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||
0xD0 0x2013 # EN DASH
|
||||
0xD1 0x2014 # EM DASH
|
||||
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||
0xD6 0x00F7 # DIVISION SIGN
|
||||
0xD7 0x25CA # LOZENGE
|
||||
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
0xDA 0x2044 # FRACTION SLASH
|
||||
0xDB 0x20AC # EURO SIGN
|
||||
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
0xDE 0xFB01 # LATIN SMALL LIGATURE FI
|
||||
0xDF 0xFB02 # LATIN SMALL LIGATURE FL
|
||||
0xE0 0x2021 # DOUBLE DAGGER
|
||||
0xE1 0x00B7 # MIDDLE DOT
|
||||
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||
0xE4 0x2030 # PER MILLE SIGN
|
||||
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
0xF0 0xF8FF # Apple logo
|
||||
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
0xF7 0x02DC # SMALL TILDE
|
||||
0xF8 0x00AF # MACRON
|
||||
0xF9 0x02D8 # BREVE
|
||||
0xFA 0x02D9 # DOT ABOVE
|
||||
0xFB 0x02DA # RING ABOVE
|
||||
0xFC 0x00B8 # CEDILLA
|
||||
0xFD 0x02DD # DOUBLE ACUTE ACCENT
|
||||
0xFE 0x02DB # OGONEK
|
||||
0xFF 0x02C7 # CARON
|
3
Resources/UTF-8.txt
Normal file
3
Resources/UTF-8.txt
Normal file
@ -0,0 +1,3 @@
|
||||
# UTF-8 to Unicode
|
||||
# This file is a dummy.
|
||||
# The conversion is done algorithmicly, not by a table look-up.
|
306
Resources/Unicode01
Normal file
306
Resources/Unicode01
Normal file
@ -0,0 +1,306 @@
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#RISC OS
|
||||
# This file was changed to match RISC OS specific characters (0x80 - 0x9f)
|
||||
#RISC OS
|
||||
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 0x0174 # CAPITAL W CIRCUMFLEX ACCENT
|
||||
0x82 0x0175 # SMALL W CIRCUMFLEX ACCENT
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0176 # CAPITAL Y CIRCUMFLEX ACCENT
|
||||
0x86 0x0177 # SMALL Y CIRCUMFLEX ACCENT
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x2026 # ELLIPSIS
|
||||
0x8D 0x2122 # TRADEMARK
|
||||
0x8E 0x2030 # PER MILLE SIGN
|
||||
0x8F 0x2022 # BULLET
|
||||
0x90 0x2018 # LEFT SINGLE QUOTE
|
||||
0x91 0x2019 # RIGHT SINGLE QUOTE
|
||||
0x92 0x2039 # LEFT SINGLE QUOTATION MARK
|
||||
0x93 0x203A # RIGHT SINGLE QUOTATION MARK
|
||||
0x94 0x201C # OPENING DOUBLE QUOTE
|
||||
0x95 0x201D # CLOSING DOUBLE QUOTE
|
||||
0x96 0x201E # LOW DOUBLE QUOTE
|
||||
0x97 0x2013 # EN DASH
|
||||
0x98 0x2014 # EM_DASH
|
||||
0x99 0x2011 # NON BREAKING HYPHEN
|
||||
0x9A 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||
0x9B 0x0153 # LATIN SMALL LIGATURE OE
|
||||
0x9C 0x2020 # DAGGER
|
||||
0x9D 0x2021 # DOUBLE DAGGER
|
||||
0x9E 0xFB01 # Fi
|
||||
0x9F 0xFB02 # Fl
|
||||
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
|
305
Resources/Unicode15
Normal file
305
Resources/Unicode15
Normal file
@ -0,0 +1,305 @@
|
||||
#
|
||||
# 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 <mkuhn@acm.org>
|
||||
# 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.
|
||||
#
|
||||
#RISC OS
|
||||
# This file was changed to match RISC OS specific characters (0x80 - 0x9f)
|
||||
#RISC OS
|
||||
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 0x0174 # CAPITAL W CIRCUMFLEX ACCENT
|
||||
0x82 0x0175 # SMALL W CIRCUMFLEX ACCENT
|
||||
0x83 0x0083 # <control>
|
||||
0x84 0x0084 # <control>
|
||||
0x85 0x0176 # CAPITAL Y CIRCUMFLEX ACCENT
|
||||
0x86 0x0177 # SMALL Y CIRCUMFLEX ACCENT
|
||||
0x87 0x0087 # <control>
|
||||
0x88 0x0088 # <control>
|
||||
0x89 0x0089 # <control>
|
||||
0x8A 0x008A # <control>
|
||||
0x8B 0x008B # <control>
|
||||
0x8C 0x2026 # ELLIPSIS
|
||||
0x8D 0x2122 # TRADEMARK
|
||||
0x8E 0x2030 # PER MILLE SIGN
|
||||
0x8F 0x2022 # BULLET
|
||||
0x90 0x2018 # LEFT SINGLE QUOTE
|
||||
0x91 0x2019 # RIGHT SINGLE QUOTE
|
||||
0x92 0x2039 # LEFT SINGLE QUOTATION MARK
|
||||
0x93 0x203A # RIGHT SINGLE QUOTATION MARK
|
||||
0x94 0x201C # OPENING DOUBLE QUOTE
|
||||
0x95 0x201D # CLOSING DOUBLE QUOTE
|
||||
0x96 0x201E # LOW DOUBLE QUOTE
|
||||
0x97 0x2013 # EN DASH
|
||||
0x98 0x2014 # EM_DASH
|
||||
0x99 0x2011 # NON BREAKING HYPHEN
|
||||
0x9A 0x009A # <control>
|
||||
0x9B 0x009B # <control>
|
||||
0x9C 0x2020 # DAGGER
|
||||
0x9D 0x2021 # DOUBLE DAGGER
|
||||
0x9E 0xFB01 # Fi
|
||||
0x9F 0xFB02 # Fl
|
||||
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
|
274
Resources/cp1250.txt
Normal file
274
Resources/cp1250.txt
Normal file
@ -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: cpxlate@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
|
274
Resources/cp1251.txt
Normal file
274
Resources/cp1251.txt
Normal file
@ -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: cpxlate@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
|
274
Resources/cp1252.txt
Normal file
274
Resources/cp1252.txt
Normal file
@ -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: cpxlate@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
|
273
Resources/cp437.txt
Normal file
273
Resources/cp437.txt
Normal file
@ -0,0 +1,273 @@
|
||||
#
|
||||
# Name: cp437_DOSLatinUS to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@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
|
273
Resources/cp850.txt
Normal file
273
Resources/cp850.txt
Normal file
@ -0,0 +1,273 @@
|
||||
#
|
||||
# Name: cp850_DOSLatin1 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@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
|
273
Resources/cp852.txt
Normal file
273
Resources/cp852.txt
Normal file
@ -0,0 +1,273 @@
|
||||
#
|
||||
# Name: cp852_DOSLatin2 to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@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
|
273
Resources/cp862.txt
Normal file
273
Resources/cp862.txt
Normal file
@ -0,0 +1,273 @@
|
||||
#
|
||||
# Name: cp862_DOSHebrew to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@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
|
273
Resources/cp864.txt
Normal file
273
Resources/cp864.txt
Normal file
@ -0,0 +1,273 @@
|
||||
#
|
||||
# Name: cp864_DOSArabic to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@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
|
273
Resources/cp866.txt
Normal file
273
Resources/cp866.txt
Normal file
@ -0,0 +1,273 @@
|
||||
#
|
||||
# Name: cp866_DOSCyrillicRussian to Unicode table
|
||||
# Unicode version: 2.0
|
||||
# Table version: 2.00
|
||||
# Table format: Format A
|
||||
# Date: 04/24/96
|
||||
# Authors: Lori Brownell <loribr@microsoft.com>
|
||||
# K.D. Chang <a-kchang@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
|
117
Resources/fontnames
Normal file
117
Resources/fontnames
Normal file
@ -0,0 +1,117 @@
|
||||
# Default fontnames translation table
|
||||
# uses only Standard PostScript (TM) fonts
|
||||
#
|
||||
# MS-Word fontname, Italic, Bold, PostScript fontname, Special
|
||||
Arial, 0, 0, Helvetica, 0
|
||||
Arial, 0, 1, Helvetica-Bold, 0
|
||||
Arial, 1, 0, Helvetica-Oblique, 0
|
||||
Arial, 1, 1, Helvetica-BoldOblique, 0
|
||||
Arial Black, 0, 0, Helvetica, 0
|
||||
Arial Black, 0, 1, Helvetica-Bold, 0
|
||||
Arial Black, 1, 0, Helvetica-Oblique, 0
|
||||
Arial Black, 1, 1, Helvetica-BoldOblique, 0
|
||||
Arial CE, 0, 0, Helvetica, 0
|
||||
Arial CE, 0, 1, Helvetica-Bold, 0
|
||||
Arial CE, 1, 0, Helvetica-Oblique, 0
|
||||
Arial CE, 1, 1, Helvetica-BoldOblique, 0
|
||||
Arial Narrow, 0, 0, Helvetica-Narrow, 0
|
||||
Arial Narrow, 0, 1, Helvetica-Narrow-Bold, 0
|
||||
Arial Narrow, 1, 0, Helvetica-Narrow-Oblique, 0
|
||||
Arial Narrow, 1, 1, Helvetica-Narrow-BoldOblique, 0
|
||||
AvantGarde, 0, 0, AvantGarde-Book, 0
|
||||
AvantGarde, 0, 1, AvantGarde-Demi, 0
|
||||
AvantGarde, 1, 0, AvantGarde-BookOblique, 0
|
||||
AvantGarde, 1, 1, AvantGarde-DemiOblique, 0
|
||||
Bookman Old Style, 0, 0, Bookman-Light, 0
|
||||
Bookman Old Style, 0, 1, Bookman-Demi, 0
|
||||
Bookman Old Style, 1, 0, Bookman-LightItalic, 0
|
||||
Bookman Old Style, 1, 1, Bookman-DemiItalic, 0
|
||||
Century Schoolbook, 0, 0, NewCenturySchlbk-Roman, 0
|
||||
Century Schoolbook, 0, 1, NewCenturySchlbk-Bold, 0
|
||||
Century Schoolbook, 1, 0, NewCenturySchlbk-Italic, 0
|
||||
Century Schoolbook, 1, 1, NewCenturySchlbk-BoldItalic, 0
|
||||
CG Omega, 0, 0, Helvetica, 0
|
||||
CG Omega, 0, 1, Helvetica-Bold, 0
|
||||
CG Omega, 1, 0, Helvetica-Oblique, 0
|
||||
CG Omega, 1, 1, Helvetica-BoldOblique, 0
|
||||
Comic Sans MS, 0, 0, Helvetica, 0
|
||||
Comic Sans MS, 0, 1, Helvetica-Bold, 0
|
||||
Comic Sans MS, 1, 0, Helvetica-Oblique, 0
|
||||
Comic Sans MS, 1, 1, Helvetica-BoldOblique, 0
|
||||
Courier, 0, 0, Courier, 0
|
||||
Courier, 0, 1, Courier-Bold, 0
|
||||
Courier, 1, 0, Courier-Oblique, 0
|
||||
Courier, 1, 1, Courier-BoldOblique, 0
|
||||
Courier New, 0, 0, Courier, 0
|
||||
Courier New, 0, 1, Courier-Bold, 0
|
||||
Courier New, 1, 0, Courier-Oblique, 0
|
||||
Courier New, 1, 1, Courier-BoldOblique, 0
|
||||
Fixedsys, 0, 0, Courier, 0
|
||||
Fixedsys, 0, 1, Courier-Bold, 0
|
||||
Fixedsys, 1, 0, Courier-Oblique, 0
|
||||
Fixedsys, 1, 1, Courier-BoldOblique, 0
|
||||
Helvetica, 0, 0, Helvetica, 0
|
||||
Helvetica, 0, 1, Helvetica-Bold, 0
|
||||
Helvetica, 1, 0, Helvetica-Oblique, 0
|
||||
Helvetica, 1, 1, Helvetica-BoldOblique, 0
|
||||
Helvetica-Narrow, 0, 0, Helvetica-Narrow, 0
|
||||
Helvetica-Narrow, 0, 1, Helvetica-Narrow-Bold, 0
|
||||
Helvetica-Narrow, 1, 0, Helvetica-Narrow-Oblique, 0
|
||||
Helvetica-Narrow, 1, 1, Helvetica-Narrow-BoldOblique, 0
|
||||
ITC Bookman, 0, 0, Bookman-Light, 0
|
||||
ITC Bookman, 0, 1, Bookman-Demi, 0
|
||||
ITC Bookman, 1, 0, Bookman-LightItalic, 0
|
||||
ITC Bookman, 1, 1, Bookman-DemiItalic, 0
|
||||
Lucida Console, 0, 0, Courier, 0
|
||||
Lucida Console, 0, 1, Courier-Bold, 0
|
||||
Lucida Console, 1, 0, Courier-Oblique, 0
|
||||
Lucida Console, 1, 1, Courier-BoldOblique, 0
|
||||
Lucida Sans Typewriter, 0, 0, Courier, 0
|
||||
Lucida Sans Typewriter, 0, 1, Courier-Bold, 0
|
||||
Lucida Sans Typewriter, 1, 0, Courier-Oblique, 0
|
||||
Lucida Sans Typewriter, 1, 1, Courier-BoldOblique, 0
|
||||
Monotype.com, 0, 0, Courier, 0
|
||||
Monotype.com, 0, 1, Courier-Bold, 0
|
||||
Monotype.com, 1, 0, Courier-Oblique, 0
|
||||
Monotype.com, 1, 1, Courier-BoldOblique, 0
|
||||
MS Sans Serif, 0, 0, Helvetica, 0
|
||||
MS Sans Serif, 0, 1, Helvetica-Bold, 0
|
||||
MS Sans Serif, 1, 0, Helvetica-Oblique, 0
|
||||
MS Sans Serif, 1, 1, Helvetica-BoldOblique, 0
|
||||
New Century Schlbk, 0, 0, NewCenturySchlbk-Roman, 0
|
||||
New Century Schlbk, 0, 1, NewCenturySchlbk-Bold, 0
|
||||
New Century Schlbk, 1, 0, NewCenturySchlbk-Italic, 0
|
||||
New Century Schlbk, 1, 1, NewCenturySchlbk-BoldItalic, 0
|
||||
NewCenturySchlbk, 0, 0, NewCenturySchlbk-Roman, 0
|
||||
NewCenturySchlbk, 0, 1, NewCenturySchlbk-Bold, 0
|
||||
NewCenturySchlbk, 1, 0, NewCenturySchlbk-Italic, 0
|
||||
NewCenturySchlbk, 1, 1, NewCenturySchlbk-BoldItalic, 0
|
||||
Palatino, 0, 0, Palatino-Roman, 0
|
||||
Palatino, 0, 1, Palatino-Bold, 0
|
||||
Palatino, 1, 0, Palatino-Italic, 0
|
||||
Palatino, 1, 1, Palatino-BoldItalic, 0
|
||||
Swiss, 0, 0, Helvetica, 0
|
||||
Swiss, 0, 1, Helvetica-Bold, 0
|
||||
Swiss, 1, 0, Helvetica-Oblique, 0
|
||||
Swiss, 1, 1, Helvetica-BoldOblique, 0
|
||||
Tahoma, 0, 0, Helvetica, 0
|
||||
Tahoma, 0, 1, Helvetica-Bold, 0
|
||||
Tahoma, 1, 0, Helvetica-Oblique, 0
|
||||
Tahoma, 1, 1, Helvetica-BoldOblique, 0
|
||||
Trebuchet MS, 0, 0, Helvetica, 0
|
||||
Trebuchet MS, 0, 1, Helvetica-Bold, 0
|
||||
Trebuchet MS, 1, 0, Helvetica-Oblique, 0
|
||||
Trebuchet MS, 1, 1, Helvetica-BoldOblique, 0
|
||||
Univers, 0, 0, Helvetica, 0
|
||||
Univers, 0, 1, Helvetica-Bold, 0
|
||||
Univers, 1, 0, Helvetica-Oblique, 0
|
||||
Univers, 1, 1, Helvetica-BoldOblique, 0
|
||||
Verdana, 0, 0, Helvetica, 0
|
||||
Verdana, 0, 1, Helvetica-Bold, 0
|
||||
Verdana, 1, 0, Helvetica-Oblique, 0
|
||||
Verdana, 1, 1, Helvetica-BoldOblique, 0
|
||||
# All the other fonts
|
||||
*, 0, 0, Times-Roman, 0
|
||||
*, 0, 1, Times-Bold, 0
|
||||
*, 1, 0, Times-Italic, 0
|
||||
*, 1, 1, Times-BoldItalic, 0
|
43
Resources/fontnames.russian
Normal file
43
Resources/fontnames.russian
Normal file
@ -0,0 +1,43 @@
|
||||
# Default fontnames translation table
|
||||
# for Cyrillic
|
||||
#
|
||||
# by: Dmitry Chernyak <cdl@inkasbank.ru>
|
||||
#
|
||||
# MS-Word fontname, Italic, Bold, PostScript fontname, Special
|
||||
Arial, 0, 0, ArialCyrMT, 0
|
||||
Arial, 0, 1, ArialCyrMT-Bold, 0
|
||||
Arial, 1, 0, ArialCyrMT-Italic, 0
|
||||
Arial, 1, 1, ArialCyrMT-BoldItalic, 0
|
||||
Courier, 0, 0, CourierCyrPS, 0
|
||||
Courier, 0, 1, CourierCyrPS-Bold, 0
|
||||
Courier, 1, 0, CourierCyrPS-Inclined, 0
|
||||
Courier, 1, 1, CourierCyrPS-BoldInclined, 0
|
||||
Courier New, 0, 0, CourierCyrPS, 0
|
||||
Courier New, 0, 1, CourierCyrPS-Bold, 0
|
||||
Courier New, 1, 0, CourierCyrPS-Inclined, 0
|
||||
Courier New, 1, 1, CourierCyrPS-BoldInclined, 0
|
||||
Fixedsys, 0, 0, CourierCyrPS, 0
|
||||
Fixedsys, 0, 1, CourierCyrPS-Bold, 0
|
||||
Fixedsys, 1, 0, CourierCyrPS-Inclined, 0
|
||||
Fixedsys, 1, 1, CourierCyrPS-BoldInclined, 0
|
||||
Helvetica, 0, 0, ArialCyrMT, 0
|
||||
Helvetica, 0, 1, ArialCyrMT-Bold, 0
|
||||
Helvetica, 1, 0, ArialCyrMT-Italic, 0
|
||||
Helvetica, 1, 1, ArialCyrMT-BoldItalic, 0
|
||||
Lucida Console, 0, 0, CourierCyrPS, 0
|
||||
Lucida Console, 0, 1, CourierCyrPS-Bold, 0
|
||||
Lucida Console, 1, 0, CourierCyrPS-Inclined, 0
|
||||
Lucida Console, 1, 1, CourierCyrPS-BoldInclined, 0
|
||||
Swiss, 0, 0, Helvetica, 0
|
||||
Swiss, 0, 1, Helvetica-Bold, 0
|
||||
Swiss, 1, 0, Helvetica-Oblique, 0
|
||||
Swiss, 1, 1, Helvetica-BoldOblique, 0
|
||||
Univers, 0, 0, Helvetica, 0
|
||||
Univers, 0, 1, Helvetica-Bold, 0
|
||||
Univers, 1, 0, Helvetica-Oblique, 0
|
||||
Univers, 1, 1, Helvetica-BoldOblique, 0
|
||||
# All the other fonts
|
||||
*, 0, 0, TimesNRCyrMT, 0
|
||||
*, 0, 1, TimesNRCyrMT-Bold, 0
|
||||
*, 1, 0, TimesNRCyrMT-Inclined, 0
|
||||
*, 1, 1, TimesNRCyrMT-BoldInclined, 0
|
302
Resources/koi8-r.txt
Normal file
302
Resources/koi8-r.txt
Normal file
@ -0,0 +1,302 @@
|
||||
#
|
||||
# Name: KOI8-R (RFC1489) to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 18 August 1999
|
||||
# Authors: Helmut Richter <richter@lrz.de>
|
||||
#
|
||||
# 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
|
||||
# KOI8-R characters map into Unicode. The underlying document is the
|
||||
# mapping described in RFC 1489. No statements are made as to whether
|
||||
# this mapping is the same as the mapping defined as "Code Page 878"
|
||||
# with some vendors.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the KOI8-R 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 KOI8-R order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version: created.
|
||||
#
|
||||
# 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 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x8B 0x2580 # UPPER HALF BLOCK
|
||||
0x8C 0x2584 # LOWER HALF BLOCK
|
||||
0x8D 0x2588 # FULL BLOCK
|
||||
0x8E 0x258C # LEFT HALF BLOCK
|
||||
0x8F 0x2590 # RIGHT HALF BLOCK
|
||||
0x90 0x2591 # LIGHT SHADE
|
||||
0x91 0x2592 # MEDIUM SHADE
|
||||
0x92 0x2593 # DARK SHADE
|
||||
0x93 0x2320 # TOP HALF INTEGRAL
|
||||
0x94 0x25A0 # BLACK SQUARE
|
||||
0x95 0x2219 # BULLET OPERATOR
|
||||
0x96 0x221A # SQUARE ROOT
|
||||
0x97 0x2248 # ALMOST EQUAL TO
|
||||
0x98 0x2264 # LESS-THAN OR EQUAL TO
|
||||
0x99 0x2265 # GREATER-THAN OR EQUAL TO
|
||||
0x9A 0x00A0 # NO-BREAK SPACE
|
||||
0x9B 0x2321 # BOTTOM HALF INTEGRAL
|
||||
0x9C 0x00B0 # DEGREE SIGN
|
||||
0x9D 0x00B2 # SUPERSCRIPT TWO
|
||||
0x9E 0x00B7 # MIDDLE DOT
|
||||
0x9F 0x00F7 # DIVISION SIGN
|
||||
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xA4 0x2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
|
||||
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xA6 0x2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
|
||||
0xA7 0x2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
|
||||
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xAD 0x255C # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
|
||||
0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xB4 0x2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
|
||||
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xB6 0x2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
|
||||
0xB7 0x2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
|
||||
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBD 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xBF 0x00A9 # COPYRIGHT SIGN
|
||||
0xC0 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xC1 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xC8 0x0445 # CYRILLIC SMALL LETTER HA
|
||||
0xC9 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xCB 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xCC 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xCD 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xCE 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xCF 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xD0 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xD1 0x044F # CYRILLIC SMALL LETTER YA
|
||||
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xD5 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xDC 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
|
||||
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
303
Resources/koi8-u.txt
Normal file
303
Resources/koi8-u.txt
Normal file
@ -0,0 +1,303 @@
|
||||
#
|
||||
# Name: KOI8-U (RFC2319) to Unicode
|
||||
# Unicode version: 3.0
|
||||
# Table version: 1.0
|
||||
# Table format: Format A
|
||||
# Date: 08 September 2001
|
||||
# Authors: Andriy Rysin <arysin@yahoo.com>
|
||||
#
|
||||
# Copyright (c) 1991-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
|
||||
# KOI8-U characters map into Unicode. The underlying document is the
|
||||
# mapping described in RFC 2319. No statements are made as to whether
|
||||
# this mapping is the same as the mapping defined as "Code Page 878"
|
||||
# with some vendors.
|
||||
#
|
||||
# Format: Three tab-separated columns
|
||||
# Column #1 is the KOI8-U 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 KOI8-U order.
|
||||
#
|
||||
# Version history
|
||||
# 1.0 version: created.
|
||||
#
|
||||
# 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 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
|
||||
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
|
||||
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
|
||||
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
|
||||
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
|
||||
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
|
||||
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
||||
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
||||
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
||||
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
||||
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
||||
0x8B 0x2580 # UPPER HALF BLOCK
|
||||
0x8C 0x2584 # LOWER HALF BLOCK
|
||||
0x8D 0x2588 # FULL BLOCK
|
||||
0x8E 0x258C # LEFT HALF BLOCK
|
||||
0x8F 0x2590 # RIGHT HALF BLOCK
|
||||
0x90 0x2591 # LIGHT SHADE
|
||||
0x91 0x2592 # MEDIUM SHADE
|
||||
0x92 0x2593 # DARK SHADE
|
||||
0x93 0x2320 # TOP HALF INTEGRAL
|
||||
0x94 0x25A0 # BLACK SQUARE
|
||||
0x95 0x2219 # BULLET OPERATOR
|
||||
0x96 0x221A # SQUARE ROOT
|
||||
0x97 0x2248 # ALMOST EQUAL TO
|
||||
0x98 0x2264 # LESS-THAN OR EQUAL TO
|
||||
0x99 0x2265 # GREATER-THAN OR EQUAL TO
|
||||
0x9A 0x00A0 # NO-BREAK SPACE
|
||||
0x9B 0x2321 # BOTTOM HALF INTEGRAL
|
||||
0x9C 0x00B0 # DEGREE SIGN
|
||||
0x9D 0x00B2 # SUPERSCRIPT TWO
|
||||
0x9E 0x00B7 # MIDDLE DOT
|
||||
0x9F 0x00F7 # DIVISION SIGN
|
||||
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
|
||||
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
|
||||
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
|
||||
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
|
||||
0xA4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
|
||||
0xA6 0x0456 # CYRILLIC SMALL LETTER BELORUSSIAN-UKRAINIAN I
|
||||
0xA7 0x0457 # CYRILLIC SMALL LETTER YI (UKRAINIAN)
|
||||
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
|
||||
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
|
||||
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
|
||||
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
|
||||
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
|
||||
0xAD 0x0491 # CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
|
||||
0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
|
||||
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
|
||||
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
|
||||
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
|
||||
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
|
||||
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||
0xB4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
|
||||
0xB6 0x0406 # CYRILLIC CAPITAL LETTER BELORUSSIAN-UKRAINIAN I
|
||||
0xB7 0x0407 # CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
|
||||
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
|
||||
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
|
||||
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
|
||||
0xBD 0x0490 # CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
|
||||
0xBD 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
|
||||
0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
|
||||
0xBF 0x00A9 # COPYRIGHT SIGN
|
||||
0xC0 0x044E # CYRILLIC SMALL LETTER YU
|
||||
0xC1 0x0430 # CYRILLIC SMALL LETTER A
|
||||
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
|
||||
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
|
||||
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||
0xC8 0x0445 # CYRILLIC SMALL LETTER HA
|
||||
0xC9 0x0438 # CYRILLIC SMALL LETTER I
|
||||
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||
0xCB 0x043A # CYRILLIC SMALL LETTER KA
|
||||
0xCC 0x043B # CYRILLIC SMALL LETTER EL
|
||||
0xCD 0x043C # CYRILLIC SMALL LETTER EM
|
||||
0xCE 0x043D # CYRILLIC SMALL LETTER EN
|
||||
0xCF 0x043E # CYRILLIC SMALL LETTER O
|
||||
0xD0 0x043F # CYRILLIC SMALL LETTER PE
|
||||
0xD1 0x044F # CYRILLIC SMALL LETTER YA
|
||||
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
|
||||
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
|
||||
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
|
||||
0xD5 0x0443 # CYRILLIC SMALL LETTER U
|
||||
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
|
||||
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
|
||||
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||
0xDC 0x044D # CYRILLIC SMALL LETTER E
|
||||
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
|
||||
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
|
||||
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
|
||||
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
|
||||
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
|
||||
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
|
||||
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
|
||||
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
|
||||
0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
|
||||
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
|
||||
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
|
||||
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
|
||||
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
|
||||
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
|
||||
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
|
||||
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
|
||||
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
|
||||
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
|
||||
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
|
||||
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
|
||||
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
|
||||
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
|
||||
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
|
||||
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
|
||||
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
|
||||
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
|
||||
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
|
||||
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
|
||||
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
|
||||
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
|
||||
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
|
||||
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
|
1
Resources/roman.txt
Normal file
1
Resources/roman.txt
Normal file
File diff suppressed because one or more lines are too long
15
Unix-only/KDE1-only/Antiword.kdelnk.eu
Normal file
15
Unix-only/KDE1-only/Antiword.kdelnk.eu
Normal file
@ -0,0 +1,15 @@
|
||||
# KDE Config File
|
||||
[KDE Desktop Entry]
|
||||
Comment[C]=MS Word reader
|
||||
SwallowTitle=
|
||||
SwallowExec=
|
||||
BinaryPattern=antiword;kantiword;
|
||||
Name=Antiword
|
||||
Name[C]=Antiword
|
||||
MimeType=
|
||||
Exec=kantiword a4 %f
|
||||
Icon=antiword.xpm
|
||||
TerminalOptions=
|
||||
Path=
|
||||
Type=Application
|
||||
Terminal=0
|
15
Unix-only/KDE1-only/Antiword.kdelnk.us
Normal file
15
Unix-only/KDE1-only/Antiword.kdelnk.us
Normal file
@ -0,0 +1,15 @@
|
||||
# KDE Config File
|
||||
[KDE Desktop Entry]
|
||||
Comment[C]=MS Word reader
|
||||
SwallowTitle=
|
||||
SwallowExec=
|
||||
BinaryPattern=antiword;kantiword;
|
||||
Name=Antiword
|
||||
Name[C]=Antiword
|
||||
MimeType=
|
||||
Exec=kantiword letter %f
|
||||
Icon=antiword.xpm
|
||||
TerminalOptions=
|
||||
Path=
|
||||
Type=Application
|
||||
Terminal=0
|
272
Unix-only/KDE1-only/antiword.xpm
Normal file
272
Unix-only/KDE1-only/antiword.xpm
Normal file
@ -0,0 +1,272 @@
|
||||
/* XPM */
|
||||
static char *antiword_48[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 48 48 217 2",
|
||||
/* colors */
|
||||
".. c #040204",
|
||||
".# c #548a04",
|
||||
".a c #840604",
|
||||
".b c #4c460c",
|
||||
".c c #bcc2bc",
|
||||
".d c #3c0604",
|
||||
".e c #b4820c",
|
||||
".f c #141e04",
|
||||
".g c #acaaa4",
|
||||
".h c #74560c",
|
||||
".i c #240604",
|
||||
".j c #3c5e0c",
|
||||
".k c #dca20c",
|
||||
".l c #0c1204",
|
||||
".m c #dce2dc",
|
||||
".n c #ac060c",
|
||||
".o c #543e0c",
|
||||
".p c #9c720c",
|
||||
".q c #3c2e0c",
|
||||
".r c #848284",
|
||||
".s c #e4b20c",
|
||||
".t c #140204",
|
||||
".u c #949694",
|
||||
".v c #24320c",
|
||||
".w c #b4b6b4",
|
||||
".x c #5c5a5c",
|
||||
".y c #741e0c",
|
||||
".z c #3c3e3c",
|
||||
".A c #ccd2cc",
|
||||
".B c #bc920c",
|
||||
".C c #ecf2ec",
|
||||
".D c #746e74",
|
||||
".E c #f4b20c",
|
||||
".F c #1c1604",
|
||||
".G c #94060c",
|
||||
".H c #6c260c",
|
||||
".I c #9ca29c",
|
||||
".J c #5c0604",
|
||||
".K c #84620c",
|
||||
".L c #d40604",
|
||||
".M c #5c4244",
|
||||
".N c #646664",
|
||||
".O c #cc9a0c",
|
||||
".P c #747a74",
|
||||
".Q c #f4ba0c",
|
||||
".R c #0c0204",
|
||||
".S c #c4cac4",
|
||||
".T c #141a04",
|
||||
".U c #8c8e8c",
|
||||
".V c #c4bebc",
|
||||
".W c #345204",
|
||||
".X c #acb2ac",
|
||||
".Y c #24160c",
|
||||
".Z c #e4aa0c",
|
||||
".0 c #e4eae4",
|
||||
".1 c #544a2c",
|
||||
".2 c #140e04",
|
||||
".3 c #9c9e9c",
|
||||
".4 c #2c2e2c",
|
||||
".5 c #4c4a4c",
|
||||
".6 c #f4faf4",
|
||||
".7 c #a40604",
|
||||
".8 c #242624",
|
||||
".9 c #fcba04",
|
||||
"#. c #44160c",
|
||||
"## c #7c5e0c",
|
||||
"#a c #14120c",
|
||||
"#b c #c4020c",
|
||||
"#c c #848a84",
|
||||
"#d c #9c969c",
|
||||
"#e c #bcbebc",
|
||||
"#f c #dcdadc",
|
||||
"#g c #c4920c",
|
||||
"#h c #6c6e6c",
|
||||
"#i c #3c363c",
|
||||
"#j c #3c520c",
|
||||
"#k c #7c160c",
|
||||
"#l c #4c060c",
|
||||
"#m c #b4aeac",
|
||||
"#n c #340604",
|
||||
"#o c #44720c",
|
||||
"#p c #ecb20c",
|
||||
"#q c #646264",
|
||||
"#r c #747674",
|
||||
"#s c #0c0e14",
|
||||
"#t c #1c161c",
|
||||
"#u c #9c0604",
|
||||
"#v c #a4a2a4",
|
||||
"#w c #6c0604",
|
||||
"#x c #8c6a0c",
|
||||
"#y c #dc0204",
|
||||
"#z c #d49a0c",
|
||||
"#A c #847e84",
|
||||
"#B c #0c0604",
|
||||
"#C c #cccac4",
|
||||
"#D c #ecae0c",
|
||||
"#E c #6c4e0c",
|
||||
"#F c #343634",
|
||||
"#G c #fcbe04",
|
||||
"#H c #14160c",
|
||||
"#I c #c4960c",
|
||||
"#J c #040604",
|
||||
"#K c #8c060c",
|
||||
"#L c #c4c2c4",
|
||||
"#M c #440604",
|
||||
"#N c #b48a0c",
|
||||
"#O c #1c1e1c",
|
||||
"#P c #acaeac",
|
||||
"#Q c #7c5a0c",
|
||||
"#R c #3c6204",
|
||||
"#S c #e4e2e4",
|
||||
"#T c #542224",
|
||||
"#U c #8c868c",
|
||||
"#V c #1c0204",
|
||||
"#W c #bcbabc",
|
||||
"#X c #645e64",
|
||||
"#Y c #444644",
|
||||
"#Z c #d4d2d4",
|
||||
"#0 c #f4f2f4",
|
||||
"#1 c #0c0e0c",
|
||||
"#2 c #64060c",
|
||||
"#3 c #242224",
|
||||
"#4 c #544e54",
|
||||
"#5 c #6c666c",
|
||||
"#6 c #643a0c",
|
||||
"#7 c #742a0c",
|
||||
"#8 c #ac7e0c",
|
||||
"#9 c #342e0c",
|
||||
"a. c #c48e0c",
|
||||
"a# c #5c460c",
|
||||
"aa c #4c3a0c",
|
||||
"ab c #444244",
|
||||
"ac c #7c7a7c",
|
||||
"ad c #949294",
|
||||
"ae c #eceaec",
|
||||
"af c #342e34",
|
||||
"ag c #fcfafc",
|
||||
"ah c #2c262c",
|
||||
"ai c #4c360c",
|
||||
"aj c #6c521c",
|
||||
"ak c #2c060c",
|
||||
"al c #b4b2b4",
|
||||
"am c #8c8a8c",
|
||||
"an c #a47a0c",
|
||||
"ao c #b4060c",
|
||||
"ap c #442e0c",
|
||||
"aq c #140e14",
|
||||
"ar c #7c7674",
|
||||
"as c #34560c",
|
||||
"at c #e4ae0c",
|
||||
"au c #4c4e4c",
|
||||
"av c #a4a6a4",
|
||||
"aw c #cccecc",
|
||||
"ax c #745a0c",
|
||||
"ay c #dca60c",
|
||||
"az c #848684",
|
||||
"aA c #949a94",
|
||||
"aB c #b4bab4",
|
||||
"aC c #5c5e5c",
|
||||
"aD c #747274",
|
||||
"aE c #f4b60c",
|
||||
"aF c #940a0c",
|
||||
"aG c #84660c",
|
||||
"aH c #f4be0c",
|
||||
"aI c #dcdedc",
|
||||
"aJ c #3c3a3c",
|
||||
"aK c #1c1a1c",
|
||||
"aL c #dc0604",
|
||||
"aM c #d49e0c",
|
||||
"aN c #6c520c",
|
||||
"aO c #c4c6c4",
|
||||
"aP c #e4e6e4",
|
||||
"aQ c #1c0604",
|
||||
"aR c #d4d6d4",
|
||||
"aS c #f4f6f4",
|
||||
"aT c #545254",
|
||||
"aU c #6c6a6c",
|
||||
"aV c #7c7e7c",
|
||||
"aW c #eceeec",
|
||||
"aX c #343234",
|
||||
"aY c #fcfefc",
|
||||
"aZ c #2c2a2c",
|
||||
"a0 c #84060c",
|
||||
"a1 c #141e0c",
|
||||
"a2 c #acaaac",
|
||||
"a3 c #e4b214",
|
||||
"a4 c #0c0a0c",
|
||||
"a5 c #1c160c",
|
||||
"a6 c #5c060c",
|
||||
"a7 c #241e24",
|
||||
"a8 c #d4060c",
|
||||
"a9 c #141a0c",
|
||||
"b. c #c4bec4",
|
||||
"b# c #34520c",
|
||||
"ba c #140e0c",
|
||||
"bb c #a4060c",
|
||||
"bc c #fcba0c",
|
||||
"bd c #7c5e14",
|
||||
"be c #141214",
|
||||
"bf c #bcbec4",
|
||||
"bg c #c49214",
|
||||
"bh c #6c6e74",
|
||||
"bi c #3c5214",
|
||||
"bj c #34060c",
|
||||
"bk c #9c060c",
|
||||
"bl c #0c060c",
|
||||
"bm c #cccacc",
|
||||
"bn c #fcbe0c",
|
||||
"bo c #141614",
|
||||
"bp c #04060c",
|
||||
"bq c #44060c",
|
||||
"br c #3c620c",
|
||||
"bs c #e4ae14",
|
||||
"bt c #4c4e54",
|
||||
"bu c #9c9a9c",
|
||||
"bv c #a4a6ac",
|
||||
"XX c None",
|
||||
/* pixels */
|
||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"XXXXaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYXXXX",
|
||||
"XXXXaY#WbmaYaYaYaw.waYavaIaYaYaYaYaYaW#vaSaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.AalaYa2#faYaYXXXX",
|
||||
"XXXXaY.3.uawaY#Zbu.uaYal#SaYaYaYaYaYaP#raWaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaR#W#WaYazaOaYaYXXXX",
|
||||
"XXXXaY#vaVadaWbuaV#daYaW.6aYaY#0aWaSaParaW#0aSaYaWagaS#0aY#0aW#0aYaY#0aW#0aWad#PaWaWaz#e#0aYXXXX",
|
||||
"XXXXaY.3#PaW.PaP.waAaY#AawaYaS#raraBaP.PaW#P.IaYaraRaO#caY.UaraAaYaYav#r#rac#rac#r.Par.P#vaYXXXX",
|
||||
"XXXXaY#v#PagaPag.w#daYaVawaRadaPaP#0aPar.U#LaWaY.PaRaO#UaY.U.XaWaY.ubm.caVaP.U#PaPaP.raBaWaYXXXX",
|
||||
"XXXXaY.3#PaYaYaY.waAaY#A.Aaw#AaYaYaYaP#r#raOaYaYaraRaO#caYbm#WaOaYaVawaw.raY.u.waYaYazbmaYaYXXXX",
|
||||
"XXXXaY#v.XaYaYaY#W.uaY#A.AaRbuaIaIaWaParadbfaeaY.u.SalamaY#Sav#daYaV#W#L.3aY.u#WaYaYazaOaYaYXXXX",
|
||||
"XXXXaY.3#PaYaYaY.w.uaYaVawaYaS#r#r.waP#raW#P.3aYaY#v#razaY.U#raAaY#A.PavaYaY.u.waYaY#UaOaYaYXXXX",
|
||||
"XXXXaYaSagaYaYaYagaSaYaSaYaYaYaSaSagaYaSaY.6agaYaYaS#L#caYagaSaSaYaSaSagaYaY.6agaYaYaSagaYaYXXXX",
|
||||
"XXXXaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaY.m.x.x.xamaY.x.xam#ZaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYXXXX",
|
||||
"XXXXaPaPaPaPaPaPaPaPaPaPaPawavavavbvad#FaJaKaX#v#Y#Y#h#PaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPXXXX",
|
||||
"XXXX#Lb.#eb.bf.Vbfb.b.bfb.aV....a4a4#3ad.U#Y#s#1#W#WbhaKbfb.b.bf.Vbfb.#eb.bf.Vb.bf#L.V.cb.#LXXXX",
|
||||
"XXXXaYaYaYaYaYaYaYaYaYaYaY#v....#rbuaV....aD#W#W#W#W#h#3aYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYaYXXXX",
|
||||
"XXXXawbmawbmawbmaw#Cbm#Y.zaT#rar#i.8aJad.Ua2#W#e#W#ea2az.zal#CawbmawbmawbmawbmawbmbmbmbmbmawXXXX",
|
||||
"XXXX#f#f#faIaR#fbu.N.N.5.5auaTbt.x.xaU#W#h.u#W#W#W#W#W#v...w#faIaR#f#f.X#q.N#q.N#q.N.N#P#f#fXXXX",
|
||||
"XXXX#0.C#0aW.A#Z#ha7#OacaV#X#3.8.ua2bububoaDalaAbu.X#e.g#3al.m#0#0.CaI.U.T.T.Ta9#H.....U#0.CXXXX",
|
||||
"XXXX#W#e#Wav....aTaAbua4..#Y#W#W#W.N..bp...Daz....az#W#W#W#3.N#W#e#Wab.v.#.#.#.##o....aD#W#eXXXX",
|
||||
"XXXXaS.xbo.8#Uaz.5bobe.3#v#PalboaK#s....bgajabavav.wacaZ#W.8#s#tbo#ta4#B.lba#1.l#9aya5adaSaSXXXX",
|
||||
"XXXXaRab..bebubu.5aK.D#W#rau.5....aibd#JayaN#F#W#4auaCaUbtbi.W.W.W.Wa1bja0.a.iai#8#Ga5#AaR#fXXXX",
|
||||
"XXXX#ZaDafba#h.U.5#3az.waba5ai....#Q#z..ay#EaZazaJaJ.xaD..b#.j#Rbr.j.b.H.7#ybj#Q.9.9.YacawawXXXX",
|
||||
"XXXXaYaY.u....aV.5....alaba#a3.R..#Q.O#Bay#E....aB#W#h.....R.R.R..#Banan.ta8#n#Q.9aH.YaAaYaYXXXX",
|
||||
"XXXX#W#Wbh....aVbuaD..al#Wac#a.Q.q#Q.9.Q.9#E..............ao.Lbb.R#p.Qbcbs.R..#Q.9.9.YaD#W#eXXXX",
|
||||
"XXXXaWaeaR#v...8#5#r..#F.Uac#Baa.paM.kaaat#E.f.j#R.jbras...d.G.7..#D.9.9#p....#Q.9#G.F.UaeaeXXXX",
|
||||
"XXXX#S.m#SaO....aTazabblac.u.5bpax#I.O#J.K.q.T#j.W#j.W#j#E#E#7#w..#p.9.9.EaN.Fax.9#G.Yaz#S.mXXXX",
|
||||
"XXXXaO#L#L.X#3bl.5amaAa4aU#P#m....#E#N.....taQ#V#V.Rba.q.9.9#Q....#D.9.9.9.9.o#x.9.Q.Y#r#LaOXXXX",
|
||||
"XXXXaYaYaYaYaY.4...8bua4..ab#P.......R....a0#y#y#ybq#E.9.9.9.h.....E.9.9.9.9.9#G.9#G.Y.uaYaYXXXX",
|
||||
"XXXXaObmaOaObm#3...8buaVafab#W.3ah..#O.3bu.Ma6#y#y#b#kai.9bc.Zan..#D.9.9.9.9.9.9.9.9a5araObmXXXX",
|
||||
"XXXX#SaIaI#SaI.uabbe.5adaJ#3aC#W.P.NaD#W.Nah#M#y#yaLa0.Y.9.9bn.B..#D.9bc.9.9bc.9.9#G.YazaIaIXXXX",
|
||||
"XXXXaWaWaWaWaWaWaD....adauaK#1#W#Wa2.UadaJ.4#T.naL#ybk#..B#p.9.Oap.E.9.9.9.9.9.9.9.Q.Y.UaW#0XXXX",
|
||||
"XXXX#W#W#W#W#W#W.x.....Ubu#q#s#W#W#q....#v#Waz.Ra8#y#y#b..aM.9.9.9.9.9.9.9bc.9.9.9#G.Y#h#W#WXXXX",
|
||||
"XXXXag.6ag.6ag.6aS.w..a4#5#q..#1ad.w#Pal#WaTbl.Ra8#y#y#b...OaH.9.9bc.9.9#D.2#g.9.9.9.Y.uagagXXXX",
|
||||
"XXXX#Z#Z#Z#Z#Z#Z#Z#v.....Naz#X..ad#Wavab#Y.Nacac#lao#y.L#K#6.e.9.9.9.9.9#p..a..9.9#Ga5aV#Z#ZXXXX",
|
||||
"XXXXaR#ZaR.AaR.A#Z.waCbpab#rad..aC.u.g#Y#Yambvar..#u#y#y#yakaG#G.9.9.9#G#D..##.O#G.9.YaV#ZaRXXXX",
|
||||
"XXXXag.6.6ag.6ag.6ag.6be..#i.U#1#B.x#W#W#m.X#A#sbaaFa8#y#y#n.K#p.9bc.9.9#p....#Q.Q.sa5.uag.6XXXX",
|
||||
"XXXX#e#W#W#W#W#W#W#W#Wba..#Fbubu#3.x#W#W#t..aJ#W#W#i#2#y#y#y#2ap.9.9.9.9#D....#Q.O.R..aD#W#WXXXX",
|
||||
"XXXXaWaW.CaW.CaW.CaW.CaO#Yaq.4bu.8bo#Y#W.u.U.3#WaB#i.J#y#y#y#w.q.9.9.9.9#p....a5.1#LaOaIaW.CXXXX",
|
||||
"XXXX#SaI#SaI#SaI#SaIaIaI#4..a4#daCah#3#e#W#e#W#W.Na7#na0#y#ybb.yaGaEbn.9#D..#Y.xaDaIaIaIaI#SXXXX",
|
||||
"XXXXbmaOaObm#LaOaObmaObm.Na7a4aVadaT#Obu.wbvbubu...8#O#V#y#y#ybb..#pay.ObgaX#vaOaObmaObmaOaOXXXX",
|
||||
"XXXXaYaYagaYaYaYaYaYaYagaYav....#raT....avau......al.uaQaL#y.L.n.R#pa#..beaYaYaYaYaYagaYaYaYXXXX",
|
||||
"XXXX#L#L#L#L#L#L#L#L#L#L#LaV....aqa4....#ta4aXavav#W.wad#V#V#V#V..a5arava2#L#L#L#L#L#L#L#L#LXXXX",
|
||||
"XXXXaP#SaP.maP#SaP.m#SaP.mbm.U.....5aV..azaA#PaP#S#S#S#f.ubuaA#daA#d.S#S#SaP.maP#SaP.maP#SaPXXXX",
|
||||
"XXXXae.0aeae.0ae.0aeae.0aeaeaIaJaJ.UbmaJaRaeae.0ae.0ae.0aeae.0ae.0aeae.0ae.0ae.0ae.0ae.0aeaeXXXX",
|
||||
"XXXX#e#W#W#W#W#W#W#W#W#W#W#W#e#W#W#W#W#W#W#W#W#W#W#e#Wbf#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#WXXXX",
|
||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
};
|
42
Unix-only/KDE1-only/kantiword.sh
Normal file
42
Unix-only/KDE1-only/kantiword.sh
Normal file
@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Script to make drag and drop in KDE possible
|
||||
#set -x
|
||||
#
|
||||
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Determine the temp directory
|
||||
if [ -d "$TMPDIR" ] && [ -w "$TMPDIR" ]
|
||||
then
|
||||
tmp_dir=$TMPDIR
|
||||
elif [ -d "$TEMP" ] && [ -w "$TEMP" ]
|
||||
then
|
||||
tmp_dir=$TEMP
|
||||
else
|
||||
tmp_dir="/tmp"
|
||||
fi
|
||||
out_file=$tmp_dir"/antiword.$$.ps"
|
||||
err_file=$tmp_dir"/antiword.$$.err"
|
||||
|
||||
# Determine the paper size
|
||||
paper_size=$1
|
||||
shift
|
||||
|
||||
# Make the PostScript file
|
||||
antiword -p $paper_size -i 0 "$@" 2>$err_file >$out_file
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm -f $out_file
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Show the PostScript file
|
||||
gv $out_file -nocentre -media $paper_size
|
||||
|
||||
# Clean up
|
||||
rm -f $out_file $err_file
|
||||
exit 0
|
8
Unix-only/KDE3-only/Antiword.desktop.eu
Normal file
8
Unix-only/KDE3-only/Antiword.desktop.eu
Normal file
@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
BinaryPattern=kantiword;Kantiword
|
||||
MimeType=application/msword
|
||||
Name=Antiword
|
||||
Exec=kantiword a4 "%f"
|
||||
Icon=antiword
|
||||
Type=Application
|
||||
Terminal=0
|
8
Unix-only/KDE3-only/Antiword.desktop.us
Normal file
8
Unix-only/KDE3-only/Antiword.desktop.us
Normal file
@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
BinaryPattern=kantiword;Kantiword
|
||||
MimeType=application/msword
|
||||
Name=Antiword
|
||||
Exec=kantiword letter "%f"
|
||||
Icon=antiword
|
||||
Type=Application
|
||||
Terminal=0
|
BIN
Unix-only/KDE3-only/hi32-app-antiword.png
Normal file
BIN
Unix-only/KDE3-only/hi32-app-antiword.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
Unix-only/KDE3-only/hi48-app-antiword.png
Normal file
BIN
Unix-only/KDE3-only/hi48-app-antiword.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
71
Unix-only/KDE3-only/kantiword.sh
Normal file
71
Unix-only/KDE3-only/kantiword.sh
Normal file
@ -0,0 +1,71 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Script to make drag and drop in KDE possible
|
||||
#set -x
|
||||
#
|
||||
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Determine the temp directory
|
||||
if [ -d "$TMPDIR" ] && [ -w "$TMPDIR" ]
|
||||
then
|
||||
tmp_dir=$TMPDIR
|
||||
elif [ -d "$TEMP" ] && [ -w "$TEMP" ]
|
||||
then
|
||||
tmp_dir=$TEMP
|
||||
else
|
||||
tmp_dir="/tmp"
|
||||
fi
|
||||
|
||||
# Try to create the temp files in a secure way
|
||||
if [ -x /bin/tempfile ]
|
||||
then
|
||||
out_file=`/bin/tempfile -d "$tmp_dir" -p antiword -s ".ps"` || exit 1
|
||||
err_file=`/bin/tempfile -d "$tmp_dir" -p antiword -s ".err"`
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm -f "$out_file"
|
||||
exit 1
|
||||
fi
|
||||
elif [ -x /bin/mktemp ]
|
||||
then
|
||||
out_file=`/bin/mktemp -q -p "$tmp_dir" antiword.ps.XXXXXXXXX` || exit 1
|
||||
err_file=`/bin/mktemp -q -p "$tmp_dir" antiword.err.XXXXXXXXX`
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
rm -f "$out_file"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Creating the temp files in an un-secure way
|
||||
out_file=$tmp_dir"/antiword.$$.ps"
|
||||
err_file=$tmp_dir"/antiword.$$.err"
|
||||
fi
|
||||
|
||||
# Determine the paper size
|
||||
paper_size=$1
|
||||
shift
|
||||
|
||||
# Make the PostScript file
|
||||
antiword -p $paper_size -i 0 "$@" 2>"$err_file" >"$out_file"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# Something went wrong
|
||||
if [ -r "$err_file" ] && [ -s "$err_file" ]
|
||||
then
|
||||
konsole --caption "Error from Antword" -e less "$err_file"
|
||||
fi
|
||||
# Clean up
|
||||
rm -f "$out_file" "$err_file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Show the PostScript file
|
||||
gv "$out_file" -nocentre -media $paper_size
|
||||
|
||||
# Clean up
|
||||
rm -f "$out_file" "$err_file"
|
||||
exit 0
|
BIN
Unix-only/KDE3-only/lo16-app-antiword.png
Normal file
BIN
Unix-only/KDE3-only/lo16-app-antiword.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 330 B |
BIN
Unix-only/KDE3-only/lo32-app-antiword.png
Normal file
BIN
Unix-only/KDE3-only/lo32-app-antiword.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 513 B |
49
Unix-only/RPM-only/antiword.spec
Normal file
49
Unix-only/RPM-only/antiword.spec
Normal file
@ -0,0 +1,49 @@
|
||||
|
||||
%define version 0.33
|
||||
%define release 1
|
||||
%define name antiword
|
||||
|
||||
Summary: an application to display Microsoft(R) Word files.
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}
|
||||
License: GPL
|
||||
Group: Applications/Text
|
||||
Source: http://www.winfield.demon.nl/linux/%{name}-%{version}.tar.gz
|
||||
URL: http://www.winfield.demon.nl/index.html
|
||||
BuildRoot: /var/tmp/%{name}-%{version}
|
||||
Packager: marco antonio cabazal <nightshiphter@yahoo.com>
|
||||
|
||||
%description
|
||||
Antiword is a free MS Word reader for Linux and RISC OS. There are ports to
|
||||
BeOS, OS/2, Mac OS X, Amiga, VMS, NetWare and DOS. Antiword converts the
|
||||
binary files from Word 2, 6, 7, 97, 2000 and 2002 to plain text and to
|
||||
PostScript TM.
|
||||
.
|
||||
|
||||
%prep
|
||||
# nothing to be done here
|
||||
|
||||
%build
|
||||
make all
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
install -d 555 $RPM_BUILD_ROOT/%{_prefix}/bin
|
||||
install -d 555 $RPM_BUILD_ROOT/%{_prefix}/share/antiword
|
||||
install -d 555 $RPM_BUILD_ROOT/%{_prefix}/share/man/man1
|
||||
install -m 555 ./antiword $RPM_BUILD_ROOT%{_prefix}/bin/antiword
|
||||
install -m 555 ./kantiword $RPM_BUILD_ROOT%{_prefix}/bin/kantiword
|
||||
install -m 444 ./Resources/* $RPM_BUILD_ROOT%{_prefix}/share/antiword
|
||||
install -m 444 ./Docs/antiword.1 $RPM_BUILD_ROOT/%{_prefix}/share/man/man1/antiword.1
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%doc Docs/*
|
||||
%{_prefix}/bin/*
|
||||
%{_prefix}/share/antiword/*
|
||||
%{_prefix}/share/man/man1/*
|
||||
|
2251
Unix-only/fontinfo.h
Normal file
2251
Unix-only/fontinfo.h
Normal file
File diff suppressed because it is too large
Load Diff
207
Unix-only/fontinfo.pl
Executable file
207
Unix-only/fontinfo.pl
Executable file
@ -0,0 +1,207 @@
|
||||
#! /usr/bin/perl -w
|
||||
#
|
||||
# Generate the fontinformation tables for the required fonts (Linux version)
|
||||
#
|
||||
|
||||
@charnames1 = (
|
||||
"ellipsis", "trademark", "perthousand", "bullet",
|
||||
"quoteleft", "quoteright", "guilsinglleft", "guilsinglright",
|
||||
"quotedblleft", "quotedblright", "quotedblbase", "endash", "emdash",
|
||||
"minus", "OE", "oe", "dagger", "daggerdbl", "fi", "fl",
|
||||
"space", "exclamdown", "cent", "sterling", "currency",
|
||||
"yen", "brokenbar", "section", "dieresis", "copyright",
|
||||
"ordfeminine", "guillemotleft", "logicalnot", "hyphen", "registered",
|
||||
"macron", "degree", "plusminus", "twosuperior", "threesuperior",
|
||||
"acute", "mu", "paragraph", "periodcentered", "cedilla",
|
||||
"onesuperior", "ordmasculine", "guillemotright", "onequarter",
|
||||
"onehalf", "threequarters", "questiondown", "Agrave", "Aacute",
|
||||
"Acircumflex", "Atilde", "Adieresis", "Aring", "AE", "Ccedilla",
|
||||
"Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute",
|
||||
"Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute",
|
||||
"Ocircumflex", "Otilde", "Odieresis", "multiply", "Oslash",
|
||||
"Ugrave", "Uacute", "Ucircumflex", "Udieresis", "Yacute", "Thorn",
|
||||
"germandbls", "agrave", "aacute", "acircumflex", "atilde",
|
||||
"adieresis", "aring", "ae", "ccedilla", "egrave", "eacute",
|
||||
"ecircumflex", "edieresis", "igrave", "iacute", "icircumflex",
|
||||
"idieresis", "eth", "ntilde", "ograve", "oacute", "ocircumflex",
|
||||
"otilde", "odieresis", "divide", "oslash", "ugrave", "uacute",
|
||||
"ucircumflex", "udieresis", "yacute", "thorn", "ydieresis"
|
||||
);
|
||||
|
||||
@charnames2 = (
|
||||
"space", "Aogonek", "breve", "Lslash", "currency", "Lcaron",
|
||||
"Sacute", "section", "dieresis", "Scaron", "Scedilla",
|
||||
"Tcaron", "Zacute", "hyphen", "Zcaron", "Zdotaccent", "ring",
|
||||
"aogonek", "ogonek", "lslash", "acute", "lcaron", "sacute",
|
||||
"caron", "cedilla", "scaron", "scedilla", "tcaron",
|
||||
"zacute", "hungarumlaut", "zcaron", "zdotaccent", "Racute",
|
||||
"Aacute", "Acircumflex", "Abreve", "Adieresis", "Lacute",
|
||||
"Cacute", "Ccedilla", "Ccaron", "Eacute", "Eogonek",
|
||||
"Edieresis", "Ecaron", "Iacute", "Icircumflex", "Dcaron",
|
||||
"Dslash", "Nacute", "Ncaron", "Oacute", "Ocircumflex",
|
||||
"Ohungarumlaut", "Odieresis", "multiply", "Rcaron", "Uring",
|
||||
"Uacute", "Uhungarumlaut", "Udieresis", "Yacute", "Tcommaaccent",
|
||||
"germandbls", "racute", "aacute", "acircumflex", "abreve",
|
||||
"adieresis", "lacute", "cacute", "ccedilla", "ccaron", "eacute",
|
||||
"eogonek", "edieresis", "ecaron", "iacute", "icircumflex",
|
||||
"dcaron", "dmacron", "nacute", "ncaron", "oacute", "ocircumflex",
|
||||
"ohungarumlaut", "odieresis", "divide", "rcaron", "uring",
|
||||
"uacute", "uhungarumlaut", "udieresis", "yacute", "tcommaaccent",
|
||||
"dotaccent"
|
||||
);
|
||||
|
||||
$gs_dir1 = '/usr/share/ghostscript/fonts';
|
||||
$gs_dir2 = '/usr/share/ghostscript/fonts2';
|
||||
|
||||
@fontnames = (
|
||||
"Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique",
|
||||
"Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic",
|
||||
"Helvetica", "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique",
|
||||
"Palatino-Roman", "Palatino-Bold", "Palatino-Italic", "Palatino-BoldItalic",
|
||||
"Helvetica-Narrow", "Helvetica-Narrow-Bold", "Helvetica-Narrow-Oblique", "Helvetica-Narrow-BoldOblique",
|
||||
"Bookman-Light", "Bookman-Demi", "Bookman-LightItalic", "Bookman-DemiItalic",
|
||||
"AvantGarde-Book", "AvantGarde-Demi", "AvantGarde-BookOblique", "AvantGarde-DemiOblique",
|
||||
"NewCenturySchlbk-Roman", "NewCenturySchlbk-Bold", "NewCenturySchlbk-Italic", "NewCenturySchlbk-BoldItalic",
|
||||
);
|
||||
|
||||
@files = (
|
||||
"n022003l.afm", "n022004l.afm", "n022023l.afm", "n022024l.afm",
|
||||
"n021003l.afm", "n021004l.afm", "n021023l.afm", "n021024l.afm",
|
||||
"n019003l.afm", "n019004l.afm", "n019023l.afm", "n019024l.afm",
|
||||
"p052003l.afm", "p052004l.afm", "p052023l.afm", "p052024l.afm",
|
||||
"n019043l.afm", "n019044l.afm", "n019063l.afm", "n019064l.afm",
|
||||
"b018012l.afm", "b018015l.afm", "b018032l.afm", "b018035l.afm",
|
||||
"a010013l.afm", "a010015l.afm", "a010033l.afm", "a010035l.afm",
|
||||
"c059013l.afm", "c059016l.afm", "c059033l.afm", "c059036l.afm",
|
||||
);
|
||||
|
||||
|
||||
# Generate the array with the fontnames
|
||||
sub generate_fontnames
|
||||
{
|
||||
printf STDOUT "static const char *szFontnames[%d] = {\n", $#fontnames + 1;
|
||||
for ($n = 0; $n <= $#fontnames; $n++) {
|
||||
printf STDOUT "\t\"%s\",\n", $fontnames[$n];
|
||||
}
|
||||
printf STDOUT "};\n";
|
||||
}
|
||||
|
||||
# Generate the array with the character widths
|
||||
sub generate_character_widths
|
||||
{
|
||||
my ($char_set, $gs_dir, @charnames) = @_;
|
||||
my ($n, $i, $file, $name, $start);
|
||||
my (@a, @charwidth);
|
||||
|
||||
if ($char_set == 1) {
|
||||
$start = 140;
|
||||
} else {
|
||||
$start = 160;
|
||||
}
|
||||
printf STDOUT "static unsigned short ausCharacterWidths%d[%d][256] = {\n", $char_set, $#files + 1;
|
||||
for ($n = 0; $n <= $#files; $n++) {
|
||||
$file = $files[$n];
|
||||
$name = $fontnames[$n];
|
||||
open(F_IN, "<$gs_dir/$file") || die "Cannot open $gs_dir/$file";
|
||||
printf STDOUT "\t{\t/* %s */\n", $name;
|
||||
while (<F_IN>) {
|
||||
chop();
|
||||
@a = split(/\s+/);
|
||||
if ($a[0] eq 'UnderlinePosition') {
|
||||
$underlineposition[$n] = $a[1];
|
||||
} elsif ($a[0] eq 'UnderlineThickness') {
|
||||
#printf STDERR "%d %d\n", $a[0], $a[1];
|
||||
$underlinethickness[$n] = $a[1];
|
||||
} elsif ($a[0] eq 'C' && $a[2] eq ';' && $a[3] eq 'WX') {
|
||||
#printf STDERR "%d %d %s\n", $a[1], $a[4], $a[7];
|
||||
if (($a[1] < 0 || $a[1] >= 129) && defined($a[7])) {
|
||||
for ($i = 0; $i <= $#charnames; $i++) {
|
||||
if ($charnames[$i] eq $a[7]) {
|
||||
$charwidth[$start + $i] = $a[4];
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($a[1] >= 0 && $a[1] <= 128 && !defined($charwidth[$a[1]])) {
|
||||
$charwidth[$a[1]] = $a[4];
|
||||
}
|
||||
}
|
||||
if (defined($a[7])) {
|
||||
for ($i = 0; $i <= $#charnames; $i++) {
|
||||
if ($charnames[$i] eq $a[7]) {
|
||||
$charwidth[$start + $i] = $a[4];
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
close(F_IN);
|
||||
|
||||
# Set the width of the control characters zero
|
||||
for ($i = 0; $i < 32; $i++) {
|
||||
$charwidth[$i] = 0;
|
||||
}
|
||||
# Set the width of the unused characters to zero
|
||||
for ($i = 127; $i < $start; $i++) {
|
||||
$charwidth[$i] = 0;
|
||||
}
|
||||
|
||||
# Print the results
|
||||
for ($i = 0; $i < 256; $i += 8) {
|
||||
printf STDOUT "\t/* %3d */ ", $i;
|
||||
for ($j = 0; $j < 8; $j++) {
|
||||
if (!defined($charwidth[$i + $j])) {
|
||||
printf STDERR "%d:%s: character %3d is undefined\n", $char_set, $name, $i + $j;
|
||||
$charwidth[$i + $j] = 0;
|
||||
}
|
||||
printf STDOUT "%5d,", $charwidth[$i + $j];
|
||||
}
|
||||
printf STDOUT "\n";
|
||||
}
|
||||
printf STDOUT "\t},\n";
|
||||
undef @charwidth;
|
||||
}
|
||||
printf STDOUT "};\n";
|
||||
}
|
||||
|
||||
# Generate the array with the underline information
|
||||
sub generate_underline_information
|
||||
{
|
||||
printf STDOUT "#if 0 /* Until this array is needed */\n";
|
||||
|
||||
printf STDOUT "static int aiUnderlineInfo[%d][2] = {\n", $#fontnames + 1;
|
||||
for ($n = 0; $n <= $#fontnames; $n++) {
|
||||
if (!defined($underlineposition[$n])) {
|
||||
$underlineposition[$n] = 0;
|
||||
}
|
||||
if (!defined($underlinethickness[$n])) {
|
||||
$underlinethickness[$n] = 0;
|
||||
}
|
||||
printf STDOUT "\t{ %d, %d },\n", $underlineposition[$n], $underlinethickness[$n];
|
||||
}
|
||||
printf STDOUT "};\n";
|
||||
|
||||
printf STDOUT "#endif /* 0 */\n";
|
||||
}
|
||||
|
||||
|
||||
# main()
|
||||
|
||||
if ($#fontnames != $#files) {
|
||||
die "The fontnames-array and the files-array are of unequel length";
|
||||
}
|
||||
if ($#charnames1 != 255 - 140) {
|
||||
die "The charname1 table length is $#charnames1";
|
||||
}
|
||||
if ($#charnames2 != 255 - 160) {
|
||||
die "The charname2 table length is $#charnames2";
|
||||
}
|
||||
|
||||
printf STDOUT "/* THIS FILE IS AUTOMATICALLY GENERATED - DO NOT EDIT! */\n";
|
||||
|
||||
&generate_fontnames();
|
||||
&generate_character_widths(1, $gs_dir1, @charnames1);
|
||||
&generate_character_widths(2, $gs_dir2, @charnames2);
|
||||
&generate_underline_information();
|
||||
|
||||
exit 0;
|
735
antiword.h
Normal file
735
antiword.h
Normal file
@ -0,0 +1,735 @@
|
||||
/*
|
||||
* antiword.h
|
||||
* Copyright (C) 1998-2004 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Generic include file for project 'Antiword'
|
||||
*/
|
||||
|
||||
#if !defined(__antiword_h)
|
||||
#define __antiword_h 1
|
||||
|
||||
#if defined(DEBUG) == defined(NDEBUG)
|
||||
#error Exactly one of the DEBUG and NDEBUG flags MUST be set
|
||||
#endif /* DEBUG == NDEBUG */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#if defined(__riscos)
|
||||
#include "DeskLib:Font.h"
|
||||
#include "DeskLib:Wimp.h"
|
||||
#include "Desklib:Window.h"
|
||||
#include "drawfile.h"
|
||||
#define window_ANY event_ANY
|
||||
#define icon_ANY event_ANY
|
||||
#else
|
||||
#include <sys/types.h>
|
||||
#endif /* __riscos */
|
||||
#include "wordconst.h"
|
||||
#include "wordtypes.h"
|
||||
#include "fail.h"
|
||||
#include "debug.h"
|
||||
|
||||
/* Constants */
|
||||
#if !defined(PATH_MAX)
|
||||
#if defined(__riscos)
|
||||
#define PATH_MAX 255
|
||||
#else
|
||||
#if defined(MAXPATHLEN)
|
||||
#define PATH_MAX MAXPATHLEN
|
||||
#else
|
||||
#define PATH_MAX 1024
|
||||
#endif /* MAXPATHLEN */
|
||||
#endif /* __riscos */
|
||||
#endif /* !PATH_MAX */
|
||||
|
||||
#if !defined(CHAR_BIT)
|
||||
#define CHAR_BIT 8
|
||||
#endif /* CHAR_BIT */
|
||||
|
||||
#if !defined(TIME_T_MIN)
|
||||
#define TIME_T_MIN ((time_t)0 < (time_t)-1 ?\
|
||||
(time_t)0 :\
|
||||
(time_t)1 << (sizeof(time_t) * CHAR_BIT - 1))
|
||||
#endif /* TIMER_T_MIN */
|
||||
|
||||
#if !defined(TIME_T_MAX)
|
||||
#if defined(__TURBOC__) /* Turbo C chokes on the subtraction below */
|
||||
#define TIME_T_MAX (LONG_MAX)
|
||||
#else /* All others */
|
||||
#define TIME_T_MAX (~(time_t)0 - TIME_T_MIN)
|
||||
#endif /* __TURBOC__ */
|
||||
#endif /* TIME_T_MAX */
|
||||
|
||||
#if !defined(SIZE_T_MAX)
|
||||
#define SIZE_T_MAX (~(size_t)0)
|
||||
#endif /* SIZE_T_MAX */
|
||||
|
||||
#if defined(__riscos)
|
||||
#define FILE_SEPARATOR "."
|
||||
#elif defined(__dos) || defined(__CYGMING__)
|
||||
#define FILE_SEPARATOR "\\"
|
||||
#else /* All others */
|
||||
#define FILE_SEPARATOR "/"
|
||||
#endif /* __riscos */
|
||||
|
||||
/* PNG chunk names */
|
||||
#define PNG_CN_IDAT 0x49444154
|
||||
#define PNG_CN_IEND 0x49454e44
|
||||
#define PNG_CN_IHDR 0x49484452
|
||||
#define PNG_CN_PLTE 0x504c5445
|
||||
|
||||
/* The screen width */
|
||||
#define MIN_SCREEN_WIDTH 45
|
||||
#define DEFAULT_SCREEN_WIDTH 76
|
||||
#define MAX_SCREEN_WIDTH 145
|
||||
|
||||
#if defined(__riscos)
|
||||
/* The scale factors as percentages */
|
||||
#define MIN_SCALE_FACTOR 25
|
||||
#define DEFAULT_SCALE_FACTOR 100
|
||||
#define MAX_SCALE_FACTOR 400
|
||||
|
||||
/* Filetypes */
|
||||
#define FILETYPE_MSWORD 0xae6
|
||||
#define FILETYPE_DRAW 0xaff
|
||||
#define FILETYPE_JPEG 0xc85
|
||||
#define FILETYPE_POSCRIPT 0xff5
|
||||
#define FILETYPE_SPRITE 0xff9
|
||||
#define FILETYPE_TEXT 0xfff
|
||||
|
||||
/* The button numbers in the choices window */
|
||||
#define CHOICES_DEFAULT_BUTTON 3
|
||||
#define CHOICES_SAVE_BUTTON 2
|
||||
#define CHOICES_CANCEL_BUTTON 1
|
||||
#define CHOICES_APPLY_BUTTON 0
|
||||
#define CHOICES_BREAK_BUTTON 6
|
||||
#define CHOICES_BREAK_WRITEABLE 7
|
||||
#define CHOICES_BREAK_UP_BUTTON 8
|
||||
#define CHOICES_BREAK_DOWN_BUTTON 9
|
||||
#define CHOICES_NO_BREAK_BUTTON 11
|
||||
#define CHOICES_AUTOFILETYPE_BUTTON 14
|
||||
#define CHOICES_HIDDEN_TEXT_BUTTON 22
|
||||
#define CHOICES_WITH_IMAGES_BUTTON 17
|
||||
#define CHOICES_NO_IMAGES_BUTTON 18
|
||||
#define CHOICES_TEXTONLY_BUTTON 19
|
||||
#define CHOICES_SCALE_WRITEABLE 25
|
||||
#define CHOICES_SCALE_UP_BUTTON 26
|
||||
#define CHOICES_SCALE_DOWN_BUTTON 27
|
||||
|
||||
/* The button numbers in the scale view window */
|
||||
#define SCALE_CANCEL_BUTTON 1
|
||||
#define SCALE_SCALE_BUTTON 0
|
||||
#define SCALE_SCALE_WRITEABLE 3
|
||||
#define SCALE_50_PCT 5
|
||||
#define SCALE_75_PCT 6
|
||||
#define SCALE_100_PCT 7
|
||||
#define SCALE_150_PCT 8
|
||||
|
||||
/* Save menu fields */
|
||||
#define SAVEMENU_SCALEVIEW 0
|
||||
#define SAVEMENU_SAVEDRAW 1
|
||||
#define SAVEMENU_SAVETEXT 2
|
||||
#else
|
||||
/* Margins for the PostScript version */
|
||||
#define PS_LEFT_MARGIN (72 * 640L)
|
||||
#define PS_RIGHT_MARGIN (48 * 640L)
|
||||
#define PS_TOP_MARGIN (72 * 640L)
|
||||
#define PS_BOTTOM_MARGIN (72 * 640L)
|
||||
#endif /* __riscos */
|
||||
|
||||
/* Macros */
|
||||
#define STREQ(x,y) (*(x) == *(y) && strcmp(x,y) == 0)
|
||||
#define STRNEQ(x,y,n) (*(x) == *(y) && strncmp(x,y,n) == 0)
|
||||
#if defined(__dos) || defined(__EMX__)
|
||||
#define STRCEQ(x,y) (stricmp(x,y) == 0)
|
||||
#else
|
||||
#define STRCEQ(x,y) (strcasecmp(x,y) == 0)
|
||||
#endif /* __dos or __EMX__ */
|
||||
#define elementsof(a) (sizeof(a) / sizeof(a[0]))
|
||||
#define odd(x) (((x)&0x01)!=0)
|
||||
#define ROUND4(x) (((x)+3)&~0x03)
|
||||
#define ROUND128(x) (((x)+127)&~0x7f)
|
||||
#define BIT(x) (1UL << (x))
|
||||
#if !defined(max)
|
||||
#define max(x,y) ((x)>(y)?(x):(y))
|
||||
#endif /* !max */
|
||||
#if !defined(min)
|
||||
#define min(x,y) ((x)<(y)?(x):(y))
|
||||
#endif /* !min */
|
||||
|
||||
#if defined(__riscos)
|
||||
/* The name of the table font */
|
||||
#define TABLE_FONT "Corpus.Medium"
|
||||
/* Names of the default fonts */
|
||||
#define FONT_MONOSPACED_PLAIN "Corpus.Medium"
|
||||
#define FONT_MONOSPACED_BOLD "Corpus.Bold"
|
||||
#define FONT_MONOSPACED_ITALIC "Corpus.Medium.Oblique"
|
||||
#define FONT_MONOSPACED_BOLDITALIC "Corpus.Bold.Oblique"
|
||||
#define FONT_SERIF_PLAIN "Trinity.Medium"
|
||||
#define FONT_SERIF_BOLD "Trinity.Bold"
|
||||
#define FONT_SERIF_ITALIC "Trinity.Medium.Italic"
|
||||
#define FONT_SERIF_BOLDITALIC "Trinity.Bold.Italic"
|
||||
#define FONT_SANS_SERIF_PLAIN "Homerton.Medium"
|
||||
#define FONT_SANS_SERIF_BOLD "Homerton.Bold"
|
||||
#define FONT_SANS_SERIF_ITALIC "Homerton.Medium.Oblique"
|
||||
#define FONT_SANS_SERIF_BOLDITALIC "Homerton.Bold.Oblique"
|
||||
#else
|
||||
/* The name of the table font */
|
||||
#define TABLE_FONT "Courier"
|
||||
/* Names of the default fonts */
|
||||
#define FONT_MONOSPACED_PLAIN "Courier"
|
||||
#define FONT_MONOSPACED_BOLD "Courier-Bold"
|
||||
#define FONT_MONOSPACED_ITALIC "Courier-Oblique"
|
||||
#define FONT_MONOSPACED_BOLDITALIC "Courier-BoldOblique"
|
||||
#define FONT_SERIF_PLAIN "Times-Roman"
|
||||
#define FONT_SERIF_BOLD "Times-Bold"
|
||||
#define FONT_SERIF_ITALIC "Times-Italic"
|
||||
#define FONT_SERIF_BOLDITALIC "Times-BoldItalic"
|
||||
#define FONT_SANS_SERIF_PLAIN "Helvetica"
|
||||
#define FONT_SANS_SERIF_BOLD "Helvetica-Bold"
|
||||
#define FONT_SANS_SERIF_ITALIC "Helvetica-Oblique"
|
||||
#define FONT_SANS_SERIF_BOLDITALIC "Helvetica-BoldOblique"
|
||||
/* The name of the antiword directories and the font information file */
|
||||
#if defined(__dos)
|
||||
#define GLOBAL_ANTIWORD_DIR "C:\\antiword"
|
||||
#define ANTIWORD_DIR "antiword"
|
||||
#define FONTNAMES_FILE "fontname.txt"
|
||||
#elif defined(__amigaos)
|
||||
#define GLOBAL_ANTIWORD_DIR "SYS:.antiword"
|
||||
#define ANTIWORD_DIR ".antiword"
|
||||
#define FONTNAMES_FILE "fontnames"
|
||||
#elif defined(N_PLAT_NLM)
|
||||
#define GLOBAL_ANTIWORD_DIR "SYS:/antiword"
|
||||
#define ANTIWORD_DIR "antiword"
|
||||
#define FONTNAMES_FILE "fontname.txt"
|
||||
#elif defined(__vms)
|
||||
#define GLOBAL_ANTIWORD_DIR "/usr/share/antiword"
|
||||
#define ANTIWORD_DIR "antiword"
|
||||
#define FONTNAMES_FILE "fontnames"
|
||||
#elif defined(__BEOS__)
|
||||
#define GLOBAL_ANTIWORD_DIR "/boot/home/config/apps/antiword"
|
||||
#define ANTIWORD_DIR "antiword"
|
||||
#define FONTNAMES_FILE "fontnames"
|
||||
#elif defined(__CYGMING__)
|
||||
#define GLOBAL_ANTIWORD_DIR "C:\\antiword"
|
||||
#define ANTIWORD_DIR "antiword"
|
||||
#define FONTNAMES_FILE "fontnames"
|
||||
#elif defined(__Plan9__)
|
||||
#define GLOBAL_ANTIWORD_DIR "/sys/lib/antiword"
|
||||
#define ANTIWORD_DIR "lib/antiword"
|
||||
#define FONTNAMES_FILE "fontnames"
|
||||
#elif defined(__sun__)
|
||||
#define GLOBAL_ANTIWORD_DIR "/usr/local/share/antiword"
|
||||
#define ANTIWORD_DIR ".antiword"
|
||||
#define FONTNAMES_FILE "fontnames"
|
||||
#else /* All others */
|
||||
#define GLOBAL_ANTIWORD_DIR "/usr/share/antiword"
|
||||
#define ANTIWORD_DIR ".antiword"
|
||||
#define FONTNAMES_FILE "fontnames"
|
||||
#endif /* __dos */
|
||||
/* The names of grouped mapping files */
|
||||
/* ASCII */
|
||||
#define MAPPING_FILE_CP437 "cp437.txt"
|
||||
/* Latin1 */
|
||||
#define MAPPING_FILE_8859_1 "8859-1.txt"
|
||||
/* Latin2 */
|
||||
#define MAPPING_FILE_8859_2 "8859-2.txt"
|
||||
#define MAPPING_FILE_CP852 "cp852.txt"
|
||||
#define MAPPING_FILE_CP1250 "cp1250.txt"
|
||||
/* Cyrillic */
|
||||
#define MAPPING_FILE_8859_5 "8859-5.txt"
|
||||
#define MAPPING_FILE_KOI8_R "koi8-r.txt"
|
||||
#define MAPPING_FILE_KOI8_U "koi8-u.txt"
|
||||
#define MAPPING_FILE_CP866 "cp866.txt"
|
||||
#define MAPPING_FILE_CP1251 "cp1251.txt"
|
||||
/* Latin9 */
|
||||
#define MAPPING_FILE_8859_15 "8859-15.txt"
|
||||
/* UTF-8 */
|
||||
#define MAPPING_FILE_UTF_8 "UTF-8.txt"
|
||||
#endif /* __riscos */
|
||||
|
||||
/* Prototypes */
|
||||
|
||||
/* asc85enc.c */
|
||||
extern void vASCII85EncodeByte(FILE *, int);
|
||||
extern void vASCII85EncodeArray(FILE *, FILE *, size_t);
|
||||
extern void vASCII85EncodeFile(FILE *, FILE *, size_t);
|
||||
/* blocklist.c */
|
||||
extern void vDestroyTextBlockList(void);
|
||||
extern BOOL bAdd2TextBlockList(const text_block_type *);
|
||||
extern void vSplitBlockList(FILE *, ULONG, ULONG, ULONG, ULONG, ULONG,
|
||||
ULONG, ULONG, ULONG, BOOL);
|
||||
extern BOOL bExistsHdrFtr(void);
|
||||
extern BOOL bExistsTextBox(void);
|
||||
extern BOOL bExistsHdrTextBox(void);
|
||||
extern USHORT usNextChar(FILE *, list_id_enum, ULONG *, ULONG *, USHORT *);
|
||||
extern USHORT usToHdrFtrPosition(FILE *, ULONG);
|
||||
extern USHORT usToFootnotePosition(FILE *, ULONG);
|
||||
extern ULONG ulCharPos2FileOffsetX(ULONG, list_id_enum *);
|
||||
extern ULONG ulCharPos2FileOffset(ULONG);
|
||||
extern ULONG ulHdrFtrOffset2CharPos(ULONG);
|
||||
extern ULONG ulGetSeqNumber(ULONG);
|
||||
#if defined(__riscos)
|
||||
extern ULONG ulGetDocumentLength(void);
|
||||
#endif /* __riscos */
|
||||
/* chartrans.c */
|
||||
extern UCHAR ucGetBulletCharacter(conversion_type, encoding_type);
|
||||
extern UCHAR ucGetNbspCharacter(void);
|
||||
extern BOOL bReadCharacterMappingTable(FILE *);
|
||||
extern ULONG ulTranslateCharacters(USHORT, ULONG, int, conversion_type,
|
||||
encoding_type, BOOL);
|
||||
extern ULONG ulToUpper(ULONG);
|
||||
/* datalist.c */
|
||||
extern void vDestroyDataBlockList(void);
|
||||
extern BOOL bAdd2DataBlockList(const data_block_type *);
|
||||
extern ULONG ulGetDataOffset(FILE *);
|
||||
extern BOOL bSetDataOffset(FILE *, ULONG);
|
||||
extern int iNextByte(FILE *);
|
||||
extern USHORT usNextWord(FILE *);
|
||||
extern ULONG ulNextLong(FILE *);
|
||||
extern USHORT usNextWordBE(FILE *);
|
||||
extern ULONG ulNextLongBE(FILE *);
|
||||
extern size_t tSkipBytes(FILE *, size_t);
|
||||
extern ULONG ulDataPos2FileOffset(ULONG);
|
||||
/* depot.c */
|
||||
extern void vDestroySmallBlockList(void);
|
||||
extern BOOL bCreateSmallBlockList(ULONG, const ULONG *, size_t);
|
||||
extern ULONG ulDepotOffset(ULONG, size_t);
|
||||
/* dib2eps & dib2sprt.c */
|
||||
extern BOOL bTranslateDIB(diagram_type *,
|
||||
FILE *, ULONG, const imagedata_type *);
|
||||
#if defined(__dos)
|
||||
/* dos.c */
|
||||
extern int iGetCodepage(void);
|
||||
#endif /* __dos */
|
||||
/* doclist.c */
|
||||
extern void vDestroyDocumentInfoList(void);
|
||||
extern void vCreateDocumentInfoList(const document_block_type *);
|
||||
extern UCHAR ucGetDopHdrFtrSpecification(void);
|
||||
/* draw.c & output.c */
|
||||
extern BOOL bAddDummyImage(diagram_type *, const imagedata_type *);
|
||||
extern diagram_type *pCreateDiagram(const char *, const char *);
|
||||
extern void vPrologue2(diagram_type *, int);
|
||||
extern void vMove2NextLine(diagram_type *, drawfile_fontref, USHORT);
|
||||
extern void vSubstring2Diagram(diagram_type *,
|
||||
char *, size_t, long, UCHAR, USHORT,
|
||||
drawfile_fontref, USHORT, USHORT);
|
||||
extern void vStartOfParagraph1(diagram_type *, long);
|
||||
extern void vStartOfParagraph2(diagram_type *);
|
||||
extern void vEndOfParagraph(diagram_type *, drawfile_fontref, USHORT, long);
|
||||
extern void vEndOfPage(diagram_type *, long, BOOL);
|
||||
extern void vSetHeaders(diagram_type *, USHORT);
|
||||
extern void vStartOfList(diagram_type *, UCHAR, BOOL);
|
||||
extern void vEndOfList(diagram_type *);
|
||||
extern void vStartOfListItem(diagram_type *, BOOL);
|
||||
extern void vEndOfTable(diagram_type *);
|
||||
extern BOOL bAddTableRow(diagram_type *, char **, int,
|
||||
const short *, UCHAR);
|
||||
#if defined(__riscos)
|
||||
extern BOOL bDestroyDiagram(event_pollblock *, void *);
|
||||
extern void vImage2Diagram(diagram_type *, const imagedata_type *,
|
||||
UCHAR *, size_t);
|
||||
extern BOOL bVerifyDiagram(diagram_type *);
|
||||
extern void vShowDiagram(diagram_type *);
|
||||
extern void vMainButtonClick(mouse_block *);
|
||||
extern BOOL bMainKeyPressed(event_pollblock *, void *);
|
||||
extern BOOL bMainEventHandler(event_pollblock *, void *);
|
||||
extern BOOL bRedrawMainWindow(event_pollblock *, void *);
|
||||
extern BOOL bScaleOpenAction(event_pollblock *, void *);
|
||||
extern void vSetTitle(diagram_type *);
|
||||
extern void vScaleButtonClick(mouse_block *, diagram_type *);
|
||||
extern BOOL bScaleKeyPressed(event_pollblock *, void *);
|
||||
extern BOOL bScaleEventHandler(event_pollblock *, void *);
|
||||
#else
|
||||
extern void vImagePrologue(diagram_type *, const imagedata_type *);
|
||||
extern void vImageEpilogue(diagram_type *);
|
||||
extern void vDestroyDiagram(diagram_type *);
|
||||
#endif /* __riscos */
|
||||
/* finddata.c */
|
||||
extern BOOL bAddDataBlocks(ULONG , ULONG, ULONG, const ULONG *, size_t);
|
||||
extern BOOL bGet6DocumentData(FILE *, ULONG,
|
||||
const ULONG *, size_t, const UCHAR *);
|
||||
/* findtext.c */
|
||||
extern BOOL bAddTextBlocks(ULONG , ULONG, BOOL,
|
||||
USHORT, ULONG, const ULONG *, size_t);
|
||||
extern BOOL bGet6DocumentText(FILE *, BOOL, ULONG,
|
||||
const ULONG *, size_t, const UCHAR *);
|
||||
extern BOOL bGet8DocumentText(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
/* fmt_text.c */
|
||||
extern void vPrologueFMT(diagram_type *, const options_type *);
|
||||
extern void vSubstringFMT(diagram_type *, const char *, size_t, long,
|
||||
USHORT);
|
||||
/* fontlist.c */
|
||||
extern void vDestroyFontInfoList(void);
|
||||
extern void vCorrectFontValues(font_block_type *);
|
||||
extern void vAdd2FontInfoList(const font_block_type *);
|
||||
extern const font_block_type *pGetNextFontInfoListItem(
|
||||
const font_block_type *);
|
||||
/* fonts.c */
|
||||
extern int iGetFontByNumber(UCHAR, USHORT);
|
||||
extern const char *szGetOurFontname(int);
|
||||
extern int iFontname2Fontnumber(const char *, USHORT);
|
||||
extern void vCreate0FontTable(void);
|
||||
extern void vCreate2FontTable(FILE *, int, const UCHAR *);
|
||||
extern void vCreate6FontTable(FILE *, ULONG,
|
||||
const ULONG *, size_t, const UCHAR *);
|
||||
extern void vCreate8FontTable(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vDestroyFontTable(void);
|
||||
extern const font_table_type *pGetNextFontTableRecord(
|
||||
const font_table_type *);
|
||||
extern size_t tGetFontTableLength(void);
|
||||
extern void vCorrectFontTable(conversion_type, encoding_type);
|
||||
extern long lComputeSpaceWidth(drawfile_fontref, USHORT);
|
||||
/* fonts_r.c & fonts_u.c */
|
||||
extern FILE *pOpenFontTableFile(void);
|
||||
extern void vCloseFont(void);
|
||||
extern drawfile_fontref tOpenFont(UCHAR, USHORT, USHORT);
|
||||
extern drawfile_fontref tOpenTableFont(USHORT);
|
||||
extern long lComputeStringWidth(const char *, size_t, drawfile_fontref, USHORT);
|
||||
extern size_t tCountColumns(const char *, size_t);
|
||||
extern size_t tGetCharacterLength(const char *);
|
||||
/* fonts_u.c */
|
||||
#if !defined(__riscos)
|
||||
extern const char *szGetFontname(drawfile_fontref);
|
||||
#endif /* !__riscos */
|
||||
/* hdrftrlist.c */
|
||||
extern void vDestroyHdrFtrInfoList(void);
|
||||
extern void vCreat8HdrFtrInfoList(const ULONG *, size_t);
|
||||
extern void vCreat6HdrFtrInfoList(const ULONG *, size_t);
|
||||
extern void vCreat2HdrFtrInfoList(const ULONG *, size_t);
|
||||
extern const hdrftr_block_type *pGetHdrFtrInfo(int, BOOL, BOOL, BOOL);
|
||||
extern void vPrepareHdrFtrText(FILE *);
|
||||
#if defined(__riscos)
|
||||
/* icons.c */
|
||||
extern void vUpdateIcon(window_handle, icon_block *);
|
||||
extern void vUpdateRadioButton(window_handle, icon_handle, BOOL);
|
||||
extern void vUpdateWriteable(window_handle, icon_handle, const char *);
|
||||
extern void vUpdateWriteableNumber(window_handle, icon_handle, int);
|
||||
#endif /* __riscos */
|
||||
/* imgexam.c */
|
||||
extern image_info_enum eExamineImage(FILE *, ULONG, imagedata_type *);
|
||||
/* imgtrans */
|
||||
extern BOOL bTranslateImage(diagram_type *,
|
||||
FILE *, BOOL, ULONG, const imagedata_type *);
|
||||
/* jpeg2eps.c & jpeg2spr.c */
|
||||
extern BOOL bTranslateJPEG(diagram_type *,
|
||||
FILE *, ULONG, size_t, const imagedata_type *);
|
||||
/* listlist.c */
|
||||
extern void vDestroyListInfoList(void);
|
||||
extern void vBuildLfoList(const UCHAR *, size_t);
|
||||
extern void vAdd2ListInfoList(ULONG, USHORT, UCHAR,
|
||||
const list_block_type *);
|
||||
extern const list_block_type *pGetListInfo(USHORT, UCHAR);
|
||||
extern USHORT usGetListValue(int, int, const style_block_type *);
|
||||
/* misc.c */
|
||||
#if !defined(__riscos)
|
||||
extern const char *szGetHomeDirectory(void);
|
||||
extern const char *szGetAntiwordDirectory(void);
|
||||
#endif /* !__riscos */
|
||||
extern long lGetFilesize(const char *);
|
||||
#if defined(DEBUG)
|
||||
extern void vPrintBlock(const char *, int, const UCHAR *, size_t);
|
||||
extern void vPrintUnicode(const char *, int, const UCHAR *, size_t);
|
||||
extern BOOL bCheckDoubleLinkedList(output_type *);
|
||||
#endif /* DEBUG */
|
||||
extern BOOL bReadBytes(UCHAR *, size_t, ULONG, FILE *);
|
||||
extern BOOL bReadBuffer(FILE *, ULONG, const ULONG *, size_t, size_t,
|
||||
UCHAR *, ULONG, size_t);
|
||||
extern ULONG ulColor2Color(UCHAR);
|
||||
extern output_type *pSplitList(output_type *);
|
||||
extern size_t tNumber2Roman(UINT, BOOL, char *);
|
||||
extern size_t tNumber2Alpha(UINT, BOOL, char *);
|
||||
extern char *unincpy(char *, const UCHAR *, size_t);
|
||||
extern size_t unilen(const UCHAR *);
|
||||
extern const char *szBasename(const char *);
|
||||
extern long lComputeLeading(USHORT);
|
||||
extern size_t tUcs2Utf8(ULONG, char *, size_t);
|
||||
extern void vGetBulletValue(conversion_type, encoding_type, char *, size_t);
|
||||
extern BOOL bAllZero(const UCHAR *, size_t);
|
||||
extern BOOL bGetNormalizedCodeset(char *, size_t, BOOL *);
|
||||
extern const char *szGetDefaultMappingFile(void);
|
||||
extern time_t tConvertDTTM(ULONG);
|
||||
/* notes.c */
|
||||
extern void vDestroyNotesInfoLists(void);
|
||||
extern void vGetNotesInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *, int);
|
||||
extern void vPrepareFootnoteText(FILE *);
|
||||
extern const char *szGetFootnootText(UINT);
|
||||
extern notetype_enum eGetNotetype(ULONG);
|
||||
/* options.c */
|
||||
extern int iReadOptions(int, char **);
|
||||
extern void vGetOptions(options_type *);
|
||||
#if defined(__riscos)
|
||||
extern void vChoicesOpenAction(window_handle);
|
||||
extern BOOL bChoicesMouseClick(event_pollblock *, void *);
|
||||
extern BOOL bChoicesKeyPressed(event_pollblock *, void *);
|
||||
#endif /* __riscos */
|
||||
/* out2window.c */
|
||||
extern void vSetLeftIndentation(diagram_type *, long);
|
||||
extern void vAlign2Window(diagram_type *, output_type *,
|
||||
long, UCHAR);
|
||||
extern void vJustify2Window(diagram_type *, output_type *,
|
||||
long, long, UCHAR);
|
||||
extern void vResetStyles(void);
|
||||
extern size_t tStyle2Window(char *, size_t, const style_block_type *,
|
||||
const section_block_type *);
|
||||
extern void vTableRow2Window(diagram_type *, output_type *,
|
||||
const row_block_type *, conversion_type, int);
|
||||
/* pdf.c */
|
||||
extern void vCreateInfoDictionary(diagram_type *, int);
|
||||
extern void vProloguePDF(diagram_type *,
|
||||
const char *, const options_type *);
|
||||
extern void vEpiloguePDF(diagram_type *);
|
||||
extern void vImageProloguePDF(diagram_type *, const imagedata_type *);
|
||||
extern void vImageEpiloguePDF(diagram_type *);
|
||||
extern BOOL bAddDummyImagePDF(diagram_type *, const imagedata_type *);
|
||||
extern void vAddFontsPDF(diagram_type *);
|
||||
extern void vMove2NextLinePDF(diagram_type *, USHORT);
|
||||
extern void vSubstringPDF(diagram_type *,
|
||||
char *, size_t, long, UCHAR, USHORT,
|
||||
drawfile_fontref, USHORT, USHORT);
|
||||
extern void vStartOfParagraphPDF(diagram_type *, long);
|
||||
extern void vEndOfParagraphPDF(diagram_type *, USHORT, long);
|
||||
extern void vEndOfPagePDF(diagram_type *, BOOL);
|
||||
/* pictlist.c */
|
||||
extern void vDestroyPictInfoList(void);
|
||||
extern void vAdd2PictInfoList(const picture_block_type *);
|
||||
extern ULONG ulGetPictInfoListItem(ULONG);
|
||||
/* png2eps.c & png2spr.c */
|
||||
extern BOOL bTranslatePNG(diagram_type *,
|
||||
FILE *, ULONG, size_t, const imagedata_type *);
|
||||
/* postscript.c */
|
||||
extern void vProloguePS(diagram_type *,
|
||||
const char *, const char *, const options_type *);
|
||||
extern void vEpiloguePS(diagram_type *);
|
||||
extern void vImageProloguePS(diagram_type *, const imagedata_type *);
|
||||
extern void vImageEpiloguePS(diagram_type *);
|
||||
extern BOOL bAddDummyImagePS(diagram_type *, const imagedata_type *);
|
||||
extern void vAddFontsPS(diagram_type *);
|
||||
extern void vMove2NextLinePS(diagram_type *, USHORT);
|
||||
extern void vSubstringPS(diagram_type *,
|
||||
char *, size_t, long, UCHAR, USHORT,
|
||||
drawfile_fontref, USHORT, USHORT);
|
||||
extern void vStartOfParagraphPS(diagram_type *, long);
|
||||
extern void vEndOfParagraphPS(diagram_type *, USHORT, long);
|
||||
extern void vEndOfPagePS(diagram_type *, BOOL);
|
||||
/* prop0.c */
|
||||
extern void vGet0DopInfo(FILE *, const UCHAR *);
|
||||
extern void vGet0SepInfo(FILE *, const UCHAR *);
|
||||
extern void vGet0PapInfo(FILE *, const UCHAR *);
|
||||
extern void vGet0ChrInfo(FILE *, const UCHAR *);
|
||||
/* prop2.c */
|
||||
extern void vGet2DopInfo(FILE *, const UCHAR *);
|
||||
extern void vGet2SepInfo(FILE *, const UCHAR *);
|
||||
extern void vGet2HdrFtrInfo(FILE *, const UCHAR *);
|
||||
extern row_info_enum eGet2RowInfo(int,
|
||||
const UCHAR *, int, row_block_type *);
|
||||
extern void vGet2StyleInfo(int,
|
||||
const UCHAR *, int, style_block_type *);
|
||||
extern void vGet2PapInfo(FILE *, const UCHAR *);
|
||||
extern void vGet1FontInfo(int,
|
||||
const UCHAR *, size_t, font_block_type *);
|
||||
extern void vGet2FontInfo(int,
|
||||
const UCHAR *, size_t, font_block_type *);
|
||||
extern void vGet2ChrInfo(FILE *, int, const UCHAR *);
|
||||
/* prop6.c */
|
||||
extern void vGet6DopInfo(FILE *, ULONG, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet6SepInfo(FILE *, ULONG, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet6HdrFtrInfo(FILE *, ULONG, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern row_info_enum eGet6RowInfo(int,
|
||||
const UCHAR *, int, row_block_type *);
|
||||
extern void vGet6StyleInfo(int,
|
||||
const UCHAR *, int, style_block_type *);
|
||||
extern void vGet6PapInfo(FILE *, ULONG, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet6FontInfo(int, USHORT,
|
||||
const UCHAR *, int, font_block_type *);
|
||||
extern void vGet6ChrInfo(FILE *, ULONG, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
/* prop8.c */
|
||||
extern void vGet8DopInfo(FILE *, const pps_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet8SepInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet8HdrFtrInfo(FILE *, const pps_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern row_info_enum eGet8RowInfo(int,
|
||||
const UCHAR *, int, row_block_type *);
|
||||
extern void vGet8StyleInfo(int,
|
||||
const UCHAR *, int, style_block_type *);
|
||||
extern void vGet8LstInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet8PapInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet8FontInfo(int, USHORT,
|
||||
const UCHAR *, int, font_block_type *);
|
||||
extern void vGet8ChrInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
/* properties.c */
|
||||
extern void vGetPropertyInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *, int);
|
||||
extern row_info_enum ePropMod2RowInfo(USHORT, int);
|
||||
/* propmod.c */
|
||||
extern void vDestroyPropModList(void);
|
||||
extern void vAdd2PropModList(const UCHAR *);
|
||||
extern const UCHAR *aucReadPropModListItem(USHORT);
|
||||
/* rowlist.c */
|
||||
extern void vDestroyRowInfoList(void);
|
||||
extern void vAdd2RowInfoList(const row_block_type *);
|
||||
extern const row_block_type *pGetNextRowInfoListItem(void);
|
||||
/* riscos.c */
|
||||
#if defined(__riscos)
|
||||
extern int iGetFiletype(const char *);
|
||||
extern void vSetFiletype(const char *, int);
|
||||
extern BOOL bMakeDirectory(const char *);
|
||||
extern int iReadCurrentAlphabetNumber(void);
|
||||
extern int iGetRiscOsVersion(void);
|
||||
extern BOOL bDrawRenderDiag360(void *, size_t,
|
||||
window_redrawblock *, double, os_error *);
|
||||
#if defined(DEBUG)
|
||||
extern BOOL bGetJpegInfo(UCHAR *, size_t);
|
||||
#endif /* DEBUG */
|
||||
#endif /* __riscos */
|
||||
/* saveas.c */
|
||||
#if defined(__riscos)
|
||||
extern BOOL bSaveTextfile(event_pollblock *, void *);
|
||||
extern BOOL bSaveDrawfile(event_pollblock *, void *);
|
||||
#endif /* __riscos */
|
||||
/* sectlist.c */
|
||||
extern void vDestroySectionInfoList(void);
|
||||
extern void vAdd2SectionInfoList(const section_block_type *, ULONG);
|
||||
extern void vGetDefaultSection(section_block_type *);
|
||||
extern void vDefault2SectionInfoList(ULONG);
|
||||
extern const section_block_type *
|
||||
pGetSectionInfo(const section_block_type *, ULONG);
|
||||
extern size_t tGetNumberOfSections(void);
|
||||
extern UCHAR ucGetSepHdrFtrSpecification(size_t);
|
||||
/* stylelist.c */
|
||||
extern void vDestroyStyleInfoList(void);
|
||||
extern level_type_enum eGetNumType(UCHAR);
|
||||
extern void vCorrectStyleValues(style_block_type *);
|
||||
extern void vAdd2StyleInfoList(const style_block_type *);
|
||||
extern const style_block_type *pGetNextStyleInfoListItem(
|
||||
const style_block_type *);
|
||||
extern const style_block_type *pGetNextTextStyle(const style_block_type *);
|
||||
extern USHORT usGetIstd(ULONG);
|
||||
extern BOOL bStyleImpliesList(const style_block_type *, int);
|
||||
/* stylesheet.c */
|
||||
extern void vDestroyStylesheetList(void);
|
||||
extern USHORT usStc2istd(UCHAR);
|
||||
extern void vGet2Stylesheet(FILE *, int, const UCHAR *);
|
||||
extern void vGet6Stylesheet(FILE *, ULONG, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vGet8Stylesheet(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vFillStyleFromStylesheet(USHORT, style_block_type *);
|
||||
extern void vFillFontFromStylesheet(USHORT, font_block_type *);
|
||||
/* summary.c */
|
||||
extern void vDestroySummaryInfo(void);
|
||||
extern void vSet0SummaryInfo(FILE *, const UCHAR *);
|
||||
extern void vSet2SummaryInfo(FILE *, int, const UCHAR *);
|
||||
extern void vSet6SummaryInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern void vSet8SummaryInfo(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *);
|
||||
extern const char *szGetTitle(void);
|
||||
extern const char *szGetSubject(void);
|
||||
extern const char *szGetAuthor(void);
|
||||
extern const char *szGetLastSaveDtm(void);
|
||||
extern const char *szGetModDate(void);
|
||||
extern const char *szGetCreationDate(void);
|
||||
extern const char *szGetCompany(void);
|
||||
extern const char *szGetLanguage(void);
|
||||
/* tabstop.c */
|
||||
extern void vSetDefaultTabWidth(FILE *, const pps_info_type *,
|
||||
const ULONG *, size_t, const ULONG *, size_t,
|
||||
const UCHAR *, int);
|
||||
extern long lGetDefaultTabWidth(void);
|
||||
/* text.c */
|
||||
extern void vPrologueTXT(diagram_type *, const options_type *);
|
||||
extern void vEpilogueTXT(FILE *);
|
||||
extern void vMove2NextLineTXT(diagram_type *);
|
||||
extern void vSubstringTXT(diagram_type *, const char *, size_t, long);
|
||||
extern void vStartOfParagraphTXT(diagram_type *, long);
|
||||
extern void vEndOfParagraphTXT(diagram_type *, long);
|
||||
extern void vEndOfPageTXT(diagram_type *, long);
|
||||
/* unix.c */
|
||||
extern void werr(int, const char *, ...);
|
||||
#if !defined(__riscos)
|
||||
extern void Hourglass_On(void);
|
||||
extern void Hourglass_Off(void);
|
||||
#endif /* !__riscos */
|
||||
/* utf8.c */
|
||||
#if !defined(__riscos)
|
||||
extern long utf8_strwidth(const char *, size_t);
|
||||
extern int utf8_chrlength(const char *);
|
||||
extern BOOL is_locale_utf8(void);
|
||||
#endif /* !__riscos */
|
||||
/* word2text.c */
|
||||
extern BOOL bOutputContainsText(const output_type *);
|
||||
extern BOOL bWordDecryptor(FILE *, long, diagram_type *);
|
||||
extern output_type *pHdrFtrDecryptor(FILE *, ULONG, ULONG);
|
||||
extern char *szFootnoteDecryptor(FILE *, ULONG, ULONG);
|
||||
/* worddos.c */
|
||||
extern int iInitDocumentDOS(FILE *, long);
|
||||
/* wordlib.c */
|
||||
extern BOOL bIsWordForDosFile(FILE *, long);
|
||||
extern BOOL bIsRtfFile(FILE *);
|
||||
extern BOOL bIsWordPerfectFile(FILE *);
|
||||
extern BOOL bIsWinWord12File(FILE *, long);
|
||||
extern BOOL bIsMacWord45File(FILE *);
|
||||
extern int iGuessVersionNumber(FILE *, long);
|
||||
extern int iGetVersionNumber(const UCHAR *);
|
||||
extern BOOL bIsOldMacFile(void);
|
||||
extern int iInitDocument(FILE *, long);
|
||||
extern void vFreeDocument(void);
|
||||
/* wordmac.c */
|
||||
extern int iInitDocumentMAC(FILE *, long);
|
||||
/* wordole.c */
|
||||
extern int iInitDocumentOLE(FILE *, long);
|
||||
/* wordwin.c */
|
||||
extern int iInitDocumentWIN(FILE *, long);
|
||||
/* xmalloc.c */
|
||||
extern void *xmalloc(size_t);
|
||||
extern void *xcalloc(size_t, size_t);
|
||||
extern void *xrealloc(void *, size_t);
|
||||
extern char *xstrdup(const char *);
|
||||
extern void *xfree(void *);
|
||||
/* xml.c */
|
||||
extern void vCreateBookIntro(diagram_type *, int);
|
||||
extern void vPrologueXML(diagram_type *, const options_type *);
|
||||
extern void vEpilogueXML(diagram_type *);
|
||||
extern void vMove2NextLineXML(diagram_type *);
|
||||
extern void vSubstringXML(diagram_type *,
|
||||
const char *, size_t, long, USHORT);
|
||||
extern void vStartOfParagraphXML(diagram_type *, UINT);
|
||||
extern void vEndOfParagraphXML(diagram_type *, UINT);
|
||||
extern void vEndOfPageXML(diagram_type *);
|
||||
extern void vSetHeadersXML(diagram_type *, USHORT);
|
||||
extern void vStartOfListXML(diagram_type *, UCHAR, BOOL);
|
||||
extern void vEndOfListXML(diagram_type *);
|
||||
extern void vStartOfListItemXML(diagram_type *, BOOL);
|
||||
extern void vEndOfTableXML(diagram_type *);
|
||||
extern void vAddTableRowXML(diagram_type *, char **, int,
|
||||
const short *, UCHAR);
|
||||
|
||||
#endif /* __antiword_h */
|
154
asc85enc.c
Normal file
154
asc85enc.c
Normal file
@ -0,0 +1,154 @@
|
||||
/*
|
||||
* asc85enc.c
|
||||
* Copyright (C) 2000-2003 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to for ASCII 85 encoding
|
||||
*
|
||||
*====================================================================
|
||||
* This part of the software is based on:
|
||||
* asc85ec.c - ASCII85 and Hex encoding for PostScript Level 2 and PDF
|
||||
* Copyright (C) 1994-99 Thomas Merz (tm@muc.de)
|
||||
*====================================================================
|
||||
* The credit should go to him, but all the bugs are mine.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "antiword.h"
|
||||
|
||||
static const ULONG aulPower85[5] = {
|
||||
1UL, 85UL, 85UL * 85, 85UL * 85 * 85, 85UL * 85 * 85 * 85,
|
||||
};
|
||||
static int iOutBytes = 0; /* Number of characters in an output line */
|
||||
static char cCharPrev = '\0';
|
||||
|
||||
/*
|
||||
* Two percent characters at the start of a line will cause trouble
|
||||
* with some post-processing software. In order to avoid this, we
|
||||
* simply insert a line break if we encounter two percent characters
|
||||
* at the start of the line. Of course, this rather simplistic
|
||||
* algorithm may lead to a large line count in pathological cases,
|
||||
* but the chance for hitting such a case is very small, and even
|
||||
* so it's only a cosmetic flaw and not a functional restriction.
|
||||
*/
|
||||
|
||||
/*
|
||||
* vOutputByte - output one byte
|
||||
*/
|
||||
static void
|
||||
vOutputByte(ULONG ulChar, FILE *pOutFile)
|
||||
{
|
||||
if (iOutBytes == 1 && cCharPrev == '%' && ulChar == (ULONG)'%') {
|
||||
if (putc('\n', pOutFile) != EOF) {
|
||||
iOutBytes = 0;
|
||||
}
|
||||
}
|
||||
if (putc((int)ulChar, pOutFile) == EOF) {
|
||||
return;
|
||||
}
|
||||
iOutBytes++;
|
||||
if (iOutBytes > 63) {
|
||||
if (putc('\n', pOutFile) != EOF) {
|
||||
iOutBytes = 0;
|
||||
}
|
||||
}
|
||||
cCharPrev = (char)ulChar;
|
||||
} /* end of vOutputByte */
|
||||
|
||||
/*
|
||||
* vASCII85EncodeByte - ASCII 85 encode a byte
|
||||
*/
|
||||
void
|
||||
vASCII85EncodeByte(FILE *pOutFile, int iByte)
|
||||
{
|
||||
static ULONG ulBuffer[4] = { 0, 0, 0, 0 };
|
||||
static int iInBuffer = 0;
|
||||
ULONG ulValue, ulTmp;
|
||||
int iIndex;
|
||||
|
||||
fail(pOutFile == NULL);
|
||||
fail(iInBuffer < 0);
|
||||
fail(iInBuffer > 3);
|
||||
|
||||
if (iByte == EOF) {
|
||||
/* End Of File, time to clean up */
|
||||
if (iInBuffer > 0 && iInBuffer < 4) {
|
||||
/* Encode the remaining bytes */
|
||||
ulValue = 0;
|
||||
for (iIndex = iInBuffer - 1; iIndex >= 0; iIndex--) {
|
||||
ulValue |=
|
||||
ulBuffer[iIndex] << (8 * (3 - iIndex));
|
||||
}
|
||||
for (iIndex = 4; iIndex >= 4 - iInBuffer; iIndex--) {
|
||||
ulTmp = ulValue / aulPower85[iIndex];
|
||||
vOutputByte(ulTmp + '!', pOutFile);
|
||||
ulValue -= ulTmp * aulPower85[iIndex];
|
||||
}
|
||||
}
|
||||
/* Add the End Of Data marker */
|
||||
(void)putc('~', pOutFile);
|
||||
(void)putc('>', pOutFile);
|
||||
(void)putc('\n', pOutFile);
|
||||
/* Reset the control variables */
|
||||
iInBuffer = 0;
|
||||
iOutBytes = 0;
|
||||
cCharPrev = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
ulBuffer[iInBuffer] = (ULONG)iByte & 0xff;
|
||||
iInBuffer++;
|
||||
|
||||
if (iInBuffer >= 4) {
|
||||
ulValue = (ulBuffer[0] << 24) | (ulBuffer[1] << 16) |
|
||||
(ulBuffer[2] << 8) | ulBuffer[3];
|
||||
if (ulValue == 0) {
|
||||
vOutputByte((ULONG)'z', pOutFile); /* Shortcut for 0 */
|
||||
} else {
|
||||
for (iIndex = 4; iIndex >= 0; iIndex--) {
|
||||
ulTmp = ulValue / aulPower85[iIndex];
|
||||
vOutputByte(ulTmp + '!', pOutFile);
|
||||
ulValue -= ulTmp * aulPower85[iIndex];
|
||||
}
|
||||
}
|
||||
/* Reset the buffer */
|
||||
iInBuffer = 0;
|
||||
}
|
||||
} /* end of vASCII85EncodeByte */
|
||||
|
||||
/*
|
||||
* vASCII85EncodeArray - ASCII 85 encode a byte array
|
||||
*/
|
||||
void
|
||||
vASCII85EncodeArray(FILE *pInFile, FILE *pOutFile, size_t tLength)
|
||||
{
|
||||
size_t tCount;
|
||||
int iByte;
|
||||
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
|
||||
DBG_DEC(tLength);
|
||||
|
||||
for (tCount = 0; tCount < tLength; tCount++) {
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
break;
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, iByte);
|
||||
}
|
||||
} /* end of vASCII85EncodeArray */
|
||||
|
||||
/*
|
||||
* vASCII85EncodeFile - ASCII 85 encode part of a file
|
||||
*/
|
||||
void
|
||||
vASCII85EncodeFile(FILE *pInFile, FILE *pOutFile, size_t tLength)
|
||||
{
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
fail(tLength == 0);
|
||||
|
||||
vASCII85EncodeArray(pInFile, pOutFile, tLength);
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
} /* end of vASCII85EncodeFile */
|
823
blocklist.c
Normal file
823
blocklist.c
Normal file
@ -0,0 +1,823 @@
|
||||
/*
|
||||
* blocklist.c
|
||||
* Copyright (C) 1998-2005 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Build, read and destroy the lists of Word "text" blocks
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
/*
|
||||
* Private structure to hide the way the information
|
||||
* is stored from the rest of the program
|
||||
*/
|
||||
typedef struct list_mem_tag {
|
||||
text_block_type tInfo;
|
||||
struct list_mem_tag *pNext;
|
||||
} list_mem_type;
|
||||
|
||||
typedef struct readinfo_tag {
|
||||
list_mem_type *pBlockCurrent;
|
||||
ULONG ulBlockOffset;
|
||||
size_t tByteNext;
|
||||
UCHAR aucBlock[BIG_BLOCK_SIZE];
|
||||
} readinfo_type;
|
||||
|
||||
/* Variables to describe the start of the block lists */
|
||||
static list_mem_type *pTextAnchor = NULL;
|
||||
static list_mem_type *pFootnoteAnchor = NULL;
|
||||
static list_mem_type *pHdrFtrAnchor = NULL;
|
||||
static list_mem_type *pMacroAnchor = NULL;
|
||||
static list_mem_type *pAnnotationAnchor = NULL;
|
||||
static list_mem_type *pEndnoteAnchor = NULL;
|
||||
static list_mem_type *pTextBoxAnchor = NULL;
|
||||
static list_mem_type *pHdrTextBoxAnchor = NULL;
|
||||
/* Variable needed to build the block list */
|
||||
static list_mem_type *pBlockLast = NULL;
|
||||
/* Variable needed to read the block lists */
|
||||
static readinfo_type tOthers = { NULL, 0, 0, };
|
||||
static readinfo_type tHdrFtr = { NULL, 0, 0, };
|
||||
static readinfo_type tFootnote = { NULL, 0, 0, };
|
||||
|
||||
|
||||
/*
|
||||
* pFreeOneList - free a text block list
|
||||
*
|
||||
* Will always return NULL
|
||||
*/
|
||||
static list_mem_type *
|
||||
pFreeOneList(list_mem_type *pAnchor)
|
||||
{
|
||||
list_mem_type *pCurr, *pNext;
|
||||
|
||||
pCurr = pAnchor;
|
||||
while (pCurr != NULL) {
|
||||
pNext = pCurr->pNext;
|
||||
pCurr = xfree(pCurr);
|
||||
pCurr = pNext;
|
||||
}
|
||||
return NULL;
|
||||
} /* end of pFreeOneList */
|
||||
|
||||
/*
|
||||
* vDestroyTextBlockList - destroy the text block lists
|
||||
*/
|
||||
void
|
||||
vDestroyTextBlockList(void)
|
||||
{
|
||||
DBG_MSG("vDestroyTextBlockList");
|
||||
|
||||
/* Free the lists one by one */
|
||||
pTextAnchor = pFreeOneList(pTextAnchor);
|
||||
pFootnoteAnchor = pFreeOneList(pFootnoteAnchor);
|
||||
pHdrFtrAnchor = pFreeOneList(pHdrFtrAnchor);
|
||||
pMacroAnchor = pFreeOneList(pMacroAnchor);
|
||||
pAnnotationAnchor = pFreeOneList(pAnnotationAnchor);
|
||||
pEndnoteAnchor = pFreeOneList(pEndnoteAnchor);
|
||||
pTextBoxAnchor = pFreeOneList(pTextBoxAnchor);
|
||||
pHdrTextBoxAnchor = pFreeOneList(pHdrTextBoxAnchor);
|
||||
/* Reset all the controle variables */
|
||||
pBlockLast = NULL;
|
||||
tOthers.pBlockCurrent = NULL;
|
||||
tHdrFtr.pBlockCurrent = NULL;
|
||||
tFootnote.pBlockCurrent = NULL;
|
||||
} /* end of vDestroyTextBlockList */
|
||||
|
||||
/*
|
||||
* bAdd2TextBlockList - add an element to the text block list
|
||||
*
|
||||
* returns: TRUE when successful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bAdd2TextBlockList(const text_block_type *pTextBlock)
|
||||
{
|
||||
list_mem_type *pListMember;
|
||||
|
||||
fail(pTextBlock == NULL);
|
||||
fail(pTextBlock->ulFileOffset == FC_INVALID);
|
||||
fail(pTextBlock->ulCharPos == CP_INVALID);
|
||||
fail(pTextBlock->ulLength == 0);
|
||||
fail(pTextBlock->bUsesUnicode && odd(pTextBlock->ulLength));
|
||||
|
||||
NO_DBG_MSG("bAdd2TextBlockList");
|
||||
NO_DBG_HEX(pTextBlock->ulFileOffset);
|
||||
NO_DBG_HEX(pTextBlock->ulCharPos);
|
||||
NO_DBG_HEX(pTextBlock->ulLength);
|
||||
NO_DBG_DEC(pTextBlock->bUsesUnicode);
|
||||
NO_DBG_DEC(pTextBlock->usPropMod);
|
||||
|
||||
if (pTextBlock->ulFileOffset == FC_INVALID ||
|
||||
pTextBlock->ulCharPos == CP_INVALID ||
|
||||
pTextBlock->ulLength == 0 ||
|
||||
(pTextBlock->bUsesUnicode && odd(pTextBlock->ulLength))) {
|
||||
werr(0, "Software (textblock) error");
|
||||
return FALSE;
|
||||
}
|
||||
/*
|
||||
* Check for continuous blocks of the same character size and
|
||||
* the same properties modifier
|
||||
*/
|
||||
if (pBlockLast != NULL &&
|
||||
pBlockLast->tInfo.ulFileOffset +
|
||||
pBlockLast->tInfo.ulLength == pTextBlock->ulFileOffset &&
|
||||
pBlockLast->tInfo.ulCharPos +
|
||||
pBlockLast->tInfo.ulLength == pTextBlock->ulCharPos &&
|
||||
pBlockLast->tInfo.bUsesUnicode == pTextBlock->bUsesUnicode &&
|
||||
pBlockLast->tInfo.usPropMod == pTextBlock->usPropMod) {
|
||||
/* These are continous blocks */
|
||||
pBlockLast->tInfo.ulLength += pTextBlock->ulLength;
|
||||
return TRUE;
|
||||
}
|
||||
/* Make a new block */
|
||||
pListMember = xmalloc(sizeof(list_mem_type));
|
||||
/* Add the block to the list */
|
||||
pListMember->tInfo = *pTextBlock;
|
||||
pListMember->pNext = NULL;
|
||||
if (pTextAnchor == NULL) {
|
||||
pTextAnchor = pListMember;
|
||||
} else {
|
||||
fail(pBlockLast == NULL);
|
||||
pBlockLast->pNext = pListMember;
|
||||
}
|
||||
pBlockLast = pListMember;
|
||||
return TRUE;
|
||||
} /* end of bAdd2TextBlockList */
|
||||
|
||||
/*
|
||||
* vSpitList - Split the list in two
|
||||
*/
|
||||
static void
|
||||
vSpitList(list_mem_type **ppAnchorCurr, list_mem_type **ppAnchorNext,
|
||||
ULONG ulListLen)
|
||||
{
|
||||
list_mem_type *pCurr;
|
||||
long lCharsToGo, lBytesTooFar;
|
||||
|
||||
fail(ppAnchorCurr == NULL);
|
||||
fail(ppAnchorNext == NULL);
|
||||
fail(ulListLen > (ULONG)LONG_MAX);
|
||||
|
||||
pCurr = NULL;
|
||||
lCharsToGo = (long)ulListLen;
|
||||
lBytesTooFar = -1;
|
||||
if (ulListLen != 0) {
|
||||
DBG_DEC(ulListLen);
|
||||
for (pCurr = *ppAnchorCurr;
|
||||
pCurr != NULL;
|
||||
pCurr = pCurr->pNext) {
|
||||
NO_DBG_DEC(pCurr->tInfo.ulLength);
|
||||
fail(pCurr->tInfo.ulLength == 0);
|
||||
fail(pCurr->tInfo.ulLength > (ULONG)LONG_MAX);
|
||||
if (pCurr->tInfo.bUsesUnicode) {
|
||||
fail(odd(pCurr->tInfo.ulLength));
|
||||
lCharsToGo -= (long)(pCurr->tInfo.ulLength / 2);
|
||||
if (lCharsToGo < 0) {
|
||||
lBytesTooFar = -2 * lCharsToGo;
|
||||
}
|
||||
} else {
|
||||
lCharsToGo -= (long)pCurr->tInfo.ulLength;
|
||||
if (lCharsToGo < 0) {
|
||||
lBytesTooFar = -lCharsToGo;
|
||||
}
|
||||
}
|
||||
if (lCharsToGo <= 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Split the list */
|
||||
if (ulListLen == 0) {
|
||||
/* Current blocklist is empty */
|
||||
*ppAnchorNext = *ppAnchorCurr;
|
||||
*ppAnchorCurr = NULL;
|
||||
} else if (pCurr == NULL) {
|
||||
/* No blocks for the next list */
|
||||
*ppAnchorNext = NULL;
|
||||
} else if (lCharsToGo == 0) {
|
||||
/* Move the integral number of blocks to the next list */
|
||||
*ppAnchorNext = pCurr->pNext;
|
||||
pCurr->pNext = NULL;
|
||||
} else {
|
||||
/* Split the part current block list, part next block list */
|
||||
DBG_DEC(lBytesTooFar);
|
||||
fail(lBytesTooFar <= 0);
|
||||
*ppAnchorNext = xmalloc(sizeof(list_mem_type));
|
||||
DBG_HEX(pCurr->tInfo.ulFileOffset);
|
||||
(*ppAnchorNext)->tInfo.ulFileOffset =
|
||||
pCurr->tInfo.ulFileOffset +
|
||||
pCurr->tInfo.ulLength -
|
||||
lBytesTooFar;
|
||||
DBG_HEX((*ppAnchorNext)->tInfo.ulFileOffset);
|
||||
DBG_HEX(pCurr->tInfo.ulCharPos);
|
||||
(*ppAnchorNext)->tInfo.ulCharPos =
|
||||
pCurr->tInfo.ulCharPos +
|
||||
pCurr->tInfo.ulLength -
|
||||
lBytesTooFar;
|
||||
DBG_HEX((*ppAnchorNext)->tInfo.ulCharPos);
|
||||
(*ppAnchorNext)->tInfo.ulLength = (ULONG)lBytesTooFar;
|
||||
pCurr->tInfo.ulLength -= (ULONG)lBytesTooFar;
|
||||
(*ppAnchorNext)->tInfo.bUsesUnicode = pCurr->tInfo.bUsesUnicode;
|
||||
(*ppAnchorNext)->tInfo.usPropMod = pCurr->tInfo.usPropMod;
|
||||
/* Move the integral number of blocks to the next list */
|
||||
(*ppAnchorNext)->pNext = pCurr->pNext;
|
||||
pCurr->pNext = NULL;
|
||||
}
|
||||
} /* end of vSpitList */
|
||||
|
||||
#if defined(DEBUG) || defined(__riscos)
|
||||
/*
|
||||
* ulComputeListLength - compute the length of a list
|
||||
*
|
||||
* returns the list length in characters
|
||||
*/
|
||||
static ULONG
|
||||
ulComputeListLength(const list_mem_type *pAnchor)
|
||||
{
|
||||
const list_mem_type *pCurr;
|
||||
ULONG ulTotal;
|
||||
|
||||
ulTotal = 0;
|
||||
for (pCurr = pAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
fail(pCurr->tInfo.ulLength == 0);
|
||||
if (pCurr->tInfo.bUsesUnicode) {
|
||||
fail(odd(pCurr->tInfo.ulLength));
|
||||
ulTotal += pCurr->tInfo.ulLength / 2;
|
||||
} else {
|
||||
ulTotal += pCurr->tInfo.ulLength;
|
||||
}
|
||||
}
|
||||
return ulTotal;
|
||||
} /* end of ulComputeListLength */
|
||||
#endif /* DEBUG || __riscos */
|
||||
|
||||
#if defined(DEBUG)
|
||||
/*
|
||||
* vCheckList - check the number of bytes in a block list
|
||||
*/
|
||||
static void
|
||||
vCheckList(const list_mem_type *pAnchor, ULONG ulListLen, char *szMsg)
|
||||
{
|
||||
ULONG ulTotal;
|
||||
|
||||
ulTotal = ulComputeListLength(pAnchor);
|
||||
DBG_DEC(ulTotal);
|
||||
if (ulTotal != ulListLen) {
|
||||
DBG_DEC(ulListLen);
|
||||
werr(1, szMsg);
|
||||
}
|
||||
} /* end of vCheckList */
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
* bIsEmptyBox - check to see if the given text box is empty
|
||||
*/
|
||||
static BOOL
|
||||
bIsEmptyBox(FILE *pFile, const list_mem_type *pAnchor)
|
||||
{
|
||||
const list_mem_type *pCurr;
|
||||
size_t tIndex, tSize;
|
||||
UCHAR *aucBuffer;
|
||||
char cChar;
|
||||
|
||||
fail(pFile == NULL);
|
||||
|
||||
if (pAnchor == NULL) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
aucBuffer = NULL;
|
||||
for (pCurr = pAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
fail(pCurr->tInfo.ulLength == 0);
|
||||
tSize = (size_t)pCurr->tInfo.ulLength;
|
||||
#if defined(__dos) && !defined(__DJGPP__)
|
||||
if (pCurr->tInfo.ulLength > 0xffffUL) {
|
||||
tSize = 0xffff;
|
||||
}
|
||||
#endif /* __dos && !__DJGPP__ */
|
||||
fail(aucBuffer != NULL);
|
||||
aucBuffer = xmalloc(tSize);
|
||||
if (!bReadBytes(aucBuffer, tSize,
|
||||
pCurr->tInfo.ulFileOffset, pFile)) {
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
for (tIndex = 0; tIndex < tSize; tIndex++) {
|
||||
cChar = (char)aucBuffer[tIndex];
|
||||
switch (cChar) {
|
||||
case '\0': case '\r': case '\n':
|
||||
case '\f': case '\t': case '\v':
|
||||
case ' ':
|
||||
break;
|
||||
default:
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
}
|
||||
fail(aucBuffer != NULL);
|
||||
return TRUE;
|
||||
} /* end of bIsEmptyBox */
|
||||
|
||||
/*
|
||||
* vSplitBlockList - split the block list in the various parts
|
||||
*
|
||||
* Split the blocklist in a Text block list, a Footnote block list, a
|
||||
* HeaderFooter block list, a Macro block list, an Annotation block list,
|
||||
* an Endnote block list, a TextBox list and a HeaderTextBox list.
|
||||
*
|
||||
* NOTE:
|
||||
* The various ul*Len input parameters are given in characters, but the
|
||||
* length of the blocks are in bytes.
|
||||
*/
|
||||
void
|
||||
vSplitBlockList(FILE *pFile, ULONG ulTextLen, ULONG ulFootnoteLen,
|
||||
ULONG ulHdrFtrLen, ULONG ulMacroLen, ULONG ulAnnotationLen,
|
||||
ULONG ulEndnoteLen, ULONG ulTextBoxLen, ULONG ulHdrTextBoxLen,
|
||||
BOOL bMustExtend)
|
||||
{
|
||||
list_mem_type *apAnchors[8];
|
||||
list_mem_type *pGarbageAnchor, *pCurr;
|
||||
size_t tIndex;
|
||||
|
||||
DBG_MSG("vSplitBlockList");
|
||||
|
||||
pGarbageAnchor = NULL;
|
||||
|
||||
DBG_MSG_C(ulTextLen != 0, "Text block list");
|
||||
vSpitList(&pTextAnchor, &pFootnoteAnchor, ulTextLen);
|
||||
DBG_MSG_C(ulFootnoteLen != 0, "Footnote block list");
|
||||
vSpitList(&pFootnoteAnchor, &pHdrFtrAnchor, ulFootnoteLen);
|
||||
DBG_MSG_C(ulHdrFtrLen != 0, "Header/Footer block list");
|
||||
vSpitList(&pHdrFtrAnchor, &pMacroAnchor, ulHdrFtrLen);
|
||||
DBG_MSG_C(ulMacroLen != 0, "Macro block list");
|
||||
vSpitList(&pMacroAnchor, &pAnnotationAnchor, ulMacroLen);
|
||||
DBG_MSG_C(ulAnnotationLen != 0, "Annotation block list");
|
||||
vSpitList(&pAnnotationAnchor, &pEndnoteAnchor, ulAnnotationLen);
|
||||
DBG_MSG_C(ulEndnoteLen != 0, "Endnote block list");
|
||||
vSpitList(&pEndnoteAnchor, &pTextBoxAnchor, ulEndnoteLen);
|
||||
DBG_MSG_C(ulTextBoxLen != 0, "Textbox block list");
|
||||
vSpitList(&pTextBoxAnchor, &pHdrTextBoxAnchor, ulTextBoxLen);
|
||||
DBG_MSG_C(ulHdrTextBoxLen != 0, "HeaderTextbox block list");
|
||||
vSpitList(&pHdrTextBoxAnchor, &pGarbageAnchor, ulHdrTextBoxLen);
|
||||
|
||||
/* Free the garbage block list, this should not be needed */
|
||||
DBG_DEC_C(pGarbageAnchor != NULL, pGarbageAnchor->tInfo.ulLength);
|
||||
pGarbageAnchor = pFreeOneList(pGarbageAnchor);
|
||||
|
||||
#if defined(DEBUG)
|
||||
vCheckList(pTextAnchor, ulTextLen, "Software error (Text)");
|
||||
vCheckList(pFootnoteAnchor, ulFootnoteLen, "Software error (Footnote)");
|
||||
vCheckList(pHdrFtrAnchor, ulHdrFtrLen, "Software error (Hdr/Ftr)");
|
||||
vCheckList(pMacroAnchor, ulMacroLen, "Software error (Macro)");
|
||||
vCheckList(pAnnotationAnchor, ulAnnotationLen,
|
||||
"Software error (Annotation)");
|
||||
vCheckList(pEndnoteAnchor, ulEndnoteLen, "Software error (Endnote)");
|
||||
vCheckList(pTextBoxAnchor, ulTextBoxLen, "Software error (TextBox)");
|
||||
vCheckList(pHdrTextBoxAnchor, ulHdrTextBoxLen,
|
||||
"Software error (HdrTextBox)");
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Remove the list if the text box is empty */
|
||||
if (bIsEmptyBox(pFile, pTextBoxAnchor)) {
|
||||
pTextBoxAnchor = pFreeOneList(pTextBoxAnchor);
|
||||
}
|
||||
if (bIsEmptyBox(pFile, pHdrTextBoxAnchor)) {
|
||||
pHdrTextBoxAnchor = pFreeOneList(pHdrTextBoxAnchor);
|
||||
}
|
||||
|
||||
if (!bMustExtend) {
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* All blocks (except the last one) must have a length that
|
||||
* is a multiple of the Big Block Size
|
||||
*/
|
||||
|
||||
apAnchors[0] = pTextAnchor;
|
||||
apAnchors[1] = pFootnoteAnchor;
|
||||
apAnchors[2] = pHdrFtrAnchor;
|
||||
apAnchors[3] = pMacroAnchor;
|
||||
apAnchors[4] = pAnnotationAnchor;
|
||||
apAnchors[5] = pEndnoteAnchor;
|
||||
apAnchors[6] = pTextBoxAnchor;
|
||||
apAnchors[7] = pHdrTextBoxAnchor;
|
||||
|
||||
for (tIndex = 0; tIndex < elementsof(apAnchors); tIndex++) {
|
||||
for (pCurr = apAnchors[tIndex];
|
||||
pCurr != NULL;
|
||||
pCurr = pCurr->pNext) {
|
||||
if (pCurr->pNext != NULL &&
|
||||
pCurr->tInfo.ulLength % BIG_BLOCK_SIZE != 0) {
|
||||
DBG_DEC(tIndex);
|
||||
DBG_HEX(pCurr->tInfo.ulFileOffset);
|
||||
DBG_HEX(pCurr->tInfo.ulCharPos);
|
||||
DBG_DEC(pCurr->tInfo.ulLength);
|
||||
pCurr->tInfo.ulLength /= BIG_BLOCK_SIZE;
|
||||
pCurr->tInfo.ulLength++;
|
||||
pCurr->tInfo.ulLength *= BIG_BLOCK_SIZE;
|
||||
DBG_DEC(pCurr->tInfo.ulLength);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* end of vSplitBlockList */
|
||||
|
||||
#if defined(__riscos)
|
||||
/*
|
||||
* ulGetDocumentLength - get the total character length of the printable lists
|
||||
*
|
||||
* returns: The total number of characters
|
||||
*/
|
||||
ULONG
|
||||
ulGetDocumentLength(void)
|
||||
{
|
||||
long ulTotal;
|
||||
|
||||
DBG_MSG("ulGetDocumentLength");
|
||||
|
||||
ulTotal = ulComputeListLength(pTextAnchor);
|
||||
ulTotal += ulComputeListLength(pFootnoteAnchor);
|
||||
ulTotal += ulComputeListLength(pEndnoteAnchor);
|
||||
ulTotal += ulComputeListLength(pTextBoxAnchor);
|
||||
ulTotal += ulComputeListLength(pHdrTextBoxAnchor);
|
||||
DBG_DEC(ulTotal);
|
||||
return ulTotal;
|
||||
} /* end of ulGetDocumentLength */
|
||||
#endif /* __riscos */
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* bExistsHdrFtr - are there headers and/or footers?
|
||||
*/
|
||||
BOOL
|
||||
bExistsHdrFtr(void)
|
||||
{
|
||||
return pHdrFtrAnchor != NULL &&
|
||||
pHdrFtrAnchor->tInfo.ulLength != 0;
|
||||
} /* end of bExistsHdrFtr */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* bExistsTextBox - is there a text box?
|
||||
*/
|
||||
BOOL
|
||||
bExistsTextBox(void)
|
||||
{
|
||||
return pTextBoxAnchor != NULL &&
|
||||
pTextBoxAnchor->tInfo.ulLength != 0;
|
||||
} /* end of bExistsTextBox */
|
||||
|
||||
/*
|
||||
* bExistsHdrTextBox - is there a header text box?
|
||||
*/
|
||||
BOOL
|
||||
bExistsHdrTextBox(void)
|
||||
{
|
||||
return pHdrTextBoxAnchor != NULL &&
|
||||
pHdrTextBoxAnchor->tInfo.ulLength != 0;
|
||||
} /* end of bExistsHdrTextBox */
|
||||
|
||||
/*
|
||||
* usGetNextByte - get the next byte from the specified block list
|
||||
*/
|
||||
static USHORT
|
||||
usGetNextByte(FILE *pFile, readinfo_type *pInfoCurrent, list_mem_type *pAnchor,
|
||||
ULONG *pulFileOffset, ULONG *pulCharPos, USHORT *pusPropMod)
|
||||
{
|
||||
ULONG ulReadOff;
|
||||
size_t tReadLen;
|
||||
|
||||
fail(pInfoCurrent == NULL);
|
||||
|
||||
if (pInfoCurrent->pBlockCurrent == NULL ||
|
||||
pInfoCurrent->tByteNext >= sizeof(pInfoCurrent->aucBlock) ||
|
||||
pInfoCurrent->ulBlockOffset + pInfoCurrent->tByteNext >=
|
||||
pInfoCurrent->pBlockCurrent->tInfo.ulLength) {
|
||||
if (pInfoCurrent->pBlockCurrent == NULL) {
|
||||
/* First block, first part */
|
||||
pInfoCurrent->pBlockCurrent = pAnchor;
|
||||
pInfoCurrent->ulBlockOffset = 0;
|
||||
} else if (pInfoCurrent->ulBlockOffset +
|
||||
sizeof(pInfoCurrent->aucBlock) <
|
||||
pInfoCurrent->pBlockCurrent->tInfo.ulLength) {
|
||||
/* Same block, next part */
|
||||
pInfoCurrent->ulBlockOffset +=
|
||||
sizeof(pInfoCurrent->aucBlock);
|
||||
} else {
|
||||
/* Next block, first part */
|
||||
pInfoCurrent->pBlockCurrent =
|
||||
pInfoCurrent->pBlockCurrent->pNext;
|
||||
pInfoCurrent->ulBlockOffset = 0;
|
||||
}
|
||||
if (pInfoCurrent->pBlockCurrent == NULL) {
|
||||
/* Past the last part of the last block */
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
tReadLen = (size_t)
|
||||
(pInfoCurrent->pBlockCurrent->tInfo.ulLength -
|
||||
pInfoCurrent->ulBlockOffset);
|
||||
if (tReadLen > sizeof(pInfoCurrent->aucBlock)) {
|
||||
tReadLen = sizeof(pInfoCurrent->aucBlock);
|
||||
}
|
||||
ulReadOff = pInfoCurrent->pBlockCurrent->tInfo.ulFileOffset +
|
||||
pInfoCurrent->ulBlockOffset;
|
||||
if (!bReadBytes(pInfoCurrent->aucBlock,
|
||||
tReadLen, ulReadOff, pFile)) {
|
||||
/* Don't read from this list any longer */
|
||||
pInfoCurrent->pBlockCurrent = NULL;
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
pInfoCurrent->tByteNext = 0;
|
||||
}
|
||||
if (pulFileOffset != NULL) {
|
||||
*pulFileOffset =
|
||||
pInfoCurrent->pBlockCurrent->tInfo.ulFileOffset +
|
||||
pInfoCurrent->ulBlockOffset +
|
||||
pInfoCurrent->tByteNext;
|
||||
}
|
||||
if (pulCharPos != NULL) {
|
||||
*pulCharPos =
|
||||
pInfoCurrent->pBlockCurrent->tInfo.ulCharPos +
|
||||
pInfoCurrent->ulBlockOffset +
|
||||
pInfoCurrent->tByteNext;
|
||||
}
|
||||
if (pusPropMod != NULL) {
|
||||
*pusPropMod = pInfoCurrent->pBlockCurrent->tInfo.usPropMod;
|
||||
}
|
||||
return (USHORT)pInfoCurrent->aucBlock[pInfoCurrent->tByteNext++];
|
||||
} /* end of usGetNextByte */
|
||||
|
||||
|
||||
/*
|
||||
* usGetNextChar - get the next character from the specified block list
|
||||
*/
|
||||
static USHORT
|
||||
usGetNextChar(FILE *pFile, list_id_enum eListID,
|
||||
ULONG *pulFileOffset, ULONG *pulCharPos, USHORT *pusPropMod)
|
||||
{
|
||||
readinfo_type *pReadinfo;
|
||||
list_mem_type *pAnchor;
|
||||
USHORT usLSB, usMSB;
|
||||
|
||||
switch (eListID) {
|
||||
case text_list:
|
||||
pReadinfo = &tOthers;
|
||||
pAnchor = pTextAnchor;
|
||||
break;
|
||||
case footnote_list:
|
||||
pReadinfo = &tFootnote;
|
||||
pAnchor = pFootnoteAnchor;
|
||||
break;
|
||||
case hdrftr_list:
|
||||
pReadinfo = &tHdrFtr;
|
||||
pAnchor = pHdrFtrAnchor;
|
||||
break;
|
||||
case endnote_list:
|
||||
pReadinfo = &tOthers;
|
||||
pAnchor = pEndnoteAnchor;
|
||||
break;
|
||||
case textbox_list:
|
||||
pReadinfo = &tOthers;
|
||||
pAnchor = pTextBoxAnchor;
|
||||
break;
|
||||
case hdrtextbox_list:
|
||||
pReadinfo = &tOthers;
|
||||
pAnchor = pHdrTextBoxAnchor;
|
||||
break;
|
||||
default:
|
||||
DBG_DEC(eListID);
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
|
||||
usLSB = usGetNextByte(pFile, pReadinfo, pAnchor,
|
||||
pulFileOffset, pulCharPos, pusPropMod);
|
||||
if (usLSB == (USHORT)EOF) {
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
fail(pReadinfo->pBlockCurrent == NULL);
|
||||
|
||||
if (pReadinfo->pBlockCurrent->tInfo.bUsesUnicode) {
|
||||
usMSB = usGetNextByte(pFile,
|
||||
pReadinfo, pAnchor, NULL, NULL, NULL);
|
||||
} else {
|
||||
usMSB = 0x00;
|
||||
}
|
||||
if (usMSB == (USHORT)EOF) {
|
||||
DBG_MSG("usGetNextChar: Unexpected EOF");
|
||||
DBG_HEX_C(pulFileOffset != NULL, *pulFileOffset);
|
||||
DBG_HEX_C(pulCharPos != NULL, *pulCharPos);
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
return (usMSB << 8) | usLSB;
|
||||
} /* end of usGetNextChar */
|
||||
|
||||
/*
|
||||
* usNextChar - get the next character from the given block list
|
||||
*/
|
||||
USHORT
|
||||
usNextChar(FILE *pFile, list_id_enum eListID,
|
||||
ULONG *pulFileOffset, ULONG *pulCharPos, USHORT *pusPropMod)
|
||||
{
|
||||
USHORT usRetVal;
|
||||
|
||||
fail(pFile == NULL);
|
||||
|
||||
usRetVal = usGetNextChar(pFile, eListID,
|
||||
pulFileOffset, pulCharPos, pusPropMod);
|
||||
if (usRetVal == (USHORT)EOF) {
|
||||
if (pulFileOffset != NULL) {
|
||||
*pulFileOffset = FC_INVALID;
|
||||
}
|
||||
if (pulCharPos != NULL) {
|
||||
*pulCharPos = CP_INVALID;
|
||||
}
|
||||
if (pusPropMod != NULL) {
|
||||
*pusPropMod = IGNORE_PROPMOD;
|
||||
}
|
||||
}
|
||||
return usRetVal;
|
||||
} /* end of usNextChar */
|
||||
|
||||
/*
|
||||
* usToHdrFtrPosition - Go to a character position in header/foorter list
|
||||
*
|
||||
* Returns the character found on the specified character position
|
||||
*/
|
||||
USHORT
|
||||
usToHdrFtrPosition(FILE *pFile, ULONG ulCharPos)
|
||||
{
|
||||
ULONG ulCharPosCurr;
|
||||
USHORT usChar;
|
||||
|
||||
tHdrFtr.pBlockCurrent = NULL; /* To reset the header/footer list */
|
||||
do {
|
||||
usChar = usNextChar(pFile,
|
||||
hdrftr_list, NULL, &ulCharPosCurr, NULL);
|
||||
} while (usChar != (USHORT)EOF && ulCharPosCurr != ulCharPos);
|
||||
return usChar;
|
||||
} /* end of usToHdrFtrPosition */
|
||||
|
||||
/*
|
||||
* usToFootnotePosition - Go to a character position in footnote list
|
||||
*
|
||||
* Returns the character found on the specified character position
|
||||
*/
|
||||
USHORT
|
||||
usToFootnotePosition(FILE *pFile, ULONG ulCharPos)
|
||||
{
|
||||
ULONG ulCharPosCurr;
|
||||
USHORT usChar;
|
||||
|
||||
tFootnote.pBlockCurrent = NULL; /* To reset the footnote list */
|
||||
do {
|
||||
usChar = usNextChar(pFile,
|
||||
footnote_list, NULL, &ulCharPosCurr, NULL);
|
||||
} while (usChar != (USHORT)EOF && ulCharPosCurr != ulCharPos);
|
||||
return usChar;
|
||||
} /* end of usToFootnotePosition */
|
||||
|
||||
/*
|
||||
* Convert a character position to an offset in the file.
|
||||
* Logical to physical offset.
|
||||
*
|
||||
* Returns: FC_INVALID: in case of error
|
||||
* otherwise: the computed file offset
|
||||
*/
|
||||
ULONG
|
||||
ulCharPos2FileOffsetX(ULONG ulCharPos, list_id_enum *peListID)
|
||||
{
|
||||
static list_id_enum eListIDs[8] = {
|
||||
text_list, footnote_list, hdrftr_list,
|
||||
macro_list, annotation_list, endnote_list,
|
||||
textbox_list, hdrtextbox_list,
|
||||
};
|
||||
list_mem_type *apAnchors[8];
|
||||
list_mem_type *pCurr;
|
||||
list_id_enum eListGuess;
|
||||
ULONG ulBestGuess;
|
||||
size_t tIndex;
|
||||
|
||||
fail(peListID == NULL);
|
||||
|
||||
if (ulCharPos == CP_INVALID) {
|
||||
*peListID = no_list;
|
||||
return FC_INVALID;
|
||||
}
|
||||
|
||||
apAnchors[0] = pTextAnchor;
|
||||
apAnchors[1] = pFootnoteAnchor;
|
||||
apAnchors[2] = pHdrFtrAnchor;
|
||||
apAnchors[3] = pMacroAnchor;
|
||||
apAnchors[4] = pAnnotationAnchor;
|
||||
apAnchors[5] = pEndnoteAnchor;
|
||||
apAnchors[6] = pTextBoxAnchor;
|
||||
apAnchors[7] = pHdrTextBoxAnchor;
|
||||
|
||||
eListGuess = no_list; /* Best guess is no list */
|
||||
ulBestGuess = FC_INVALID; /* Best guess is "file offset not found" */
|
||||
|
||||
for (tIndex = 0; tIndex < elementsof(apAnchors); tIndex++) {
|
||||
for (pCurr = apAnchors[tIndex];
|
||||
pCurr != NULL;
|
||||
pCurr = pCurr->pNext) {
|
||||
if (ulCharPos == pCurr->tInfo.ulCharPos +
|
||||
pCurr->tInfo.ulLength &&
|
||||
pCurr->pNext != NULL) {
|
||||
/*
|
||||
* The character position is one beyond this
|
||||
* block, so we guess it's the first byte of
|
||||
* the next block (if there is a next block)
|
||||
*/
|
||||
eListGuess= eListIDs[tIndex];
|
||||
ulBestGuess = pCurr->pNext->tInfo.ulFileOffset;
|
||||
}
|
||||
|
||||
if (ulCharPos < pCurr->tInfo.ulCharPos ||
|
||||
ulCharPos >= pCurr->tInfo.ulCharPos +
|
||||
pCurr->tInfo.ulLength) {
|
||||
/* Character position is not in this block */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* The character position is in the current block */
|
||||
*peListID = eListIDs[tIndex];
|
||||
return pCurr->tInfo.ulFileOffset +
|
||||
ulCharPos - pCurr->tInfo.ulCharPos;
|
||||
}
|
||||
}
|
||||
/* Passed beyond the end of the last list */
|
||||
NO_DBG_HEX(ulCharPos);
|
||||
NO_DBG_HEX(ulBestGuess);
|
||||
*peListID = eListGuess;
|
||||
return ulBestGuess;
|
||||
} /* end of ulCharPos2FileOffsetX */
|
||||
|
||||
/*
|
||||
* Convert a character position to an offset in the file.
|
||||
* Logical to physical offset.
|
||||
*
|
||||
* Returns: FC_INVALID: in case of error
|
||||
* otherwise: the computed file offset
|
||||
*/
|
||||
ULONG
|
||||
ulCharPos2FileOffset(ULONG ulCharPos)
|
||||
{
|
||||
list_id_enum eListID;
|
||||
|
||||
return ulCharPos2FileOffsetX(ulCharPos, &eListID);
|
||||
} /* end of ulCharPos2FileOffset */
|
||||
|
||||
/*
|
||||
* Convert an offset in the header/footer list to a character position.
|
||||
*
|
||||
* Returns: CP_INVALID: in case of error
|
||||
* otherwise: the computed character position
|
||||
*/
|
||||
ULONG
|
||||
ulHdrFtrOffset2CharPos(ULONG ulHdrFtrOffset)
|
||||
{
|
||||
list_mem_type *pCurr;
|
||||
ULONG ulOffset;
|
||||
|
||||
ulOffset = ulHdrFtrOffset;
|
||||
for (pCurr = pHdrFtrAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (ulOffset >= pCurr->tInfo.ulLength) {
|
||||
/* The offset is not in this block */
|
||||
ulOffset -= pCurr->tInfo.ulLength;
|
||||
continue;
|
||||
}
|
||||
return pCurr->tInfo.ulCharPos + ulOffset;
|
||||
}
|
||||
return CP_INVALID;
|
||||
} /* end of ulHdrFtrOffset2CharPos */
|
||||
|
||||
/*
|
||||
* Get the sequence number beloning to the given file offset
|
||||
*
|
||||
* Returns the sequence number
|
||||
*/
|
||||
ULONG
|
||||
ulGetSeqNumber(ULONG ulFileOffset)
|
||||
{
|
||||
list_mem_type *pCurr;
|
||||
ULONG ulSeq;
|
||||
|
||||
if (ulFileOffset == FC_INVALID) {
|
||||
return FC_INVALID;
|
||||
}
|
||||
|
||||
ulSeq = 0;
|
||||
for (pCurr = pTextAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (ulFileOffset >= pCurr->tInfo.ulFileOffset &&
|
||||
ulFileOffset < pCurr->tInfo.ulFileOffset +
|
||||
pCurr->tInfo.ulLength) {
|
||||
/* The file offset is within the current textblock */
|
||||
return ulSeq + ulFileOffset - pCurr->tInfo.ulFileOffset;
|
||||
}
|
||||
ulSeq += pCurr->tInfo.ulLength;
|
||||
}
|
||||
return FC_INVALID;
|
||||
} /* end of ulGetSeqNumber */
|
720
chartrans.c
Normal file
720
chartrans.c
Normal file
@ -0,0 +1,720 @@
|
||||
/*
|
||||
* chartrans.c
|
||||
* Copyright (C) 1999-2004 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Translate Word characters to local representation
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#if defined(__STDC_ISO_10646__)
|
||||
#include <wctype.h>
|
||||
#endif /* __STDC_ISO_10646__ */
|
||||
#include "antiword.h"
|
||||
|
||||
static const USHORT usCp850[] = { /* DOS implementation of Latin1 */
|
||||
0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
|
||||
0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
|
||||
0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
|
||||
0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
|
||||
0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
|
||||
0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
|
||||
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
|
||||
0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
|
||||
0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
|
||||
0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
|
||||
0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce,
|
||||
0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
|
||||
0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
|
||||
0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4,
|
||||
0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
|
||||
0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0,
|
||||
};
|
||||
|
||||
static const USHORT usCp1250[] = { /* Windows implementation of Latin2 */
|
||||
0x20ac, 0x003f, 0x201a, 0x003f, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x003f, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179,
|
||||
0x003f, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x003f, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a,
|
||||
0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7,
|
||||
0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b,
|
||||
0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c,
|
||||
0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
|
||||
0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
|
||||
0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
|
||||
0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
|
||||
0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
|
||||
0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
|
||||
0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
|
||||
0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
|
||||
};
|
||||
|
||||
static const USHORT usCp1251[] = { /* Windows implementation of Cyrillic */
|
||||
0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
|
||||
0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x00f3, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
|
||||
0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
|
||||
0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
|
||||
0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
|
||||
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||
0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
|
||||
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||
0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
|
||||
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||
0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
|
||||
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||
0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
|
||||
};
|
||||
|
||||
static const USHORT usCp1252[] = { /* Windows implementation of Latin1 */
|
||||
0x20ac, 0x003f, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
|
||||
0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x003f, 0x017d, 0x003f,
|
||||
0x003f, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
|
||||
0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x003f, 0x017e, 0x0178,
|
||||
0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
|
||||
0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
|
||||
0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
|
||||
0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
|
||||
0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
|
||||
0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
|
||||
0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
|
||||
0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
|
||||
0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
|
||||
0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
|
||||
0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
|
||||
0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
|
||||
};
|
||||
|
||||
static const USHORT usMacRoman[] = { /* Apple implementation of Latin1 */
|
||||
0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
|
||||
0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
|
||||
0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
|
||||
0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
|
||||
0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
|
||||
0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
|
||||
0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
|
||||
0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x2126, 0x00e6, 0x00f8,
|
||||
0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
|
||||
0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
|
||||
0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
|
||||
0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02,
|
||||
0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
|
||||
0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
|
||||
0x003f, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
|
||||
0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7,
|
||||
};
|
||||
|
||||
static const USHORT usPrivateArea[] = {
|
||||
0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220d,
|
||||
0x0028, 0x0029, 0x2217, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f,
|
||||
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
|
||||
0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x2019, 0x003e, 0x003f,
|
||||
0x201d, 0x201c, 0x0392, 0x03a7, 0x0394, 0x0395, 0x03a6, 0x0393,
|
||||
0x0397, 0x0399, 0x03d1, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f,
|
||||
0x03a0, 0x0398, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03c2, 0x03a9,
|
||||
0x039e, 0x03a8, 0x0396, 0x005b, 0x2234, 0x005d, 0x22a5, 0x005f,
|
||||
0x003f, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
|
||||
0x03b7, 0x03b9, 0x03d5, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
|
||||
0x03c0, 0x03b8, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03d6, 0x03c9,
|
||||
0x03be, 0x03c8, 0x03b6, 0x007b, 0x007c, 0x007d, 0x223c, 0x003f,
|
||||
0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
|
||||
0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
|
||||
0x003f, 0x003f, 0x003f, 0x2022, 0x003f, 0x003f, 0x003f, 0x003f,
|
||||
0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
|
||||
0x20ac, 0x03d2, 0x2032, 0x2264, 0x2044, 0x221e, 0x0192, 0x2663,
|
||||
0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193,
|
||||
0x00b0, 0x00b1, 0x2033, 0x2265, 0x00d7, 0x221d, 0x2202, 0x2022,
|
||||
0x00f7, 0x2260, 0x2261, 0x2248, 0x2026, 0x007c, 0x23af, 0x21b5,
|
||||
0x2135, 0x2111, 0x211c, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229,
|
||||
0x222a, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209,
|
||||
0x2220, 0x2207, 0x00ae, 0x00a9, 0x2122, 0x220f, 0x221a, 0x22c5,
|
||||
0x00ac, 0x2227, 0x2228, 0x21d4, 0x21d0, 0x21d1, 0x21d2, 0x21d3,
|
||||
0x22c4, 0x3008, 0x00ae, 0x00a9, 0x2122, 0x2211, 0x239b, 0x239c,
|
||||
0x239d, 0x23a1, 0x23a2, 0x23a3, 0x23a7, 0x23a8, 0x23a9, 0x23aa,
|
||||
0x003f, 0x3009, 0x222b, 0x2320, 0x23ae, 0x2321, 0x239e, 0x239f,
|
||||
0x23a0, 0x23a4, 0x23a5, 0x23a6, 0x23ab, 0x23ac, 0x23ad, 0x003f,
|
||||
};
|
||||
|
||||
typedef struct char_table_tag {
|
||||
UCHAR ucLocal;
|
||||
USHORT usUnicode;
|
||||
} char_table_type;
|
||||
|
||||
static char_table_type atCharTable[256];
|
||||
static size_t tNextPosFree = 0;
|
||||
|
||||
|
||||
/*
|
||||
* iCompare - compare two records
|
||||
*
|
||||
* Compares two records. For use by qsort(3C) and bsearch(3C).
|
||||
*
|
||||
* returns -1 if rec1 < rec2, 0 if rec1 == rec2, 1 if rec1 > rec2
|
||||
*/
|
||||
static int
|
||||
iCompare(const void *pvRecord1, const void *pvRecord2)
|
||||
{
|
||||
USHORT usUnicode1, usUnicode2;
|
||||
|
||||
usUnicode1 = ((char_table_type *)pvRecord1)->usUnicode;
|
||||
usUnicode2 = ((char_table_type *)pvRecord2)->usUnicode;
|
||||
|
||||
if (usUnicode1 < usUnicode2) {
|
||||
return -1;
|
||||
}
|
||||
if (usUnicode1 > usUnicode2) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
} /* end of iCompare */
|
||||
|
||||
/*
|
||||
* pGetCharTableRecord - get the character table record
|
||||
*
|
||||
* returns a pointer to the record when found, otherwise NULL
|
||||
*/
|
||||
static const char_table_type *
|
||||
pGetCharTableRecord(USHORT usUnicode)
|
||||
{
|
||||
char_table_type tKey;
|
||||
|
||||
if (tNextPosFree == 0) {
|
||||
return NULL;
|
||||
}
|
||||
tKey.usUnicode = usUnicode;
|
||||
tKey.ucLocal = 0;
|
||||
return (char_table_type *)bsearch(&tKey,
|
||||
atCharTable,
|
||||
tNextPosFree, sizeof(atCharTable[0]),
|
||||
iCompare);
|
||||
} /* end of pGetCharTableRecord */
|
||||
|
||||
/*
|
||||
* ucGetBulletCharacter - get the local representation of the bullet
|
||||
*/
|
||||
UCHAR
|
||||
ucGetBulletCharacter(conversion_type eConversionType, encoding_type eEncoding)
|
||||
{
|
||||
#if defined(__riscos)
|
||||
return 0x8f;
|
||||
#else
|
||||
const char_table_type *pRec;
|
||||
|
||||
fail(eEncoding == encoding_utf_8);
|
||||
|
||||
if (eEncoding == encoding_latin_1 &&
|
||||
(eConversionType == conversion_ps ||
|
||||
eConversionType == conversion_pdf)) {
|
||||
/* Ugly, but it makes the PostScript and PDF look better */
|
||||
return (UCHAR)143;
|
||||
}
|
||||
if (eConversionType != conversion_text &&
|
||||
eConversionType != conversion_fmt_text) {
|
||||
pRec = pGetCharTableRecord(UNICODE_BULLET);
|
||||
if (pRec != NULL) {
|
||||
return pRec->ucLocal;
|
||||
}
|
||||
pRec = pGetCharTableRecord(UNICODE_BULLET_OPERATOR);
|
||||
if (pRec != NULL) {
|
||||
return pRec->ucLocal;
|
||||
}
|
||||
pRec = pGetCharTableRecord(UNICODE_MIDDLE_DOT);
|
||||
if (pRec != NULL) {
|
||||
return pRec->ucLocal;
|
||||
}
|
||||
}
|
||||
return (UCHAR)'.';
|
||||
#endif /* __riscos */
|
||||
} /* end of ucGetBulletCharacter */
|
||||
|
||||
/*
|
||||
* ucGetNbspCharacter - get the local representation of the non-breaking space
|
||||
*/
|
||||
UCHAR
|
||||
ucGetNbspCharacter(void)
|
||||
{
|
||||
const char_table_type *pRec;
|
||||
|
||||
pRec = pGetCharTableRecord(0x00a0); /* Unicode non-breaking space */
|
||||
if (pRec == NULL) {
|
||||
DBG_MSG("Non-breaking space record not found");
|
||||
/* No value found, use the best guess */
|
||||
return (UCHAR)0xa0;
|
||||
}
|
||||
return pRec->ucLocal;
|
||||
} /* end of ucGetNbspCharacter */
|
||||
|
||||
/*
|
||||
* bReadCharacterMappingTable - read the mapping table
|
||||
*
|
||||
* Read the character mapping table from file and have the contents sorted
|
||||
*
|
||||
* returns TRUE if successful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bReadCharacterMappingTable(FILE *pFile)
|
||||
{
|
||||
char *pcTmp;
|
||||
ULONG ulUnicode;
|
||||
UINT uiLocal;
|
||||
int iFields;
|
||||
char szLine[81];
|
||||
|
||||
if (pFile == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Clean the table first */
|
||||
(void)memset(atCharTable, 0, sizeof(atCharTable));
|
||||
|
||||
/* Fill the table */
|
||||
while (fgets(szLine, (int)sizeof(szLine), pFile)) {
|
||||
if (szLine[0] == '#' ||
|
||||
szLine[0] == '\r' ||
|
||||
szLine[0] == '\n') {
|
||||
/* Comment or empty line */
|
||||
continue;
|
||||
}
|
||||
iFields = sscanf(szLine, "%x %lx %*s", &uiLocal, &ulUnicode);
|
||||
if (iFields != 2) {
|
||||
pcTmp = strchr(szLine, '\r');
|
||||
if (pcTmp != NULL) {
|
||||
*pcTmp = '\0';
|
||||
}
|
||||
pcTmp = strchr(szLine, '\n');
|
||||
if (pcTmp != NULL) {
|
||||
*pcTmp = '\0';
|
||||
}
|
||||
werr(0, "Syntax error in: '%s'", szLine);
|
||||
continue;
|
||||
}
|
||||
if (uiLocal > 0xff || ulUnicode > 0xffff) {
|
||||
werr(0, "Syntax error in: '%02x %04lx'",
|
||||
uiLocal, ulUnicode);
|
||||
continue;
|
||||
}
|
||||
/* Store only the relevant entries */
|
||||
if (uiLocal != ulUnicode || uiLocal >= 0x80) {
|
||||
atCharTable[tNextPosFree].ucLocal = (UCHAR)uiLocal;
|
||||
atCharTable[tNextPosFree].usUnicode = (USHORT)ulUnicode;
|
||||
tNextPosFree++;
|
||||
}
|
||||
if (tNextPosFree >= elementsof(atCharTable)) {
|
||||
werr(0, "Too many entries in the character mapping "
|
||||
"file. Ignoring the rest.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (tNextPosFree != 0) {
|
||||
DBG_HEX(atCharTable[0].usUnicode);
|
||||
DBG_HEX(atCharTable[tNextPosFree - 1].usUnicode);
|
||||
|
||||
qsort(atCharTable,
|
||||
tNextPosFree, sizeof(atCharTable[0]),
|
||||
iCompare);
|
||||
|
||||
DBG_HEX(atCharTable[0].usUnicode);
|
||||
DBG_HEX(atCharTable[tNextPosFree - 1].usUnicode);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
} /* end of bReadCharacterMappingTable */
|
||||
|
||||
/*
|
||||
* ulTranslateCharacters - Translate characters to local representation
|
||||
*
|
||||
* Translate all characters to local representation
|
||||
*
|
||||
* returns the translated character
|
||||
*/
|
||||
ULONG
|
||||
ulTranslateCharacters(USHORT usChar, ULONG ulFileOffset, int iWordVersion,
|
||||
conversion_type eConversionType, encoding_type eEncoding,
|
||||
BOOL bUseMacCharSet)
|
||||
{
|
||||
const char_table_type *pTmp;
|
||||
const USHORT *usCharSet;
|
||||
|
||||
usCharSet = NULL;
|
||||
if (bUseMacCharSet) {
|
||||
/* Macintosh character set */
|
||||
usCharSet = usMacRoman;
|
||||
} else if (iWordVersion == 0) {
|
||||
/* DOS character set */
|
||||
usCharSet = usCp850;
|
||||
} else {
|
||||
/* Windows character set */
|
||||
switch (eEncoding) {
|
||||
case encoding_latin_2:
|
||||
usCharSet = usCp1250;
|
||||
break;
|
||||
case encoding_cyrillic:
|
||||
usCharSet = usCp1251;
|
||||
break;
|
||||
case encoding_latin_1:
|
||||
default:
|
||||
usCharSet = usCp1252;
|
||||
break;
|
||||
}
|
||||
}
|
||||
fail(usCharSet == NULL);
|
||||
if (usChar >= 0x80 && usChar <= 0x9f) {
|
||||
/* Translate implementation defined characters */
|
||||
usChar = usCharSet[usChar - 0x80];
|
||||
} else if (iWordVersion < 8 && usChar >= 0xa0 && usChar <= 0xff) {
|
||||
/* Translate old character set to Unixcode */
|
||||
usChar = usCharSet[usChar - 0x80];
|
||||
}
|
||||
|
||||
/* Microsoft Unicode to real Unicode */
|
||||
if (usChar >= 0xf020 && usChar <= 0xf0ff) {
|
||||
DBG_HEX_C(usPrivateArea[usChar - 0xf020] == 0x003f, usChar);
|
||||
usChar = usPrivateArea[usChar - 0xf020];
|
||||
}
|
||||
|
||||
/* Characters with a special meaning in Word */
|
||||
switch (usChar) {
|
||||
case IGNORE_CHARACTER:
|
||||
case FOOTNOTE_SEPARATOR:
|
||||
case FOOTNOTE_CONTINUATION:
|
||||
case ANNOTATION:
|
||||
case FRAME:
|
||||
case LINE_FEED:
|
||||
case WORD_SOFT_HYPHEN:
|
||||
case UNICODE_HYPHENATION_POINT:
|
||||
return IGNORE_CHARACTER;
|
||||
case PICTURE:
|
||||
case TABLE_SEPARATOR:
|
||||
case TAB:
|
||||
case HARD_RETURN:
|
||||
case PAGE_BREAK:
|
||||
case PAR_END:
|
||||
case COLUMN_FEED:
|
||||
return (ULONG)usChar;
|
||||
case FOOTNOTE_OR_ENDNOTE:
|
||||
NO_DBG_HEX(ulFileOffset);
|
||||
switch (eGetNotetype(ulFileOffset)) {
|
||||
case notetype_is_footnote:
|
||||
return FOOTNOTE_CHAR;
|
||||
case notetype_is_endnote:
|
||||
return ENDNOTE_CHAR;
|
||||
default:
|
||||
return UNKNOWN_NOTE_CHAR;
|
||||
}
|
||||
case WORD_UNBREAKABLE_JOIN:
|
||||
return (ULONG)OUR_UNBREAKABLE_JOIN;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (eEncoding != encoding_utf_8) {
|
||||
/* Latin characters in an oriental text */
|
||||
if (usChar >= 0xff01 && usChar <= 0xff5e) {
|
||||
usChar -= 0xfee0;
|
||||
}
|
||||
}
|
||||
|
||||
if (eEncoding == encoding_latin_1 &&
|
||||
(eConversionType == conversion_ps ||
|
||||
eConversionType == conversion_pdf)) {
|
||||
/* Ugly, but it makes the PostScript and PDF look better */
|
||||
switch (usChar) {
|
||||
case UNICODE_ELLIPSIS:
|
||||
return 140;
|
||||
case UNICODE_TRADEMARK_SIGN:
|
||||
return 141;
|
||||
case UNICODE_PER_MILLE_SIGN:
|
||||
return 142;
|
||||
case UNICODE_BULLET:
|
||||
case UNICODE_BULLET_OPERATOR:
|
||||
case UNICODE_BLACK_CLUB_SUIT:
|
||||
return 143;
|
||||
case UNICODE_LEFT_SINGLE_QMARK:
|
||||
return 144;
|
||||
case UNICODE_RIGHT_SINGLE_QMARK:
|
||||
return 145;
|
||||
case UNICODE_SINGLE_LEFT_ANGLE_QMARK:
|
||||
return 146;
|
||||
case UNICODE_SINGLE_RIGHT_ANGLE_QMARK:
|
||||
return 147;
|
||||
case UNICODE_LEFT_DOUBLE_QMARK:
|
||||
return 148;
|
||||
case UNICODE_RIGHT_DOUBLE_QMARK:
|
||||
return 149;
|
||||
case UNICODE_DOUBLE_LOW_9_QMARK:
|
||||
return 150;
|
||||
case UNICODE_EN_DASH:
|
||||
return 151;
|
||||
case UNICODE_EM_DASH:
|
||||
return 152;
|
||||
case UNICODE_MINUS_SIGN:
|
||||
return 153;
|
||||
case UNICODE_CAPITAL_LIGATURE_OE:
|
||||
return 154;
|
||||
case UNICODE_SMALL_LIGATURE_OE:
|
||||
return 155;
|
||||
case UNICODE_DAGGER:
|
||||
return 156;
|
||||
case UNICODE_DOUBLE_DAGGER:
|
||||
return 157;
|
||||
case UNICODE_SMALL_LIGATURE_FI:
|
||||
return 158;
|
||||
case UNICODE_SMALL_LIGATURE_FL:
|
||||
return 159;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (eConversionType == conversion_pdf) {
|
||||
if (eEncoding == encoding_latin_1) {
|
||||
switch (usChar) {
|
||||
case UNICODE_EURO_SIGN:
|
||||
return 128;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (eEncoding == encoding_latin_2) {
|
||||
switch (usChar) {
|
||||
case UNICODE_CAPITAL_D_WITH_STROKE:
|
||||
case UNICODE_SMALL_D_WITH_STROKE:
|
||||
return 0x3f;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (usChar < 0x80) {
|
||||
/* US ASCII */
|
||||
if (usChar < 0x20 || usChar == 0x7f) {
|
||||
/* Ignore control characters */
|
||||
DBG_HEX(usChar);
|
||||
DBG_FIXME();
|
||||
return IGNORE_CHARACTER;
|
||||
}
|
||||
return (ULONG)usChar;
|
||||
}
|
||||
|
||||
if (eEncoding == encoding_utf_8) {
|
||||
/* No need to convert Unicode characters */
|
||||
return (ULONG)usChar;
|
||||
}
|
||||
|
||||
/* Unicode to local representation */
|
||||
pTmp = pGetCharTableRecord(usChar);
|
||||
if (pTmp != NULL) {
|
||||
DBG_HEX_C(usChar >= 0x7f && usChar <= 0x9f, usChar);
|
||||
return (ULONG)pTmp->ucLocal;
|
||||
}
|
||||
|
||||
/* Fancy characters to simple US ASCII */
|
||||
switch (usChar) {
|
||||
case UNICODE_SMALL_F_HOOK:
|
||||
return (ULONG)'f';
|
||||
case UNICODE_GREEK_CAPITAL_CHI:
|
||||
return (ULONG)'X';
|
||||
case UNICODE_GREEK_SMALL_UPSILON:
|
||||
return (ULONG)'v';
|
||||
case UNICODE_MODIFIER_CIRCUMFLEX:
|
||||
case UNICODE_UPWARDS_ARROW:
|
||||
return (ULONG)'^';
|
||||
case UNICODE_SMALL_TILDE:
|
||||
case UNICODE_TILDE_OPERATOR:
|
||||
return (ULONG)'~';
|
||||
case UNICODE_EN_QUAD:
|
||||
case UNICODE_EM_QUAD:
|
||||
case UNICODE_EN_SPACE:
|
||||
case UNICODE_EM_SPACE:
|
||||
case UNICODE_THREE_PER_EM_SPACE:
|
||||
case UNICODE_FOUR_PER_EM_SPACE:
|
||||
case UNICODE_SIX_PER_EM_SPACE:
|
||||
case UNICODE_FIGURE_SPACE:
|
||||
case UNICODE_PUNCTUATION_SPACE:
|
||||
case UNICODE_THIN_SPACE:
|
||||
case UNICODE_NARROW_NO_BREAK_SPACE:
|
||||
case UNICODE_LIGHT_SHADE:
|
||||
case UNICODE_MEDIUM_SHADE:
|
||||
case UNICODE_DARK_SHADE:
|
||||
return (ULONG)' ';
|
||||
case UNICODE_LEFT_DOUBLE_QMARK:
|
||||
case UNICODE_RIGHT_DOUBLE_QMARK:
|
||||
case UNICODE_DOUBLE_LOW_9_QMARK:
|
||||
case UNICODE_DOUBLE_HIGH_REV_9_QMARK:
|
||||
case UNICODE_DOUBLE_PRIME:
|
||||
return (ULONG)'"';
|
||||
case UNICODE_LEFT_SINGLE_QMARK:
|
||||
case UNICODE_RIGHT_SINGLE_QMARK:
|
||||
case UNICODE_SINGLE_LOW_9_QMARK:
|
||||
case UNICODE_SINGLE_HIGH_REV_9_QMARK:
|
||||
case UNICODE_PRIME:
|
||||
return (ULONG)'\'';
|
||||
case UNICODE_HYPHEN:
|
||||
case UNICODE_NON_BREAKING_HYPHEN:
|
||||
case UNICODE_FIGURE_DASH:
|
||||
case UNICODE_EN_DASH:
|
||||
case UNICODE_EM_DASH:
|
||||
case UNICODE_HORIZONTAL_BAR:
|
||||
case UNICODE_MINUS_SIGN:
|
||||
case UNICODE_BD_LIGHT_HORIZONTAL:
|
||||
case UNICODE_BD_DOUBLE_HORIZONTAL:
|
||||
return (ULONG)'-';
|
||||
case UNICODE_DOUBLE_VERTICAL_LINE:
|
||||
case UNICODE_BD_LIGHT_VERTICAL:
|
||||
case UNICODE_BD_DOUBLE_VERTICAL:
|
||||
return (ULONG)'|';
|
||||
case UNICODE_DOUBLE_LOW_LINE:
|
||||
return (ULONG)'_';
|
||||
case UNICODE_DAGGER:
|
||||
return (ULONG)'+';
|
||||
case UNICODE_DOUBLE_DAGGER:
|
||||
return (ULONG)'#';
|
||||
case UNICODE_BULLET:
|
||||
case UNICODE_BULLET_OPERATOR:
|
||||
case UNICODE_BLACK_CLUB_SUIT:
|
||||
return (ULONG)ucGetBulletCharacter(eConversionType, eEncoding);
|
||||
case UNICODE_ONE_DOT_LEADER:
|
||||
case UNICODE_TWO_DOT_LEADER:
|
||||
return (ULONG)'.';
|
||||
case UNICODE_ELLIPSIS:
|
||||
#if defined(__riscos)
|
||||
return (ULONG)OUR_ELLIPSIS;
|
||||
#else
|
||||
if (ulFileOffset == 0) {
|
||||
return (ULONG)OUR_ELLIPSIS;
|
||||
}
|
||||
return UNICODE_ELLIPSIS;
|
||||
#endif /* __riscos */
|
||||
case UNICODE_DOUBLE_LEFT_ANGLE_QMARK:
|
||||
case UNICODE_TRIANGULAR_BULLET:
|
||||
case UNICODE_SINGLE_LEFT_ANGLE_QMARK:
|
||||
case UNICODE_LEFTWARDS_ARROW:
|
||||
return (ULONG)'<';
|
||||
case UNICODE_DOUBLE_RIGHT_ANGLE_QMARK:
|
||||
case UNICODE_SINGLE_RIGHT_ANGLE_QMARK:
|
||||
case UNICODE_RIGHTWARDS_ARROW:
|
||||
return (ULONG)'>';
|
||||
case UNICODE_UNDERTIE:
|
||||
return (ULONG)'-';
|
||||
case UNICODE_N_ARY_SUMMATION:
|
||||
return (ULONG)'S';
|
||||
case UNICODE_EURO_SIGN:
|
||||
return (ULONG)'E';
|
||||
case UNICODE_CIRCLE:
|
||||
case UNICODE_SQUARE:
|
||||
return (ULONG)'O';
|
||||
case UNICODE_DIAMOND:
|
||||
return (ULONG)OUR_DIAMOND;
|
||||
case UNICODE_NUMERO_SIGN:
|
||||
return (ULONG)'N';
|
||||
case UNICODE_KELVIN_SIGN:
|
||||
return (ULONG)'K';
|
||||
case UNICODE_DOWNWARDS_ARROW:
|
||||
return (ULONG)'v';
|
||||
case UNICODE_FRACTION_SLASH:
|
||||
case UNICODE_DIVISION_SLASH:
|
||||
return (ULONG)'/';
|
||||
case UNICODE_ASTERISK_OPERATOR:
|
||||
return (ULONG)'*';
|
||||
case UNICODE_RATIO:
|
||||
return (ULONG)':';
|
||||
case UNICODE_BD_LIGHT_DOWN_RIGHT:
|
||||
case UNICODE_BD_LIGHT_DOWN_AND_LEFT:
|
||||
case UNICODE_BD_LIGHT_UP_AND_RIGHT:
|
||||
case UNICODE_BD_LIGHT_UP_AND_LEFT:
|
||||
case UNICODE_BD_LIGHT_VERTICAL_AND_RIGHT:
|
||||
case UNICODE_BD_LIGHT_VERTICAL_AND_LEFT:
|
||||
case UNICODE_BD_LIGHT_DOWN_AND_HORIZONTAL:
|
||||
case UNICODE_BD_LIGHT_UP_AND_HORIZONTAL:
|
||||
case UNICODE_BD_LIGHT_VERTICAL_AND_HORIZONTAL:
|
||||
case UNICODE_BD_DOUBLE_DOWN_AND_RIGHT:
|
||||
case UNICODE_BD_DOUBLE_DOWN_AND_LEFT:
|
||||
case UNICODE_BD_DOUBLE_UP_AND_RIGHT:
|
||||
case UNICODE_BD_DOUBLE_UP_AND_LEFT:
|
||||
case UNICODE_BD_DOUBLE_VERTICAL_AND_RIGHT:
|
||||
case UNICODE_BD_DOUBLE_VERTICAL_AND_LEFT:
|
||||
case UNICODE_BD_DOUBLE_DOWN_AND_HORIZONTAL:
|
||||
case UNICODE_BD_DOUBLE_UP_AND_HORIZONTAL:
|
||||
case UNICODE_BD_DOUBLE_VERTICAL_AND_HORIZONTAL:
|
||||
case UNICODE_BLACK_SQUARE:
|
||||
return (ULONG)'+';
|
||||
case UNICODE_HAIR_SPACE:
|
||||
case UNICODE_ZERO_WIDTH_SPACE:
|
||||
case UNICODE_ZERO_WIDTH_NON_JOINER:
|
||||
case UNICODE_ZERO_WIDTH_JOINER:
|
||||
case UNICODE_LEFT_TO_RIGHT_MARK:
|
||||
case UNICODE_RIGHT_TO_LEFT_MARK:
|
||||
case UNICODE_LEFT_TO_RIGHT_EMBEDDING:
|
||||
case UNICODE_RIGHT_TO_LEFT_EMBEDDING:
|
||||
case UNICODE_POP_DIRECTIONAL_FORMATTING:
|
||||
case UNICODE_LEFT_TO_RIGHT_OVERRIDE:
|
||||
case UNICODE_RIGHT_TO_LEFT_OVERRIDE:
|
||||
case UNICODE_ZERO_WIDTH_NO_BREAK_SPACE:
|
||||
return IGNORE_CHARACTER;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (usChar == UNICODE_TRADEMARK_SIGN) {
|
||||
/*
|
||||
* No local representation, it doesn't look like anything in
|
||||
* US-ASCII and a question mark does more harm than good.
|
||||
*/
|
||||
return IGNORE_CHARACTER;
|
||||
}
|
||||
|
||||
if (usChar >= 0xa0 && usChar <= 0xff) {
|
||||
/* Before Word 97, Word did't use Unicode */
|
||||
return (ULONG)usChar;
|
||||
}
|
||||
|
||||
DBG_HEX_C(usChar < 0x3000 || usChar >= 0xd800, ulFileOffset);
|
||||
DBG_HEX_C(usChar < 0x3000 || usChar >= 0xd800, usChar);
|
||||
DBG_MSG_C(usChar >= 0xe000 && usChar < 0xf900, "Private Use Area");
|
||||
|
||||
/* Untranslated Unicode character */
|
||||
return 0x3f;
|
||||
} /* end of ulTranslateCharacters */
|
||||
|
||||
/*
|
||||
* ulToUpper - convert letter to upper case
|
||||
*
|
||||
* This function converts a letter to upper case. Unlike toupper(3) this
|
||||
* function is independent from the settings of locale. This comes in handy
|
||||
* for people who have to read Word documents in more than one language or
|
||||
* contain more than one language.
|
||||
*
|
||||
* returns the converted letter, or ulChar if the conversion was not possible.
|
||||
*/
|
||||
ULONG
|
||||
ulToUpper(ULONG ulChar)
|
||||
{
|
||||
if (ulChar < 0x80) {
|
||||
/* US ASCII: use standard function */
|
||||
return (ULONG)toupper((int)ulChar);
|
||||
}
|
||||
if (ulChar >= 0xe0 && ulChar <= 0xfe && ulChar != 0xf7) {
|
||||
/*
|
||||
* Lower case accented characters
|
||||
* 0xf7 is Division sign; 0xd7 is Multiplication sign
|
||||
* 0xff is y with diaeresis; 0xdf is Sharp s
|
||||
*/
|
||||
return ulChar & ~0x20;
|
||||
}
|
||||
#if defined(__STDC_ISO_10646__)
|
||||
/*
|
||||
* If this is ISO C99 and all locales have wchar_t = ISO 10646
|
||||
* (e.g., glibc 2.2 or newer), then use standard function
|
||||
*/
|
||||
if (ulChar > 0xff) {
|
||||
return (ULONG)towupper((wint_t)ulChar);
|
||||
}
|
||||
#endif /* __STDC_ISO_10646__ */
|
||||
return ulChar;
|
||||
} /* end of ulToUpper */
|
374
datalist.c
Normal file
374
datalist.c
Normal file
@ -0,0 +1,374 @@
|
||||
/*
|
||||
* datalist.c
|
||||
* Copyright (C) 2000-2002 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Build, read and destroy a list of Word data blocks
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include "antiword.h"
|
||||
|
||||
#if defined(__riscos)
|
||||
#define EIO 42
|
||||
#endif /* __riscos */
|
||||
|
||||
|
||||
/*
|
||||
* Private structure to hide the way the information
|
||||
* is stored from the rest of the program
|
||||
*/
|
||||
typedef struct data_mem_tag {
|
||||
data_block_type tInfo;
|
||||
struct data_mem_tag *pNext;
|
||||
} data_mem_type;
|
||||
|
||||
/* Variable to describe the start of the data block list */
|
||||
static data_mem_type *pAnchor = NULL;
|
||||
/* Variable needed to read the data block list */
|
||||
static data_mem_type *pBlockLast = NULL;
|
||||
/* Variable needed to read the data block list */
|
||||
static data_mem_type *pBlockCurrent = NULL;
|
||||
static ULONG ulBlockOffset = 0;
|
||||
static size_t tByteNext = 0;
|
||||
/* Last block read */
|
||||
static UCHAR aucBlock[BIG_BLOCK_SIZE];
|
||||
|
||||
|
||||
/*
|
||||
* vDestroyDataBlockList - destroy the data block list
|
||||
*/
|
||||
void
|
||||
vDestroyDataBlockList(void)
|
||||
{
|
||||
data_mem_type *pCurr, *pNext;
|
||||
|
||||
DBG_MSG("vDestroyDataBlockList");
|
||||
|
||||
pCurr = pAnchor;
|
||||
while (pCurr != NULL) {
|
||||
pNext = pCurr->pNext;
|
||||
pCurr = xfree(pCurr);
|
||||
pCurr = pNext;
|
||||
}
|
||||
pAnchor = NULL;
|
||||
/* Reset all the control variables */
|
||||
pBlockLast = NULL;
|
||||
pBlockCurrent = NULL;
|
||||
ulBlockOffset = 0;
|
||||
tByteNext = 0;
|
||||
} /* end of vDestroyDataBlockList */
|
||||
|
||||
/*
|
||||
* bAdd2DataBlockList - add an element to the data block list
|
||||
*
|
||||
* Returns TRUE when successful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bAdd2DataBlockList(const data_block_type *pDataBlock)
|
||||
{
|
||||
data_mem_type *pListMember;
|
||||
|
||||
fail(pDataBlock == NULL);
|
||||
fail(pDataBlock->ulFileOffset == FC_INVALID);
|
||||
fail(pDataBlock->ulDataPos == CP_INVALID);
|
||||
fail(pDataBlock->ulLength == 0);
|
||||
|
||||
NO_DBG_MSG("bAdd2DataBlockList");
|
||||
NO_DBG_HEX(pDataBlock->ulFileOffset);
|
||||
NO_DBG_HEX(pDataBlock->ulDataPos);
|
||||
NO_DBG_HEX(pDataBlock->ulLength);
|
||||
|
||||
if (pDataBlock->ulFileOffset == FC_INVALID ||
|
||||
pDataBlock->ulDataPos == CP_INVALID ||
|
||||
pDataBlock->ulLength == 0) {
|
||||
werr(0, "Software (datablock) error");
|
||||
return FALSE;
|
||||
}
|
||||
/* Check for continuous blocks */
|
||||
if (pBlockLast != NULL &&
|
||||
pBlockLast->tInfo.ulFileOffset +
|
||||
pBlockLast->tInfo.ulLength == pDataBlock->ulFileOffset &&
|
||||
pBlockLast->tInfo.ulDataPos +
|
||||
pBlockLast->tInfo.ulLength == pDataBlock->ulDataPos) {
|
||||
/* These are continous blocks */
|
||||
pBlockLast->tInfo.ulLength += pDataBlock->ulLength;
|
||||
return TRUE;
|
||||
}
|
||||
/* Make a new block */
|
||||
pListMember = xmalloc(sizeof(data_mem_type));
|
||||
/* Add the block to the data list */
|
||||
pListMember->tInfo = *pDataBlock;
|
||||
pListMember->pNext = NULL;
|
||||
if (pAnchor == NULL) {
|
||||
pAnchor = pListMember;
|
||||
} else {
|
||||
fail(pBlockLast == NULL);
|
||||
pBlockLast->pNext = pListMember;
|
||||
}
|
||||
pBlockLast = pListMember;
|
||||
return TRUE;
|
||||
} /* end of bAdd2DataBlockList */
|
||||
|
||||
/*
|
||||
* ulGetDataOffset - get the offset in the data block list
|
||||
*
|
||||
* Get the fileoffset the current position in the data block list
|
||||
*/
|
||||
ULONG
|
||||
ulGetDataOffset(FILE *pFile)
|
||||
{
|
||||
return pBlockCurrent->tInfo.ulFileOffset + ulBlockOffset + tByteNext;
|
||||
} /* end of ulGetDataOffset */
|
||||
|
||||
/*
|
||||
* bSetDataOffset - set the offset in the data block list
|
||||
*
|
||||
* Make the given fileoffset the current position in the data block list
|
||||
*/
|
||||
BOOL
|
||||
bSetDataOffset(FILE *pFile, ULONG ulFileOffset)
|
||||
{
|
||||
data_mem_type *pCurr;
|
||||
size_t tReadLen;
|
||||
|
||||
DBG_HEX(ulFileOffset);
|
||||
|
||||
for (pCurr = pAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (ulFileOffset < pCurr->tInfo.ulFileOffset ||
|
||||
ulFileOffset >= pCurr->tInfo.ulFileOffset +
|
||||
pCurr->tInfo.ulLength) {
|
||||
/* The file offset is not in this block */
|
||||
continue;
|
||||
}
|
||||
/* Compute the maximum number of bytes to read */
|
||||
tReadLen = (size_t)(pCurr->tInfo.ulFileOffset +
|
||||
pCurr->tInfo.ulLength -
|
||||
ulFileOffset);
|
||||
/* Compute the real number of bytes to read */
|
||||
if (tReadLen > sizeof(aucBlock)) {
|
||||
tReadLen = sizeof(aucBlock);
|
||||
}
|
||||
/* Read the bytes */
|
||||
if (!bReadBytes(aucBlock, tReadLen, ulFileOffset, pFile)) {
|
||||
return FALSE;
|
||||
}
|
||||
/* Set the control variables */
|
||||
pBlockCurrent = pCurr;
|
||||
ulBlockOffset = ulFileOffset - pCurr->tInfo.ulFileOffset;
|
||||
tByteNext = 0;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
} /* end of bSetDataOffset */
|
||||
|
||||
/*
|
||||
* iNextByte - get the next byte from the data block list
|
||||
*/
|
||||
int
|
||||
iNextByte(FILE *pFile)
|
||||
{
|
||||
ULONG ulReadOff;
|
||||
size_t tReadLen;
|
||||
|
||||
fail(pBlockCurrent == NULL);
|
||||
|
||||
if (tByteNext >= sizeof(aucBlock) ||
|
||||
ulBlockOffset + tByteNext >= pBlockCurrent->tInfo.ulLength) {
|
||||
if (ulBlockOffset + sizeof(aucBlock) <
|
||||
pBlockCurrent->tInfo.ulLength) {
|
||||
/* Same block, next part */
|
||||
ulBlockOffset += sizeof(aucBlock);
|
||||
} else {
|
||||
/* Next block, first part */
|
||||
pBlockCurrent = pBlockCurrent->pNext;
|
||||
ulBlockOffset = 0;
|
||||
}
|
||||
if (pBlockCurrent == NULL) {
|
||||
/* Past the last part of the last block */
|
||||
errno = EIO;
|
||||
return EOF;
|
||||
}
|
||||
tReadLen = (size_t)
|
||||
(pBlockCurrent->tInfo.ulLength - ulBlockOffset);
|
||||
if (tReadLen > sizeof(aucBlock)) {
|
||||
tReadLen = sizeof(aucBlock);
|
||||
}
|
||||
ulReadOff = pBlockCurrent->tInfo.ulFileOffset + ulBlockOffset;
|
||||
if (!bReadBytes(aucBlock, tReadLen, ulReadOff, pFile)) {
|
||||
errno = EIO;
|
||||
return EOF;
|
||||
}
|
||||
tByteNext = 0;
|
||||
}
|
||||
return (int)aucBlock[tByteNext++];
|
||||
} /* end of iNextByte */
|
||||
|
||||
/*
|
||||
* usNextWord - get the next word from the data block list
|
||||
*
|
||||
* Read a two byte value in Little Endian order, that means MSB last
|
||||
*
|
||||
* All return values can be valid so errno is set in case of error
|
||||
*/
|
||||
USHORT
|
||||
usNextWord(FILE *pFile)
|
||||
{
|
||||
USHORT usLSB, usMSB;
|
||||
|
||||
usLSB = (USHORT)iNextByte(pFile);
|
||||
if (usLSB == (USHORT)EOF) {
|
||||
errno = EIO;
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
usMSB = (USHORT)iNextByte(pFile);
|
||||
if (usMSB == (USHORT)EOF) {
|
||||
DBG_MSG("usNextWord: Unexpected EOF");
|
||||
errno = EIO;
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
return (usMSB << 8) | usLSB;
|
||||
} /* end of usNextWord */
|
||||
|
||||
/*
|
||||
* ulNextLong - get the next long from the data block list
|
||||
*
|
||||
* Read a four byte value in Little Endian order, that means MSW last
|
||||
*
|
||||
* All return values can be valid so errno is set in case of error
|
||||
*/
|
||||
ULONG
|
||||
ulNextLong(FILE *pFile)
|
||||
{
|
||||
ULONG ulLSW, ulMSW;
|
||||
|
||||
ulLSW = (ULONG)usNextWord(pFile);
|
||||
if (ulLSW == (ULONG)EOF) {
|
||||
errno = EIO;
|
||||
return (ULONG)EOF;
|
||||
}
|
||||
ulMSW = (ULONG)usNextWord(pFile);
|
||||
if (ulMSW == (ULONG)EOF) {
|
||||
DBG_MSG("ulNextLong: Unexpected EOF");
|
||||
errno = EIO;
|
||||
return (ULONG)EOF;
|
||||
}
|
||||
return (ulMSW << 16) | ulLSW;
|
||||
} /* end of ulNextLong */
|
||||
|
||||
/*
|
||||
* usNextWordBE - get the next two byte value
|
||||
*
|
||||
* Read a two byte value in Big Endian order, that means MSB first
|
||||
*
|
||||
* All return values can be valid so errno is set in case of error
|
||||
*/
|
||||
USHORT
|
||||
usNextWordBE(FILE *pFile)
|
||||
{
|
||||
USHORT usLSB, usMSB;
|
||||
|
||||
usMSB = (USHORT)iNextByte(pFile);
|
||||
if (usMSB == (USHORT)EOF) {
|
||||
errno = EIO;
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
usLSB = (USHORT)iNextByte(pFile);
|
||||
if (usLSB == (USHORT)EOF) {
|
||||
DBG_MSG("usNextWordBE: Unexpected EOF");
|
||||
errno = EIO;
|
||||
return (USHORT)EOF;
|
||||
}
|
||||
return (usMSB << 8) | usLSB;
|
||||
} /* end of usNextWordBE */
|
||||
|
||||
/*
|
||||
* ulNextLongBE - get the next four byte value
|
||||
*
|
||||
* Read a four byte value in Big Endian order, that means MSW first
|
||||
*
|
||||
* All return values can be valid so errno is set in case of error
|
||||
*/
|
||||
ULONG
|
||||
ulNextLongBE(FILE *pFile)
|
||||
{
|
||||
ULONG ulLSW, ulMSW;
|
||||
|
||||
ulMSW = (ULONG)usNextWordBE(pFile);
|
||||
if (ulMSW == (ULONG)EOF) {
|
||||
errno = EIO;
|
||||
return (ULONG)EOF;
|
||||
}
|
||||
ulLSW = (ULONG)usNextWordBE(pFile);
|
||||
if (ulLSW == (ULONG)EOF) {
|
||||
DBG_MSG("ulNextLongBE: Unexpected EOF");
|
||||
errno = EIO;
|
||||
return (ULONG)EOF;
|
||||
}
|
||||
return (ulMSW << 16) | ulLSW;
|
||||
} /* end of ulNextLongBE */
|
||||
|
||||
/*
|
||||
* tSkipBytes - skip over the given number of bytes
|
||||
*
|
||||
* Returns the number of skipped bytes
|
||||
*/
|
||||
size_t
|
||||
tSkipBytes(FILE *pFile, size_t tToSkip)
|
||||
{
|
||||
size_t tToGo, tMaxMove, tMove;
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pBlockCurrent == NULL);
|
||||
|
||||
tToGo = tToSkip;
|
||||
while (tToGo != 0) {
|
||||
/* Goto the end of the current block */
|
||||
tMaxMove = min(sizeof(aucBlock) - tByteNext,
|
||||
(size_t)(pBlockCurrent->tInfo.ulLength -
|
||||
ulBlockOffset - tByteNext));
|
||||
tMove = min(tMaxMove, tToGo);
|
||||
tByteNext += tMove;
|
||||
tToGo -= tMove;
|
||||
if (tToGo != 0) {
|
||||
/* Goto the next block */
|
||||
if (iNextByte(pFile) == EOF) {
|
||||
return tToSkip - tToGo;
|
||||
}
|
||||
tToGo--;
|
||||
}
|
||||
}
|
||||
return tToSkip;
|
||||
} /* end of tSkipBytes */
|
||||
|
||||
/*
|
||||
* Translate a data position to an offset in the file.
|
||||
* Logical to physical offset.
|
||||
*
|
||||
* Returns: FC_INVALID: in case of error
|
||||
* otherwise: the computed file offset
|
||||
*/
|
||||
ULONG
|
||||
ulDataPos2FileOffset(ULONG ulDataPos)
|
||||
{
|
||||
data_mem_type *pCurr;
|
||||
|
||||
fail(ulDataPos == CP_INVALID);
|
||||
|
||||
for (pCurr = pAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (ulDataPos < pCurr->tInfo.ulDataPos ||
|
||||
ulDataPos >= pCurr->tInfo.ulDataPos +
|
||||
pCurr->tInfo.ulLength) {
|
||||
/* The data offset is not in this block, try the next */
|
||||
continue;
|
||||
}
|
||||
/* The data offset is in the current block */
|
||||
return pCurr->tInfo.ulFileOffset +
|
||||
ulDataPos -
|
||||
pCurr->tInfo.ulDataPos;
|
||||
}
|
||||
/* Passed beyond the end of the list */
|
||||
DBG_HEX_C(ulDataPos != 0, ulDataPos);
|
||||
return FC_INVALID;
|
||||
} /* end of ulDataPos2FileOffset */
|
117
debug.h
Normal file
117
debug.h
Normal file
@ -0,0 +1,117 @@
|
||||
/*
|
||||
* debug.h
|
||||
* Copyright (C) 1998-2005 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Macro's for debuging.
|
||||
*/
|
||||
|
||||
#if !defined(__debug_h)
|
||||
#define __debug_h 1
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined(DEBUG)
|
||||
|
||||
#define DBG_MSG(t) (void)fprintf(stderr,\
|
||||
"%s[%3d]: %.240s\n",\
|
||||
__FILE__, __LINE__, (t))
|
||||
|
||||
#define DBG_STRN(t,m) (void)fprintf(stderr,\
|
||||
"%s[%3d]: %d '%.*s'\n",\
|
||||
__FILE__, __LINE__,\
|
||||
(int)(m), (int)(m), (const char *)(t))
|
||||
|
||||
#define DBG_CHR(m) (void)fprintf(stderr,\
|
||||
"%s[%3d]: "#m" = %3d 0x%02x '%c'\n",\
|
||||
__FILE__, __LINE__,\
|
||||
(int)(m), (unsigned int)(unsigned char)(m),\
|
||||
isprint((int)(unsigned char)(m))?(char)(m):' ')
|
||||
|
||||
#define DBG_DEC(m) (void)fprintf(stderr,\
|
||||
"%s[%3d]: "#m" = %ld\n",\
|
||||
__FILE__, __LINE__, (long)(m))
|
||||
|
||||
#define DBG_HEX(m) (void)fprintf(stderr,\
|
||||
"%s[%3d]: "#m" = 0x%02lx\n",\
|
||||
__FILE__, __LINE__, (unsigned long)(m))
|
||||
|
||||
#define DBG_FLT(m) (void)fprintf(stderr,\
|
||||
"%s[%3d]: "#m" = %.3f\n",\
|
||||
__FILE__, __LINE__, (double)(m))
|
||||
|
||||
#define DBG_FIXME() (void)fprintf(stderr,\
|
||||
"%s[%3d]: FIXME\n",\
|
||||
__FILE__, __LINE__)
|
||||
|
||||
#define DBG_PRINT_BLOCK(b,m) vPrintBlock(__FILE__, __LINE__,(b),(m))
|
||||
#define DBG_UNICODE(t) vPrintUnicode(__FILE__, __LINE__,\
|
||||
(const UCHAR *)(t),unilen(t))
|
||||
#define DBG_UNICODE_N(t,m) vPrintUnicode(__FILE__, __LINE__,\
|
||||
(const UCHAR *)(t),(m))
|
||||
|
||||
#define DBG_MSG_C(c,t) do { if (c) DBG_MSG(t); } while(0)
|
||||
#define DBG_STRN_C(c,t,m) do { if (c) DBG_STRN(t,m); } while(0)
|
||||
#define DBG_CHR_C(c,m) do { if (c) DBG_CHR(m); } while(0)
|
||||
#define DBG_DEC_C(c,m) do { if (c) DBG_DEC(m); } while(0)
|
||||
#define DBG_HEX_C(c,m) do { if (c) DBG_HEX(m); } while(0)
|
||||
#define DBG_FLT_C(c,m) do { if (c) DBG_FLT(m); } while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define DBG_MSG(t) /* EMPTY */
|
||||
#define DBG_STRN(t,m) /* EMPTY */
|
||||
#define DBG_CHR(m) /* EMPTY */
|
||||
#define DBG_DEC(m) /* EMPTY */
|
||||
#define DBG_HEX(m) /* EMPTY */
|
||||
#define DBG_FLT(m) /* EMPTY */
|
||||
|
||||
#define DBG_FIXME() /* EMPTY */
|
||||
#define DBG_PRINT_BLOCK(b,m) /* EMPTY */
|
||||
#define DBG_UNICODE(t) /* EMPTY */
|
||||
#define DBG_UNICODE_N(t,m) /* EMPTY */
|
||||
|
||||
#define DBG_MSG_C(c,t) /* EMPTY */
|
||||
#define DBG_STRN_C(c,t,m) /* EMPTY */
|
||||
#define DBG_CHR_C(c,m) /* EMPTY */
|
||||
#define DBG_DEC_C(c,m) /* EMPTY */
|
||||
#define DBG_HEX_C(c,m) /* EMPTY */
|
||||
#define DBG_FLT_C(c,m) /* EMPTY */
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
||||
#define NO_DBG_MSG(t) /* EMPTY */
|
||||
#define NO_DBG_STRN(t,m) /* EMPTY */
|
||||
#define NO_DBG_CHR(m) /* EMPTY */
|
||||
#define NO_DBG_DEC(m) /* EMPTY */
|
||||
#define NO_DBG_HEX(m) /* EMPTY */
|
||||
#define NO_DBG_FLT(m) /* EMPTY */
|
||||
|
||||
#define NO_DBG_PRINT_BLOCK(b,m) /* EMPTY */
|
||||
#define NO_DBG_UNICODE(t) /* EMPTY */
|
||||
#define NO_DBG_UNICODE_N(t,m) /* EMPTY */
|
||||
|
||||
#define NO_DBG_MSG_C(c,t) /* EMPTY */
|
||||
#define NO_DBG_STRN_C(c,t,m) /* EMPTY */
|
||||
#define NO_DBG_CHR_C(c,m) /* EMPTY */
|
||||
#define NO_DBG_DEC_C(c,m) /* EMPTY */
|
||||
#define NO_DBG_HEX_C(c,m) /* EMPTY */
|
||||
#define NO_DBG_FLT_C(c,m) /* EMPTY */
|
||||
|
||||
#if defined(TRACE)
|
||||
|
||||
#define TRACE_MSG(t) do {\
|
||||
(void)fprintf(stderr,\
|
||||
"%s[%3d]: TRACE:%.40s\n",\
|
||||
__FILE__, __LINE__, (t));\
|
||||
(void)fflush(stderr);\
|
||||
} while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define TRACE_MSG(t) /* EMPTY */
|
||||
|
||||
#endif /* TRACE */
|
||||
|
||||
#endif /* !__debug_h */
|
114
depot.c
Normal file
114
depot.c
Normal file
@ -0,0 +1,114 @@
|
||||
/*
|
||||
* depot.c
|
||||
* Copyright (C) 1998-2002 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to compute the depot offset
|
||||
*/
|
||||
|
||||
#include "antiword.h"
|
||||
|
||||
#define SIZE_RATIO (BIG_BLOCK_SIZE/SMALL_BLOCK_SIZE)
|
||||
|
||||
static ULONG *aulSmallBlockList = NULL;
|
||||
static size_t tSmallBlockListLen = 0;
|
||||
|
||||
|
||||
/*
|
||||
* vDestroySmallBlockList - destroy the small block list
|
||||
*/
|
||||
void
|
||||
vDestroySmallBlockList(void)
|
||||
{
|
||||
DBG_MSG("vDestroySmallBlockList");
|
||||
|
||||
aulSmallBlockList = xfree(aulSmallBlockList);
|
||||
tSmallBlockListLen = 0;
|
||||
} /* end of vDestroySmalBlockList */
|
||||
|
||||
/*
|
||||
* vCreateSmallBlockList - create the small block list
|
||||
*
|
||||
* returns: TRUE when successful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bCreateSmallBlockList(ULONG ulStartblock, const ULONG *aulBBD, size_t tBBDLen)
|
||||
{
|
||||
ULONG ulTmp;
|
||||
size_t tSize;
|
||||
int iIndex;
|
||||
|
||||
fail(aulSmallBlockList != NULL);
|
||||
fail(tSmallBlockListLen != 0);
|
||||
fail(ulStartblock > MAX_BLOCKNUMBER && ulStartblock != END_OF_CHAIN);
|
||||
fail(aulBBD == NULL);
|
||||
fail(tBBDLen == 0);
|
||||
|
||||
/* Find the length of the small block list */
|
||||
for (tSmallBlockListLen = 0, ulTmp = ulStartblock;
|
||||
tSmallBlockListLen < tBBDLen && ulTmp != END_OF_CHAIN;
|
||||
tSmallBlockListLen++, ulTmp = aulBBD[ulTmp]) {
|
||||
if (ulTmp >= (ULONG)tBBDLen) {
|
||||
DBG_DEC(ulTmp);
|
||||
DBG_DEC(tBBDLen);
|
||||
werr(1, "The Big Block Depot is damaged");
|
||||
}
|
||||
}
|
||||
DBG_DEC(tSmallBlockListLen);
|
||||
|
||||
if (tSmallBlockListLen == 0) {
|
||||
/* There is no small block list */
|
||||
fail(ulStartblock != END_OF_CHAIN);
|
||||
aulSmallBlockList = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Create the small block list */
|
||||
tSize = tSmallBlockListLen * sizeof(ULONG);
|
||||
aulSmallBlockList = xmalloc(tSize);
|
||||
for (iIndex = 0, ulTmp = ulStartblock;
|
||||
iIndex < (int)tBBDLen && ulTmp != END_OF_CHAIN;
|
||||
iIndex++, ulTmp = aulBBD[ulTmp]) {
|
||||
if (ulTmp >= (ULONG)tBBDLen) {
|
||||
DBG_DEC(ulTmp);
|
||||
DBG_DEC(tBBDLen);
|
||||
werr(1, "The Big Block Depot is damaged");
|
||||
}
|
||||
aulSmallBlockList[iIndex] = ulTmp;
|
||||
NO_DBG_DEC(aulSmallBlockList[iIndex]);
|
||||
}
|
||||
return TRUE;
|
||||
} /* end of bCreateSmallBlockList */
|
||||
|
||||
/*
|
||||
* ulDepotOffset - get the depot offset the block list
|
||||
*/
|
||||
ULONG
|
||||
ulDepotOffset(ULONG ulIndex, size_t tBlockSize)
|
||||
{
|
||||
ULONG ulTmp;
|
||||
size_t tTmp;
|
||||
|
||||
fail(ulIndex >= ULONG_MAX / BIG_BLOCK_SIZE);
|
||||
|
||||
switch (tBlockSize) {
|
||||
case BIG_BLOCK_SIZE:
|
||||
return (ulIndex + 1) * BIG_BLOCK_SIZE;
|
||||
case SMALL_BLOCK_SIZE:
|
||||
tTmp = (size_t)(ulIndex / SIZE_RATIO);
|
||||
ulTmp = ulIndex % SIZE_RATIO;
|
||||
if (aulSmallBlockList == NULL ||
|
||||
tTmp >= tSmallBlockListLen) {
|
||||
DBG_HEX(aulSmallBlockList);
|
||||
DBG_DEC(tSmallBlockListLen);
|
||||
DBG_DEC(tTmp);
|
||||
return 0;
|
||||
}
|
||||
return ((aulSmallBlockList[tTmp] + 1) * SIZE_RATIO +
|
||||
ulTmp) * SMALL_BLOCK_SIZE;
|
||||
default:
|
||||
DBG_DEC(tBlockSize);
|
||||
DBG_FIXME();
|
||||
return 0;
|
||||
}
|
||||
} /* end of ulDepotOffset */
|
509
dib2eps.c
Normal file
509
dib2eps.c
Normal file
@ -0,0 +1,509 @@
|
||||
/*
|
||||
* dib2eps.c
|
||||
* Copyright (C) 2000-2003 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to translate dib pictures into eps
|
||||
*
|
||||
*================================================================
|
||||
* This part of the software is based on:
|
||||
* The Windows Bitmap Decoder Class part of paintlib
|
||||
* Paintlib is copyright (c) 1996-2000 Ulrich von Zadow
|
||||
*================================================================
|
||||
* The credit should go to him, but all the bugs are mine.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
/*
|
||||
* vDecode1bpp - decode an uncompressed 1 bit per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode1bpp(FILE *pInFile, FILE *pOutFile, const imagedata_type *pImg)
|
||||
{
|
||||
size_t tPadding;
|
||||
int iX, iY, iN, iByte, iTmp, iEighthWidth, iUse;
|
||||
|
||||
DBG_MSG("vDecode1bpp");
|
||||
|
||||
fail(pOutFile == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 2);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
iEighthWidth = (pImg->iWidth + 7) / 8;
|
||||
tPadding = (size_t)(ROUND4(iEighthWidth) - iEighthWidth);
|
||||
|
||||
for (iY = 0; iY < pImg->iHeight; iY++) {
|
||||
for (iX = 0; iX < iEighthWidth; iX++) {
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
if (iX == iEighthWidth - 1 && pImg->iWidth % 8 != 0) {
|
||||
iUse = pImg->iWidth % 8;
|
||||
} else {
|
||||
iUse = 8;
|
||||
}
|
||||
for (iN = 0; iN < iUse; iN++) {
|
||||
switch (iN) {
|
||||
case 0: iTmp = (iByte & 0x80) / 128; break;
|
||||
case 1: iTmp = (iByte & 0x40) / 64; break;
|
||||
case 2: iTmp = (iByte & 0x20) / 32; break;
|
||||
case 3: iTmp = (iByte & 0x10) / 16; break;
|
||||
case 4: iTmp = (iByte & 0x08) / 8; break;
|
||||
case 5: iTmp = (iByte & 0x04) / 4; break;
|
||||
case 6: iTmp = (iByte & 0x02) / 2; break;
|
||||
case 7: iTmp = (iByte & 0x01); break;
|
||||
default: iTmp = 0; break;
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, iTmp);
|
||||
}
|
||||
}
|
||||
(void)tSkipBytes(pInFile, tPadding);
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
} /* end of vDecode1bpp */
|
||||
|
||||
/*
|
||||
* vDecode4bpp - decode an uncompressed 4 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode4bpp(FILE *pInFile, FILE *pOutFile, const imagedata_type *pImg)
|
||||
{
|
||||
size_t tPadding;
|
||||
int iX, iY, iN, iByte, iTmp, iHalfWidth, iUse;
|
||||
|
||||
DBG_MSG("vDecode4bpp");
|
||||
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 16);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
iHalfWidth = (pImg->iWidth + 1) / 2;
|
||||
tPadding = (size_t)(ROUND4(iHalfWidth) - iHalfWidth);
|
||||
|
||||
for (iY = 0; iY < pImg->iHeight; iY++) {
|
||||
for (iX = 0; iX < iHalfWidth; iX++) {
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
if (iX == iHalfWidth - 1 && odd(pImg->iWidth)) {
|
||||
iUse = 1;
|
||||
} else {
|
||||
iUse = 2;
|
||||
}
|
||||
for (iN = 0; iN < iUse; iN++) {
|
||||
if (odd(iN)) {
|
||||
iTmp = iByte & 0x0f;
|
||||
} else {
|
||||
iTmp = (iByte & 0xf0) / 16;
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, iTmp);
|
||||
}
|
||||
}
|
||||
(void)tSkipBytes(pInFile, tPadding);
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
} /* end of vDecode4bpp */
|
||||
|
||||
/*
|
||||
* vDecode8bpp - decode an uncompressed 8 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode8bpp(FILE *pInFile, FILE *pOutFile, const imagedata_type *pImg)
|
||||
{
|
||||
size_t tPadding;
|
||||
int iX, iY, iByte;
|
||||
|
||||
DBG_MSG("vDecode8bpp");
|
||||
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 256);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
tPadding = (size_t)(ROUND4(pImg->iWidth) - pImg->iWidth);
|
||||
|
||||
for (iY = 0; iY < pImg->iHeight; iY++) {
|
||||
for (iX = 0; iX < pImg->iWidth; iX++) {
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, iByte);
|
||||
}
|
||||
(void)tSkipBytes(pInFile, tPadding);
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
} /* end of vDecode8bpp */
|
||||
|
||||
/*
|
||||
* vDecode24bpp - decode an uncompressed 24 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode24bpp(FILE *pInFile, FILE *pOutFile, const imagedata_type *pImg)
|
||||
{
|
||||
size_t tPadding;
|
||||
int iX, iY, iBlue, iGreen, iRed, iTripleWidth;
|
||||
|
||||
DBG_MSG("vDecode24bpp");
|
||||
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(!pImg->bColorImage);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
iTripleWidth = pImg->iWidth * 3;
|
||||
tPadding = (size_t)(ROUND4(iTripleWidth) - iTripleWidth);
|
||||
|
||||
for (iY = 0; iY < pImg->iHeight; iY++) {
|
||||
for (iX = 0; iX < pImg->iWidth; iX++) {
|
||||
/* Change from BGR order to RGB order */
|
||||
iBlue = iNextByte(pInFile);
|
||||
if (iBlue == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
iGreen = iNextByte(pInFile);
|
||||
if (iGreen == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
iRed = iNextByte(pInFile);
|
||||
if (iRed == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, iRed);
|
||||
vASCII85EncodeByte(pOutFile, iGreen);
|
||||
vASCII85EncodeByte(pOutFile, iBlue);
|
||||
}
|
||||
(void)tSkipBytes(pInFile, tPadding);
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
} /* end of vDecode24bpp */
|
||||
|
||||
/*
|
||||
* vDecodeRle4 - decode a RLE compressed 4 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecodeRle4(FILE *pInFile, FILE *pOutFile, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iByte, iTmp, iRunLength, iRun;
|
||||
BOOL bEOF, bEOL;
|
||||
|
||||
DBG_MSG("vDecodeRle4");
|
||||
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 16);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
bEOF = FALSE;
|
||||
|
||||
for (iY = 0; iY < pImg->iHeight && !bEOF; iY++) {
|
||||
bEOL = FALSE;
|
||||
iX = 0;
|
||||
while (!bEOL) {
|
||||
iRunLength = iNextByte(pInFile);
|
||||
if (iRunLength == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
if (iRunLength != 0) {
|
||||
/*
|
||||
* Encoded packet:
|
||||
* RunLength pixels, all the "same" value
|
||||
*/
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
for (iRun = 0; iRun < iRunLength; iRun++) {
|
||||
if (odd(iRun)) {
|
||||
iTmp = iByte & 0x0f;
|
||||
} else {
|
||||
iTmp = (iByte & 0xf0) / 16;
|
||||
}
|
||||
if (iX < pImg->iWidth) {
|
||||
vASCII85EncodeByte(pOutFile, iTmp);
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
/* Literal or escape */
|
||||
iRunLength = iNextByte(pInFile);
|
||||
if (iRunLength == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
if (iRunLength == 0) { /* End of line escape */
|
||||
bEOL = TRUE;
|
||||
} else if (iRunLength == 1) { /* End of file escape */
|
||||
bEOF = TRUE;
|
||||
bEOL = TRUE;
|
||||
} else if (iRunLength == 2) { /* Delta escape */
|
||||
DBG_MSG("RLE4: encountered delta escape");
|
||||
bEOF = TRUE;
|
||||
bEOL = TRUE;
|
||||
} else { /* Literal packet */
|
||||
iByte = 0;
|
||||
for (iRun = 0; iRun < iRunLength; iRun++) {
|
||||
if (odd(iRun)) {
|
||||
iTmp = iByte & 0x0f;
|
||||
} else {
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
iTmp = (iByte & 0xf0) / 16;
|
||||
}
|
||||
if (iX < pImg->iWidth) {
|
||||
vASCII85EncodeByte(pOutFile, iTmp);
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
/* Padding if the number of bytes is odd */
|
||||
if (odd((iRunLength + 1) / 2)) {
|
||||
(void)tSkipBytes(pInFile, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
DBG_DEC_C(iX != pImg->iWidth, iX);
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
} /* end of vDecodeRle4 */
|
||||
|
||||
/*
|
||||
* vDecodeRle8 - decode a RLE compressed 8 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecodeRle8(FILE *pInFile, FILE *pOutFile, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iByte, iRunLength, iRun;
|
||||
BOOL bEOF, bEOL;
|
||||
|
||||
DBG_MSG("vDecodeRle8");
|
||||
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 256);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
bEOF = FALSE;
|
||||
|
||||
for (iY = 0; iY < pImg->iHeight && !bEOF; iY++) {
|
||||
bEOL = FALSE;
|
||||
iX = 0;
|
||||
while (!bEOL) {
|
||||
iRunLength = iNextByte(pInFile);
|
||||
if (iRunLength == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
if (iRunLength != 0) {
|
||||
/*
|
||||
* Encoded packet:
|
||||
* RunLength pixels, all the same value
|
||||
*/
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
for (iRun = 0; iRun < iRunLength; iRun++) {
|
||||
if (iX < pImg->iWidth) {
|
||||
vASCII85EncodeByte(pOutFile, iByte);
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
/* Literal or escape */
|
||||
iRunLength = iNextByte(pInFile);
|
||||
if (iRunLength == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
if (iRunLength == 0) { /* End of line escape */
|
||||
bEOL = TRUE;
|
||||
} else if (iRunLength == 1) { /* End of file escape */
|
||||
bEOF = TRUE;
|
||||
bEOL = TRUE;
|
||||
} else if (iRunLength == 2) { /* Delta escape */
|
||||
DBG_MSG("RLE8: encountered delta escape");
|
||||
bEOF = TRUE;
|
||||
bEOL = TRUE;
|
||||
} else { /* Literal packet */
|
||||
for (iRun = 0; iRun < iRunLength; iRun++) {
|
||||
iByte = iNextByte(pInFile);
|
||||
if (iByte == EOF) {
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
return;
|
||||
}
|
||||
if (iX < pImg->iWidth) {
|
||||
vASCII85EncodeByte(pOutFile, iByte);
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
/* Padding if the number of bytes is odd */
|
||||
if (odd(iRunLength)) {
|
||||
(void)tSkipBytes(pInFile, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
DBG_DEC_C(iX != pImg->iWidth, iX);
|
||||
}
|
||||
vASCII85EncodeByte(pOutFile, EOF);
|
||||
} /* end of vDecodeRle8 */
|
||||
|
||||
/*
|
||||
* vDecodeDIB - decode a dib picture
|
||||
*/
|
||||
static void
|
||||
vDecodeDIB(FILE *pInFile, FILE *pOutFile, const imagedata_type *pImg)
|
||||
{
|
||||
size_t tHeaderSize;
|
||||
|
||||
fail(pInFile == NULL);
|
||||
fail(pOutFile == NULL);
|
||||
fail(pImg == NULL);
|
||||
|
||||
/* Skip the bitmap info header */
|
||||
tHeaderSize = (size_t)ulNextLong(pInFile);
|
||||
(void)tSkipBytes(pInFile, tHeaderSize - 4);
|
||||
/* Skip the colortable */
|
||||
if (pImg->uiBitsPerComponent <= 8) {
|
||||
(void)tSkipBytes(pInFile,
|
||||
(size_t)(pImg->iColorsUsed *
|
||||
((tHeaderSize > 12) ? 4 : 3)));
|
||||
}
|
||||
|
||||
switch (pImg->uiBitsPerComponent) {
|
||||
case 1:
|
||||
fail(pImg->eCompression != compression_none);
|
||||
vDecode1bpp(pInFile, pOutFile, pImg);
|
||||
break;
|
||||
case 4:
|
||||
fail(pImg->eCompression != compression_none &&
|
||||
pImg->eCompression != compression_rle4);
|
||||
if (pImg->eCompression == compression_rle4) {
|
||||
vDecodeRle4(pInFile, pOutFile, pImg);
|
||||
} else {
|
||||
vDecode4bpp(pInFile, pOutFile, pImg);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
fail(pImg->eCompression != compression_none &&
|
||||
pImg->eCompression != compression_rle8);
|
||||
if (pImg->eCompression == compression_rle8) {
|
||||
vDecodeRle8(pInFile, pOutFile, pImg);
|
||||
} else {
|
||||
vDecode8bpp(pInFile, pOutFile, pImg);
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
fail(pImg->eCompression != compression_none);
|
||||
vDecode24bpp(pInFile, pOutFile, pImg);
|
||||
break;
|
||||
default:
|
||||
DBG_DEC(pImg->uiBitsPerComponent);
|
||||
break;
|
||||
}
|
||||
} /* end of vDecodeDIB */
|
||||
|
||||
#if defined(DEBUG)
|
||||
/*
|
||||
* vCopy2File
|
||||
*/
|
||||
static void
|
||||
vCopy2File(FILE *pInFile, ULONG ulFileOffset, size_t tPictureLen)
|
||||
{
|
||||
static int iPicCounter = 0;
|
||||
FILE *pOutFile;
|
||||
size_t tIndex;
|
||||
int iTmp;
|
||||
char szFilename[30];
|
||||
|
||||
if (!bSetDataOffset(pInFile, ulFileOffset)) {
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(szFilename, "/tmp/pic/pic%04d.bmp", ++iPicCounter);
|
||||
pOutFile = fopen(szFilename, "wb");
|
||||
if (pOutFile == NULL) {
|
||||
return;
|
||||
}
|
||||
/* Turn a dib into a bmp by adding a fake 14 byte header */
|
||||
(void)putc('B', pOutFile);
|
||||
(void)putc('M', pOutFile);
|
||||
for (iTmp = 0; iTmp < 12; iTmp++) {
|
||||
if (putc(0, pOutFile) == EOF) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (tIndex = 0; tIndex < tPictureLen; tIndex++) {
|
||||
iTmp = iNextByte(pInFile);
|
||||
if (putc(iTmp, pOutFile) == EOF) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
(void)fclose(pOutFile);
|
||||
} /* end of vCopy2File */
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
* bTranslateDIB - translate a DIB picture
|
||||
*
|
||||
* This function translates a picture from dib to eps
|
||||
*
|
||||
* return TRUE when sucessful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bTranslateDIB(diagram_type *pDiag, FILE *pInFile,
|
||||
ULONG ulFileOffset, const imagedata_type *pImg)
|
||||
{
|
||||
#if defined(DEBUG)
|
||||
fail(pImg->tPosition > pImg->tLength);
|
||||
vCopy2File(pInFile, ulFileOffset, pImg->tLength - pImg->tPosition);
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Seek to start position of DIB data */
|
||||
if (!bSetDataOffset(pInFile, ulFileOffset)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
vImagePrologue(pDiag, pImg);
|
||||
vDecodeDIB(pInFile, pDiag->pOutFile, pImg);
|
||||
vImageEpilogue(pDiag);
|
||||
|
||||
return TRUE;
|
||||
} /* end of bTranslateDIB */
|
597
dib2sprt.c
Normal file
597
dib2sprt.c
Normal file
@ -0,0 +1,597 @@
|
||||
/*
|
||||
* dib2sprt.c
|
||||
* Copyright (C) 2000-2003 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to translate dib pictures into sprites
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "DeskLib:Error.h"
|
||||
#include "DeskLib:Sprite.h"
|
||||
#include "antiword.h"
|
||||
|
||||
#if 0 /* defined(DEBUG) */
|
||||
static int iPicCounter = 0;
|
||||
#endif /* DEBUG */
|
||||
|
||||
|
||||
/*
|
||||
* iGetByteWidth - compute the number of bytes needed for a row of pixels
|
||||
*/
|
||||
static int
|
||||
iGetByteWidth(const imagedata_type *pImg)
|
||||
{
|
||||
switch (pImg->uiBitsPerComponent) {
|
||||
case 1:
|
||||
return (pImg->iWidth + 31) / 32 * sizeof(int);
|
||||
case 4:
|
||||
return (pImg->iWidth + 7) / 8 * sizeof(int);
|
||||
case 8:
|
||||
case 24:
|
||||
return (pImg->iWidth + 3) / 4 * sizeof(int);
|
||||
default:
|
||||
DBG_DEC(pImg->uiBitsPerComponent);
|
||||
return 0;
|
||||
}
|
||||
} /* end of iGetByteWidth */
|
||||
|
||||
/*
|
||||
* pCreateBlankSprite - Create a blank sprite.
|
||||
*
|
||||
* Create a blank sprite and add a palette if needed
|
||||
*
|
||||
* returns a pointer to the sprite when successful, otherwise NULL
|
||||
*/
|
||||
static sprite_areainfo *
|
||||
pCreateBlankSprite(const imagedata_type *pImg, size_t *pSize)
|
||||
{
|
||||
sprite_areainfo *pArea;
|
||||
UCHAR *pucTmp;
|
||||
size_t tSize;
|
||||
screen_modeval uMode;
|
||||
int iIndex, iPaletteEntries;
|
||||
|
||||
TRACE_MSG("pCreateBlankSprite");
|
||||
|
||||
fail(pImg == NULL);
|
||||
fail(pSize == NULL);
|
||||
|
||||
switch (pImg->uiBitsPerComponent) {
|
||||
case 1:
|
||||
uMode.screen_mode = 18;
|
||||
iPaletteEntries = 2;
|
||||
break;
|
||||
case 4:
|
||||
uMode.screen_mode = 20;
|
||||
iPaletteEntries = 16;
|
||||
break;
|
||||
case 8:
|
||||
case 24:
|
||||
uMode.screen_mode = 21;
|
||||
iPaletteEntries = 0;
|
||||
break;
|
||||
default:
|
||||
DBG_DEC(pImg->uiBitsPerComponent);
|
||||
return NULL;
|
||||
}
|
||||
fail(iPaletteEntries < 0 || iPaletteEntries > 16);
|
||||
|
||||
/* Get memory for the sprite */
|
||||
tSize = sizeof(sprite_areainfo) +
|
||||
Sprite_MemorySize(pImg->iWidth, pImg->iHeight, uMode,
|
||||
iPaletteEntries > 0 ? sprite_HASPAL : sprite_HASNOMASKPAL);
|
||||
DBG_DEC(tSize);
|
||||
pArea = xmalloc(tSize);
|
||||
|
||||
/* Initialise sprite area */
|
||||
pArea->areasize = tSize;
|
||||
pArea->numsprites = 0;
|
||||
pArea->firstoffset = sizeof(sprite_areainfo);
|
||||
pArea->freeoffset = sizeof(sprite_areainfo);
|
||||
|
||||
/* Create a blank sprite */
|
||||
Error_CheckFatal(Sprite_Create(pArea, "wordimage",
|
||||
iPaletteEntries > 0 ? 1 : 0,
|
||||
pImg->iWidth, pImg->iHeight, uMode));
|
||||
|
||||
/* Add the palette */
|
||||
pucTmp = (UCHAR *)pArea + pArea->firstoffset + sizeof(sprite_header);
|
||||
for (iIndex = 0; iIndex < iPaletteEntries; iIndex++) {
|
||||
/* First color */
|
||||
*pucTmp++ = 0;
|
||||
*pucTmp++ = pImg->aucPalette[iIndex][0];
|
||||
*pucTmp++ = pImg->aucPalette[iIndex][1];
|
||||
*pucTmp++ = pImg->aucPalette[iIndex][2];
|
||||
/* Second color */
|
||||
*pucTmp++ = 0;
|
||||
*pucTmp++ = pImg->aucPalette[iIndex][0];
|
||||
*pucTmp++ = pImg->aucPalette[iIndex][1];
|
||||
*pucTmp++ = pImg->aucPalette[iIndex][2];
|
||||
}
|
||||
|
||||
*pSize = tSize;
|
||||
return pArea;
|
||||
} /* end of pCreateBlankSprite */
|
||||
|
||||
/*
|
||||
* iReduceColor - reduce from 24 bit to 8 bit color
|
||||
*
|
||||
* Reduce 24 bit true colors to RISC OS default 256 color palette
|
||||
*
|
||||
* returns the resulting color
|
||||
*/
|
||||
static int
|
||||
iReduceColor(int iRed, int iGreen, int iBlue)
|
||||
{
|
||||
int iResult;
|
||||
|
||||
iResult = (iBlue & 0x80) ? 0x80 : 0;
|
||||
iResult |= (iGreen & 0x80) ? 0x40 : 0;
|
||||
iResult |= (iGreen & 0x40) ? 0x20 : 0;
|
||||
iResult |= (iRed & 0x80) ? 0x10 : 0;
|
||||
iResult |= (iBlue & 0x40) ? 0x08 : 0;
|
||||
iResult |= (iRed & 0x40) ? 0x04 : 0;
|
||||
iResult |= ((iRed | iGreen | iBlue) & 0x20) ? 0x02 : 0;
|
||||
iResult |= ((iRed | iGreen | iBlue) & 0x10) ? 0x01 : 0;
|
||||
return iResult;
|
||||
} /* end of iReduceColor */
|
||||
|
||||
/*
|
||||
* vDecode1bpp - decode an uncompressed 1 bit per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode1bpp(FILE *pFile, UCHAR *pucData, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iByteWidth, iOffset, iTmp, iEighthWidth, iPadding;
|
||||
UCHAR ucTmp;
|
||||
|
||||
DBG_MSG("vDecode1bpp");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pucData == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 2);
|
||||
|
||||
iByteWidth = iGetByteWidth(pImg);
|
||||
|
||||
iEighthWidth = (pImg->iWidth + 7) / 8;
|
||||
iPadding = ROUND4(iEighthWidth) - iEighthWidth;
|
||||
|
||||
for (iY = pImg->iHeight - 1; iY >= 0; iY--) {
|
||||
for (iX = 0; iX < iEighthWidth; iX++) {
|
||||
iTmp = iNextByte(pFile);
|
||||
if (iTmp == EOF) {
|
||||
return;
|
||||
}
|
||||
/* Reverse the bit order */
|
||||
ucTmp = (iTmp & BIT(0)) ? (UCHAR)BIT(7) : 0;
|
||||
ucTmp |= (iTmp & BIT(1)) ? (UCHAR)BIT(6) : 0;
|
||||
ucTmp |= (iTmp & BIT(2)) ? (UCHAR)BIT(5) : 0;
|
||||
ucTmp |= (iTmp & BIT(3)) ? (UCHAR)BIT(4) : 0;
|
||||
ucTmp |= (iTmp & BIT(4)) ? (UCHAR)BIT(3) : 0;
|
||||
ucTmp |= (iTmp & BIT(5)) ? (UCHAR)BIT(2) : 0;
|
||||
ucTmp |= (iTmp & BIT(6)) ? (UCHAR)BIT(1) : 0;
|
||||
ucTmp |= (iTmp & BIT(7)) ? (UCHAR)BIT(0) : 0;
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) = ucTmp;
|
||||
}
|
||||
(void)tSkipBytes(pFile, iPadding);
|
||||
}
|
||||
} /* end of vDecode1bpp */
|
||||
|
||||
/*
|
||||
* vDecode4bpp - decode an uncompressed 4 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode4bpp(FILE *pFile, UCHAR *pucData, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iByteWidth, iOffset, iTmp, iHalfWidth, iPadding;
|
||||
UCHAR ucTmp;
|
||||
|
||||
DBG_MSG("vDecode4bpp");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pucData == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 16);
|
||||
|
||||
iByteWidth = iGetByteWidth(pImg);
|
||||
|
||||
iHalfWidth = (pImg->iWidth + 1) / 2;
|
||||
iPadding = ROUND4(iHalfWidth) - iHalfWidth;
|
||||
|
||||
for (iY = pImg->iHeight - 1; iY >= 0; iY--) {
|
||||
for (iX = 0; iX < iHalfWidth; iX++) {
|
||||
iTmp = iNextByte(pFile);
|
||||
if (iTmp == EOF) {
|
||||
return;
|
||||
}
|
||||
/* Reverse the nibble order */
|
||||
ucTmp = (iTmp & 0xf0) >> 4;
|
||||
ucTmp |= (iTmp & 0x0f) << 4;
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) = ucTmp;
|
||||
}
|
||||
(void)tSkipBytes(pFile, iPadding);
|
||||
}
|
||||
} /* end of vDecode4bpp */
|
||||
|
||||
/*
|
||||
* vDecode8bpp - decode an uncompressed 8 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode8bpp(FILE *pFile, UCHAR *pucData, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iByteWidth, iOffset, iIndex, iPadding;
|
||||
|
||||
DBG_MSG("vDecode8bpp");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pucData == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 256);
|
||||
|
||||
iByteWidth = iGetByteWidth(pImg);
|
||||
|
||||
iPadding = ROUND4(pImg->iWidth) - pImg->iWidth;
|
||||
|
||||
for (iY = pImg->iHeight - 1; iY >= 0; iY--) {
|
||||
for (iX = 0; iX < pImg->iWidth; iX++) {
|
||||
iIndex = iNextByte(pFile);
|
||||
if (iIndex == EOF) {
|
||||
return;
|
||||
}
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) = iReduceColor(
|
||||
pImg->aucPalette[iIndex][0],
|
||||
pImg->aucPalette[iIndex][1],
|
||||
pImg->aucPalette[iIndex][2]);
|
||||
}
|
||||
(void)tSkipBytes(pFile, iPadding);
|
||||
}
|
||||
} /* end of vDecode8bpp */
|
||||
|
||||
/*
|
||||
* vDecode24bpp - decode an uncompressed 24 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecode24bpp(FILE *pFile, UCHAR *pucData, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iTripleWidth, iByteWidth, iOffset, iPadding;
|
||||
int iRed, iGreen, iBlue;
|
||||
|
||||
DBG_MSG("vDecode24bpp");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pucData == NULL);
|
||||
fail(pImg == NULL);
|
||||
|
||||
iByteWidth = iGetByteWidth(pImg);
|
||||
|
||||
iTripleWidth = pImg->iWidth * 3;
|
||||
iPadding = ROUND4(iTripleWidth) - iTripleWidth;
|
||||
|
||||
for (iY = pImg->iHeight - 1; iY >= 0; iY--) {
|
||||
for (iX = 0; iX < pImg->iWidth; iX++) {
|
||||
iBlue = iNextByte(pFile);
|
||||
if (iBlue == EOF) {
|
||||
return;
|
||||
}
|
||||
iGreen = iNextByte(pFile);
|
||||
if (iGreen == EOF) {
|
||||
return;
|
||||
}
|
||||
iRed = iNextByte(pFile);
|
||||
if (iRed == EOF) {
|
||||
return;
|
||||
}
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) =
|
||||
iReduceColor(iRed, iGreen, iBlue);
|
||||
}
|
||||
(void)tSkipBytes(pFile, iPadding);
|
||||
}
|
||||
} /* end of vDecode24bpp */
|
||||
|
||||
/*
|
||||
* vDecodeRle4 - decode a RLE compressed 4 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecodeRle4(FILE *pFile, UCHAR *pucData, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iByteWidth, iOffset, iTmp, iHalfWidth;
|
||||
int iRun, iRunLength, iHalfRun;
|
||||
BOOL bEOL;
|
||||
UCHAR ucTmp;
|
||||
|
||||
DBG_MSG("vDecodeRle4");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pucData == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 16);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
iByteWidth = iGetByteWidth(pImg);
|
||||
iHalfWidth = (pImg->iWidth + 1) / 2;
|
||||
|
||||
for (iY = pImg->iHeight - 1; iY >= 0; iY--) {
|
||||
bEOL = FALSE;
|
||||
iX = 0;
|
||||
while (!bEOL) {
|
||||
iRunLength = iNextByte(pFile);
|
||||
if (iRunLength == EOF) {
|
||||
return;
|
||||
}
|
||||
if (iRunLength != 0) {
|
||||
/*
|
||||
* Encoded packet:
|
||||
* RunLength pixels, all the "same" value
|
||||
*/
|
||||
iTmp = iNextByte(pFile);
|
||||
if (iTmp == EOF) {
|
||||
return;
|
||||
}
|
||||
/* Reverse the nibble order */
|
||||
ucTmp = (iTmp & 0xf0) >> 4;
|
||||
ucTmp |= (iTmp & 0x0f) << 4;
|
||||
iHalfRun = (iRunLength + 1) / 2;
|
||||
for (iRun = 0; iRun < iHalfRun; iRun++) {
|
||||
if (iX < iHalfWidth) {
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) = ucTmp;
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
/* Literal or escape */
|
||||
iRunLength = iNextByte(pFile);
|
||||
if (iRunLength == EOF) {
|
||||
return;
|
||||
}
|
||||
if (iRunLength == 0) { /* End of line escape */
|
||||
bEOL = TRUE;
|
||||
} else if (iRunLength == 1) { /* End of file escape */
|
||||
return;
|
||||
} else if (iRunLength == 2) { /* Delta escape */
|
||||
DBG_MSG("RLE4: encountered delta escape");
|
||||
return;
|
||||
} else { /* Literal packet */
|
||||
iHalfRun = (iRunLength + 1) / 2;
|
||||
for (iRun = 0; iRun < iHalfRun; iRun++) {
|
||||
iTmp = iNextByte(pFile);
|
||||
if (iTmp == EOF) {
|
||||
return;
|
||||
}
|
||||
/* Reverse the nibble order */
|
||||
ucTmp = (iTmp & 0xf0) >> 4;
|
||||
ucTmp |= (iTmp & 0x0f) << 4;
|
||||
if (iX < iHalfWidth) {
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) = ucTmp;
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
/* Padding if the number of bytes is odd */
|
||||
if (odd(iHalfRun)) {
|
||||
(void)tSkipBytes(pFile, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
DBG_DEC_C(iX != iHalfWidth, iX);
|
||||
}
|
||||
} /* end of vDecodeRle4 */
|
||||
|
||||
/*
|
||||
* vDecodeRle8 - decode a RLE compressed 8 bits per pixel image
|
||||
*/
|
||||
static void
|
||||
vDecodeRle8(FILE *pFile, UCHAR *pucData, const imagedata_type *pImg)
|
||||
{
|
||||
int iX, iY, iRun, iRunLength, iOffset, iIndex, iByteWidth;
|
||||
BOOL bEOL;
|
||||
|
||||
DBG_MSG("vDecodeRle8");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pucData == NULL);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iColorsUsed < 1 || pImg->iColorsUsed > 256);
|
||||
|
||||
DBG_DEC(pImg->iWidth);
|
||||
DBG_DEC(pImg->iHeight);
|
||||
|
||||
iByteWidth = iGetByteWidth(pImg);
|
||||
|
||||
for (iY = pImg->iHeight - 1; iY >= 0; iY--) {
|
||||
bEOL = FALSE;
|
||||
iX = 0;
|
||||
while (!bEOL) {
|
||||
iRunLength = iNextByte(pFile);
|
||||
if (iRunLength == EOF) {
|
||||
return;
|
||||
}
|
||||
if (iRunLength != 0) {
|
||||
/*
|
||||
* Encoded packet:
|
||||
* RunLength pixels, all the same value
|
||||
*/
|
||||
iIndex = iNextByte(pFile);
|
||||
if (iIndex == EOF) {
|
||||
return;
|
||||
}
|
||||
for (iRun = 0; iRun < iRunLength; iRun++) {
|
||||
if (iX < pImg->iWidth) {
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) =
|
||||
iReduceColor(
|
||||
pImg->aucPalette[iIndex][0],
|
||||
pImg->aucPalette[iIndex][1],
|
||||
pImg->aucPalette[iIndex][2]);
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
/* Literal or escape */
|
||||
iRunLength = iNextByte(pFile);
|
||||
if (iRunLength == EOF) {
|
||||
return;
|
||||
}
|
||||
if (iRunLength == 0) { /* End of line escape */
|
||||
bEOL = TRUE;
|
||||
} else if (iRunLength == 1) { /* End of file escape */
|
||||
return;
|
||||
} else if (iRunLength == 2) { /* Delta escape */
|
||||
DBG_MSG("RLE8: encountered delta escape");
|
||||
return;
|
||||
} else { /* Literal packet */
|
||||
for (iRun = 0; iRun < iRunLength; iRun++) {
|
||||
iIndex = iNextByte(pFile);
|
||||
if (iIndex == EOF) {
|
||||
return;
|
||||
}
|
||||
if (iX < pImg->iWidth) {
|
||||
iOffset = iY * iByteWidth + iX;
|
||||
*(pucData + iOffset) =
|
||||
iReduceColor(
|
||||
pImg->aucPalette[iIndex][0],
|
||||
pImg->aucPalette[iIndex][1],
|
||||
pImg->aucPalette[iIndex][2]);
|
||||
}
|
||||
iX++;
|
||||
}
|
||||
/* Padding if the number of bytes is odd */
|
||||
if (odd(iRunLength)) {
|
||||
(void)tSkipBytes(pFile, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
DBG_DEC_C(iX != pImg->iWidth, iX);
|
||||
}
|
||||
} /* end of vDecodeRle8 */
|
||||
|
||||
#if 0 /* defined(DEBUG) */
|
||||
static void
|
||||
vCopy2File(UCHAR *pucSprite, size_t tSpriteSize)
|
||||
{
|
||||
FILE *pOutFile;
|
||||
int iIndex;
|
||||
char szFilename[30];
|
||||
|
||||
sprintf(szFilename, "<Wimp$ScrapDir>.sprt%04d", ++iPicCounter);
|
||||
pOutFile = fopen(szFilename, "wb");
|
||||
if (pOutFile == NULL) {
|
||||
return;
|
||||
}
|
||||
DBG_MSG(szFilename);
|
||||
for (iIndex = 4; iIndex < (int)tSpriteSize; iIndex++) {
|
||||
if (putc(pucSprite[iIndex], pOutFile) == EOF) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
(void)fclose(pOutFile);
|
||||
vSetFiletype(szFilename, FILETYPE_SPRITE);
|
||||
} /* end of vCopy2File */
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
* vDecodeDIB - decode a dib picture
|
||||
*/
|
||||
static void
|
||||
vDecodeDIB(diagram_type *pDiag, FILE *pFile, const imagedata_type *pImg)
|
||||
{
|
||||
sprite_areainfo *pSprite;
|
||||
UCHAR *pucPalette, *pucData;
|
||||
size_t tSpriteSize;
|
||||
int iHeaderSize;
|
||||
|
||||
/* Skip the bitmap info header */
|
||||
iHeaderSize = (int)ulNextLong(pFile);
|
||||
(void)tSkipBytes(pFile, iHeaderSize - 4);
|
||||
/* Skip the colortable */
|
||||
if (pImg->uiBitsPerComponent <= 8) {
|
||||
(void)tSkipBytes(pFile,
|
||||
pImg->iColorsUsed * ((iHeaderSize > 12) ? 4 : 3));
|
||||
}
|
||||
|
||||
/* Create an blank sprite */
|
||||
pSprite = pCreateBlankSprite(pImg, &tSpriteSize);
|
||||
pucPalette = (UCHAR *)pSprite +
|
||||
pSprite->firstoffset + sizeof(sprite_header);
|
||||
|
||||
/* Add the pixel information */
|
||||
switch (pImg->uiBitsPerComponent) {
|
||||
case 1:
|
||||
fail(pImg->eCompression != compression_none);
|
||||
pucData = pucPalette + 2 * 8;
|
||||
vDecode1bpp(pFile, pucData, pImg);
|
||||
break;
|
||||
case 4:
|
||||
fail(pImg->eCompression != compression_none &&
|
||||
pImg->eCompression != compression_rle4);
|
||||
pucData = pucPalette + 16 * 8;
|
||||
if (pImg->eCompression == compression_rle4) {
|
||||
vDecodeRle4(pFile, pucData, pImg);
|
||||
} else {
|
||||
vDecode4bpp(pFile, pucData, pImg);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
fail(pImg->eCompression != compression_none &&
|
||||
pImg->eCompression != compression_rle8);
|
||||
pucData = pucPalette + 0 * 8;
|
||||
if (pImg->eCompression == compression_rle8) {
|
||||
vDecodeRle8(pFile, pucData, pImg);
|
||||
} else {
|
||||
vDecode8bpp(pFile, pucData, pImg);
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
fail(pImg->eCompression != compression_none);
|
||||
pucData = pucPalette + 0 * 8;
|
||||
vDecode24bpp(pFile, pucData, pImg);
|
||||
break;
|
||||
default:
|
||||
DBG_DEC(pImg->uiBitsPerComponent);
|
||||
break;
|
||||
}
|
||||
|
||||
#if 0 /* defined(DEBUG) */
|
||||
vCopy2File((UCHAR *)pSprite, tSpriteSize);
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Add the sprite to the Draw file */
|
||||
vImage2Diagram(pDiag, pImg,
|
||||
(UCHAR *)pSprite + pSprite->firstoffset,
|
||||
tSpriteSize - pSprite->firstoffset);
|
||||
|
||||
/* Clean up before you leave */
|
||||
pSprite = xfree(pSprite);
|
||||
} /* end of vDecodeDIB */
|
||||
|
||||
/*
|
||||
* bTranslateDIB - translate a DIB picture
|
||||
*
|
||||
* This function translates a picture from dib to sprite
|
||||
*
|
||||
* return TRUE when sucessful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bTranslateDIB(diagram_type *pDiag, FILE *pFile,
|
||||
ULONG ulFileOffset, const imagedata_type *pImg)
|
||||
{
|
||||
/* Seek to start position of DIB data */
|
||||
if (!bSetDataOffset(pFile, ulFileOffset)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
vDecodeDIB(pDiag, pFile, pImg);
|
||||
|
||||
return TRUE;
|
||||
} /* end of bTranslateDIB */
|
75
doclist.c
Normal file
75
doclist.c
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* doclist.c
|
||||
* Copyright (C) 2004 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Build, read and destroy list(s) of Word document information
|
||||
*
|
||||
* Note:
|
||||
* There is no real list there is always one document per document
|
||||
*/
|
||||
|
||||
#include "antiword.h"
|
||||
|
||||
#define HALF_INCH 36000L /* In millipoints */
|
||||
|
||||
/* Variables needed to write the Document Information List */
|
||||
static document_block_type *pAnchor = NULL;
|
||||
static document_block_type tInfo;
|
||||
|
||||
|
||||
/*
|
||||
* vDestroyDocumentInfoList - destroy the Document Information List
|
||||
*/
|
||||
void
|
||||
vDestroyDocumentInfoList(void)
|
||||
{
|
||||
DBG_MSG("vDestroyDocumentInfoList");
|
||||
|
||||
pAnchor = NULL;
|
||||
} /* end of vDestoryDocumentInfoList */
|
||||
|
||||
/*
|
||||
* vCreateDocumentInfoList - create the Document Information List
|
||||
*/
|
||||
void
|
||||
vCreateDocumentInfoList(const document_block_type *pDocument)
|
||||
{
|
||||
fail(pDocument == NULL);
|
||||
fail(pAnchor != NULL);
|
||||
|
||||
tInfo = *pDocument;
|
||||
pAnchor = &tInfo;
|
||||
} /* end of vCreateDocumentInfoList */
|
||||
|
||||
/*
|
||||
* lGetDefaultTabWidth - get the default tabwidth in millipoints
|
||||
*/
|
||||
long
|
||||
lGetDefaultTabWidth(void)
|
||||
{
|
||||
long lDefaultTabWidth;
|
||||
USHORT usTmp;
|
||||
|
||||
if (pAnchor == NULL) {
|
||||
DBG_FIXME();
|
||||
return HALF_INCH;
|
||||
}
|
||||
usTmp = pAnchor->usDefaultTabWidth;
|
||||
lDefaultTabWidth = usTmp == 0 ? HALF_INCH : lTwips2MilliPoints(usTmp);
|
||||
NO_DBG_DEC(lDefaultTabWidth);
|
||||
return lDefaultTabWidth;
|
||||
} /* end of lGetDefaultTabWidth */
|
||||
|
||||
/*
|
||||
* ucGetDopHdrFtrSpecification - get the Heder/footer specification
|
||||
*/
|
||||
UCHAR
|
||||
ucGetDopHdrFtrSpecification(void)
|
||||
{
|
||||
if (pAnchor == NULL) {
|
||||
DBG_FIXME();
|
||||
return 0x00;
|
||||
}
|
||||
return pAnchor->ucHdrFtrSpecification;
|
||||
} /* end of ucGetDopHdrFtrSpecification */
|
46
draw.h
Normal file
46
draw.h
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* draw.h
|
||||
* Copyright (C) 2001 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Constants and macros to deal with the Draw format
|
||||
*/
|
||||
|
||||
#if !defined(__draw_h)
|
||||
#define __draw_h 1
|
||||
|
||||
#include "drawftypes.h"
|
||||
|
||||
typedef struct draw_jpegstrhdr_tag {
|
||||
draw_tagtyp tag; /* 1 word */
|
||||
draw_sizetyp size; /* 1 word */
|
||||
draw_bboxtyp bbox; /* 4 words */
|
||||
int width; /* 1 word */
|
||||
int height; /* 1 word */
|
||||
int xdpi; /* 1 word */
|
||||
int ydpi; /* 1 word */
|
||||
int trfm[6]; /* 6 words */
|
||||
int len; /* 1 word */
|
||||
} draw_jpegstrhdr;
|
||||
|
||||
typedef struct draw_jpegstr_tag {
|
||||
draw_tagtyp tag; /* 1 word */
|
||||
draw_sizetyp size; /* 1 word */
|
||||
draw_bboxtyp bbox; /* 4 words */
|
||||
int width; /* 1 word */
|
||||
int height; /* 1 word */
|
||||
int xdpi; /* 1 word */
|
||||
int ydpi; /* 1 word */
|
||||
int trfm[6]; /* 6 words */
|
||||
int len; /* 1 word */
|
||||
unsigned char *jpeg;
|
||||
} draw_jpegstr;
|
||||
|
||||
typedef union draw_imageType_tag {
|
||||
draw_spristr *sprite;
|
||||
draw_jpegstr *jpeg;
|
||||
char *bytep;
|
||||
int *wordp;
|
||||
} draw_imageType;
|
||||
|
||||
#endif /* !__draw_h */
|
422
drawfile.c
Normal file
422
drawfile.c
Normal file
@ -0,0 +1,422 @@
|
||||
/*
|
||||
* drawfile.c
|
||||
* Copyright (C) 2005 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to process with the Draw diagram
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "DeskLib:Error.h"
|
||||
#include "DeskLib:SWI.h"
|
||||
#include "drawfile.h"
|
||||
#include "antiword.h"
|
||||
|
||||
#define DRAWFILE_OBJECT_TOO_SMALL 200
|
||||
#define DRAWFILE_NO_TEXT 201
|
||||
#define DRAWFILE_BAD_CHARACTER 202
|
||||
#define DRAWFILE_SMALL_MEMORY 203
|
||||
#define DRAWFILE_PATH_WITHOUT_LINES 204
|
||||
#define DRAWFILE_BAD_PATH_TYPE 205
|
||||
#define DRAWFILE_PATH_WITHOUT_END 206
|
||||
#define DRAWFILE_BAD_SPRITE_SIZE 207
|
||||
#define DRAWFILE_BAD_JPEG_SIZE 208
|
||||
#define DRAWFILE_TOO_SMALL 209
|
||||
#define DRAWFILE_NOT_A_DRAWFILE 210
|
||||
#define DRAWFILE_OBJECT_SIZE 211
|
||||
#define DRAWFILE_MANY_FONTTABLES 212
|
||||
#define DRAWFILE_TEXT_NO_FONT 213
|
||||
#define DRAWFILE_OBJECT_UNEXPECTED 214
|
||||
#define DRAWFILE_SIZE_ERROR 215
|
||||
|
||||
typedef struct drawfile_error_tag {
|
||||
int iErrorNumber;
|
||||
const char *szErrorText;
|
||||
} drawfile_error_type;
|
||||
|
||||
static const drawfile_error_type atErrors[] = {
|
||||
{ DRAWFILE_OBJECT_TOO_SMALL, "Object too small"},
|
||||
{ DRAWFILE_NO_TEXT, "Text object without text"},
|
||||
{ DRAWFILE_BAD_CHARACTER, "Bad character in string"},
|
||||
{ DRAWFILE_SMALL_MEMORY, "Not enough memory reserved"},
|
||||
{ DRAWFILE_PATH_WITHOUT_LINES, "This path has no lines"},
|
||||
{ DRAWFILE_BAD_PATH_TYPE, "Bad path-type in path"},
|
||||
{ DRAWFILE_PATH_WITHOUT_END, "No end of path seen"},
|
||||
{ DRAWFILE_BAD_SPRITE_SIZE, "Bad sprite size"},
|
||||
{ DRAWFILE_BAD_JPEG_SIZE, "Bad jpeg size"},
|
||||
{ DRAWFILE_TOO_SMALL, "Too small to be a drawfile"},
|
||||
{ DRAWFILE_NOT_A_DRAWFILE, "Not a drawfile"},
|
||||
{ DRAWFILE_OBJECT_SIZE, "Object with incorrect size"},
|
||||
{ DRAWFILE_MANY_FONTTABLES, "More than one font table"},
|
||||
{ DRAWFILE_TEXT_NO_FONT, "Text, but no font table seen"},
|
||||
{ DRAWFILE_OBJECT_UNEXPECTED, "Unexpected object type"},
|
||||
{ DRAWFILE_SIZE_ERROR, "Sizes don't match"},
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* pFillError - error number to error struct
|
||||
*/
|
||||
static os_error *
|
||||
pFillError(int iErrorNumber)
|
||||
{
|
||||
static os_error tError;
|
||||
const drawfile_error_type *pTmp;
|
||||
const char *szErrorText;
|
||||
|
||||
szErrorText = "Unknown error";
|
||||
for (pTmp = atErrors; pTmp < atErrors + elementsof(atErrors); pTmp++) {
|
||||
if (iErrorNumber == pTmp->iErrorNumber) {
|
||||
szErrorText = pTmp->szErrorText;
|
||||
break;
|
||||
}
|
||||
}
|
||||
tError.errnum = iErrorNumber;
|
||||
strncpy(tError.errmess, szErrorText, sizeof(tError.errmess) - 1);
|
||||
tError.errmess[sizeof(tError.errmess) - 1] = '\0';
|
||||
DBG_DEC(tError.errnum);
|
||||
DBG_MSG(tError.errmess);
|
||||
return &tError;
|
||||
} /* end of pFillError */
|
||||
|
||||
/*
|
||||
* Drawfile_BBox - Find the bounding box of a diagram
|
||||
*/
|
||||
os_error *
|
||||
Drawfile_Bbox(drawfile_bbox_flags flags,
|
||||
drawfile_diagram const *diagram,
|
||||
int size,
|
||||
os_trfm const *trfm,
|
||||
wimp_box *bbox)
|
||||
{
|
||||
return SWI(5, 0, DrawFile_BBox | XOS_Bit,
|
||||
flags, diagram, size, trfm, bbox);
|
||||
} /* end of Drawfile_Bbox */
|
||||
|
||||
/*
|
||||
* Drawfile_CreateDiagram - create an empty drawfile diagram
|
||||
*/
|
||||
os_error *
|
||||
Drawfile_CreateDiagram(drawfile_info *pInfo, size_t tMemorySize,
|
||||
const char *szCreator, wimp_box tBbox)
|
||||
{
|
||||
drawfile_diagram *pDiag;
|
||||
|
||||
if (tMemorySize < offsetof(drawfile_diagram, objects)) {
|
||||
return pFillError(DRAWFILE_SMALL_MEMORY);
|
||||
}
|
||||
pDiag = (drawfile_diagram *)pInfo->data;
|
||||
strncpy(pDiag->tag, "Draw", 4);
|
||||
pDiag->major_version = 201;
|
||||
pDiag->minor_version = 0;
|
||||
strncpy(pDiag->source, szCreator, sizeof(pDiag->source));
|
||||
pDiag->bbox = tBbox;
|
||||
/* Memory in use */
|
||||
pInfo->length = offsetof(drawfile_diagram, objects);
|
||||
return NULL;
|
||||
} /* end of Drawfile_CreateDiagram */
|
||||
|
||||
/*
|
||||
* Drawfile_AppendObject - append an object to a diagram
|
||||
*/
|
||||
os_error *
|
||||
Drawfile_AppendObject(drawfile_info *pInfo, size_t tMemorySize,
|
||||
const drawfile_object *pObject, BOOL bRebind)
|
||||
{
|
||||
wimp_box *pMainBbox;
|
||||
const wimp_box *pBbox;
|
||||
byte *pAfter;
|
||||
|
||||
if (tMemorySize < pInfo->length + pObject->size) {
|
||||
return pFillError(DRAWFILE_OBJECT_TOO_SMALL);
|
||||
}
|
||||
/* After the last object */
|
||||
pAfter = (byte *)pInfo->data + pInfo->length;
|
||||
/* Copy in the new data */
|
||||
memcpy(pAfter, pObject, pObject->size);
|
||||
/* Rebind if needed */
|
||||
if (bRebind) {
|
||||
pMainBbox = &((drawfile_diagram *)pInfo->data)->bbox;
|
||||
switch (pObject->type) {
|
||||
case drawfile_TYPE_FONT_TABLE:
|
||||
pBbox = NULL;
|
||||
break;
|
||||
case drawfile_TYPE_TEXT:
|
||||
pBbox = &pObject->data.text.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_PATH:
|
||||
pBbox = &pObject->data.path.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_SPRITE:
|
||||
pBbox = &pObject->data.sprite.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_GROUP:
|
||||
pBbox = &pObject->data.group.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_TAGGED:
|
||||
pBbox = &pObject->data.tagged.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_TEXT_AREA:
|
||||
pBbox = &pObject->data.text_area.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_TEXT_COLUMN:
|
||||
pBbox = NULL;
|
||||
break;
|
||||
case drawfile_TYPE_OPTIONS:
|
||||
pBbox = &pObject->data.options.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_TRFM_TEXT:
|
||||
pBbox = &pObject->data.trfm_text.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_TRFM_SPRITE:
|
||||
pBbox = &pObject->data.trfm_sprite.bbox;
|
||||
break;
|
||||
case drawfile_TYPE_JPEG:
|
||||
pBbox = &pObject->data.jpeg.bbox;
|
||||
break;
|
||||
default:
|
||||
pBbox = NULL;
|
||||
break;
|
||||
}
|
||||
if (pBbox != NULL) {
|
||||
if (pBbox->min.x < pMainBbox->min.x) {
|
||||
pMainBbox->min.x = pBbox->min.x;
|
||||
}
|
||||
if (pBbox->min.y < pMainBbox->min.y) {
|
||||
pMainBbox->min.y = pBbox->min.y;
|
||||
}
|
||||
if (pBbox->max.x > pMainBbox->max.x) {
|
||||
pMainBbox->max.x = pBbox->max.x;
|
||||
}
|
||||
if (pBbox->max.y > pMainBbox->max.y) {
|
||||
pMainBbox->max.y = pBbox->max.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Memory in use */
|
||||
pInfo->length += pObject->size;
|
||||
return NULL;
|
||||
} /* end of Drawfile_AppendObject */
|
||||
|
||||
/*
|
||||
* Replaces the draw_render_diag function from RISC_OSLib
|
||||
*/
|
||||
os_error *
|
||||
Drawfile_RenderDiagram(drawfile_info *pInfo, window_redrawblock *pRedraw,
|
||||
double dScale)
|
||||
{
|
||||
int aiTransform[6];
|
||||
|
||||
fail(pInfo == NULL);
|
||||
fail(pInfo->data == NULL);
|
||||
fail(pRedraw == NULL);
|
||||
fail(dScale < 0.01);
|
||||
|
||||
aiTransform[0] = (int)(dScale * 0x10000);
|
||||
aiTransform[1] = 0;
|
||||
aiTransform[2] = 0;
|
||||
aiTransform[3] = (int)(dScale * 0x10000);
|
||||
aiTransform[4] = (pRedraw->rect.min.x - pRedraw->scroll.x) * 256;
|
||||
aiTransform[5] = (pRedraw->rect.max.y - pRedraw->scroll.y) * 256;
|
||||
|
||||
return SWI(6, 0, DrawFile_Render | XOS_Bit,
|
||||
0, pInfo->data, pInfo->length, aiTransform, &pRedraw->rect, 0);
|
||||
} /* end of Drawfile_RenderDiagram */
|
||||
|
||||
/*
|
||||
* pVerifyText - verify a text object
|
||||
*/
|
||||
static os_error *
|
||||
pVerifyText(const drawfile_text *pText)
|
||||
{
|
||||
const unsigned char *pucTmp;
|
||||
|
||||
if (pText->text[0] == '\0') {
|
||||
return pFillError(DRAWFILE_NO_TEXT);
|
||||
}
|
||||
pucTmp = (const unsigned char *)pText->text;
|
||||
while (*pucTmp != '\0') {
|
||||
if (*pucTmp < 0x20 || *pucTmp == 0x7f) {
|
||||
return pFillError(DRAWFILE_BAD_CHARACTER);
|
||||
}
|
||||
pucTmp++;
|
||||
}
|
||||
return NULL;
|
||||
} /* end of pVerifyText */
|
||||
|
||||
/*
|
||||
* pVerifyPath - verify a path object
|
||||
*/
|
||||
static os_error *
|
||||
pVerifyPath(const drawfile_path *pPath, int iSize)
|
||||
{
|
||||
const int *piTmp;
|
||||
int iElements;
|
||||
BOOL bLine;
|
||||
|
||||
bLine = FALSE;
|
||||
iElements = (iSize - offsetof(drawfile_path, path)) / 4;
|
||||
|
||||
for (piTmp = pPath->path; piTmp < pPath->path + iElements; piTmp++) {
|
||||
switch(*piTmp) {
|
||||
case drawfile_PATH_END_PATH:
|
||||
if (bLine) {
|
||||
return NULL;
|
||||
}
|
||||
return pFillError(DRAWFILE_PATH_WITHOUT_LINES);
|
||||
case drawfile_PATH_LINE_TO:
|
||||
bLine = TRUE;
|
||||
piTmp += 2;
|
||||
break;
|
||||
case drawfile_PATH_MOVE_TO:
|
||||
piTmp += 2;
|
||||
break;
|
||||
case drawfile_PATH_CLOSE_LINE:
|
||||
bLine = TRUE;
|
||||
break;
|
||||
default:
|
||||
return pFillError(DRAWFILE_BAD_PATH_TYPE);
|
||||
}
|
||||
}
|
||||
return pFillError(DRAWFILE_PATH_WITHOUT_END);
|
||||
} /* end of pVerifyPath */
|
||||
|
||||
/*
|
||||
* pVerifySprite - verify a sprite object
|
||||
*/
|
||||
static os_error *
|
||||
pVerifySprite(const drawfile_sprite *pSprite, int iSize)
|
||||
{
|
||||
iSize -= offsetof(drawfile_sprite, header);
|
||||
if (iSize < pSprite->header.offset_next) {
|
||||
DBG_DEC(iSize);
|
||||
DBG_DEC(pSprite->header.offset_next);
|
||||
return pFillError(DRAWFILE_BAD_SPRITE_SIZE);
|
||||
}
|
||||
return NULL;
|
||||
} /* end of pVerifySprite */
|
||||
|
||||
/*
|
||||
* pVerifyJpeg - verify a jpeg object
|
||||
*/
|
||||
static os_error *
|
||||
pVerifyJpeg(const drawfile_jpeg *pJpeg, int iSize)
|
||||
{
|
||||
iSize -= offsetof(drawfile_jpeg, data);
|
||||
if (iSize < pJpeg->len) {
|
||||
DBG_DEC(iSize);
|
||||
DBG_DEC(pJpeg->len);
|
||||
return pFillError(DRAWFILE_BAD_JPEG_SIZE);
|
||||
}
|
||||
return NULL;
|
||||
} /* end of pVerifyJpeg */
|
||||
|
||||
/*
|
||||
* Drawfile_VerifyDiagram - Verify the diagram generated from the Word file
|
||||
*
|
||||
* returns NULL if the diagram is correct
|
||||
*/
|
||||
os_error *
|
||||
Drawfile_VerifyDiagram(drawfile_info *pInfo)
|
||||
{
|
||||
drawfile_diagram *pDiag;
|
||||
drawfile_object *pObj;
|
||||
os_error *pError;
|
||||
const char *pcTmp;
|
||||
int iToGo, iFontTables;
|
||||
BOOL bTypeFontTable;
|
||||
|
||||
TRACE_MSG("Drawfile_VerifyDiagram");
|
||||
|
||||
fail(pInfo == NULL);
|
||||
|
||||
if (pInfo->length < offsetof(drawfile_diagram, objects)) {
|
||||
return pFillError(DRAWFILE_TOO_SMALL);
|
||||
}
|
||||
|
||||
pDiag = (drawfile_diagram *)pInfo->data;
|
||||
if (strncmp(pDiag->tag, "Draw", 4) != 0 ||
|
||||
pDiag->major_version != 201 ||
|
||||
pDiag->minor_version != 0) {
|
||||
return pFillError(DRAWFILE_NOT_A_DRAWFILE);
|
||||
}
|
||||
|
||||
iToGo = pInfo->length - offsetof(drawfile_diagram, objects);
|
||||
pcTmp = (const char *)pInfo->data + offsetof(drawfile_diagram, objects);
|
||||
iFontTables = 0;
|
||||
bTypeFontTable = FALSE;
|
||||
|
||||
while (iToGo > 0) {
|
||||
pObj = (drawfile_object *)pcTmp;
|
||||
if (pObj->size < 0 || pObj->size % 4 != 0) {
|
||||
return pFillError(DRAWFILE_OBJECT_SIZE);
|
||||
}
|
||||
switch (pObj->type) {
|
||||
case drawfile_TYPE_FONT_TABLE:
|
||||
if (bTypeFontTable) {
|
||||
return pFillError(DRAWFILE_MANY_FONTTABLES);
|
||||
}
|
||||
bTypeFontTable = TRUE;
|
||||
break;
|
||||
case drawfile_TYPE_TEXT:
|
||||
if (pObj->data.text.style.font_ref != 0 &&
|
||||
!bTypeFontTable) {
|
||||
return pFillError(DRAWFILE_TEXT_NO_FONT);
|
||||
}
|
||||
pError = pVerifyText(&pObj->data.text);
|
||||
if (pError != NULL) {
|
||||
return pError;
|
||||
}
|
||||
break;
|
||||
case drawfile_TYPE_PATH:
|
||||
pError = pVerifyPath(&pObj->data.path,
|
||||
pObj->size - offsetof(drawfile_object, data));
|
||||
if (pError != NULL) {
|
||||
return pError;
|
||||
}
|
||||
break;
|
||||
case drawfile_TYPE_SPRITE:
|
||||
pError = pVerifySprite(&pObj->data.sprite,
|
||||
pObj->size - offsetof(drawfile_object, data));
|
||||
if (pError != NULL) {
|
||||
return pError;
|
||||
}
|
||||
break;
|
||||
case drawfile_TYPE_JPEG:
|
||||
pError = pVerifyJpeg(&pObj->data.jpeg,
|
||||
pObj->size - offsetof(drawfile_object, data));
|
||||
if (pError != NULL) {
|
||||
return pError;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
DBG_DEC(pObj->type);
|
||||
return pFillError(DRAWFILE_OBJECT_UNEXPECTED);
|
||||
}
|
||||
pcTmp += pObj->size;
|
||||
iToGo -= pObj->size;
|
||||
}
|
||||
if (iToGo < 0) {
|
||||
return pFillError(DRAWFILE_SIZE_ERROR);
|
||||
}
|
||||
return NULL;
|
||||
} /* end of Drawfile_VerifyDiagram */
|
||||
|
||||
/*
|
||||
* Drawfile_QueryBox - Find the bounding box of a diagram
|
||||
*/
|
||||
void
|
||||
Drawfile_QueryBox(drawfile_info *pInfo, wimp_box *pRect, BOOL bScreenUnits)
|
||||
{
|
||||
fail(pInfo == NULL);
|
||||
fail(pRect == NULL);
|
||||
|
||||
Error_CheckFatal(Drawfile_Bbox(0,
|
||||
pInfo->data, pInfo->length, NULL, pRect));
|
||||
if (bScreenUnits) {
|
||||
pRect->min.x = Drawfile_DrawToScreen(pRect->min.x);
|
||||
pRect->min.y = Drawfile_DrawToScreen(pRect->min.y);
|
||||
pRect->max.x = Drawfile_DrawToScreen(pRect->max.x);
|
||||
pRect->max.y = Drawfile_DrawToScreen(pRect->max.y);
|
||||
}
|
||||
} /* end of Drawfile_QueryBox */
|
433
drawfile.h
Normal file
433
drawfile.h
Normal file
@ -0,0 +1,433 @@
|
||||
/*
|
||||
* drawfile.h
|
||||
* Copyright (C) 2005 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Include file to deal with drawfiles
|
||||
*
|
||||
* Based on:
|
||||
* C header file for DrawFile
|
||||
* written by DefMod (May 4 2004) on Tue May 4 13:34:17 2004
|
||||
* Jonathan Coxhead, jonathan@doves.demon.co.uk, 21 Aug 1995
|
||||
* OSLib---efficient, type-safe, transparent, extensible,
|
||||
* register-safe A P I coverage of RISC O S
|
||||
* Copyright (C) 1994 Jonathan Coxhead
|
||||
*
|
||||
* All credit should go to him, but all the bugs are mine
|
||||
*/
|
||||
|
||||
#if !defined(__drawfile_h)
|
||||
#define __drawfile_h
|
||||
|
||||
#include "DeskLib:Sprite.h"
|
||||
#include "DeskLib:Wimp.h"
|
||||
|
||||
#if !defined(BOOL)
|
||||
#define BOOL int
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#endif /* !BOOL */
|
||||
|
||||
/*********************
|
||||
* Conversion macros *
|
||||
*********************/
|
||||
#define Drawfile_DrawToScreen(i) ((i) / 256)
|
||||
#define Drawfile_ScreenToDraw(i) ((i) * 256)
|
||||
|
||||
/**********************************
|
||||
* SWI names and SWI reason codes *
|
||||
**********************************/
|
||||
#define DrawFile_Render 0x45540
|
||||
#define DrawFile_BBox 0x45541
|
||||
#define DrawFile_DeclareFonts 0x45542
|
||||
|
||||
/********************
|
||||
* Type definitions *
|
||||
********************/
|
||||
typedef unsigned int bits;
|
||||
typedef unsigned char byte;
|
||||
|
||||
typedef byte drawfile_fontref;
|
||||
|
||||
typedef byte drawfile_path_style_flags;
|
||||
|
||||
typedef bits drawfile_text_flags;
|
||||
|
||||
typedef bits drawfile_render_flags;
|
||||
|
||||
typedef bits drawfile_declare_fonts_flags;
|
||||
|
||||
typedef bits drawfile_paper_options;
|
||||
|
||||
typedef bits drawfile_entry_mode;
|
||||
|
||||
typedef enum {
|
||||
drawfile_TYPE_FONT_TABLE = 0,
|
||||
drawfile_TYPE_TEXT = 1,
|
||||
drawfile_TYPE_PATH = 2,
|
||||
drawfile_TYPE_SPRITE = 5,
|
||||
drawfile_TYPE_GROUP = 6,
|
||||
drawfile_TYPE_TAGGED = 7,
|
||||
drawfile_TYPE_TEXT_AREA = 9,
|
||||
drawfile_TYPE_TEXT_COLUMN = 10,
|
||||
drawfile_TYPE_OPTIONS = 11,
|
||||
drawfile_TYPE_TRFM_TEXT = 12,
|
||||
drawfile_TYPE_TRFM_SPRITE = 13,
|
||||
drawfile_TYPE_JPEG = 16
|
||||
} drawfile_type;
|
||||
|
||||
typedef enum {
|
||||
drawfile_PATH_END_PATH = 0,
|
||||
drawfile_PATH_CONTINUATION = 1,
|
||||
drawfile_PATH_MOVE_TO = 2,
|
||||
drawfile_PATH_SPECIAL_MOVE_TO = 3,
|
||||
drawfile_PATH_CLOSE_GAP = 4,
|
||||
drawfile_PATH_CLOSE_LINE = 5,
|
||||
drawfile_PATH_BEZIER_TO = 6,
|
||||
drawfile_PATH_GAP_TO = 7,
|
||||
drawfile_PATH_LINE_TO = 8
|
||||
} drawfile_path_type;
|
||||
|
||||
typedef struct {
|
||||
int start;
|
||||
int element_count;
|
||||
int elements [6];
|
||||
} draw_dash_pattern;
|
||||
|
||||
typedef struct {
|
||||
int entries [3] [2];
|
||||
} os_trfm;
|
||||
|
||||
typedef struct {
|
||||
void *data;
|
||||
size_t length;
|
||||
} drawfile_info;
|
||||
|
||||
typedef struct {
|
||||
drawfile_fontref font_ref;
|
||||
char font_name [1];
|
||||
} drawfile_font_def;
|
||||
|
||||
typedef struct {
|
||||
drawfile_fontref font_ref;
|
||||
byte reserved [3];
|
||||
} drawfile_text_style;
|
||||
|
||||
typedef struct {
|
||||
drawfile_path_style_flags flags;
|
||||
byte reserved;
|
||||
byte cap_width;
|
||||
byte cap_length;
|
||||
} drawfile_path_style;
|
||||
|
||||
typedef struct {
|
||||
drawfile_font_def font_def[1];
|
||||
} drawfile_font_table;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
palette_entry fill;
|
||||
palette_entry bg_hint;
|
||||
drawfile_text_style style;
|
||||
int xsize;
|
||||
int ysize;
|
||||
wimp_coord base;
|
||||
char text [1];
|
||||
} drawfile_text;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
palette_entry fill;
|
||||
palette_entry outline;
|
||||
int width;
|
||||
drawfile_path_style style;
|
||||
int path [1];
|
||||
} drawfile_path;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
palette_entry fill;
|
||||
palette_entry outline;
|
||||
int width;
|
||||
drawfile_path_style style;
|
||||
draw_dash_pattern pattern;
|
||||
int path [1];
|
||||
} drawfile_path_with_pattern;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
sprite_header header;
|
||||
byte data [1];
|
||||
} drawfile_sprite;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
char name [12];
|
||||
int objects [1];
|
||||
} drawfile_group;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
drawfile_type tag;
|
||||
int object [1];
|
||||
} drawfile_tagged;
|
||||
|
||||
typedef struct {
|
||||
wimp_box box;
|
||||
} drawfile_text_column;
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
drawfile_type type;
|
||||
int size;
|
||||
drawfile_text_column data;
|
||||
} columns [1];
|
||||
} drawfile_text_column_list;
|
||||
|
||||
typedef struct {
|
||||
drawfile_type type;
|
||||
int reserved [2];
|
||||
palette_entry fill;
|
||||
palette_entry bg_hint;
|
||||
char text [1];
|
||||
} drawfile_area_text;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
drawfile_text_column_list header;
|
||||
drawfile_area_text area_text;
|
||||
} drawfile_text_area;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
int paper_size;
|
||||
drawfile_paper_options paper_options;
|
||||
double grid_spacing;
|
||||
int grid_division;
|
||||
BOOL isometric;
|
||||
BOOL auto_adjust;
|
||||
BOOL show;
|
||||
BOOL lock;
|
||||
BOOL cm;
|
||||
int zoom_mul;
|
||||
int zoom_div;
|
||||
BOOL zoom_lock;
|
||||
BOOL toolbox;
|
||||
drawfile_entry_mode entry_mode;
|
||||
int undo_size;
|
||||
} drawfile_options;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
os_trfm trfm;
|
||||
drawfile_text_flags flags;
|
||||
palette_entry fill;
|
||||
palette_entry bg_hint;
|
||||
drawfile_text_style style;
|
||||
int xsize;
|
||||
int ysize;
|
||||
wimp_coord base;
|
||||
char text [1];
|
||||
} drawfile_trfm_text;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
os_trfm trfm;
|
||||
sprite_header header;
|
||||
byte data [1];
|
||||
} drawfile_trfm_sprite;
|
||||
|
||||
typedef struct {
|
||||
wimp_box bbox;
|
||||
int width;
|
||||
int height;
|
||||
int xdpi;
|
||||
int ydpi;
|
||||
os_trfm trfm;
|
||||
int len;
|
||||
byte data [1];
|
||||
} drawfile_jpeg;
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* Type: drawfile_object
|
||||
*
|
||||
* Description: This type is used to declare pointers rather than objects
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
drawfile_type type;
|
||||
int size;
|
||||
union {
|
||||
drawfile_font_table font_table;
|
||||
drawfile_text text;
|
||||
drawfile_path path;
|
||||
drawfile_path_with_pattern path_with_pattern;
|
||||
drawfile_sprite sprite;
|
||||
drawfile_group group;
|
||||
drawfile_tagged tagged;
|
||||
drawfile_text_column text_column;
|
||||
drawfile_text_area text_area;
|
||||
drawfile_options options;
|
||||
drawfile_trfm_text trfm_text;
|
||||
drawfile_trfm_sprite trfm_sprite;
|
||||
drawfile_jpeg jpeg;
|
||||
} data;
|
||||
} drawfile_object;
|
||||
|
||||
typedef struct {
|
||||
char tag [4];
|
||||
int major_version;
|
||||
int minor_version;
|
||||
char source [12];
|
||||
wimp_box bbox;
|
||||
drawfile_object objects [1];
|
||||
} drawfile_diagram;
|
||||
|
||||
typedef bits drawfile_bbox_flags;
|
||||
|
||||
typedef struct {
|
||||
drawfile_object *object;
|
||||
drawfile_diagram *diagram;
|
||||
drawfile_object *font_table;
|
||||
drawfile_declare_fonts_flags flags;
|
||||
os_error *error;
|
||||
} drawfile_declare_fonts_state;
|
||||
|
||||
/************************
|
||||
* Constant definitions *
|
||||
************************/
|
||||
#define error_DRAW_FILE_NOT_DRAW 0x20C00u
|
||||
#define error_DRAW_FILE_VERSION 0x20C01u
|
||||
#define error_DRAW_FILE_FONT_TAB 0x20C02u
|
||||
#define error_DRAW_FILE_BAD_FONT_NO 0x20C03u
|
||||
#define error_DRAW_FILE_BAD_MODE 0x20C04u
|
||||
#define error_DRAW_FILE_BAD_FILE 0x20C05u
|
||||
#define error_DRAW_FILE_BAD_GROUP 0x20C06u
|
||||
#define error_DRAW_FILE_BAD_TAG 0x20C07u
|
||||
#define error_DRAW_FILE_SYNTAX 0x20C08u
|
||||
#define error_DRAW_FILE_FONT_NO 0x20C09u
|
||||
#define error_DRAW_FILE_AREA_VER 0x20C0Au
|
||||
#define error_DRAW_FILE_NO_AREA_VER 0x20C0Bu
|
||||
|
||||
#define drawfile_PATH_MITRED ((drawfile_path_style_flags) 0x0u)
|
||||
#define drawfile_PATH_ROUND ((drawfile_path_style_flags) 0x1u)
|
||||
#define drawfile_PATH_BEVELLED ((drawfile_path_style_flags) 0x2u)
|
||||
#define drawfile_PATH_BUTT ((drawfile_path_style_flags) 0x0u)
|
||||
#define drawfile_PATH_SQUARE ((drawfile_path_style_flags) 0x2u)
|
||||
#define drawfile_PATH_TRIANGLE ((drawfile_path_style_flags) 0x3u)
|
||||
#define drawfile_PATH_JOIN_SHIFT 0
|
||||
#define drawfile_PATH_JOIN ((drawfile_path_style_flags) 0x3u)
|
||||
#define drawfile_PATH_END_SHIFT 2
|
||||
#define drawfile_PATH_END ((drawfile_path_style_flags) 0xCu)
|
||||
#define drawfile_PATH_START_SHIFT 4
|
||||
#define drawfile_PATH_START ((drawfile_path_style_flags) 0x30u)
|
||||
#define drawfile_PATH_WINDING_EVEN_ODD ((drawfile_path_style_flags) 0x40u)
|
||||
#define drawfile_PATH_DASHED ((drawfile_path_style_flags) 0x80u)
|
||||
#define drawfile_PATH_CAP_WIDTH_SHIFT 16
|
||||
#define drawfile_PATH_CAP_WIDTH ((drawfile_path_style_flags) 0xFF0000u)
|
||||
#define drawfile_PATH_CAP_LENGTH_SHIFT 24
|
||||
#define drawfile_PATH_CAP_LENGTH ((drawfile_path_style_flags) 0xFF000000u)
|
||||
#define drawfile_TEXT_KERN ((drawfile_text_flags) 0x1u)
|
||||
#define drawfile_TEXT_RIGHT_TO_LEFT ((drawfile_text_flags) 0x2u)
|
||||
#define drawfile_TEXT_UNDERLINE ((drawfile_text_flags) 0x4u)
|
||||
#define drawfile_RENDER_BBOXES ((drawfile_render_flags) 0x1u)
|
||||
#define drawfile_RENDER_SUPPRESS ((drawfile_render_flags) 0x2u)
|
||||
#define drawfile_RENDER_GIVEN_FLATNESS ((drawfile_render_flags) 0x4u)
|
||||
#define drawfile_RENDER_GIVEN_COLOUR_MAPPING ((drawfile_render_flags) 0x8u)
|
||||
#define drawfile_NO_DOWNLOAD ((drawfile_declare_fonts_flags) 0x1u)
|
||||
#define drawfile_PAPER_SHOW ((drawfile_paper_options) 0x1u)
|
||||
#define drawfile_PAPER_LANDSCAPE ((drawfile_paper_options) 0x10u)
|
||||
#define drawfile_PAPER_DEFAULT ((drawfile_paper_options) 0x100u)
|
||||
#define drawfile_ENTRY_MODE_LINE ((drawfile_entry_mode) 0x1u)
|
||||
#define drawfile_ENTRY_MODE_CLOSED_LINE ((drawfile_entry_mode) 0x2u)
|
||||
#define drawfile_ENTRY_MODE_CURVE ((drawfile_entry_mode) 0x4u)
|
||||
#define drawfile_ENTRY_MODE_CLOSED_CURVE ((drawfile_entry_mode) 0x8u)
|
||||
#define drawfile_ENTRY_MODE_RECTANGLE ((drawfile_entry_mode) 0x10u)
|
||||
#define drawfile_ENTRY_MODE_ELLIPSE ((drawfile_entry_mode) 0x20u)
|
||||
#define drawfile_ENTRY_MODE_TEXT_LINE ((drawfile_entry_mode) 0x40u)
|
||||
#define drawfile_ENTRY_MODE_SELECT ((drawfile_entry_mode) 0x80u)
|
||||
|
||||
/*************************
|
||||
* Function declarations *
|
||||
*************************/
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* Function: drawfile_render()
|
||||
*
|
||||
* Description: Calls SWI 0x45540
|
||||
*
|
||||
* Input: flags - value of R0 on entry
|
||||
* diagram - value of R1 on entry
|
||||
* size - value of R2 on entry
|
||||
* trfm - value of R3 on entry
|
||||
* clip - value of R4 on entry
|
||||
* flatness - value of R5 on entry
|
||||
*/
|
||||
|
||||
extern os_error *Drawfile_Render (drawfile_render_flags flags,
|
||||
drawfile_diagram const *diagram,
|
||||
int size,
|
||||
os_trfm const *trfm,
|
||||
wimp_box const *clip,
|
||||
int flatness);
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* Function: drawfile_bbox()
|
||||
*
|
||||
* Description: Calls SWI 0x45541
|
||||
*
|
||||
* Input: flags - value of R0 on entry
|
||||
* diagram - value of R1 on entry
|
||||
* size - value of R2 on entry
|
||||
* trfm - value of R3 on entry
|
||||
* bbox - value of R4 on entry
|
||||
*/
|
||||
|
||||
extern os_error *Drawfile_Bbox (drawfile_bbox_flags flags,
|
||||
drawfile_diagram const *diagram,
|
||||
int size,
|
||||
os_trfm const *trfm,
|
||||
wimp_box *bbox);
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* Function: Drawfile_DeclareFonts()
|
||||
*
|
||||
* Description: Calls SWI 0x45542
|
||||
*
|
||||
* Input: flags - value of R0 on entry
|
||||
* diagram - value of R1 on entry
|
||||
* size - value of R2 on entry
|
||||
*/
|
||||
|
||||
extern os_error *Drawfile_DeclareFonts (drawfile_declare_fonts_flags flags,
|
||||
drawfile_diagram const *diagram,
|
||||
int size);
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* Function: Drawfile_CreateDiagram()
|
||||
*
|
||||
*/
|
||||
|
||||
extern os_error * Drawfile_CreateDiagram(drawfile_info *info, size_t memory,
|
||||
const char *creator, wimp_box box);
|
||||
|
||||
extern os_error *Drawfile_AppendObject(drawfile_info *info, size_t memory,
|
||||
const drawfile_object *object, BOOL rebind);
|
||||
|
||||
extern os_error *Drawfile_RenderDiagram(drawfile_info *info,
|
||||
window_redrawblock *redraw, double scale);
|
||||
|
||||
extern os_error *Drawfile_VerifyDiagram(drawfile_info *info);
|
||||
|
||||
extern void Drawfile_QueryBox(drawfile_info *info,
|
||||
wimp_box *rect, BOOL screenUnits);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __drawfile.h */
|
26
fail.c
Normal file
26
fail.c
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* fail.c
|
||||
* Copyright (C) 1998 A.J. van Os
|
||||
*
|
||||
* Description:
|
||||
* An alternative form of assert()
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "antiword.h"
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
void
|
||||
__fail(char *szExpression, char *szFilename, int iLineNumber)
|
||||
{
|
||||
if (szExpression == NULL || szFilename == NULL) {
|
||||
werr(1, "Internal error: no expression");
|
||||
}
|
||||
#if defined(DEBUG)
|
||||
fprintf(stderr, "%s[%3d]: Internal error in '%s'\n",
|
||||
szFilename, iLineNumber, szExpression);
|
||||
#endif /* DEBUG */
|
||||
werr(1, "Internal error in '%s' in file %s at line %d",
|
||||
szExpression, szFilename, iLineNumber);
|
||||
} /* end of __fail */
|
||||
#endif /* !NDEBUG */
|
22
fail.h
Normal file
22
fail.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* fail.h
|
||||
* Copyright (C) 1998-2000 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Support for an alternative form of assert()
|
||||
*/
|
||||
|
||||
#if !defined(__fail_h)
|
||||
#define __fail_h 1
|
||||
|
||||
#undef fail
|
||||
|
||||
#if defined(NDEBUG)
|
||||
#define fail(e) ((void)0)
|
||||
#else
|
||||
#define fail(e) ((e) ? __fail(#e, __FILE__, __LINE__) : (void)0)
|
||||
#endif /* NDEBUG */
|
||||
|
||||
extern void __fail(char *, char *, int);
|
||||
|
||||
#endif /* __fail_h */
|
154
finddata.c
Normal file
154
finddata.c
Normal file
@ -0,0 +1,154 @@
|
||||
/*
|
||||
* finddata.c
|
||||
* Copyright (C) 2000-2002 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Find the blocks that contain the data of MS Word files
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
/*
|
||||
* bAddDataBlocks - Add the blocks to the data block list
|
||||
*
|
||||
* Returns TRUE when successful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bAddDataBlocks(ULONG ulDataPosFirst, ULONG ulTotalLength,
|
||||
ULONG ulStartBlock, const ULONG *aulBBD, size_t tBBDLen)
|
||||
{
|
||||
data_block_type tDataBlock;
|
||||
ULONG ulDataPos, ulOffset, ulIndex;
|
||||
long lToGo;
|
||||
BOOL bSuccess;
|
||||
|
||||
fail(ulTotalLength > (ULONG)LONG_MAX);
|
||||
fail(ulStartBlock > MAX_BLOCKNUMBER && ulStartBlock != END_OF_CHAIN);
|
||||
fail(aulBBD == NULL);
|
||||
|
||||
NO_DBG_HEX(ulDataPosFirst);
|
||||
NO_DBG_DEC(ulTotalLength);
|
||||
|
||||
lToGo = (long)ulTotalLength;
|
||||
|
||||
ulDataPos = ulDataPosFirst;
|
||||
ulOffset = ulDataPosFirst;
|
||||
for (ulIndex = ulStartBlock;
|
||||
ulIndex != END_OF_CHAIN && lToGo > 0;
|
||||
ulIndex = aulBBD[ulIndex]) {
|
||||
if (ulIndex == UNUSED_BLOCK || ulIndex >= (ULONG)tBBDLen) {
|
||||
DBG_DEC(ulIndex);
|
||||
DBG_DEC(tBBDLen);
|
||||
return FALSE;
|
||||
}
|
||||
if (ulOffset >= BIG_BLOCK_SIZE) {
|
||||
ulOffset -= BIG_BLOCK_SIZE;
|
||||
continue;
|
||||
}
|
||||
tDataBlock.ulFileOffset =
|
||||
(ulIndex + 1) * BIG_BLOCK_SIZE + ulOffset;
|
||||
tDataBlock.ulDataPos = ulDataPos;
|
||||
tDataBlock.ulLength = min(BIG_BLOCK_SIZE - ulOffset,
|
||||
(ULONG)lToGo);
|
||||
fail(tDataBlock.ulLength > BIG_BLOCK_SIZE);
|
||||
ulOffset = 0;
|
||||
if (!bAdd2DataBlockList(&tDataBlock)) {
|
||||
DBG_HEX(tDataBlock.ulFileOffset);
|
||||
DBG_HEX(tDataBlock.ulDataPos);
|
||||
DBG_DEC(tDataBlock.ulLength);
|
||||
return FALSE;
|
||||
}
|
||||
ulDataPos += tDataBlock.ulLength;
|
||||
lToGo -= (long)tDataBlock.ulLength;
|
||||
}
|
||||
bSuccess = lToGo == 0 ||
|
||||
(ulTotalLength == (ULONG)LONG_MAX && ulIndex == END_OF_CHAIN);
|
||||
DBG_DEC_C(!bSuccess, lToGo);
|
||||
DBG_DEC_C(!bSuccess, ulTotalLength);
|
||||
DBG_DEC_C(!bSuccess, ulIndex);
|
||||
return bSuccess;
|
||||
} /* end of bAddDataBlocks */
|
||||
|
||||
/*
|
||||
* bGet6DocumentData - make a list of the data blocks of Word 6/7 files
|
||||
*
|
||||
* Code for "fast saved" files.
|
||||
*
|
||||
* Returns TRUE when successful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bGet6DocumentData(FILE *pFile, ULONG ulStartBlock,
|
||||
const ULONG *aulBBD, size_t tBBDLen, const UCHAR *aucHeader)
|
||||
{
|
||||
UCHAR *aucBuffer;
|
||||
ULONG ulBeginTextInfo, ulOffset, ulTotLength;
|
||||
size_t tTextInfoLen;
|
||||
int iIndex, iOff, iType, iLen, iPieces;
|
||||
|
||||
DBG_MSG("bGet6DocumentData");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(aulBBD == NULL);
|
||||
fail(aucHeader == NULL);
|
||||
|
||||
ulBeginTextInfo = ulGetLong(0x160, aucHeader);
|
||||
DBG_HEX(ulBeginTextInfo);
|
||||
tTextInfoLen = (size_t)ulGetLong(0x164, aucHeader);
|
||||
DBG_DEC(tTextInfoLen);
|
||||
|
||||
aucBuffer = xmalloc(tTextInfoLen);
|
||||
if (!bReadBuffer(pFile, ulStartBlock,
|
||||
aulBBD, tBBDLen, BIG_BLOCK_SIZE,
|
||||
aucBuffer, ulBeginTextInfo, tTextInfoLen)) {
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
NO_DBG_PRINT_BLOCK(aucBuffer, tTextInfoLen);
|
||||
|
||||
iOff = 0;
|
||||
while (iOff < (int)tTextInfoLen) {
|
||||
iType = (int)ucGetByte(iOff, aucBuffer);
|
||||
iOff++;
|
||||
if (iType == 0) {
|
||||
iOff++;
|
||||
continue;
|
||||
}
|
||||
iLen = (int)usGetWord(iOff, aucBuffer);
|
||||
iOff += 2;
|
||||
if (iType == 1) {
|
||||
iOff += iLen;
|
||||
continue;
|
||||
}
|
||||
if (iType != 2) {
|
||||
werr(0, "Unknown type of 'fastsaved' format");
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
/* Type 2 */
|
||||
NO_DBG_DEC(iLen);
|
||||
iOff += 2;
|
||||
iPieces = (iLen - 4) / 12;
|
||||
DBG_DEC(iPieces);
|
||||
for (iIndex = 0; iIndex < iPieces; iIndex++) {
|
||||
ulOffset = ulGetLong(
|
||||
iOff + (iPieces + 1) * 4 + iIndex * 8 + 2,
|
||||
aucBuffer);
|
||||
ulTotLength = ulGetLong(iOff + (iIndex + 1) * 4,
|
||||
aucBuffer) -
|
||||
ulGetLong(iOff + iIndex * 4,
|
||||
aucBuffer);
|
||||
if (!bAddDataBlocks(ulOffset, ulTotLength,
|
||||
ulStartBlock,
|
||||
aulBBD, tBBDLen)) {
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return TRUE;
|
||||
} /* end of bGet6DocumentData */
|
289
findtext.c
Normal file
289
findtext.c
Normal file
@ -0,0 +1,289 @@
|
||||
/*
|
||||
* findtext.c
|
||||
* Copyright (C) 1998-2004 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Find the blocks that contain the text of MS Word files
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
/*
|
||||
* bAddTextBlocks - Add the blocks to the text block list
|
||||
*
|
||||
* Returns TRUE when successful, FALSE if not
|
||||
*/
|
||||
BOOL
|
||||
bAddTextBlocks(ULONG ulCharPosFirst, ULONG ulTotalLength,
|
||||
BOOL bUsesUnicode, USHORT usPropMod,
|
||||
ULONG ulStartBlock, const ULONG *aulBBD, size_t tBBDLen)
|
||||
{
|
||||
text_block_type tTextBlock;
|
||||
ULONG ulCharPos, ulOffset, ulIndex;
|
||||
long lToGo;
|
||||
|
||||
fail(ulTotalLength > (ULONG)LONG_MAX / 2);
|
||||
fail(ulStartBlock > MAX_BLOCKNUMBER && ulStartBlock != END_OF_CHAIN);
|
||||
fail(aulBBD == NULL);
|
||||
|
||||
NO_DBG_HEX(ulCharPosFirst);
|
||||
NO_DBG_DEC(ulTotalLength);
|
||||
|
||||
if (bUsesUnicode) {
|
||||
/* One character equals two bytes */
|
||||
NO_DBG_MSG("Uses Unicode");
|
||||
lToGo = (long)ulTotalLength * 2;
|
||||
} else {
|
||||
/* One character equals one byte */
|
||||
NO_DBG_MSG("Uses ASCII");
|
||||
lToGo = (long)ulTotalLength;
|
||||
}
|
||||
|
||||
ulCharPos = ulCharPosFirst;
|
||||
ulOffset = ulCharPosFirst;
|
||||
for (ulIndex = ulStartBlock;
|
||||
ulIndex != END_OF_CHAIN && lToGo > 0;
|
||||
ulIndex = aulBBD[ulIndex]) {
|
||||
if (ulIndex >= (ULONG)tBBDLen) {
|
||||
DBG_DEC(ulIndex);
|
||||
DBG_DEC(tBBDLen);
|
||||
werr(1, "The Big Block Depot is damaged");
|
||||
}
|
||||
if (ulOffset >= BIG_BLOCK_SIZE) {
|
||||
ulOffset -= BIG_BLOCK_SIZE;
|
||||
continue;
|
||||
}
|
||||
tTextBlock.ulFileOffset =
|
||||
(ulIndex + 1) * BIG_BLOCK_SIZE + ulOffset;
|
||||
tTextBlock.ulCharPos = ulCharPos;
|
||||
tTextBlock.ulLength = min(BIG_BLOCK_SIZE - ulOffset,
|
||||
(ULONG)lToGo);
|
||||
tTextBlock.bUsesUnicode = bUsesUnicode;
|
||||
tTextBlock.usPropMod = usPropMod;
|
||||
ulOffset = 0;
|
||||
if (!bAdd2TextBlockList(&tTextBlock)) {
|
||||
DBG_HEX(tTextBlock.ulFileOffset);
|
||||
DBG_HEX(tTextBlock.ulCharPos);
|
||||
DBG_DEC(tTextBlock.ulLength);
|
||||
DBG_DEC(tTextBlock.bUsesUnicode);
|
||||
DBG_DEC(tTextBlock.usPropMod);
|
||||
return FALSE;
|
||||
}
|
||||
ulCharPos += tTextBlock.ulLength;
|
||||
lToGo -= (long)tTextBlock.ulLength;
|
||||
}
|
||||
DBG_DEC_C(lToGo != 0, lToGo);
|
||||
return lToGo == 0;
|
||||
} /* end of bAddTextBlocks */
|
||||
|
||||
/*
|
||||
* bGet6DocumentText - make a list of the text blocks of Word 6/7 files
|
||||
*
|
||||
* Code for "fast saved" files.
|
||||
*
|
||||
* Returns TRUE when successful, FALSE if not
|
||||
*/
|
||||
BOOL
|
||||
bGet6DocumentText(FILE *pFile, BOOL bUsesUnicode, ULONG ulStartBlock,
|
||||
const ULONG *aulBBD, size_t tBBDLen, const UCHAR *aucHeader)
|
||||
{
|
||||
UCHAR *aucBuffer;
|
||||
ULONG ulBeginTextInfo, ulTextOffset, ulTotLength;
|
||||
size_t tTextInfoLen;
|
||||
int iIndex, iType, iOff, iLen, iPieces;
|
||||
USHORT usPropMod;
|
||||
|
||||
DBG_MSG("bGet6DocumentText");
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(aulBBD == NULL);
|
||||
fail(aucHeader == NULL);
|
||||
|
||||
ulBeginTextInfo = ulGetLong(0x160, aucHeader); /* fcClx */
|
||||
DBG_HEX(ulBeginTextInfo);
|
||||
tTextInfoLen = (size_t)ulGetLong(0x164, aucHeader); /* lcbClx */
|
||||
DBG_DEC(tTextInfoLen);
|
||||
|
||||
aucBuffer = xmalloc(tTextInfoLen);
|
||||
if (!bReadBuffer(pFile, ulStartBlock,
|
||||
aulBBD, tBBDLen, BIG_BLOCK_SIZE,
|
||||
aucBuffer, ulBeginTextInfo, tTextInfoLen)) {
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
NO_DBG_PRINT_BLOCK(aucBuffer, tTextInfoLen);
|
||||
|
||||
iOff = 0;
|
||||
while ((size_t)iOff < tTextInfoLen) {
|
||||
iType = (int)ucGetByte(iOff, aucBuffer);
|
||||
iOff++;
|
||||
if (iType == 0) {
|
||||
DBG_FIXME();
|
||||
iOff++;
|
||||
continue;
|
||||
}
|
||||
if (iType == 1) {
|
||||
iLen = (int)usGetWord(iOff, aucBuffer);
|
||||
vAdd2PropModList(aucBuffer + iOff);
|
||||
iOff += iLen + 2;
|
||||
continue;
|
||||
}
|
||||
if (iType != 2) {
|
||||
werr(0, "Unknown type of 'fastsaved' format");
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
/* Type 2 */
|
||||
iLen = (int)usGetWord(iOff, aucBuffer);
|
||||
NO_DBG_DEC(iLen);
|
||||
iOff += 4;
|
||||
iPieces = (iLen - 4) / 12;
|
||||
DBG_DEC(iPieces);
|
||||
for (iIndex = 0; iIndex < iPieces; iIndex++) {
|
||||
ulTextOffset = ulGetLong(
|
||||
iOff + (iPieces + 1) * 4 + iIndex * 8 + 2,
|
||||
aucBuffer);
|
||||
usPropMod = usGetWord(
|
||||
iOff + (iPieces + 1) * 4 + iIndex * 8 + 6,
|
||||
aucBuffer);
|
||||
ulTotLength = ulGetLong(iOff + (iIndex + 1) * 4,
|
||||
aucBuffer) -
|
||||
ulGetLong(iOff + iIndex * 4,
|
||||
aucBuffer);
|
||||
NO_DBG_HEX_C(usPropMod != 0, usPropMod);
|
||||
if (!bAddTextBlocks(ulTextOffset, ulTotLength,
|
||||
bUsesUnicode, usPropMod,
|
||||
ulStartBlock,
|
||||
aulBBD, tBBDLen)) {
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return TRUE;
|
||||
} /* end of bGet6DocumentText */
|
||||
|
||||
/*
|
||||
* bGet8DocumentText - make a list of the text blocks of Word 8/97 files
|
||||
*
|
||||
* Returns TRUE when successful, FALSE if not
|
||||
*/
|
||||
BOOL
|
||||
bGet8DocumentText(FILE *pFile, const pps_info_type *pPPS,
|
||||
const ULONG *aulBBD, size_t tBBDLen,
|
||||
const ULONG *aulSBD, size_t tSBDLen,
|
||||
const UCHAR *aucHeader)
|
||||
{
|
||||
const ULONG *aulBlockDepot;
|
||||
UCHAR *aucBuffer;
|
||||
ULONG ulTextOffset, ulBeginTextInfo;
|
||||
ULONG ulTotLength, ulLen;
|
||||
long lIndex, lPieces, lOff;
|
||||
size_t tTextInfoLen, tBlockDepotLen, tBlockSize;
|
||||
int iType, iLen;
|
||||
BOOL bUsesUnicode;
|
||||
USHORT usPropMod;
|
||||
|
||||
DBG_MSG("bGet8DocumentText");
|
||||
|
||||
fail(pFile == NULL || pPPS == NULL);
|
||||
fail(aulBBD == NULL || aulSBD == NULL);
|
||||
fail(aucHeader == NULL);
|
||||
|
||||
ulBeginTextInfo = ulGetLong(0x1a2, aucHeader); /* fcClx */
|
||||
DBG_HEX(ulBeginTextInfo);
|
||||
tTextInfoLen = (size_t)ulGetLong(0x1a6, aucHeader); /* lcbClx */
|
||||
DBG_DEC(tTextInfoLen);
|
||||
|
||||
DBG_DEC(pPPS->tTable.ulSB);
|
||||
DBG_HEX(pPPS->tTable.ulSize);
|
||||
if (pPPS->tTable.ulSize == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (pPPS->tTable.ulSize < MIN_SIZE_FOR_BBD_USE) {
|
||||
/* Use the Small Block Depot */
|
||||
aulBlockDepot = aulSBD;
|
||||
tBlockDepotLen = tSBDLen;
|
||||
tBlockSize = SMALL_BLOCK_SIZE;
|
||||
} else {
|
||||
/* Use the Big Block Depot */
|
||||
aulBlockDepot = aulBBD;
|
||||
tBlockDepotLen = tBBDLen;
|
||||
tBlockSize = BIG_BLOCK_SIZE;
|
||||
}
|
||||
aucBuffer = xmalloc(tTextInfoLen);
|
||||
if (!bReadBuffer(pFile, pPPS->tTable.ulSB,
|
||||
aulBlockDepot, tBlockDepotLen, tBlockSize,
|
||||
aucBuffer, ulBeginTextInfo, tTextInfoLen)) {
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
NO_DBG_PRINT_BLOCK(aucBuffer, tTextInfoLen);
|
||||
|
||||
lOff = 0;
|
||||
while (lOff < (long)tTextInfoLen) {
|
||||
iType = (int)ucGetByte(lOff, aucBuffer);
|
||||
lOff++;
|
||||
if (iType == 0) {
|
||||
DBG_FIXME();
|
||||
lOff++;
|
||||
continue;
|
||||
}
|
||||
if (iType == 1) {
|
||||
iLen = (int)usGetWord(lOff, aucBuffer);
|
||||
vAdd2PropModList(aucBuffer + lOff);
|
||||
lOff += (long)iLen + 2;
|
||||
continue;
|
||||
}
|
||||
if (iType != 2) {
|
||||
werr(0, "Unknown type of 'fastsaved' format");
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
/* Type 2 */
|
||||
ulLen = ulGetLong(lOff, aucBuffer);
|
||||
if (ulLen < 4) {
|
||||
DBG_DEC(ulLen);
|
||||
return FALSE;
|
||||
}
|
||||
lOff += 4;
|
||||
lPieces = (long)((ulLen - 4) / 12);
|
||||
DBG_DEC(lPieces);
|
||||
for (lIndex = 0; lIndex < lPieces; lIndex++) {
|
||||
ulTextOffset = ulGetLong(
|
||||
lOff + (lPieces + 1) * 4 + lIndex * 8 + 2,
|
||||
aucBuffer);
|
||||
usPropMod = usGetWord(
|
||||
lOff + (lPieces + 1) * 4 + lIndex * 8 + 6,
|
||||
aucBuffer);
|
||||
ulTotLength = ulGetLong(lOff + (lIndex + 1) * 4,
|
||||
aucBuffer) -
|
||||
ulGetLong(lOff + lIndex * 4,
|
||||
aucBuffer);
|
||||
if ((ulTextOffset & BIT(30)) == 0) {
|
||||
bUsesUnicode = TRUE;
|
||||
} else {
|
||||
bUsesUnicode = FALSE;
|
||||
ulTextOffset &= ~BIT(30);
|
||||
ulTextOffset /= 2;
|
||||
}
|
||||
NO_DBG_HEX_C(usPropMod != 0, usPropMod);
|
||||
if (!bAddTextBlocks(ulTextOffset, ulTotLength,
|
||||
bUsesUnicode, usPropMod,
|
||||
pPPS->tWordDocument.ulSB,
|
||||
aulBBD, tBBDLen)) {
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
aucBuffer = xfree(aucBuffer);
|
||||
return TRUE;
|
||||
} /* end of bGet8DocumentText */
|
167
fmt_text.c
Normal file
167
fmt_text.c
Normal file
@ -0,0 +1,167 @@
|
||||
/*
|
||||
* fmt_text.c
|
||||
* Copyright (C) 2004 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to deal with the Formatted Text format
|
||||
*
|
||||
* Based on patches send by: Ofir Reichenberg <ofir@qlusters.com>
|
||||
*
|
||||
* The credit should go to him, but all the bugs are mine.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "antiword.h"
|
||||
|
||||
/* The character set */
|
||||
static encoding_type eEncoding = encoding_neutral;
|
||||
/* Current vertical position information */
|
||||
static long lYtopCurr = 0;
|
||||
/* Local representation of the non-breaking space */
|
||||
static UCHAR ucNbsp = 0;
|
||||
|
||||
|
||||
/*
|
||||
* vPrologueFMT - set options and perform the Formatted Text initialization
|
||||
*/
|
||||
void
|
||||
vPrologueFMT(diagram_type *pDiag, const options_type *pOptions)
|
||||
{
|
||||
fail(pDiag == NULL);
|
||||
fail(pOptions == NULL);
|
||||
|
||||
eEncoding = pOptions->eEncoding;
|
||||
pDiag->lXleft = 0;
|
||||
pDiag->lYtop = 0;
|
||||
lYtopCurr = 0;
|
||||
} /* end of vPrologueFMT */
|
||||
|
||||
/*
|
||||
* vPrintFMT - print a Formatted Text string
|
||||
*/
|
||||
static void
|
||||
vPrintFMT(FILE *pFile,
|
||||
const char *szString, size_t tStringLength, USHORT usFontstyle)
|
||||
{
|
||||
const UCHAR *pucByte, *pucStart, *pucLast, *pucNonSpace;
|
||||
|
||||
fail(szString == NULL);
|
||||
|
||||
if (szString == NULL || szString[0] == '\0' || tStringLength == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (eEncoding == encoding_utf_8) {
|
||||
fprintf(pFile, "%.*s", (int)tStringLength, szString);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ucNbsp == 0) {
|
||||
ucNbsp = ucGetNbspCharacter();
|
||||
DBG_HEX_C(ucNbsp != 0xa0, ucNbsp);
|
||||
}
|
||||
|
||||
pucStart = (UCHAR *)szString;
|
||||
pucLast = pucStart + tStringLength - 1;
|
||||
pucNonSpace = pucLast;
|
||||
while ((*pucNonSpace == (UCHAR)' ' || *pucNonSpace == ucNbsp) &&
|
||||
pucNonSpace > pucStart) {
|
||||
pucNonSpace--;
|
||||
}
|
||||
|
||||
/* 1: The spaces at the start */
|
||||
pucByte = pucStart;
|
||||
while ((*pucByte == (UCHAR)' ' || *pucByte == ucNbsp) &&
|
||||
pucByte <= pucLast) {
|
||||
(void)putc(' ', pFile);
|
||||
pucByte++;
|
||||
}
|
||||
|
||||
if (pucByte > pucLast) {
|
||||
/* There is no text, just spaces */
|
||||
return;
|
||||
}
|
||||
|
||||
/* 2: Start the *bold*, /italic/ and _underline_ */
|
||||
if (bIsBold(usFontstyle)) {
|
||||
(void)putc('*', pFile);
|
||||
}
|
||||
if (bIsItalic(usFontstyle)) {
|
||||
(void)putc('/', pFile);
|
||||
}
|
||||
if (bIsUnderline(usFontstyle)) {
|
||||
(void)putc('_', pFile);
|
||||
}
|
||||
|
||||
/* 3: The text itself */
|
||||
while (pucByte <= pucNonSpace) {
|
||||
if (*pucByte == ucNbsp) {
|
||||
(void)putc(' ', pFile);
|
||||
} else {
|
||||
(void)putc((char)*pucByte, pFile);
|
||||
}
|
||||
pucByte++;
|
||||
}
|
||||
|
||||
/* 4: End the *bold*, /italic/ and _underline_ */
|
||||
if (bIsUnderline(usFontstyle)) {
|
||||
(void)putc('_', pFile);
|
||||
}
|
||||
if (bIsItalic(usFontstyle)) {
|
||||
(void)putc('/', pFile);
|
||||
}
|
||||
if (bIsBold(usFontstyle)) {
|
||||
(void)putc('*', pFile);
|
||||
}
|
||||
|
||||
/* 5: The spaces at the end */
|
||||
while (pucByte <= pucLast) {
|
||||
(void)putc(' ', pFile);
|
||||
pucByte++;
|
||||
}
|
||||
} /* end of vPrintFMT */
|
||||
|
||||
/*
|
||||
* vMoveTo - move to the given X,Y coordinates
|
||||
*
|
||||
* Move the current position of the given diagram to its X,Y coordinates,
|
||||
* start on a new page if needed
|
||||
*/
|
||||
static void
|
||||
vMoveTo(diagram_type *pDiag)
|
||||
{
|
||||
int iCount, iNbr;
|
||||
|
||||
fail(pDiag == NULL);
|
||||
fail(pDiag->pOutFile == NULL);
|
||||
|
||||
if (pDiag->lYtop != lYtopCurr) {
|
||||
iNbr = iDrawUnits2Char(pDiag->lXleft);
|
||||
for (iCount = 0; iCount < iNbr; iCount++) {
|
||||
(void)putc(FILLER_CHAR, pDiag->pOutFile);
|
||||
}
|
||||
lYtopCurr = pDiag->lYtop;
|
||||
}
|
||||
} /* end of vMoveTo */
|
||||
|
||||
/*
|
||||
* vSubstringFMT - print a sub string
|
||||
*/
|
||||
void
|
||||
vSubstringFMT(diagram_type *pDiag,
|
||||
const char *szString, size_t tStringLength, long lStringWidth,
|
||||
USHORT usFontstyle)
|
||||
{
|
||||
fail(pDiag == NULL || szString == NULL);
|
||||
fail(pDiag->pOutFile == NULL);
|
||||
fail(pDiag->lXleft < 0);
|
||||
fail(tStringLength != strlen(szString));
|
||||
|
||||
if (szString[0] == '\0' || tStringLength == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
vMoveTo(pDiag);
|
||||
vPrintFMT(pDiag->pOutFile, szString, tStringLength, usFontstyle);
|
||||
pDiag->lXleft += lStringWidth;
|
||||
} /* end of vSubstringFMT */
|
2251
fontinfo.h
Normal file
2251
fontinfo.h
Normal file
File diff suppressed because it is too large
Load Diff
173
fontlist.c
Normal file
173
fontlist.c
Normal file
@ -0,0 +1,173 @@
|
||||
/*
|
||||
* fontlist.c
|
||||
* Copyright (C) 1998-2004 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Build, read and destroy a list of Word font information
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
/*
|
||||
* Private structure to hide the way the information
|
||||
* is stored from the rest of the program
|
||||
*/
|
||||
typedef struct font_desc_tag {
|
||||
font_block_type tInfo;
|
||||
struct font_desc_tag *pNext;
|
||||
} font_mem_type;
|
||||
|
||||
/* Variables needed to write the Font Information List */
|
||||
static font_mem_type *pAnchor = NULL;
|
||||
static font_mem_type *pFontLast = NULL;
|
||||
|
||||
|
||||
/*
|
||||
* vDestroyFontInfoList - destroy the Font Information List
|
||||
*/
|
||||
void
|
||||
vDestroyFontInfoList(void)
|
||||
{
|
||||
font_mem_type *pCurr, *pNext;
|
||||
|
||||
DBG_MSG("vDestroyFontInfoList");
|
||||
|
||||
/* Free the Font Information List */
|
||||
pCurr = pAnchor;
|
||||
while (pCurr != NULL) {
|
||||
pNext = pCurr->pNext;
|
||||
pCurr = xfree(pCurr);
|
||||
pCurr = pNext;
|
||||
}
|
||||
pAnchor = NULL;
|
||||
/* Reset all control variables */
|
||||
pFontLast = NULL;
|
||||
} /* end of vDestroyFontInfoList */
|
||||
|
||||
/*
|
||||
* vCorrectFontValues - correct font values to values Antiword can use
|
||||
*/
|
||||
void
|
||||
vCorrectFontValues(font_block_type *pFontBlock)
|
||||
{
|
||||
UINT uiRealSize;
|
||||
USHORT usRealStyle;
|
||||
|
||||
uiRealSize = pFontBlock->usFontSize;
|
||||
usRealStyle = pFontBlock->usFontStyle;
|
||||
if (bIsSmallCapitals(pFontBlock->usFontStyle)) {
|
||||
/* Small capitals become normal capitals in a smaller font */
|
||||
uiRealSize = (uiRealSize * 4 + 2) / 5;
|
||||
usRealStyle &= ~FONT_SMALL_CAPITALS;
|
||||
usRealStyle |= FONT_CAPITALS;
|
||||
}
|
||||
if (bIsSuperscript(pFontBlock->usFontStyle) ||
|
||||
bIsSubscript(pFontBlock->usFontStyle)) {
|
||||
/* Superscript and subscript use a smaller fontsize */
|
||||
uiRealSize = (uiRealSize * 2 + 1) / 3;
|
||||
}
|
||||
|
||||
if (uiRealSize < MIN_FONT_SIZE) {
|
||||
DBG_DEC(uiRealSize);
|
||||
uiRealSize = MIN_FONT_SIZE;
|
||||
} else if (uiRealSize > MAX_FONT_SIZE) {
|
||||
DBG_DEC(uiRealSize);
|
||||
uiRealSize = MAX_FONT_SIZE;
|
||||
}
|
||||
|
||||
pFontBlock->usFontSize = (USHORT)uiRealSize;
|
||||
if (pFontBlock->ucFontColor == 8) {
|
||||
/* White text to light gray text */
|
||||
pFontBlock->ucFontColor = 16;
|
||||
}
|
||||
pFontBlock->usFontStyle = usRealStyle;
|
||||
} /* end of vCorrectFontValues */
|
||||
|
||||
/*
|
||||
* vAdd2FontInfoList - Add an element to the Font Information List
|
||||
*/
|
||||
void
|
||||
vAdd2FontInfoList(const font_block_type *pFontBlock)
|
||||
{
|
||||
font_mem_type *pListMember;
|
||||
|
||||
fail(pFontBlock == NULL);
|
||||
|
||||
NO_DBG_MSG("bAdd2FontInfoList");
|
||||
|
||||
if (pFontBlock->ulFileOffset == FC_INVALID) {
|
||||
/*
|
||||
* This offset is really past the end of the file,
|
||||
* so don't waste any memory by storing it.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
NO_DBG_HEX(pFontBlock->ulFileOffset);
|
||||
NO_DBG_DEC_C(pFontBlock->ucFontNumber != 0,
|
||||
pFontBlock->ucFontNumber);
|
||||
NO_DBG_DEC_C(pFontBlock->usFontSize != DEFAULT_FONT_SIZE,
|
||||
pFontBlock->usFontSize);
|
||||
NO_DBG_DEC_C(pFontBlock->ucFontColor != 0,
|
||||
pFontBlock->ucFontColor);
|
||||
NO_DBG_HEX_C(pFontBlock->usFontStyle != 0x00,
|
||||
pFontBlock->usFontStyle);
|
||||
|
||||
if (pFontLast != NULL &&
|
||||
pFontLast->tInfo.ulFileOffset == pFontBlock->ulFileOffset) {
|
||||
/*
|
||||
* If two consecutive fonts share the same
|
||||
* offset, remember only the last font
|
||||
*/
|
||||
fail(pFontLast->pNext != NULL);
|
||||
pFontLast->tInfo = *pFontBlock;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Create list member */
|
||||
pListMember = xmalloc(sizeof(font_mem_type));
|
||||
/* Fill the list member */
|
||||
pListMember->tInfo = *pFontBlock;
|
||||
pListMember->pNext = NULL;
|
||||
/* Correct the values where needed */
|
||||
vCorrectFontValues(&pListMember->tInfo);
|
||||
/* Add the new member to the list */
|
||||
if (pAnchor == NULL) {
|
||||
pAnchor = pListMember;
|
||||
} else {
|
||||
fail(pFontLast == NULL);
|
||||
pFontLast->pNext = pListMember;
|
||||
}
|
||||
pFontLast = pListMember;
|
||||
} /* end of vAdd2FontInfoList */
|
||||
|
||||
/*
|
||||
* Get the record that follows the given recored in the Font Information List
|
||||
*/
|
||||
const font_block_type *
|
||||
pGetNextFontInfoListItem(const font_block_type *pCurr)
|
||||
{
|
||||
const font_mem_type *pRecord;
|
||||
size_t tOffset;
|
||||
|
||||
if (pCurr == NULL) {
|
||||
if (pAnchor == NULL) {
|
||||
/* There are no records */
|
||||
return NULL;
|
||||
}
|
||||
/* The first record is the only one without a predecessor */
|
||||
return &pAnchor->tInfo;
|
||||
}
|
||||
tOffset = offsetof(font_mem_type, tInfo);
|
||||
/* Many casts to prevent alignment warnings */
|
||||
pRecord = (font_mem_type *)(void *)((char *)pCurr - tOffset);
|
||||
fail(pCurr != &pRecord->tInfo);
|
||||
if (pRecord->pNext == NULL) {
|
||||
/* The last record has no successor */
|
||||
return NULL;
|
||||
}
|
||||
return &pRecord->pNext->tInfo;
|
||||
} /* end of pGetNextFontInfoListItem */
|
251
fonts_r.c
Normal file
251
fonts_r.c
Normal file
@ -0,0 +1,251 @@
|
||||
/*
|
||||
* fonts_r.c
|
||||
* Copyright (C) 1999-2002 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to deal with fonts (RiscOs version)
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "DeskLib:Font.h"
|
||||
#include "drawfile.h"
|
||||
#include "antiword.h"
|
||||
|
||||
static font_handle tFontCurr = (font_handle)-1;
|
||||
|
||||
/*
|
||||
* pOpenFontTableFile - open the Font translation file
|
||||
* Copy the file to the proper place if necessary.
|
||||
*
|
||||
* Returns the file pointer or NULL
|
||||
*/
|
||||
FILE *
|
||||
pOpenFontTableFile(void)
|
||||
{
|
||||
FILE *pFileR, *pFileW;
|
||||
char *szFontNamesFile;
|
||||
size_t tSize;
|
||||
BOOL bFailed;
|
||||
char acBuffer[256];
|
||||
|
||||
pFileR = fopen("<AntiWord$FontNamesFile>", "r");
|
||||
if (pFileR != NULL) {
|
||||
/* The font table is already in the right directory */
|
||||
return pFileR;
|
||||
}
|
||||
|
||||
szFontNamesFile = getenv("AntiWord$FontNamesSave");
|
||||
if (szFontNamesFile == NULL) {
|
||||
werr(0, "Warning: Name of the FontNames file not found");
|
||||
return NULL;
|
||||
}
|
||||
DBG_MSG(szFontNamesFile);
|
||||
|
||||
pFileR = fopen("<AntiWord$Dir>.Resources.Default", "r");
|
||||
if (pFileR == NULL) {
|
||||
werr(0, "I can't find 'Resources.Default'");
|
||||
return NULL;
|
||||
}
|
||||
/* Here the default font translation table is known to exist */
|
||||
|
||||
if (!bMakeDirectory(szFontNamesFile)) {
|
||||
werr(0,
|
||||
"I can't make a directory for the FontNames file");
|
||||
return NULL;
|
||||
}
|
||||
/* Here the proper directory is known to exist */
|
||||
|
||||
pFileW = fopen(szFontNamesFile, "w");
|
||||
if (pFileW == NULL) {
|
||||
(void)fclose(pFileR);
|
||||
werr(0, "I can't create a default FontNames file");
|
||||
return NULL;
|
||||
}
|
||||
/* Here the proper directory is known to be writeable */
|
||||
|
||||
/* Copy the default FontNames file */
|
||||
bFailed = FALSE;
|
||||
while (!feof(pFileR)) {
|
||||
tSize = fread(acBuffer, 1, sizeof(acBuffer), pFileR);
|
||||
if (ferror(pFileR)) {
|
||||
DBG_MSG("Read error");
|
||||
bFailed = TRUE;
|
||||
break;
|
||||
}
|
||||
if (fwrite(acBuffer, 1, tSize, pFileW) != tSize) {
|
||||
DBG_MSG("Write error");
|
||||
bFailed = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
(void)fclose(pFileW);
|
||||
(void)fclose(pFileR);
|
||||
if (bFailed) {
|
||||
DBG_MSG("Copying the FontNames file failed");
|
||||
(void)remove(szFontNamesFile);
|
||||
return NULL;
|
||||
}
|
||||
return fopen(szFontNamesFile, "r");
|
||||
} /* end of pOpenFontTableFile */
|
||||
|
||||
/*
|
||||
* vCloseFont - close the current font, if any
|
||||
*/
|
||||
void
|
||||
vCloseFont(void)
|
||||
{
|
||||
os_error *e;
|
||||
|
||||
NO_DBG_MSG("vCloseFont");
|
||||
|
||||
if (tFontCurr == (font_handle)-1) {
|
||||
return;
|
||||
}
|
||||
e = Font_LoseFont(tFontCurr);
|
||||
if (e != NULL) {
|
||||
werr(0, "Close font error %d: %s", e->errnum, e->errmess);
|
||||
}
|
||||
tFontCurr = (font_handle)-1;
|
||||
} /* end of vCloseFont */
|
||||
|
||||
/*
|
||||
* tOpenFont - make the specified font the current font
|
||||
*
|
||||
* Returns the font reference number for use in a draw file
|
||||
*/
|
||||
drawfile_fontref
|
||||
tOpenFont(UCHAR ucWordFontNumber, USHORT usFontStyle, USHORT usWordFontSize)
|
||||
{
|
||||
os_error *e;
|
||||
const char *szOurFontname;
|
||||
font_handle tFont;
|
||||
int iFontnumber;
|
||||
|
||||
NO_DBG_MSG("tOpenFont");
|
||||
NO_DBG_DEC(ucWordFontNumber);
|
||||
NO_DBG_HEX(usFontStyle);
|
||||
NO_DBG_DEC(usWordFontSize);
|
||||
|
||||
/* Keep the relevant bits */
|
||||
usFontStyle &= FONT_BOLD|FONT_ITALIC;
|
||||
NO_DBG_HEX(usFontStyle);
|
||||
|
||||
iFontnumber = iGetFontByNumber(ucWordFontNumber, usFontStyle);
|
||||
szOurFontname = szGetOurFontname(iFontnumber);
|
||||
if (szOurFontname == NULL || szOurFontname[0] == '\0') {
|
||||
tFontCurr = (font_handle)-1;
|
||||
return (byte)0;
|
||||
}
|
||||
NO_DBG_MSG(szOurFontname);
|
||||
e = Font_FindFont(&tFont, (char *)szOurFontname,
|
||||
(int)usWordFontSize * 8, (int)usWordFontSize * 8,
|
||||
0, 0);
|
||||
if (e != NULL) {
|
||||
switch (e->errnum) {
|
||||
case 523:
|
||||
werr(0, "%s", e->errmess);
|
||||
break;
|
||||
default:
|
||||
werr(0, "Open font error %d: %s",
|
||||
e->errnum, e->errmess);
|
||||
break;
|
||||
}
|
||||
tFontCurr = (font_handle)-1;
|
||||
return (drawfile_fontref)0;
|
||||
}
|
||||
tFontCurr = tFont;
|
||||
NO_DBG_DEC(tFontCurr);
|
||||
return (drawfile_fontref)(iFontnumber + 1);
|
||||
} /* end of tOpenFont */
|
||||
|
||||
/*
|
||||
* tOpenTableFont - make the table font the current font
|
||||
*
|
||||
* Returns the font reference number for use in a draw file
|
||||
*/
|
||||
drawfile_fontref
|
||||
tOpenTableFont(USHORT usWordFontSize)
|
||||
{
|
||||
int iWordFontnumber;
|
||||
|
||||
NO_DBG_MSG("tOpenTableFont");
|
||||
|
||||
iWordFontnumber = iFontname2Fontnumber(TABLE_FONT, FONT_REGULAR);
|
||||
if (iWordFontnumber < 0 || iWordFontnumber > (int)UCHAR_MAX) {
|
||||
DBG_DEC(iWordFontnumber);
|
||||
tFontCurr = (font_handle)-1;
|
||||
return (drawfile_fontref)0;
|
||||
}
|
||||
|
||||
return tOpenFont((UCHAR)iWordFontnumber, FONT_REGULAR, usWordFontSize);
|
||||
} /* end of tOpenTableFont */
|
||||
|
||||
/*
|
||||
* lComputeStringWidth - compute the string width
|
||||
*
|
||||
* Returns the string width in millipoints
|
||||
*/
|
||||
long
|
||||
lComputeStringWidth(const char *szString, size_t tStringLength,
|
||||
drawfile_fontref tFontRef, USHORT usFontSize)
|
||||
{
|
||||
font_string tStr;
|
||||
os_error *e;
|
||||
|
||||
fail(szString == NULL);
|
||||
fail(usFontSize < MIN_FONT_SIZE || usFontSize > MAX_FONT_SIZE);
|
||||
|
||||
if (szString[0] == '\0' || tStringLength == 0) {
|
||||
/* Empty string */
|
||||
return 0;
|
||||
}
|
||||
if (tStringLength == 1 && szString[0] == TABLE_SEPARATOR) {
|
||||
/* Font_strwidth doesn't like control characters */
|
||||
return 0;
|
||||
}
|
||||
if (tFontCurr == (font_handle)-1) {
|
||||
/* No current font, use systemfont */
|
||||
return lChar2MilliPoints(tStringLength);
|
||||
}
|
||||
tStr.s = (char *)szString;
|
||||
tStr.x = INT_MAX;
|
||||
tStr.y = INT_MAX;
|
||||
tStr.split = -1;
|
||||
tStr.term = tStringLength;
|
||||
e = Font_StringWidth(&tStr);
|
||||
if (e == NULL) {
|
||||
return (long)tStr.x;
|
||||
}
|
||||
DBG_DEC(e->errnum);
|
||||
DBG_MSG(e->errmess);
|
||||
DBG_DEC(tStringLength);
|
||||
DBG_MSG(szString);
|
||||
werr(0, "String width error %d: %s", e->errnum, e->errmess);
|
||||
return lChar2MilliPoints(tStringLength);
|
||||
} /* end of lComputeStringWidth */
|
||||
|
||||
/*
|
||||
* tCountColumns - count the number of columns in a string
|
||||
*
|
||||
* Returns the number of columns
|
||||
*/
|
||||
size_t
|
||||
tCountColumns(const char *szString, size_t tLength)
|
||||
{
|
||||
fail(szString == NULL);
|
||||
|
||||
/* One byte, one character, one column */
|
||||
return tLength;
|
||||
} /* end of tCountColumns */
|
||||
|
||||
/*
|
||||
* tGetCharacterLength - the length of the specified character in bytes
|
||||
*
|
||||
* Returns the length in bytes
|
||||
*/
|
||||
size_t
|
||||
tGetCharacterLength(const char *szString)
|
||||
{
|
||||
return 1;
|
||||
} /* end of tGetCharacterLength */
|
305
fonts_u.c
Normal file
305
fonts_u.c
Normal file
@ -0,0 +1,305 @@
|
||||
/*
|
||||
* fonts_u.c
|
||||
* Copyright (C) 1999-2004 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to deal with fonts (Unix version)
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "antiword.h"
|
||||
#include "fontinfo.h"
|
||||
|
||||
/* Don't use fonts, just plain text */
|
||||
static BOOL bUsePlainText = TRUE;
|
||||
/* Which character set should be used */
|
||||
static encoding_type eEncoding = encoding_neutral;
|
||||
|
||||
|
||||
/*
|
||||
* pOpenFontTableFile - open the Font translation file
|
||||
*
|
||||
* Returns the file pointer or NULL
|
||||
*/
|
||||
FILE *
|
||||
pOpenFontTableFile(void)
|
||||
{
|
||||
FILE *pFile;
|
||||
const char *szHome, *szAntiword, *szGlobalFile;
|
||||
char szEnvironmentFile[PATH_MAX+1];
|
||||
char szLocalFile[PATH_MAX+1];
|
||||
|
||||
szEnvironmentFile[0] = '\0';
|
||||
szLocalFile[0] = '\0';
|
||||
|
||||
/* Try the environment version of the fontnames file */
|
||||
szAntiword = szGetAntiwordDirectory();
|
||||
if (szAntiword != NULL && szAntiword[0] != '\0') {
|
||||
if (strlen(szAntiword) +
|
||||
sizeof(FILE_SEPARATOR FONTNAMES_FILE) >=
|
||||
sizeof(szEnvironmentFile)) {
|
||||
werr(0,
|
||||
"The name of your ANTIWORDHOME directory is too long");
|
||||
return NULL;
|
||||
}
|
||||
sprintf(szEnvironmentFile, "%s%s",
|
||||
szAntiword,
|
||||
FILE_SEPARATOR FONTNAMES_FILE);
|
||||
DBG_MSG(szEnvironmentFile);
|
||||
|
||||
pFile = fopen(szEnvironmentFile, "r");
|
||||
if (pFile != NULL) {
|
||||
return pFile;
|
||||
}
|
||||
}
|
||||
|
||||
/* Try the local version of the fontnames file */
|
||||
szHome = szGetHomeDirectory();
|
||||
if (strlen(szHome) +
|
||||
sizeof(FILE_SEPARATOR ANTIWORD_DIR FILE_SEPARATOR FONTNAMES_FILE) >=
|
||||
sizeof(szLocalFile)) {
|
||||
werr(0, "The name of your HOME directory is too long");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sprintf(szLocalFile, "%s%s",
|
||||
szHome,
|
||||
FILE_SEPARATOR ANTIWORD_DIR FILE_SEPARATOR FONTNAMES_FILE);
|
||||
DBG_MSG(szLocalFile);
|
||||
|
||||
pFile = fopen(szLocalFile, "r");
|
||||
if (pFile != NULL) {
|
||||
return pFile;
|
||||
}
|
||||
|
||||
/* Try the global version of the fontnames file */
|
||||
szGlobalFile = GLOBAL_ANTIWORD_DIR FILE_SEPARATOR FONTNAMES_FILE;
|
||||
DBG_MSG(szGlobalFile);
|
||||
|
||||
pFile = fopen(szGlobalFile, "r");
|
||||
if (pFile != NULL) {
|
||||
return pFile;
|
||||
}
|
||||
|
||||
if (szEnvironmentFile[0] != '\0') {
|
||||
werr(0, "I can not open your fontnames file.\n"
|
||||
"Neither '%s' nor\n"
|
||||
"'%s' nor\n"
|
||||
"'%s' can be opened for reading.",
|
||||
szEnvironmentFile, szLocalFile, szGlobalFile);
|
||||
} else {
|
||||
werr(0, "I can not open your fontnames file.\n"
|
||||
"Neither '%s' nor\n"
|
||||
"'%s' can be opened for reading.",
|
||||
szLocalFile, szGlobalFile);
|
||||
}
|
||||
return NULL;
|
||||
} /* end of pOpenFontTableFile */
|
||||
|
||||
/*
|
||||
* vCloseFont - close the current font, if any
|
||||
*/
|
||||
void
|
||||
vCloseFont(void)
|
||||
{
|
||||
NO_DBG_MSG("vCloseFont");
|
||||
/* For safety: to be overwritten at the next call of tOpenfont() */
|
||||
eEncoding = encoding_neutral;
|
||||
bUsePlainText = TRUE;
|
||||
} /* end of vCloseFont */
|
||||
|
||||
/*
|
||||
* tOpenFont - make the specified font the current font
|
||||
*
|
||||
* Returns the font reference number
|
||||
*/
|
||||
drawfile_fontref
|
||||
tOpenFont(UCHAR ucWordFontNumber, USHORT usFontStyle, USHORT usWordFontSize)
|
||||
{
|
||||
options_type tOptions;
|
||||
const char *szOurFontname;
|
||||
size_t tIndex;
|
||||
int iFontnumber;
|
||||
|
||||
NO_DBG_MSG("tOpenFont");
|
||||
NO_DBG_DEC(ucWordFontNumber);
|
||||
NO_DBG_HEX(usFontStyle);
|
||||
NO_DBG_DEC(usWordFontSize);
|
||||
|
||||
/* Keep the relevant bits */
|
||||
usFontStyle &= FONT_BOLD|FONT_ITALIC;
|
||||
NO_DBG_HEX(usFontStyle);
|
||||
|
||||
vGetOptions(&tOptions);
|
||||
eEncoding = tOptions.eEncoding;
|
||||
bUsePlainText = tOptions.eConversionType != conversion_draw &&
|
||||
tOptions.eConversionType != conversion_ps &&
|
||||
tOptions.eConversionType != conversion_pdf;
|
||||
|
||||
if (bUsePlainText) {
|
||||
/* Plain text, no fonts */
|
||||
return (drawfile_fontref)0;
|
||||
}
|
||||
|
||||
iFontnumber = iGetFontByNumber(ucWordFontNumber, usFontStyle);
|
||||
szOurFontname = szGetOurFontname(iFontnumber);
|
||||
if (szOurFontname == NULL || szOurFontname[0] == '\0') {
|
||||
DBG_DEC(iFontnumber);
|
||||
return (drawfile_fontref)0;
|
||||
}
|
||||
NO_DBG_MSG(szOurFontname);
|
||||
|
||||
for (tIndex = 0; tIndex < elementsof(szFontnames); tIndex++) {
|
||||
if (STREQ(szFontnames[tIndex], szOurFontname)) {
|
||||
NO_DBG_DEC(tIndex);
|
||||
return (drawfile_fontref)tIndex;
|
||||
}
|
||||
}
|
||||
return (drawfile_fontref)0;
|
||||
} /* end of tOpenFont */
|
||||
|
||||
/*
|
||||
* tOpenTableFont - make the table font the current font
|
||||
*
|
||||
* Returns the font reference number
|
||||
*/
|
||||
drawfile_fontref
|
||||
tOpenTableFont(USHORT usWordFontSize)
|
||||
{
|
||||
options_type tOptions;
|
||||
int iWordFontnumber;
|
||||
|
||||
NO_DBG_MSG("tOpenTableFont");
|
||||
|
||||
vGetOptions(&tOptions);
|
||||
eEncoding = tOptions.eEncoding;
|
||||
bUsePlainText = tOptions.eConversionType != conversion_draw &&
|
||||
tOptions.eConversionType != conversion_ps &&
|
||||
tOptions.eConversionType != conversion_pdf;
|
||||
|
||||
if (bUsePlainText) {
|
||||
/* Plain text, no fonts */
|
||||
return (drawfile_fontref)0;
|
||||
}
|
||||
|
||||
iWordFontnumber = iFontname2Fontnumber(TABLE_FONT, FONT_REGULAR);
|
||||
if (iWordFontnumber < 0 || iWordFontnumber > (int)UCHAR_MAX) {
|
||||
DBG_DEC(iWordFontnumber);
|
||||
return (drawfile_fontref)0;
|
||||
}
|
||||
|
||||
return tOpenFont((UCHAR)iWordFontnumber, FONT_REGULAR, usWordFontSize);
|
||||
} /* end of tOpenTableFont */
|
||||
|
||||
/*
|
||||
* szGetFontname - get the fontname
|
||||
*/
|
||||
const char *
|
||||
szGetFontname(drawfile_fontref tFontRef)
|
||||
{
|
||||
fail((size_t)(UCHAR)tFontRef >= elementsof(szFontnames));
|
||||
return szFontnames[(int)(UCHAR)tFontRef];
|
||||
} /* end of szGetFontname */
|
||||
|
||||
/*
|
||||
* lComputeStringWidth - compute the string width
|
||||
*
|
||||
* Note: the fontsize is specified in half-points!
|
||||
* the stringlength is specified in bytes, not characters!
|
||||
*
|
||||
* Returns the string width in millipoints
|
||||
*/
|
||||
long
|
||||
lComputeStringWidth(const char *szString, size_t tStringLength,
|
||||
drawfile_fontref tFontRef, USHORT usFontSize)
|
||||
{
|
||||
USHORT *ausCharWidths;
|
||||
UCHAR *pucChar;
|
||||
long lRelWidth;
|
||||
size_t tIndex;
|
||||
int iFontRef;
|
||||
|
||||
fail(szString == NULL);
|
||||
fail(usFontSize < MIN_FONT_SIZE || usFontSize > MAX_FONT_SIZE);
|
||||
|
||||
if (szString[0] == '\0' || tStringLength == 0) {
|
||||
/* Empty string */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (eEncoding == encoding_utf_8) {
|
||||
fail(!bUsePlainText);
|
||||
return lChar2MilliPoints(
|
||||
utf8_strwidth(szString, tStringLength));
|
||||
}
|
||||
|
||||
if (bUsePlainText) {
|
||||
/* No current font, use "systemfont" */
|
||||
return lChar2MilliPoints(tStringLength);
|
||||
}
|
||||
|
||||
if (eEncoding == encoding_cyrillic) {
|
||||
/* FIXME: until the character tables are available */
|
||||
return (tStringLength * 600L * (long)usFontSize + 1) / 2;
|
||||
}
|
||||
|
||||
DBG_DEC_C(eEncoding != encoding_latin_1 &&
|
||||
eEncoding != encoding_latin_2, eEncoding);
|
||||
fail(eEncoding != encoding_latin_1 &&
|
||||
eEncoding != encoding_latin_2);
|
||||
|
||||
/* Compute the relative string width */
|
||||
iFontRef = (int)(UCHAR)tFontRef;
|
||||
if (eEncoding == encoding_latin_2) {
|
||||
ausCharWidths = ausCharacterWidths2[iFontRef];
|
||||
} else {
|
||||
ausCharWidths = ausCharacterWidths1[iFontRef];
|
||||
}
|
||||
lRelWidth = 0;
|
||||
for (tIndex = 0, pucChar = (UCHAR *)szString;
|
||||
tIndex < tStringLength;
|
||||
tIndex++, pucChar++) {
|
||||
lRelWidth += (long)ausCharWidths[(int)*pucChar];
|
||||
}
|
||||
|
||||
/* Compute the absolute string width */
|
||||
return (lRelWidth * (long)usFontSize + 1) / 2;
|
||||
} /* end of lComputeStringWidth */
|
||||
|
||||
/*
|
||||
* tCountColumns - count the number of columns in a string
|
||||
*
|
||||
* Note: the length is specified in bytes!
|
||||
* A UTF-8 a character can be 0, 1 or 2 columns wide.
|
||||
*
|
||||
* Returns the number of columns
|
||||
*/
|
||||
size_t
|
||||
tCountColumns(const char *szString, size_t tLength)
|
||||
{
|
||||
fail(szString == NULL);
|
||||
|
||||
if (eEncoding != encoding_utf_8) {
|
||||
/* One byte, one character, one column */
|
||||
return tLength;
|
||||
}
|
||||
return (size_t)utf8_strwidth(szString, tLength);
|
||||
} /* end of tCountColumns */
|
||||
|
||||
/*
|
||||
* tGetCharacterLength - the length of the specified character in bytes
|
||||
*
|
||||
* Returns the length in bytes
|
||||
*/
|
||||
size_t
|
||||
tGetCharacterLength(const char *szString)
|
||||
{
|
||||
fail(szString == NULL);
|
||||
|
||||
if (eEncoding != encoding_utf_8) {
|
||||
return 1;
|
||||
}
|
||||
return (size_t)utf8_chrlength(szString);
|
||||
} /* end of tGetCharacterLength */
|
371
hdrftrlist.c
Normal file
371
hdrftrlist.c
Normal file
@ -0,0 +1,371 @@
|
||||
/*
|
||||
* hdrftrlist.c
|
||||
* Copyright (C) 2004,2005 A.J. van Os; Released under GNU GPL
|
||||
*
|
||||
* Description:
|
||||
* Build, read and destroy list(s) of Word Header/footer information
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
#define HDR_EVEN_PAGES 0
|
||||
#define HDR_ODD_PAGES 1
|
||||
#define FTR_EVEN_PAGES 2
|
||||
#define FTR_ODD_PAGES 3
|
||||
#define HDR_FIRST_PAGE 4
|
||||
#define FTR_FIRST_PAGE 5
|
||||
|
||||
/*
|
||||
* Private structures to hide the way the information
|
||||
* is stored from the rest of the program
|
||||
*/
|
||||
typedef struct hdrftr_local_tag {
|
||||
hdrftr_block_type tInfo;
|
||||
ULONG ulCharPosStart;
|
||||
ULONG ulCharPosNext;
|
||||
BOOL bUseful;
|
||||
BOOL bTextOriginal;
|
||||
} hdrftr_local_type;
|
||||
typedef struct hdrftr_mem_tag {
|
||||
hdrftr_local_type atElement[6];
|
||||
} hdrftr_mem_type;
|
||||
|
||||
/* Variables needed to write the Header/footer Information List */
|
||||
static hdrftr_mem_type *pHdrFtrList = NULL;
|
||||
static size_t tHdrFtrLen = 0;
|
||||
|
||||
|
||||
/*
|
||||
* vDestroyHdrFtrInfoList - destroy the Header/footer Information List
|
||||
*/
|
||||
void
|
||||
vDestroyHdrFtrInfoList(void)
|
||||
{
|
||||
hdrftr_mem_type *pRecord;
|
||||
output_type *pCurr, *pNext;
|
||||
size_t tHdrFtr, tIndex;
|
||||
|
||||
DBG_MSG("vDestroyHdrFtrInfoList");
|
||||
|
||||
/* Free the Header/footer Information List */
|
||||
for (tHdrFtr = 0; tHdrFtr < tHdrFtrLen; tHdrFtr++) {
|
||||
pRecord = pHdrFtrList + tHdrFtr;
|
||||
for (tIndex = 0;
|
||||
tIndex < elementsof(pRecord->atElement);
|
||||
tIndex++) {
|
||||
if (!pRecord->atElement[tIndex].bTextOriginal) {
|
||||
continue;
|
||||
}
|
||||
pCurr = pRecord->atElement[tIndex].tInfo.pText;
|
||||
while (pCurr != NULL) {
|
||||
pCurr->szStorage = xfree(pCurr->szStorage);
|
||||
pNext = pCurr->pNext;
|
||||
pCurr = xfree(pCurr);
|
||||
pCurr = pNext;
|
||||
}
|
||||
}
|
||||
}
|
||||
pHdrFtrList = xfree(pHdrFtrList);
|
||||
/* Reset all control variables */
|
||||
tHdrFtrLen = 0;
|
||||
} /* end of vDestroyHdrFtrInfoList */
|
||||
|
||||
/*
|
||||
* vCreat8HdrFtrInfoList - Create the Header/footer Information List
|
||||
*/
|
||||
void
|
||||
vCreat8HdrFtrInfoList(const ULONG *aulCharPos, size_t tLength)
|
||||
{
|
||||
hdrftr_mem_type *pListMember;
|
||||
size_t tHdrFtr, tIndex, tMainIndex;
|
||||
|
||||
fail(aulCharPos == NULL);
|
||||
|
||||
DBG_DEC(tLength);
|
||||
if (tLength <= 1) {
|
||||
return;
|
||||
}
|
||||
tHdrFtrLen = tLength / 12;
|
||||
if (tLength % 12 != 0 && tLength % 12 != 1) {
|
||||
tHdrFtrLen++;
|
||||
}
|
||||
DBG_DEC(tHdrFtrLen);
|
||||
|
||||
pHdrFtrList = xcalloc(tHdrFtrLen, sizeof(hdrftr_mem_type));
|
||||
|
||||
for (tHdrFtr = 0; tHdrFtr < tHdrFtrLen; tHdrFtr++) {
|
||||
pListMember = pHdrFtrList + tHdrFtr;
|
||||
for (tIndex = 0, tMainIndex = tHdrFtr * 12;
|
||||
tIndex < 6 && tMainIndex < tLength;
|
||||
tIndex++, tMainIndex++) {
|
||||
pListMember->atElement[tIndex].tInfo.pText = NULL;
|
||||
pListMember->atElement[tIndex].ulCharPosStart =
|
||||
aulCharPos[tMainIndex];
|
||||
if (tMainIndex + 1 < tLength) {
|
||||
pListMember->atElement[tIndex].ulCharPosNext =
|
||||
aulCharPos[tMainIndex + 1];
|
||||
} else {
|
||||
pListMember->atElement[tIndex].ulCharPosNext =
|
||||
aulCharPos[tMainIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* end of vCreat8HdrFtrInfoList */
|
||||
|
||||
/*
|
||||
* vCreat6HdrFtrInfoList - Create the Header/footer Information List
|
||||
*/
|
||||
void
|
||||
vCreat6HdrFtrInfoList(const ULONG *aulCharPos, size_t tLength)
|
||||
{
|
||||
static const size_t atIndex[] =
|
||||
{ SIZE_T_MAX, SIZE_T_MAX, FTR_FIRST_PAGE, HDR_FIRST_PAGE,
|
||||
FTR_ODD_PAGES, FTR_EVEN_PAGES, HDR_ODD_PAGES, HDR_EVEN_PAGES,
|
||||
};
|
||||
hdrftr_mem_type *pListMember;
|
||||
size_t tHdrFtr, tTmp, tIndex, tMainIndex, tBit;
|
||||
UCHAR ucDopSpecification, ucSepSpecification;
|
||||
|
||||
fail(aulCharPos == NULL);
|
||||
|
||||
DBG_DEC(tLength);
|
||||
if (tLength <= 1) {
|
||||
return;
|
||||
}
|
||||
tHdrFtrLen = tGetNumberOfSections();
|
||||
if (tHdrFtrLen == 0) {
|
||||
tHdrFtrLen = 1;
|
||||
}
|
||||
DBG_DEC(tHdrFtrLen);
|
||||
|
||||
pHdrFtrList = xcalloc(tHdrFtrLen, sizeof(hdrftr_mem_type));
|
||||
|
||||
/* Get the start index in aulCharPos */
|
||||
ucDopSpecification = ucGetDopHdrFtrSpecification();
|
||||
DBG_HEX(ucDopSpecification & 0xe0);
|
||||
tMainIndex = 0;
|
||||
for (tBit = 7; tBit >= 5; tBit--) {
|
||||
if ((ucDopSpecification & BIT(tBit)) != 0) {
|
||||
tMainIndex++;
|
||||
}
|
||||
}
|
||||
DBG_DEC(tMainIndex);
|
||||
|
||||
for (tHdrFtr = 0; tHdrFtr < tHdrFtrLen; tHdrFtr++) {
|
||||
ucSepSpecification = ucGetSepHdrFtrSpecification(tHdrFtr);
|
||||
DBG_HEX(ucSepSpecification & 0xfc);
|
||||
pListMember = pHdrFtrList + tHdrFtr;
|
||||
for (tTmp = 0;
|
||||
tTmp < elementsof(pListMember->atElement);
|
||||
tTmp++) {
|
||||
pListMember->atElement[tTmp].tInfo.pText = NULL;
|
||||
}
|
||||
for (tBit = 7; tBit >= 2; tBit--) {
|
||||
if (tMainIndex >= tLength) {
|
||||
break;
|
||||
}
|
||||
if ((ucSepSpecification & BIT(tBit)) == 0) {
|
||||
continue;
|
||||
}
|
||||
tIndex = atIndex[tBit];
|
||||
fail(tIndex >= 6);
|
||||
pListMember->atElement[tIndex].ulCharPosStart =
|
||||
aulCharPos[tMainIndex];
|
||||
if (tMainIndex + 1 < tLength) {
|
||||
pListMember->atElement[tIndex].ulCharPosNext =
|
||||
aulCharPos[tMainIndex + 1];
|
||||
} else {
|
||||
pListMember->atElement[tIndex].ulCharPosNext =
|
||||
aulCharPos[tMainIndex];
|
||||
}
|
||||
tMainIndex++;
|
||||
}
|
||||
}
|
||||
} /* end of vCreat6HdrFtrInfoList */
|
||||
|
||||
/*
|
||||
* vCreat2HdrFtrInfoList - Create the Header/footer Information List
|
||||
*/
|
||||
void
|
||||
vCreat2HdrFtrInfoList(const ULONG *aulCharPos, size_t tLength)
|
||||
{
|
||||
vCreat6HdrFtrInfoList(aulCharPos, tLength);
|
||||
} /* end of vCreat2HdrFtrInfoList */
|
||||
|
||||
/*
|
||||
* pGetHdrFtrInfo - get the Header/footer information
|
||||
*/
|
||||
const hdrftr_block_type *
|
||||
pGetHdrFtrInfo(int iSectionIndex,
|
||||
BOOL bWantHeader, BOOL bOddPage, BOOL bFirstInSection)
|
||||
{
|
||||
hdrftr_mem_type *pCurr;
|
||||
|
||||
fail(iSectionIndex < 0);
|
||||
fail(pHdrFtrList == NULL && tHdrFtrLen != 0);
|
||||
|
||||
if (pHdrFtrList == NULL || tHdrFtrLen == 0) {
|
||||
/* No information */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (iSectionIndex < 0) {
|
||||
iSectionIndex = 0;
|
||||
} else if (iSectionIndex >= (int)tHdrFtrLen) {
|
||||
iSectionIndex = (int)(tHdrFtrLen - 1);
|
||||
}
|
||||
|
||||
pCurr = pHdrFtrList + iSectionIndex;
|
||||
|
||||
if (bFirstInSection) {
|
||||
if (bWantHeader) {
|
||||
return &pCurr->atElement[HDR_FIRST_PAGE].tInfo;
|
||||
} else {
|
||||
return &pCurr->atElement[FTR_FIRST_PAGE].tInfo;
|
||||
}
|
||||
} else {
|
||||
if (bWantHeader) {
|
||||
if (bOddPage) {
|
||||
return &pCurr->atElement[HDR_ODD_PAGES].tInfo;
|
||||
} else {
|
||||
return &pCurr->atElement[HDR_EVEN_PAGES].tInfo;
|
||||
}
|
||||
} else {
|
||||
if (bOddPage) {
|
||||
return &pCurr->atElement[FTR_ODD_PAGES].tInfo;
|
||||
} else {
|
||||
return &pCurr->atElement[FTR_EVEN_PAGES].tInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* end of pGetHdrFtrInfo */
|
||||
|
||||
/*
|
||||
* lComputeHdrFtrHeight - compute the height of a header or footer
|
||||
*
|
||||
* Returns the height in DrawUnits
|
||||
*/
|
||||
static long
|
||||
lComputeHdrFtrHeight(const output_type *pAnchor)
|
||||
{
|
||||
const output_type *pCurr;
|
||||
long lTotal;
|
||||
USHORT usFontSizeMax;
|
||||
|
||||
lTotal = 0;
|
||||
usFontSizeMax = 0;
|
||||
for (pCurr = pAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (pCurr->tNextFree == 1) {
|
||||
if (pCurr->szStorage[0] == PAR_END) {
|
||||
/* End of a paragraph */
|
||||
lTotal += lComputeLeading(usFontSizeMax);
|
||||
lTotal += lMilliPoints2DrawUnits(
|
||||
(long)pCurr->usFontSize * 200);
|
||||
usFontSizeMax = 0;
|
||||
continue;
|
||||
}
|
||||
if (pCurr->szStorage[0] == HARD_RETURN) {
|
||||
/* End of a line */
|
||||
lTotal += lComputeLeading(usFontSizeMax);
|
||||
usFontSizeMax = 0;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (pCurr->usFontSize > usFontSizeMax) {
|
||||
usFontSizeMax = pCurr->usFontSize;
|
||||
}
|
||||
}
|
||||
if (usFontSizeMax != 0) {
|
||||
/* Height of the last paragraph */
|
||||
lTotal += lComputeLeading(usFontSizeMax);
|
||||
}
|
||||
return lTotal;
|
||||
} /* end of lComputeHdrFtrHeight */
|
||||
|
||||
/*
|
||||
* vPrepareHdrFtrText - prepare the header/footer text
|
||||
*/
|
||||
void
|
||||
vPrepareHdrFtrText(FILE *pFile)
|
||||
{
|
||||
hdrftr_mem_type *pCurr, *pPrev;
|
||||
hdrftr_local_type *pTmp;
|
||||
output_type *pText;
|
||||
size_t tHdrFtr, tIndex;
|
||||
|
||||
fail(pFile == NULL);
|
||||
fail(pHdrFtrList == NULL && tHdrFtrLen != 0);
|
||||
|
||||
if (pHdrFtrList == NULL || tHdrFtrLen == 0) {
|
||||
/* No information */
|
||||
return;
|
||||
}
|
||||
|
||||
/* Fill text, text height and useful-ness */
|
||||
for (tHdrFtr = 0; tHdrFtr < tHdrFtrLen; tHdrFtr++) {
|
||||
pCurr = pHdrFtrList + tHdrFtr;
|
||||
for (tIndex = 0;
|
||||
tIndex < elementsof(pHdrFtrList->atElement);
|
||||
tIndex++) {
|
||||
pTmp = &pCurr->atElement[tIndex];
|
||||
pTmp->bUseful =
|
||||
pTmp->ulCharPosStart != pTmp->ulCharPosNext;
|
||||
if (pTmp->bUseful) {
|
||||
pText = pHdrFtrDecryptor(pFile,
|
||||
pTmp->ulCharPosStart,
|
||||
pTmp->ulCharPosNext);
|
||||
pTmp->tInfo.pText = pText;
|
||||
pTmp->tInfo.lHeight =
|
||||
lComputeHdrFtrHeight(pText);
|
||||
pTmp->bTextOriginal = pText != NULL;
|
||||
} else {
|
||||
pTmp->tInfo.pText = NULL;
|
||||
pTmp->tInfo.lHeight = 0;
|
||||
pTmp->bTextOriginal = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Replace not-useful records by using inheritance */
|
||||
if (pHdrFtrList->atElement[HDR_FIRST_PAGE].bUseful) {
|
||||
pTmp = &pHdrFtrList->atElement[HDR_ODD_PAGES];
|
||||
if (!pTmp->bUseful) {
|
||||
*pTmp = pHdrFtrList->atElement[HDR_FIRST_PAGE];
|
||||
pTmp->bTextOriginal = FALSE;
|
||||
}
|
||||
pTmp = &pHdrFtrList->atElement[HDR_EVEN_PAGES];
|
||||
if (!pTmp->bUseful) {
|
||||
*pTmp = pHdrFtrList->atElement[HDR_FIRST_PAGE];
|
||||
pTmp->bTextOriginal = FALSE;
|
||||
}
|
||||
}
|
||||
if (pHdrFtrList->atElement[FTR_FIRST_PAGE].bUseful) {
|
||||
pTmp = &pHdrFtrList->atElement[FTR_ODD_PAGES];
|
||||
if (!pTmp->bUseful) {
|
||||
*pTmp = pHdrFtrList->atElement[FTR_FIRST_PAGE];
|
||||
pTmp->bTextOriginal = FALSE;
|
||||
}
|
||||
pTmp = &pHdrFtrList->atElement[FTR_EVEN_PAGES];
|
||||
if (!pTmp->bUseful) {
|
||||
*pTmp = pHdrFtrList->atElement[FTR_FIRST_PAGE];
|
||||
pTmp->bTextOriginal = FALSE;
|
||||
}
|
||||
}
|
||||
for (tHdrFtr = 1, pCurr = &pHdrFtrList[1];
|
||||
tHdrFtr < tHdrFtrLen;
|
||||
tHdrFtr++, pCurr++) {
|
||||
pPrev = pCurr - 1;
|
||||
for (tIndex = 0;
|
||||
tIndex < elementsof(pHdrFtrList->atElement);
|
||||
tIndex++) {
|
||||
if (!pCurr->atElement[tIndex].bUseful &&
|
||||
pPrev->atElement[tIndex].bUseful) {
|
||||
pCurr->atElement[tIndex] =
|
||||
pPrev->atElement[tIndex];
|
||||
pCurr->atElement[tIndex].bTextOriginal = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* end of vPrepareHdrFtrText */
|
96
icons.c
Normal file
96
icons.c
Normal file
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* icons.c
|
||||
* Copyright (C) 1998-2001 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Update window icons
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "DeskLib:Error.h"
|
||||
#include "DeskLib:WimpSWIs.h"
|
||||
#include "antiword.h"
|
||||
|
||||
void
|
||||
vUpdateIcon(window_handle tWindow, icon_block *pIcon)
|
||||
{
|
||||
window_redrawblock tRedraw;
|
||||
BOOL bMore;
|
||||
|
||||
tRedraw.window = tWindow;
|
||||
tRedraw.rect = pIcon->workarearect;
|
||||
Error_CheckFatal(Wimp_UpdateWindow(&tRedraw, &bMore));
|
||||
while (bMore) {
|
||||
Error_CheckFatal(Wimp_PlotIcon(pIcon));
|
||||
Error_CheckFatal(Wimp_GetRectangle(&tRedraw, &bMore));
|
||||
}
|
||||
} /* end of vUpdateIcon */
|
||||
|
||||
void
|
||||
vUpdateRadioButton(window_handle tWindow, icon_handle tIconNumber,
|
||||
BOOL bSelected)
|
||||
{
|
||||
icon_block tIcon;
|
||||
|
||||
Error_CheckFatal(Wimp_GetIconState(tWindow, tIconNumber, &tIcon));
|
||||
DBG_DEC(tIconNumber);
|
||||
DBG_HEX(tIcon.flags.data.selected);
|
||||
if (bSelected == (tIcon.flags.data.selected == 1)) {
|
||||
/* No update needed */
|
||||
return;
|
||||
}
|
||||
Error_CheckFatal(Wimp_SetIconState(tWindow, tIconNumber,
|
||||
bSelected ? 0x00200000 : 0, 0x00200000));
|
||||
vUpdateIcon(tWindow, &tIcon);
|
||||
} /* end of vUpdateRadioButton */
|
||||
|
||||
/*
|
||||
* vUpdateWriteable - update a writeable icon with a string
|
||||
*/
|
||||
void
|
||||
vUpdateWriteable(window_handle tWindow, icon_handle tIconNumber,
|
||||
const char *szString)
|
||||
{
|
||||
icon_block tIcon;
|
||||
caret_block tCaret;
|
||||
int iLen;
|
||||
|
||||
fail(szString == NULL);
|
||||
|
||||
NO_DBG_DEC(tIconNumber);
|
||||
NO_DBG_MSG(szString);
|
||||
|
||||
Error_CheckFatal(Wimp_GetIconState(tWindow, tIconNumber, &tIcon));
|
||||
NO_DBG_HEX(tIcon.flags);
|
||||
if (!tIcon.flags.data.text || !tIcon.flags.data.indirected) {
|
||||
werr(1, "Icon %d must be indirected text", (int)tIconNumber);
|
||||
return;
|
||||
}
|
||||
strncpy(tIcon.data.indirecttext.buffer,
|
||||
szString,
|
||||
tIcon.data.indirecttext.bufflen - 1);
|
||||
/* Ensure the caret is behind the last character of the text */
|
||||
Error_CheckFatal(Wimp_GetCaretPosition(&tCaret));
|
||||
if (tCaret.window == tWindow && tCaret.icon == tIconNumber) {
|
||||
iLen = strlen(tIcon.data.indirecttext.buffer);
|
||||
if (tCaret.index != iLen) {
|
||||
tCaret.index = iLen;
|
||||
Error_CheckFatal(Wimp_SetCaretPosition(&tCaret));
|
||||
}
|
||||
}
|
||||
Error_CheckFatal(Wimp_SetIconState(tWindow, tIconNumber, 0, 0));
|
||||
vUpdateIcon(tWindow, &tIcon);
|
||||
} /* end of vUpdateWriteable */
|
||||
|
||||
/*
|
||||
* vUpdateWriteableNumber - update a writeable icon with a number
|
||||
*/
|
||||
void
|
||||
vUpdateWriteableNumber(window_handle tWindow, icon_handle tIconNumber,
|
||||
int iNumber)
|
||||
{
|
||||
char szTmp[1+3*sizeof(int)+1];
|
||||
|
||||
(void)sprintf(szTmp, "%d", iNumber);
|
||||
vUpdateWriteable(tWindow, tIconNumber, szTmp);
|
||||
} /* end of vUpdateWriteableNumber */
|
71
imgtrans.c
Normal file
71
imgtrans.c
Normal file
@ -0,0 +1,71 @@
|
||||
/*
|
||||
* imgtrans.c
|
||||
* Copyright (C) 2000-2002 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Generic functions to translate Word images
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
/*
|
||||
* bTranslateImage - translate the image
|
||||
*
|
||||
* This function reads the type of the given image and and gets it translated.
|
||||
*
|
||||
* return TRUE when sucessful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bTranslateImage(diagram_type *pDiag, FILE *pFile, BOOL bMinimalInformation,
|
||||
ULONG ulFileOffsetImage, const imagedata_type *pImg)
|
||||
{
|
||||
options_type tOptions;
|
||||
|
||||
DBG_MSG("bTranslateImage");
|
||||
|
||||
fail(pDiag == NULL);
|
||||
fail(pFile == NULL);
|
||||
fail(ulFileOffsetImage == FC_INVALID);
|
||||
fail(pImg == NULL);
|
||||
fail(pImg->iHorSizeScaled <= 0);
|
||||
fail(pImg->iVerSizeScaled <= 0);
|
||||
|
||||
vGetOptions(&tOptions);
|
||||
fail(tOptions.eImageLevel == level_no_images);
|
||||
|
||||
if (bMinimalInformation) {
|
||||
return bAddDummyImage(pDiag, pImg);
|
||||
}
|
||||
|
||||
switch (pImg->eImageType) {
|
||||
case imagetype_is_dib:
|
||||
return bTranslateDIB(pDiag, pFile,
|
||||
ulFileOffsetImage + pImg->tPosition,
|
||||
pImg);
|
||||
case imagetype_is_jpeg:
|
||||
return bTranslateJPEG(pDiag, pFile,
|
||||
ulFileOffsetImage + pImg->tPosition,
|
||||
pImg->tLength - pImg->tPosition,
|
||||
pImg);
|
||||
case imagetype_is_png:
|
||||
if (tOptions.eImageLevel == level_ps_2) {
|
||||
return bAddDummyImage(pDiag, pImg);
|
||||
}
|
||||
return bTranslatePNG(pDiag, pFile,
|
||||
ulFileOffsetImage + pImg->tPosition,
|
||||
pImg->tLength - pImg->tPosition,
|
||||
pImg);
|
||||
case imagetype_is_emf:
|
||||
case imagetype_is_wmf:
|
||||
case imagetype_is_pict:
|
||||
case imagetype_is_external:
|
||||
/* FIXME */
|
||||
return bAddDummyImage(pDiag, pImg);
|
||||
case imagetype_is_unknown:
|
||||
default:
|
||||
DBG_DEC(pImg->eImageType);
|
||||
return bAddDummyImage(pDiag, pImg);
|
||||
}
|
||||
} /* end of bTranslateImage */
|
74
jpeg2eps.c
Normal file
74
jpeg2eps.c
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* jpeg2eps.c
|
||||
* Copyright (C) 2000-2002 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to translate jpeg pictures into eps
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "antiword.h"
|
||||
|
||||
#if defined(DEBUG)
|
||||
static int iPicCounter = 0;
|
||||
#endif /* DEBUG */
|
||||
|
||||
|
||||
#if defined(DEBUG)
|
||||
/*
|
||||
* vCopy2File
|
||||
*/
|
||||
static void
|
||||
vCopy2File(FILE *pFile, ULONG ulFileOffset, size_t tPictureLen)
|
||||
{
|
||||
FILE *pOutFile;
|
||||
size_t tIndex;
|
||||
int iTmp;
|
||||
char szFilename[30];
|
||||
|
||||
if (!bSetDataOffset(pFile, ulFileOffset)) {
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(szFilename, "/tmp/pic/pic%04d.jpg", ++iPicCounter);
|
||||
pOutFile = fopen(szFilename, "wb");
|
||||
if (pOutFile == NULL) {
|
||||
return;
|
||||
}
|
||||
for (tIndex = 0; tIndex < tPictureLen; tIndex++) {
|
||||
iTmp = iNextByte(pFile);
|
||||
if (putc(iTmp, pOutFile) == EOF) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
(void)fclose(pOutFile);
|
||||
} /* end of vCopy2File */
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
* bTranslateJPEG - translate a JPEG picture
|
||||
*
|
||||
* This function translates a picture from jpeg to eps
|
||||
*
|
||||
* return TRUE when sucessful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bTranslateJPEG(diagram_type *pDiag, FILE *pFile,
|
||||
ULONG ulFileOffset, size_t tPictureLen, const imagedata_type *pImg)
|
||||
{
|
||||
#if defined(DEBUG)
|
||||
vCopy2File(pFile, ulFileOffset, tPictureLen);
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Seek to start position of JPEG data */
|
||||
if (!bSetDataOffset(pFile, ulFileOffset)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
vImagePrologue(pDiag, pImg);
|
||||
vASCII85EncodeFile(pFile, pDiag->pOutFile, tPictureLen);
|
||||
vImageEpilogue(pDiag);
|
||||
|
||||
return TRUE;
|
||||
} /* end of bTranslateJPEG */
|
97
jpeg2sprt.c
Normal file
97
jpeg2sprt.c
Normal file
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* jpeg2sprt.c
|
||||
* Copyright (C) 2000-2002 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Functions to translate jpeg pictures into sprites
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "antiword.h"
|
||||
|
||||
#if 0 /* defined(DEBUG) */
|
||||
static int iPicCounter = 0;
|
||||
#endif /* DEBUG */
|
||||
|
||||
|
||||
#if 0 /* defined(DEBUG) */
|
||||
static void
|
||||
vCopy2File(UCHAR *pucJpeg, size_t tJpegSize)
|
||||
{
|
||||
FILE *pOutFile;
|
||||
size_t tIndex;
|
||||
char szFilename[30];
|
||||
|
||||
sprintf(szFilename, "<Wimp$ScrapDir>.jpeg%04d", ++iPicCounter);
|
||||
pOutFile = fopen(szFilename, "wb");
|
||||
if (pOutFile == NULL) {
|
||||
return;
|
||||
}
|
||||
DBG_MSG(szFilename);
|
||||
for (tIndex = 0; tIndex < tJpegSize; tIndex++) {
|
||||
if (putc(pucJpeg[tIndex], pOutFile) == EOF) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
(void)fclose(pOutFile);
|
||||
vSetFiletype(szFilename, FILETYPE_JPEG);
|
||||
} /* end of vCopy2File */
|
||||
#endif /* DEBUG */
|
||||
|
||||
/*
|
||||
* bSave2Draw - save the JPEG picture to the Draw file
|
||||
*
|
||||
* This function puts a JPEG picture in a Draw file
|
||||
*
|
||||
* return TRUE when sucessful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bSave2Draw(diagram_type *pDiag, FILE *pFile,
|
||||
size_t tJpegSize, const imagedata_type *pImg)
|
||||
{
|
||||
UCHAR *pucJpeg, *pucTmp;
|
||||
size_t tLen;
|
||||
int iByte;
|
||||
|
||||
pucJpeg = xmalloc(tJpegSize);
|
||||
for (pucTmp = pucJpeg, tLen = 0; tLen < tJpegSize; pucTmp++, tLen++) {
|
||||
iByte = iNextByte(pFile);
|
||||
if (iByte == EOF) {
|
||||
return FALSE;
|
||||
}
|
||||
*pucTmp = (UCHAR)iByte;
|
||||
}
|
||||
|
||||
#if 0 /* defined(DEBUG) */
|
||||
vCopy2File(pucJpeg, tJpegSize);
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Add the JPEG to the Draw file */
|
||||
vImage2Diagram(pDiag, pImg, pucJpeg, tJpegSize);
|
||||
|
||||
xfree(pucJpeg);
|
||||
return TRUE;
|
||||
} /* end of bSave2Draw */
|
||||
|
||||
/*
|
||||
* bTranslateJPEG - translate a JPEG picture
|
||||
*
|
||||
* This function translates a picture from jpeg to sprite
|
||||
*
|
||||
* return TRUE when sucessful, otherwise FALSE
|
||||
*/
|
||||
BOOL
|
||||
bTranslateJPEG(diagram_type *pDiag, FILE *pFile,
|
||||
ULONG ulFileOffset, size_t tPictureLen, const imagedata_type *pImg)
|
||||
{
|
||||
/* Seek to start position of JPEG data */
|
||||
if (!bSetDataOffset(pFile, ulFileOffset)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (iGetRiscOsVersion() >= 360) {
|
||||
return bSave2Draw(pDiag, pFile, tPictureLen, pImg);
|
||||
}
|
||||
/* JPEG is not supported until RISC OS 3.6 */
|
||||
return bAddDummyImage(pDiag, pImg);
|
||||
} /* end of bTranslateJPEG */
|
330
listlist.c
Normal file
330
listlist.c
Normal file
@ -0,0 +1,330 @@
|
||||
/*
|
||||
* listlist.c
|
||||
* Copyright (C) 2002,2003 A.J. van Os; Released under GPL
|
||||
*
|
||||
* Description:
|
||||
* Build, read and destroy a list of Word list information
|
||||
*
|
||||
* Note:
|
||||
* This list only exists when the Word document is saved by Word 8 or later
|
||||
*/
|
||||
|
||||
#include "antiword.h"
|
||||
|
||||
/*
|
||||
* Private structure to hide the way the information
|
||||
* is stored from the rest of the program
|
||||
*/
|
||||
typedef struct list_desc_tag {
|
||||
list_block_type tInfo;
|
||||
ULONG ulListID;
|
||||
USHORT usIstd;
|
||||
UCHAR ucListLevel;
|
||||
struct list_desc_tag *pNext;
|
||||
} list_desc_type;
|
||||
|
||||
typedef struct list_value_tag {
|
||||
USHORT usValue;
|
||||
USHORT usListIndex;
|
||||
UCHAR ucListLevel;
|
||||
struct list_value_tag *pNext;
|
||||
} list_value_type;
|
||||
|
||||
/* Variables needed to describe the LFO list (pllfo) */
|
||||
static ULONG *aulLfoList = NULL;
|
||||
static USHORT usLfoLen = 0;
|
||||
/* Variables needed to write the List Information List */
|
||||
static list_desc_type *pAnchor = NULL;
|
||||
static list_desc_type *pBlockLast = NULL;
|
||||
/* Variable needed for numbering new lists */
|
||||
static list_value_type *pValues = NULL;
|
||||
/* Variables needed for numbering old lists */
|
||||
static int iOldListSeqNumber = 0;
|
||||
static USHORT usOldListValue = 0;
|
||||
|
||||
|
||||
/*
|
||||
* vDestroyListInfoList - destroy the List Information List
|
||||
*/
|
||||
void
|
||||
vDestroyListInfoList(void)
|
||||
{
|
||||
list_desc_type *pCurr, *pNext;
|
||||
list_value_type *pValueCurr, *pValueNext;
|
||||
|
||||
DBG_MSG("vDestroyListInfoList");
|
||||
|
||||
/* Free the LFO list */
|
||||
usLfoLen = 0;
|
||||
aulLfoList = xfree(aulLfoList);
|
||||
|
||||
/* Free the List Information List */
|
||||
pCurr = pAnchor;
|
||||
while (pCurr != NULL) {
|
||||
pNext = pCurr->pNext;
|
||||
pCurr = xfree(pCurr);
|
||||
pCurr = pNext;
|
||||
}
|
||||
pAnchor = NULL;
|
||||
/* Reset all control variables */
|
||||
pBlockLast = NULL;
|
||||
|
||||
/* Free the values list */
|
||||
pValueCurr = pValues;
|
||||
while (pValueCurr != NULL) {
|
||||
pValueNext = pValueCurr->pNext;
|
||||
pValueCurr = xfree(pValueCurr);
|
||||
pValueCurr = pValueNext;
|
||||
}
|
||||
pValues = NULL;
|
||||
/* Reset the values for the old lists */
|
||||
iOldListSeqNumber = 0;
|
||||
usOldListValue = 0;
|
||||
} /* end of vDestroyListInfoList */
|
||||
|
||||
/*
|
||||
* vBuildLfoList - build the LFO list (pllfo)
|
||||
*/
|
||||
void
|
||||
vBuildLfoList(const UCHAR *aucBuffer, size_t tBufLen)
|
||||
{
|
||||
size_t tRecords;
|
||||
int iIndex;
|
||||
|
||||
fail(aucBuffer == NULL);
|
||||
|
||||
if (tBufLen < 4) {
|
||||
return;
|
||||
}
|
||||
tRecords = (size_t)ulGetLong(0, aucBuffer);
|
||||
NO_DBG_DEC(tRecords);
|
||||
if (4 + 16 * tRecords > tBufLen || tRecords >= 0x7fff) {
|
||||
/* Just a sanity check */
|
||||
DBG_DEC(tRecords);
|
||||
DBG_DEC(4 + 16 * tRecords);
|
||||
DBG_DEC(tBufLen);
|
||||
return;
|
||||
}
|
||||
aulLfoList = xcalloc(tRecords, sizeof(ULONG));
|
||||
for (iIndex = 0; iIndex < (int)tRecords; iIndex++) {
|
||||
aulLfoList[iIndex] = ulGetLong(4 + 16 * iIndex, aucBuffer);
|
||||
NO_DBG_HEX(aulLfoList[iIndex]);
|
||||
}
|
||||
usLfoLen = (USHORT)tRecords;
|
||||
} /* end of vBuildLfoList */
|
||||
|
||||
/*
|
||||
* vAdd2ListInfoList - add an element to the List Information list
|
||||
*/
|
||||
void
|
||||
vAdd2ListInfoList(ULONG ulListID, USHORT usIstd, UCHAR ucListLevel,
|
||||
const list_block_type *pListBlock)
|
||||
{
|
||||
list_desc_type *pListMember;
|
||||
|
||||
fail(pListBlock == NULL);
|
||||
|
||||
NO_DBG_HEX(ulListID);
|
||||
NO_DBG_DEC(usIstd);
|
||||
NO_DBG_DEC(ucListLevel);
|
||||
NO_DBG_DEC(pListBlock->ulStartAt);
|
||||
NO_DBG_DEC(pListBlock->bNoRestart);
|
||||
NO_DBG_DEC(pListBlock->sLeftIndent);
|
||||
NO_DBG_HEX(pListBlock->ucNFC);
|
||||
NO_DBG_HEX(pListBlock->usListChar);
|
||||
|
||||
/* Create list member */
|
||||
pListMember = xmalloc(sizeof(list_desc_type));
|
||||
/* Fill the list member */
|
||||
pListMember->tInfo = *pListBlock;
|
||||
pListMember->ulListID = ulListID;
|
||||
pListMember->usIstd = usIstd;
|
||||
pListMember->ucListLevel = ucListLevel;
|
||||
pListMember->pNext = NULL;
|
||||
/* Correct the values where needed */
|
||||
if (pListMember->tInfo.ulStartAt > 0xffff) {
|
||||
DBG_DEC(pListMember->tInfo.ulStartAt);
|
||||
pListMember->tInfo.ulStartAt = 1;
|
||||
}
|
||||
/* Add the new member to the list */
|
||||
if (pAnchor == NULL) {
|
||||
pAnchor = pListMember;
|
||||
} else {
|
||||
fail(pBlockLast == NULL);
|
||||
pBlockLast->pNext = pListMember;
|
||||
}
|
||||
pBlockLast = pListMember;
|
||||
} /* end of vAdd2ListInfoList */
|
||||
|
||||
/*
|
||||
* Get a matching record from the List Information List
|
||||
*
|
||||
* Returns NULL if no matching records is found
|
||||
*/
|
||||
const list_block_type *
|
||||
pGetListInfo(USHORT usListIndex, UCHAR ucListLevel)
|
||||
{
|
||||
list_desc_type *pCurr;
|
||||
list_block_type *pNearMatch;
|
||||
ULONG ulListID;
|
||||
|
||||
if (usListIndex == 0) {
|
||||
return NULL;
|
||||
}
|
||||
if (usListIndex - 1 >= usLfoLen || ucListLevel > 8) {
|
||||
DBG_DEC(usListIndex);
|
||||
DBG_DEC(ucListLevel);
|
||||
return NULL;
|
||||
}
|
||||
fail(aulLfoList == NULL);
|
||||
ulListID = aulLfoList[usListIndex - 1];
|
||||
NO_DBG_HEX(ulListID);
|
||||
|
||||
pNearMatch = NULL;
|
||||
for (pCurr = pAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (pCurr->ulListID != ulListID) {
|
||||
/* No match */
|
||||
continue;
|
||||
}
|
||||
if (pCurr->ucListLevel == ucListLevel) {
|
||||
/* Exact match */
|
||||
return &pCurr->tInfo;
|
||||
}
|
||||
if (pCurr->ucListLevel == 0) {
|
||||
/* Near match */
|
||||
pNearMatch = &pCurr->tInfo;
|
||||
}
|
||||
}
|
||||
/* No exact match, use a near match if any */
|
||||
return pNearMatch;
|
||||
} /* end of pGetListInfo */
|
||||
|
||||
/*
|
||||
* Get a matching record from the List Information List
|
||||
*
|
||||
* Returns NULL if no matching records is found
|
||||
*/
|
||||
const list_block_type *
|
||||
pGetListInfoByIstd(USHORT usIstd)
|
||||
{
|
||||
list_desc_type *pCurr;
|
||||
|
||||
if (usIstd == ISTD_INVALID || usIstd == STI_NIL || usIstd == STI_USER) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (pCurr = pAnchor; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (pCurr->usIstd == usIstd) {
|
||||
return &pCurr->tInfo;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
} /* end of pGetListInfoByIstd */
|
||||
|
||||
/*
|
||||
* vRestartListValues - reset the less significant list levels
|
||||
*/
|
||||
static void
|
||||
vRestartListValues(USHORT usListIndex, UCHAR ucListLevel)
|
||||
{
|
||||
list_value_type *pPrev, *pCurr, *pNext;
|
||||
int iCounter;
|
||||
|
||||
iCounter = 0;
|
||||
pPrev = NULL;
|
||||
pCurr = pValues;
|
||||
|
||||
while (pCurr != NULL) {
|
||||
if (pCurr->usListIndex != usListIndex ||
|
||||
pCurr->ucListLevel <= ucListLevel) {
|
||||
pPrev = pCurr;
|
||||
pCurr = pCurr->pNext;
|
||||
continue;
|
||||
}
|
||||
/* Reset the level by deleting the record */
|
||||
pNext = pCurr->pNext;
|
||||
if (pPrev == NULL) {
|
||||
pValues = pNext;
|
||||
} else {
|
||||
pPrev->pNext = pNext;
|
||||
}
|
||||
DBG_DEC(pCurr->usListIndex);
|
||||
DBG_DEC(pCurr->ucListLevel);
|
||||
pCurr = xfree(pCurr);
|
||||
pCurr = pNext;
|
||||
iCounter++;
|
||||
}
|
||||
DBG_DEC_C(iCounter > 0, iCounter);
|
||||
} /* end of vRestartListValues */
|
||||
|
||||
/*
|
||||
* usGetListValue - Get the current value of the given list
|
||||
*
|
||||
* Returns the value of the given list
|
||||
*/
|
||||
USHORT
|
||||
usGetListValue(int iListSeqNumber, int iWordVersion,
|
||||
const style_block_type *pStyle)
|
||||
{
|
||||
list_value_type *pCurr;
|
||||
USHORT usValue;
|
||||
|
||||
fail(iListSeqNumber < 0);
|
||||
fail(iListSeqNumber < iOldListSeqNumber);
|
||||
fail(iWordVersion < 0);
|
||||
fail(pStyle == NULL);
|
||||
|
||||
if (iListSeqNumber <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (iWordVersion < 8) {
|
||||
/* Old style list */
|
||||
if (iListSeqNumber == iOldListSeqNumber ||
|
||||
(iListSeqNumber == iOldListSeqNumber + 1 &&
|
||||
eGetNumType(pStyle->ucNumLevel) == level_type_sequence)) {
|
||||
if (!pStyle->bNumPause) {
|
||||
usOldListValue++;
|
||||
}
|
||||
} else {
|
||||
usOldListValue = pStyle->usStartAt;
|
||||
}
|
||||
iOldListSeqNumber = iListSeqNumber;
|
||||
return usOldListValue;
|
||||
}
|
||||
|
||||
/* New style list */
|
||||
if (pStyle->usListIndex == 0 ||
|
||||
pStyle->usListIndex - 1 >= usLfoLen ||
|
||||
pStyle->ucListLevel > 8) {
|
||||
/* Out of range; no need to search */
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (pCurr = pValues; pCurr != NULL; pCurr = pCurr->pNext) {
|
||||
if (pCurr->usListIndex == pStyle->usListIndex &&
|
||||
pCurr->ucListLevel == pStyle->ucListLevel) {
|
||||
/* Record found; increment and return the value */
|
||||
pCurr->usValue++;
|
||||
usValue = pCurr->usValue;
|
||||
if (!pStyle->bNoRestart) {
|
||||
vRestartListValues(pStyle->usListIndex,
|
||||
pStyle->ucListLevel);
|
||||
}
|
||||
return usValue;
|
||||
}
|
||||
}
|
||||
|
||||
/* Record not found; create it and add it to the front of the list */
|
||||
pCurr = xmalloc(sizeof(list_value_type));
|
||||
pCurr->usValue = pStyle->usStartAt;
|
||||
pCurr->usListIndex = pStyle->usListIndex;
|
||||
pCurr->ucListLevel = pStyle->ucListLevel;
|
||||
pCurr->pNext = pValues;
|
||||
pValues = pCurr;
|
||||
usValue = pCurr->usValue;
|
||||
if (!pStyle->bNoRestart) {
|
||||
vRestartListValues(pStyle->usListIndex, pStyle->ucListLevel);
|
||||
}
|
||||
return usValue;
|
||||
} /* end of usGetListValue */
|
520
main_ros.c
Normal file
520
main_ros.c
Normal file
@ -0,0 +1,520 @@
|
||||
/*
|
||||
* main_ros.c
|
||||
*
|
||||
* Released under GPL
|
||||
*
|
||||
* Copyright (C) 1998-2005 A.J. van Os
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* Description:
|
||||
* The main program of !Antiword (RISC OS version)
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "DeskLib:Dialog2.h"
|
||||
#include "DeskLib:Error.h"
|
||||
#include "DeskLib:Event.h"
|
||||
#include "DeskLib:EventMsg.h"
|
||||
#include "DeskLib:Handler.h"
|
||||
#include "DeskLib:Menu.h"
|
||||
#include "DeskLib:Resource.h"
|
||||
#include "DeskLib:Screen.h"
|
||||
#include "DeskLib:Template.h"
|
||||
#include "DeskLib:Window.h"
|
||||
#if defined(__GNUC__)
|
||||
#include "flexlib:flex.h"
|
||||
#endif /* __GNUC__ */
|
||||
#include "version.h"
|
||||
#include "antiword.h"
|
||||
|
||||
|
||||
/* The name of this program */
|
||||
static char *szTask = "!Antiword";
|
||||
|
||||
/* The window handle of the choices window */
|
||||
static window_handle tChoicesWindow = 0;
|
||||
|
||||
/* Dummy diagram with the iconbar menu pointer */
|
||||
static diagram_type tDummyDiagram;
|
||||
|
||||
/* Program information Box */
|
||||
static dialog2_block *pInfoBox = NULL;
|
||||
|
||||
/* Info box fields */
|
||||
#define PURPOSE_INFO_FIELD 2
|
||||
#define AUTHOR_INFO_FIELD 3
|
||||
#define VERSION_INFO_FIELD 4
|
||||
#define STATUS_INFO_FIELD 5
|
||||
|
||||
/* Iconbar menu fields */
|
||||
#define ICONBAR_INFO_FIELD 0
|
||||
#define ICONBAR_CHOICES_FIELD 1
|
||||
#define ICONBAR_QUIT_FIELD 2
|
||||
|
||||
|
||||
/*
|
||||
* bBarInfo - Show iconbar information
|
||||
*/
|
||||
static BOOL
|
||||
bBarInfo(event_pollblock *pEvent, void *pvReference)
|
||||
{
|
||||
diagram_type *pDiag;
|
||||
|
||||
TRACE_MSG("bBarInfo");
|
||||
|
||||
fail(pEvent == NULL);
|
||||
fail(pEvent->type != event_SEND);
|
||||
fail(pEvent->data.message.header.action != message_MENUWARN);
|
||||
fail(pvReference == NULL);
|
||||
|
||||
pDiag = (diagram_type *)pvReference;
|
||||
|
||||
if (menu_currentopen != pDiag->pSaveMenu ||
|
||||
pEvent->data.message.data.menuwarn.selection[0] != ICONBAR_INFO_FIELD) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Dialog2_OpenDialogMenuLeaf(pEvent, pInfoBox);
|
||||
return TRUE;
|
||||
} /* end of bBarInfo */
|
||||
|
||||
/*
|
||||
* vBarInfoSetText - Set the iconbar infobox text
|
||||
*/
|
||||
static void
|
||||
vBarInfoSetText(dialog2_block *pBox)
|
||||
{
|
||||
TRACE_MSG("vBarInfoSetText");
|
||||
|
||||
fail(pBox == NULL);
|
||||
fail(pBox != pInfoBox);
|
||||
|
||||
Icon_SetText(pBox->window, PURPOSE_INFO_FIELD, PURPOSESTRING);
|
||||
Icon_SetText(pBox->window, AUTHOR_INFO_FIELD, AUTHORSTRING);
|
||||
Icon_SetText(pBox->window, VERSION_INFO_FIELD, VERSIONSTRING);
|
||||
Icon_SetText(pBox->window, STATUS_INFO_FIELD, STATUSSTRING);
|
||||
} /* end of vBarInfoSetText */
|
||||
|
||||
/*
|
||||
* bMouseButtonClick - respond to mouse button click
|
||||
*/
|
||||
static BOOL
|
||||
bMouseButtonClick(event_pollblock *pEvent, void *pvReference)
|
||||
{
|
||||
diagram_type *pDiag;
|
||||
menu_ptr pMenu;
|
||||
int iPosY;
|
||||
|
||||
TRACE_MSG("bMouseButtonClick");
|
||||
|
||||
fail(pEvent == NULL);
|
||||
fail(pEvent->type != event_CLICK);
|
||||
fail(pvReference == NULL);
|
||||
|
||||
pDiag = (diagram_type *)pvReference;
|
||||
|
||||
if (pEvent->data.mouse.button.data.menu) {
|
||||
pMenu = pDiag->pSaveMenu;
|
||||
iPosY = (pMenu == tDummyDiagram.pSaveMenu) ?
|
||||
-1 : pEvent->data.mouse.pos.y;
|
||||
Menu_Show(pMenu, pEvent->data.mouse.pos.x, iPosY);
|
||||
return TRUE;
|
||||
}
|
||||
if (pEvent->data.mouse.window == pDiag->tMainWindow &&
|
||||
pEvent->data.mouse.icon == -1) {
|
||||
vMainButtonClick(&pEvent->data.mouse);
|
||||
return TRUE;
|
||||
}
|
||||
if (pEvent->data.mouse.window == pDiag->tScaleWindow &&
|
||||
pEvent->data.mouse.icon >= 0) {
|
||||
vScaleButtonClick(&pEvent->data.mouse, pDiag);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
} /* end of bMouseButtonClick */
|
||||
|
||||
/*
|
||||
* bAutoRedrawWindow - the redraw is handled by the WIMP
|
||||
*/
|
||||
static BOOL
|
||||
bAutoRedrawWindow(event_pollblock *pEvent, void *pvReference)
|
||||
{
|
||||
return TRUE;
|
||||
} /* end of bAutoRedrawWindow */
|
||||
|
||||
static BOOL
|
||||
bSaveSelect(event_pollblock *pEvent, void *pvReference)
|
||||
{
|
||||
TRACE_MSG("bSaveSelect");
|
||||
|
||||
fail(pEvent == NULL);
|
||||
fail(pEvent->type != event_MENU);
|
||||
fail(pvReference == NULL);
|
||||
|
||||
DBG_DEC(pEvent->data.selection[0]);
|
||||
|
||||
switch (pEvent->data.selection[0]) {
|
||||
case SAVEMENU_SCALEVIEW:
|
||||
return bScaleOpenAction(pEvent, pvReference);
|
||||
case SAVEMENU_SAVEDRAW:
|
||||
return bSaveDrawfile(pEvent, pvReference);
|
||||
case SAVEMENU_SAVETEXT:
|
||||
return bSaveTextfile(pEvent, pvReference);
|
||||
default:
|
||||
DBG_DEC(pEvent->data.selection[0]);
|
||||
return FALSE;
|
||||
}
|
||||
} /* end of bSaveSelect */
|
||||
|
||||
/*
|
||||
* Create the window for the text from the given file
|
||||
*/
|
||||
static diagram_type *
|
||||
pCreateTextWindow(const char *szFilename)
|
||||
{
|
||||
diagram_type *pDiag;
|
||||
|
||||
TRACE_MSG("pCreateTextWindow");
|
||||
|
||||
fail(szFilename == NULL || szFilename[0] == '\0');
|
||||
|
||||
/* Create the diagram */
|
||||
pDiag = pCreateDiagram(szTask+1, szFilename);
|
||||
if (pDiag == NULL) {
|
||||
werr(0, "Sorry, no new diagram object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Prepare a save menu for this diagram */
|
||||
pDiag->pSaveMenu = Menu_New(szTask+1,
|
||||
">Scale view,"
|
||||
">Save (Drawfile) F3,"
|
||||
">Save (Text only) \213F3");
|
||||
if (pDiag->pSaveMenu == NULL) {
|
||||
werr(1, "Sorry, no Savemenu object");
|
||||
}
|
||||
Menu_Warn(pDiag->pSaveMenu, SAVEMENU_SCALEVIEW,
|
||||
TRUE, bScaleOpenAction, pDiag);
|
||||
Menu_Warn(pDiag->pSaveMenu, SAVEMENU_SAVEDRAW,
|
||||
TRUE, bSaveDrawfile, pDiag);
|
||||
Menu_Warn(pDiag->pSaveMenu, SAVEMENU_SAVETEXT,
|
||||
TRUE, bSaveTextfile, pDiag);
|
||||
|
||||
/* Claim events for the main window */
|
||||
Event_Claim(event_REDRAW, pDiag->tMainWindow, icon_ANY,
|
||||
bRedrawMainWindow, pDiag);
|
||||
Event_Claim(event_CLOSE, pDiag->tMainWindow, icon_ANY,
|
||||
bDestroyDiagram, pDiag);
|
||||
Event_Claim(event_CLICK, pDiag->tMainWindow, icon_ANY,
|
||||
bMouseButtonClick, pDiag);
|
||||
Event_Claim(event_KEY, pDiag->tMainWindow, icon_ANY,
|
||||
bMainKeyPressed, pDiag);
|
||||
|
||||
/* Claim events for the scale window */
|
||||
Event_Claim(event_REDRAW, pDiag->tScaleWindow, icon_ANY,
|
||||
bAutoRedrawWindow, NULL);
|
||||
Event_Claim(event_CLICK, pDiag->tScaleWindow, icon_ANY,
|
||||
bMouseButtonClick, pDiag);
|
||||
Event_Claim(event_KEY, pDiag->tScaleWindow, icon_ANY,
|
||||
bScaleKeyPressed, pDiag);
|
||||
|
||||
/* Set the window title */
|
||||
vSetTitle(pDiag);
|
||||
return pDiag;
|
||||
} /* end of pCreateTextWindow */
|
||||
|
||||
/*
|
||||
* vProcessFile - process one file
|
||||
*/
|
||||
static void
|
||||
vProcessFile(const char *szFilename, int iFiletype)
|
||||
{
|
||||
options_type tOptions;
|
||||
FILE *pFile;
|
||||
diagram_type *pDiag;
|
||||
long lFilesize;
|
||||
int iWordVersion;
|
||||
|
||||
TRACE_MSG("vProcessFile");
|
||||
|
||||
fail(szFilename == NULL || szFilename[0] == '\0');
|
||||
|
||||
DBG_MSG(szFilename);
|
||||
|
||||
pFile = fopen(szFilename, "rb");
|
||||
if (pFile == NULL) {
|
||||
werr(0, "I can't open '%s' for reading", szFilename);
|
||||
return;
|
||||
}
|
||||
|
||||
lFilesize = lGetFilesize(szFilename);
|
||||
if (lFilesize < 0) {
|
||||
(void)fclose(pFile);
|
||||
werr(0, "I can't get the size of '%s'", szFilename);
|
||||
return;
|
||||
}
|
||||
|
||||
iWordVersion = iGuessVersionNumber(pFile, lFilesize);
|
||||
if (iWordVersion < 0 || iWordVersion == 3) {
|
||||
if (bIsRtfFile(pFile)) {
|
||||
werr(0, "%s is not a Word Document."
|
||||
" It is probably a Rich Text Format file",
|
||||
szFilename);
|
||||
} if (bIsWordPerfectFile(pFile)) {
|
||||
werr(0, "%s is not a Word Document."
|
||||
" It is probably a Word Perfect file",
|
||||
szFilename);
|
||||
} else {
|
||||
werr(0, "%s is not a Word Document.", szFilename);
|
||||
}
|
||||
(void)fclose(pFile);
|
||||
return;
|
||||
}
|
||||
/* Reset any reading done during file-testing */
|
||||
rewind(pFile);
|
||||
|
||||
if (iFiletype != FILETYPE_MSWORD) {
|
||||
vGetOptions(&tOptions);
|
||||
if (tOptions.bAutofiletypeAllowed) {
|
||||
vSetFiletype(szFilename, FILETYPE_MSWORD);
|
||||
}
|
||||
}
|
||||
|
||||
pDiag = pCreateTextWindow(szFilename);
|
||||
if (pDiag == NULL) {
|
||||
(void)fclose(pFile);
|
||||
return;
|
||||
}
|
||||
|
||||
(void)bWordDecryptor(pFile, lFilesize, pDiag);
|
||||
Error_CheckFatal(Drawfile_VerifyDiagram(&pDiag->tInfo));
|
||||
vShowDiagram(pDiag);
|
||||
TRACE_MSG("After vShowDiagram");
|
||||
|
||||
TRACE_MSG("before debug print");
|
||||
DBG_HEX(pFile);
|
||||
TRACE_MSG("before fclose");
|
||||
(void)fclose(pFile);
|
||||
TRACE_MSG("after fclose");
|
||||
} /* end of vProcessFile */
|
||||
|
||||
/*
|
||||
* vSendAck - send an acknowledge
|
||||
*/
|
||||
static void
|
||||
vSendAck(event_pollblock *pEvent)
|
||||
{
|
||||
message_block tMessage;
|
||||
|
||||
TRACE_MSG("vSendAck");
|
||||
|
||||
fail(pEvent == NULL);
|
||||
fail(pEvent->type != event_SEND && pEvent->type != event_SENDWANTACK);
|
||||
fail(pEvent->data.message.header.action != message_DATALOAD &&
|
||||
pEvent->data.message.header.action != message_DATAOPEN);
|
||||
|
||||
tMessage.header.action = message_DATALOADACK;
|
||||
tMessage.header.size = sizeof(tMessage);
|
||||
tMessage.header.yourref = pEvent->data.message.header.myref;
|
||||
Error_CheckFatal(Wimp_SendMessage(event_SEND, &tMessage,
|
||||
pEvent->data.message.header.sender, 0));
|
||||
} /* end of vSendAck */
|
||||
|
||||
static BOOL
|
||||
bEventMsgHandler(event_pollblock *pEvent, void *pvReference)
|
||||
{
|
||||
TRACE_MSG("bEventMsgHandler");
|
||||
|
||||
fail(pEvent == NULL);
|
||||
|
||||
switch (pEvent->type) {
|
||||
case event_SEND:
|
||||
case event_SENDWANTACK:
|
||||
switch (pEvent->data.message.header.action) {
|
||||
case message_CLOSEDOWN:
|
||||
exit(EXIT_SUCCESS);
|
||||
break;
|
||||
case message_DATALOAD:
|
||||
case message_DATAOPEN:
|
||||
vProcessFile(
|
||||
pEvent->data.message.data.dataload.filename,
|
||||
pEvent->data.message.data.dataload.filetype);
|
||||
vSendAck(pEvent);
|
||||
break;
|
||||
default:
|
||||
DBG_DEC(pEvent->data.message.header.action);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
default:
|
||||
DBG_DEC(pEvent->type);
|
||||
return FALSE;
|
||||
}
|
||||
} /* end of bEventMsgHandler */
|
||||
|
||||
/*
|
||||
* bMenuSelect - select from the iconbar menu
|
||||
*/
|
||||
static BOOL
|
||||
bMenuSelect(event_pollblock *pEvent, void *pvReference)
|
||||
{
|
||||
TRACE_MSG("bMenuSelect");
|
||||
|
||||
fail(pEvent == NULL);
|
||||
fail(pEvent->type != event_MENU);
|
||||
|
||||
DBG_DEC(pEvent->data.selection[0]);
|
||||
|
||||
switch (pEvent->data.selection[0]) {
|
||||
case ICONBAR_INFO_FIELD:
|
||||
return bBarInfo(pEvent, pvReference);
|
||||
case ICONBAR_CHOICES_FIELD:
|
||||
vChoicesOpenAction(tChoicesWindow);
|
||||
Window_BringToFront(tChoicesWindow);
|
||||
break;
|
||||
case ICONBAR_QUIT_FIELD:
|
||||
TRACE_MSG("before exit");
|
||||
exit(EXIT_SUCCESS);
|
||||
break;
|
||||
default:
|
||||
DBG_DEC(pEvent->data.selection[0]);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
} /* end of bMenuSelect */
|
||||
|
||||
/*
|
||||
* bMenuClick - respond to an menu click
|
||||
*/
|
||||
static BOOL
|
||||
bMenuClick(event_pollblock *pEvent, void *pvReference)
|
||||
{
|
||||
TRACE_MSG("bMenuClick");
|
||||
|
||||
fail(pEvent == NULL);
|
||||
fail(pEvent->type != event_MENU);
|
||||
|
||||
if (menu_currentopen == tDummyDiagram.pSaveMenu) {
|
||||
return bMenuSelect(pEvent, pvReference);
|
||||
} else if (pvReference == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
return bSaveSelect(pEvent, pvReference);
|
||||
} /* end of bMenuClick */
|
||||
|
||||
static void
|
||||
vTemplates(void)
|
||||
{
|
||||
TRACE_MSG("vTemplates");
|
||||
|
||||
Template_Initialise();
|
||||
Template_LoadFile("Templates");
|
||||
|
||||
tChoicesWindow = Window_Create("Choices", template_TITLEMIN);
|
||||
if (tChoicesWindow == 0) {
|
||||
werr(1, "I can't find the 'Choices' template");
|
||||
}
|
||||
|
||||
/* Claim events for the choices window */
|
||||
Event_Claim(event_REDRAW, tChoicesWindow, icon_ANY,
|
||||
bAutoRedrawWindow, NULL);
|
||||
Event_Claim(event_CLICK, tChoicesWindow, icon_ANY,
|
||||
bChoicesMouseClick, NULL);
|
||||
Event_Claim(event_KEY, tChoicesWindow, icon_ANY,
|
||||
bChoicesKeyPressed, NULL);
|
||||
} /* end of vTemplates */
|
||||
|
||||
static void
|
||||
vInitialise(void)
|
||||
{
|
||||
int aiMessages[] = {0};
|
||||
icon_handle tBarIcon;
|
||||
|
||||
|
||||
TRACE_MSG("vInitialise");
|
||||
|
||||
Resource_Initialise(szTask+1);
|
||||
Event_Initialise3(szTask+1, 310, aiMessages);
|
||||
EventMsg_Initialise();
|
||||
Screen_CacheModeInfo();
|
||||
#if defined(__GNUC__)
|
||||
flex_init(szTask+1, 0, 0);
|
||||
flex_set_budge(1);
|
||||
#endif /* __GNUC__ */
|
||||
vTemplates();
|
||||
|
||||
/* Prepare iconbar menu */
|
||||
tDummyDiagram.tInfo.data = NULL;
|
||||
tDummyDiagram.tInfo.length = 0;
|
||||
tDummyDiagram.pSaveMenu = Menu_New(szTask+1, ">Info,Choices...,Quit");
|
||||
if (tDummyDiagram.pSaveMenu == NULL) {
|
||||
werr(1, "Sorry, no Barmenu object");
|
||||
}
|
||||
pInfoBox = Dialog2_CreateDialogBlock("ProgInfo", -1, -1,
|
||||
vBarInfoSetText, NULL, NULL);
|
||||
|
||||
if (pInfoBox == NULL) {
|
||||
werr(1, "Sorry, no Infobox object");
|
||||
}
|
||||
Menu_Warn(tDummyDiagram.pSaveMenu, ICONBAR_INFO_FIELD,
|
||||
TRUE, bBarInfo, &tDummyDiagram);
|
||||
|
||||
/* Create an icon on the icon bar */
|
||||
tBarIcon = Icon_BarIcon(szTask, iconbar_RIGHT);
|
||||
Event_Claim(event_CLICK, window_ICONBAR, tBarIcon,
|
||||
bMouseButtonClick, &tDummyDiagram);
|
||||
|
||||
/* Generic claims */
|
||||
Event_Claim(event_OPEN, window_ANY, icon_ANY,
|
||||
Handler_OpenWindow, NULL);
|
||||
Event_Claim(event_CLOSE, window_ANY, icon_ANY,
|
||||
Handler_CloseWindow, NULL);
|
||||
Event_Claim(event_MENU, window_ANY, icon_ANY,
|
||||
bMenuClick, NULL);
|
||||
EventMsg_Claim(message_DATALOAD, window_ICONBAR,
|
||||
bEventMsgHandler, NULL);
|
||||
EventMsg_Claim(message_MODECHANGE, window_ANY,
|
||||
Handler_ModeChange, NULL);
|
||||
} /* end of vInitialise */
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int iFirst, iFiletype;
|
||||
|
||||
TRACE_MSG("main");
|
||||
|
||||
vInitialise();
|
||||
iFirst = iReadOptions(argc, argv);
|
||||
if (iFirst != 1) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (argc > 1) {
|
||||
iFiletype = iGetFiletype(argv[1]);
|
||||
if (iFiletype < 0) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
vProcessFile(argv[1], iFiletype);
|
||||
TRACE_MSG("main after vProcessFile");
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
Event_Poll();
|
||||
}
|
||||
} /* end of main */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user