first commit

This commit is contained in:
MaddoScientisto 2026-03-14 20:04:39 +01:00
commit 4d332ef662
27586 changed files with 3281783 additions and 0 deletions

View file

@ -0,0 +1,11 @@
// ------------------------------------------------------------------
// Transitive dependencies of this project determined from the
// maven pom organized by organization.
// ------------------------------------------------------------------
Apache PDFBox application

View file

@ -0,0 +1,338 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
EXTERNAL COMPONENTS
Apache PDFBox includes a number of components with separate copyright notices
and license terms. Your use of these components is subject to the terms and
conditions of the following licenses.
Contributions made to the original PDFBox and FontBox projects:
Copyright (c) 2002-2007, www.pdfbox.org
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of pdfbox; nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Bouncy Castle encryption libraries
Copyright (c) 2000-2015 The Legion Of The Bouncy Castle
(http://www.bouncycastle.org)
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
Adobe Font Metrics (AFM) for PDF Core 14 Fonts
This file and the 14 PostScript(R) AFM files it accompanies may be used,
copied, and distributed for any purpose and without charge, with or without
modification, provided that all copyright notices are retained; that the
AFM files are not distributed without this file; that all modifications
to this file or any of the AFM files are prominently noted in the modified
file(s); and that this paragraph is not modified. Adobe Systems has no
responsibility or obligation to support the use of the AFM files.
CMaps for PDF Fonts (http://opensource.adobe.com/wiki/display/cmap/Downloads)
Copyright 1990-2009 Adobe Systems Incorporated.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
Neither the name of Adobe Systems Incorporated nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
Glyphlist (http://www.adobe.com/devnet/opentype/archives/glyph.html)
Copyright (c) 1997,1998,2002,2007 Adobe Systems Incorporated
Permission is hereby granted, free of charge, to any person obtaining a
copy of this documentation file to use, copy, publish, distribute,
sublicense, and/or sell copies of the documentation, and to permit
others to do the same, provided that:
- No modification, editing or other alteration of this document is
allowed; and
- The above copyright notice and this permission notice shall be
included in all copies of the documentation.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this documentation file, to create their own derivative works
from the content of this document to use, copy, publish, distribute,
sublicense, and/or sell the derivative works, and to permit others to do
the same, provided that the derived work is not represented as being a
copy or version of this document.
Adobe shall not be liable to any party for any loss of revenue or profit
or for indirect, incidental, special, consequential, or other similar
damages, whether based on tort (including without limitation negligence
or strict liability), contract or other legal or equitable grounds even
if Adobe has been advised or had reason to know of the possibility of
such damages. The Adobe materials are provided on an "AS IS" basis.
Adobe specifically disclaims all express, statutory, or implied
warranties relating to the Adobe materials, including but not limited to
those concerning merchantability or fitness for a particular purpose or
non-infringement of any third party rights regarding the Adobe
materials.

View file

@ -0,0 +1,264 @@
Manifest-Version: 1.0
Bnd-LastModified: 1457976458812
Build-Jdk: 1.7.0_75
Built-By: lehmi
Bundle-Description: The Apache Software Foundation provides support for
the Apache community of open-source software projects. The Apache pr
ojects are characterized by a collaborative, consensus based developmen
t process, an open and pragmatic software license, and a desire to c
reate high quality software that leads the way in its field. We cons
ider ourselves not simply a group of projects sharing a server, but rat
her a community of developers and users.
Bundle-DocURL: http://pdfbox.apache.org/
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion: 2
Bundle-Name: Apache PDFBox application
Bundle-SymbolicName: org.apache.pdfbox.app
Bundle-Vendor: The Apache Software Foundation
Bundle-Version: 2.0.0
Created-By: Apache Maven Bundle Plugin
Embed-Dependency: *;scope=provided;inline=org/apache/**|org/bouncycastle
/**
Embed-Transitive: true
Export-Package: org.apache.pdfbox.contentstream;version="2.0.0";uses:="o
rg.apache.pdfbox.contentstream.operator,org.apache.pdfbox.cos,org.apach
e.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdm
odel.font,org.apache.pdfbox.pdmodel.graphics.color,org.apache.pdfbox.pd
model.graphics.form,org.apache.pdfbox.pdmodel.graphics.image,org.apache
.pdfbox.pdmodel.graphics.pattern,org.apache.pdfbox.pdmodel.graphics.sta
te,org.apache.pdfbox.pdmodel.interactive.annotation,org.apache.pdfbox.u
til",org.apache.pdfbox.contentstream.operator;version="2.0.0";uses:="or
g.apache.pdfbox.contentstream,org.apache.pdfbox.cos",org.apache.pdfbox.
contentstream.operator.color;version="2.0.0";uses:="org.apache.pdfbox.c
ontentstream.operator,org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel.g
raphics.color",org.apache.pdfbox.contentstream.operator.graphics;versio
n="2.0.0";uses:="org.apache.pdfbox.contentstream,org.apache.pdfbox.cont
entstream.operator,org.apache.pdfbox.cos",org.apache.pdfbox.contentstre
am.operator.markedcontent;version="2.0.0";uses:="org.apache.pdfbox.cont
entstream.operator,org.apache.pdfbox.cos",org.apache.pdfbox.contentstre
am.operator.state;version="2.0.0";uses:="org.apache.pdfbox.contentstrea
m.operator,org.apache.pdfbox.cos",org.apache.pdfbox.contentstream.opera
tor.text;version="2.0.0";uses:="org.apache.pdfbox.contentstream.operato
r,org.apache.pdfbox.cos",org.apache.pdfbox.cos;version="2.0.0";uses:="o
rg.apache.pdfbox.filter,org.apache.pdfbox.io,org.apache.pdfbox.pdmodel.
common",org.apache.pdfbox.debugger;uses:="javax.swing";version="2.0.0",
org.apache.pdfbox.debugger.colorpane;uses:="javax.swing,javax.swing.eve
nt,javax.swing.table,org.apache.pdfbox.cos";version="2.0.0",org.apache.
pdfbox.debugger.flagbitspane;uses:="javax.swing,org.apache.pdfbox.cos";
version="2.0.0",org.apache.pdfbox.debugger.fontencodingpane;uses:="java
x.swing,org.apache.pdfbox.cos";version="2.0.0",org.apache.pdfbox.debugg
er.hexviewer;uses:="javax.swing";version="2.0.0",org.apache.pdfbox.debu
gger.pagepane;uses:="javax.swing.event,org.apache.pdfbox.cos,org.apache
.pdfbox.pdmodel";version="2.0.0",org.apache.pdfbox.debugger.streampane;
uses:="javax.swing,org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel";ver
sion="2.0.0",org.apache.pdfbox.debugger.streampane.tooltip;uses:="javax
.swing.text,org.apache.pdfbox.pdmodel";version="2.0.0",org.apache.pdfbo
x.debugger.stringpane;uses:="javax.swing,org.apache.pdfbox.cos";version
="2.0.0",org.apache.pdfbox.debugger.treestatus;uses:="javax.swing,javax
.swing.event,javax.swing.tree";version="2.0.0",org.apache.pdfbox.debugg
er.ui;uses:="javax.swing,javax.swing.event,javax.swing.filechooser,java
x.swing.tree,org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel";version="
2.0.0",org.apache.pdfbox.debugger.ui.textsearcher;uses:="javax.swing,ja
vax.swing.event,javax.swing.text,org.apache.pdfbox.debugger";version="2
.0.0",org.apache.pdfbox.filter;version="2.0.0";uses:="javax.imageio,org
.apache.pdfbox.cos,org.apache.pdfbox.pdmodel.graphics.color",org.apache
.pdfbox.filter.ccitt;version="2.0.0",org.apache.pdfbox.io;version="2.0.
0",org.apache.pdfbox.multipdf;version="2.0.0";uses:="org.apache.pdfbox.
io,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.graphics.form,or
g.apache.pdfbox.pdmodel.graphics.optionalcontent",org.apache.pdfbox.pdf
parser;version="2.0.0";uses:="org.apache.pdfbox.contentstream,org.apach
e.pdfbox.cos,org.apache.pdfbox.io,org.apache.pdfbox.pdfwriter,org.apach
e.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdm
odel.encryption",org.apache.pdfbox.pdfwriter;version="2.0.0";uses:="org
.apache.pdfbox.contentstream.operator,org.apache.pdfbox.cos,org.apache.
pdfbox.io,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.fdf,org.a
pache.pdfbox.pdmodel.interactive.digitalsignature",org.apache.pdfbox.pd
model;version="2.0.0";uses:="org.apache.pdfbox.contentstream,org.apache
.pdfbox.cos,org.apache.pdfbox.io,org.apache.pdfbox.pdmodel.common,org.a
pache.pdfbox.pdmodel.common.filespecification,org.apache.pdfbox.pdmodel
.documentinterchange.logicalstructure,org.apache.pdfbox.pdmodel.documen
tinterchange.markedcontent,org.apache.pdfbox.pdmodel.encryption,org.apa
che.pdfbox.pdmodel.font,org.apache.pdfbox.pdmodel.graphics,org.apache.p
dfbox.pdmodel.graphics.color,org.apache.pdfbox.pdmodel.graphics.form,or
g.apache.pdfbox.pdmodel.graphics.image,org.apache.pdfbox.pdmodel.graphi
cs.optionalcontent,org.apache.pdfbox.pdmodel.graphics.pattern,org.apach
e.pdfbox.pdmodel.graphics.shading,org.apache.pdfbox.pdmodel.graphics.st
ate,org.apache.pdfbox.pdmodel.interactive.action,org.apache.pdfbox.pdmo
del.interactive.annotation,org.apache.pdfbox.pdmodel.interactive.digita
lsignature,org.apache.pdfbox.pdmodel.interactive.documentnavigation.des
tination,org.apache.pdfbox.pdmodel.interactive.documentnavigation.outli
ne,org.apache.pdfbox.pdmodel.interactive.form,org.apache.pdfbox.pdmodel
.interactive.pagenavigation,org.apache.pdfbox.pdmodel.interactive.viewe
rpreferences,org.apache.pdfbox.util",org.apache.pdfbox.pdmodel.common;v
ersion="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,o
rg.apache.pdfbox.pdmodel.common.filespecification,org.apache.pdfbox.uti
l",org.apache.pdfbox.pdmodel.common.filespecification;version="2.0.0";u
ses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,org.apache.pdfbox
.pdmodel.common",org.apache.pdfbox.pdmodel.common.function;version="2.0
.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel.common",org.
apache.pdfbox.pdmodel.common.function.type4;version="2.0.0",org.apache.
pdfbox.pdmodel.documentinterchange.logicalstructure;version="2.0.0";use
s:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,org.apache.pdfbox.p
dmodel.common,org.apache.pdfbox.pdmodel.documentinterchange.markedconte
nt,org.apache.pdfbox.pdmodel.graphics,org.apache.pdfbox.pdmodel.interac
tive.annotation",org.apache.pdfbox.pdmodel.documentinterchange.markedco
ntent;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pd
model.common,org.apache.pdfbox.pdmodel.graphics,org.apache.pdfbox.text"
,org.apache.pdfbox.pdmodel.documentinterchange.prepress;version="2.0.0"
;uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel.common,org.apac
he.pdfbox.pdmodel.graphics,org.apache.pdfbox.pdmodel.graphics.color",or
g.apache.pdfbox.pdmodel.documentinterchange.taggedpdf;version="2.0.0";u
ses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel.common,org.apache
.pdfbox.pdmodel.documentinterchange.logicalstructure,org.apache.pdfbox.
pdmodel.documentinterchange.markedcontent,org.apache.pdfbox.pdmodel.gra
phics.color",org.apache.pdfbox.pdmodel.encryption;version="2.0.0";uses:
="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel",org.apache.pdfbox.pd
model.fdf;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbo
x.pdmodel.common,org.apache.pdfbox.pdmodel.common.filespecification,org
.apache.pdfbox.pdmodel.interactive.action,org.apache.pdfbox.pdmodel.int
eractive.annotation,org.apache.pdfbox.pdmodel.interactive.digitalsignat
ure,org.w3c.dom",org.apache.pdfbox.pdmodel.font;version="2.0.0";uses:="
org.apache.pdfbox.contentstream,org.apache.pdfbox.cos,org.apache.pdfbox
.pdmodel,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.fon
t.encoding,org.apache.pdfbox.util",org.apache.pdfbox.pdmodel.font.encod
ing;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmo
del.common",org.apache.pdfbox.pdmodel.graphics;version="2.0.0";uses:="o
rg.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmode
l.common,org.apache.pdfbox.pdmodel.font",org.apache.pdfbox.pdmodel.grap
hics.blend;version="2.0.0";uses:="org.apache.pdfbox.cos",org.apache.pdf
box.pdmodel.graphics.color;version="2.0.0";uses:="org.apache.pdfbox.cos
,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.common,org.apache.
pdfbox.pdmodel.common.function,org.apache.pdfbox.pdmodel.graphics.patte
rn,org.apache.pdfbox.util",org.apache.pdfbox.pdmodel.graphics.form;vers
ion="2.0.0";uses:="org.apache.pdfbox.contentstream,org.apache.pdfbox.co
s,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.common,org.apache
.pdfbox.pdmodel.graphics,org.apache.pdfbox.pdmodel.graphics.color,org.a
pache.pdfbox.util",org.apache.pdfbox.pdmodel.graphics.image;version="2.
0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.io,org.apache.pdfbo
x.pdmodel,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.gr
aphics,org.apache.pdfbox.pdmodel.graphics.color",org.apache.pdfbox.pdmo
del.graphics.optionalcontent;version="2.0.0";uses:="org.apache.pdfbox.c
os,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.documenti
nterchange.markedcontent",org.apache.pdfbox.pdmodel.graphics.pattern;ve
rsion="2.0.0";uses:="org.apache.pdfbox.contentstream,org.apache.pdfbox.
cos,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.common,org.apac
he.pdfbox.pdmodel.graphics.shading,org.apache.pdfbox.pdmodel.graphics.s
tate,org.apache.pdfbox.util",org.apache.pdfbox.pdmodel.graphics.shading
;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel
.common,org.apache.pdfbox.pdmodel.common.function,org.apache.pdfbox.pdm
odel.graphics.color,org.apache.pdfbox.util",org.apache.pdfbox.pdmodel.g
raphics.state;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.p
dfbox.pdmodel.common,org.apache.pdfbox.pdmodel.common.function,org.apac
he.pdfbox.pdmodel.font,org.apache.pdfbox.pdmodel.graphics,org.apache.pd
fbox.pdmodel.graphics.blend,org.apache.pdfbox.pdmodel.graphics.color,or
g.apache.pdfbox.pdmodel.graphics.form,org.apache.pdfbox.util",org.apach
e.pdfbox.pdmodel.interactive.action;version="2.0.0";uses:="org.apache.p
dfbox.cos,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.co
mmon.filespecification,org.apache.pdfbox.pdmodel.interactive.documentna
vigation.destination",org.apache.pdfbox.pdmodel.interactive.annotation;
version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,
org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.common.files
pecification,org.apache.pdfbox.pdmodel.graphics,org.apache.pdfbox.pdmod
el.graphics.color,org.apache.pdfbox.pdmodel.graphics.form,org.apache.pd
fbox.pdmodel.interactive.action,org.apache.pdfbox.pdmodel.interactive.d
ocumentnavigation.destination",org.apache.pdfbox.pdmodel.interactive.di
gitalsignature;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.
pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.interactive.digitalsign
ature.visible",org.apache.pdfbox.pdmodel.interactive.digitalsignature.v
isible;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.p
dmodel,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.graph
ics.form,org.apache.pdfbox.pdmodel.graphics.image,org.apache.pdfbox.pdm
odel.interactive.annotation,org.apache.pdfbox.pdmodel.interactive.digit
alsignature,org.apache.pdfbox.pdmodel.interactive.form",org.apache.pdfb
ox.pdmodel.interactive.documentnavigation.destination;version="2.0.0";u
ses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,org.apache.pdfbox
.pdmodel.common",org.apache.pdfbox.pdmodel.interactive.documentnavigati
on.outline;version="2.0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfb
ox.pdmodel,org.apache.pdfbox.pdmodel.common,org.apache.pdfbox.pdmodel.d
ocumentinterchange.logicalstructure,org.apache.pdfbox.pdmodel.graphics.
color,org.apache.pdfbox.pdmodel.interactive.action,org.apache.pdfbox.pd
model.interactive.documentnavigation.destination",org.apache.pdfbox.pdm
odel.interactive.form;version="2.0.0";uses:="javax.xml.parsers,org.apac
he.pdfbox.cos,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.commo
n,org.apache.pdfbox.pdmodel.fdf,org.apache.pdfbox.pdmodel.interactive.a
ction,org.apache.pdfbox.pdmodel.interactive.annotation,org.apache.pdfbo
x.pdmodel.interactive.digitalsignature,org.w3c.dom,org.xml.sax",org.apa
che.pdfbox.pdmodel.interactive.measurement;version="2.0.0";uses:="org.a
pache.pdfbox.cos,org.apache.pdfbox.pdmodel.common",org.apache.pdfbox.pd
model.interactive.pagenavigation;version="2.0.0";uses:="org.apache.pdfb
ox.cos,org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmodel.common",org.
apache.pdfbox.pdmodel.interactive.viewerpreferences;version="2.0.0";use
s:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel.common",org.apache.
pdfbox.printing;version="2.0.0";uses:="org.apache.pdfbox.pdmodel",org.a
pache.pdfbox.rendering;version="2.0.0";uses:="org.apache.pdfbox.content
stream,org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,org.apache.pdfbo
x.pdmodel.common,org.apache.pdfbox.pdmodel.font,org.apache.pdfbox.pdmod
el.graphics.color,org.apache.pdfbox.pdmodel.graphics.form,org.apache.pd
fbox.pdmodel.graphics.image,org.apache.pdfbox.pdmodel.interactive.annot
ation,org.apache.pdfbox.util",org.apache.pdfbox.resources;version="2.0.
0",org.apache.pdfbox.resources.afm;version="2.0.0",org.apache.pdfbox.re
sources.glyphlist;version="2.0.0",org.apache.pdfbox.resources.icc;versi
on="2.0.0",org.apache.pdfbox.resources.text;version="2.0.0",org.apache.
pdfbox.resources.ttf;version="2.0.0",org.apache.pdfbox.text;version="2.
0.0";uses:="org.apache.pdfbox.cos,org.apache.pdfbox.pdmodel,org.apache.
pdfbox.pdmodel.documentinterchange.markedcontent,org.apache.pdfbox.pdmo
del.font,org.apache.pdfbox.pdmodel.graphics,org.apache.pdfbox.pdmodel.i
nteractive.documentnavigation.outline,org.apache.pdfbox.util",org.apach
e.pdfbox.tools;uses:="org.apache.pdfbox.pdmodel,org.apache.pdfbox.pdmod
el.fdf,org.apache.pdfbox.pdmodel.font,org.apache.pdfbox.text";version="
2.0.0",org.apache.pdfbox.tools.imageio;version="2.0.0",org.apache.pdfbo
x.util;version="2.0.0";uses:="org.apache.pdfbox.cos",org.apache.pdfbox.
util.filetypedetector;version="2.0.0"
Implementation-Title: Apache PDFBox application
Implementation-Vendor: The Apache Software Foundation
Implementation-Vendor-Id: org.apache.pdfbox
Implementation-Version: 2.0.0
Import-Package: javax.activation;resolution:=optional,javax.crypto;resol
ution:=optional,javax.crypto.interfaces;resolution:=optional,javax.cryp
to.spec;resolution:=optional,javax.imageio;resolution:=optional,javax.i
mageio.metadata;resolution:=optional,javax.imageio.plugins.jpeg;resolut
ion:=optional,javax.imageio.stream;resolution:=optional,javax.mail;reso
lution:=optional,javax.mail.internet;resolution:=optional,javax.naming;
resolution:=optional,javax.naming.directory;resolution:=optional,javax.
print;resolution:=optional,javax.security.auth.x500;resolution:=optiona
l,javax.servlet;resolution:=optional,javax.swing;resolution:=optional,j
avax.swing.border;resolution:=optional,javax.swing.event;resolution:=op
tional,javax.swing.filechooser;resolution:=optional,javax.swing.table;r
esolution:=optional,javax.swing.text;resolution:=optional,javax.swing.t
ree;resolution:=optional,javax.xml.namespace;resolution:=optional,javax
.xml.parsers;resolution:=optional,javax.xml.transform;resolution:=optio
nal,javax.xml.transform.dom;resolution:=optional,javax.xml.transform.st
ream;resolution:=optional,javax.xml.xpath;resolution:=optional,org.apac
he.avalon.framework.logger;resolution:=optional,org.apache.log;resoluti
on:=optional,org.apache.log4j;resolution:=optional,org.apache.pdfbox.co
ntentstream.operator;version="[2.0,3)",org.apache.pdfbox.contentstream.
operator.color;version="[2.0,3)",org.apache.pdfbox.contentstream.operat
or.markedcontent;version="[2.0,3)",org.apache.pdfbox.debugger,org.apach
e.pdfbox.debugger.colorpane,org.apache.pdfbox.debugger.flagbitspane,org
.apache.pdfbox.debugger.fontencodingpane,org.apache.pdfbox.debugger.hex
viewer,org.apache.pdfbox.debugger.pagepane,org.apache.pdfbox.debugger.s
treampane,org.apache.pdfbox.debugger.streampane.tooltip,org.apache.pdfb
ox.debugger.stringpane,org.apache.pdfbox.debugger.treestatus,org.apache
.pdfbox.debugger.ui,org.apache.pdfbox.debugger.ui.textsearcher,org.apac
he.pdfbox.filter.ccitt;version="[2.0,3)",org.apache.pdfbox.pdmodel.comm
on.filespecification;version="[2.0,3)",org.apache.pdfbox.pdmodel.common
.function.type4;version="[2.0,3)",org.apache.pdfbox.pdmodel.documentint
erchange.markedcontent;version="[2.0,3)",org.apache.pdfbox.pdmodel.grap
hics;version="[2.0,3)",org.apache.pdfbox.pdmodel.graphics.form;version=
"[2.0,3)",org.apache.pdfbox.pdmodel.graphics.optionalcontent;version="[
2.0,3)",org.apache.pdfbox.pdmodel.graphics.pattern;version="[2.0,3)",or
g.apache.pdfbox.pdmodel.interactive.action;version="[2.0,3)",org.apache
.pdfbox.pdmodel.interactive.digitalsignature;version="[2.0,3)",org.apac
he.pdfbox.pdmodel.interactive.documentnavigation.destination;version="[
2.0,3)",org.apache.pdfbox.pdmodel.interactive.documentnavigation.outlin
e;version="[2.0,3)",org.apache.pdfbox.pdmodel.interactive.pagenavigatio
n;version="[2.0,3)",org.apache.pdfbox.pdmodel.interactive.viewerprefere
nces;version="[2.0,3)",org.apache.pdfbox.printing;version="[2.0,3)",org
.apache.pdfbox.util;version="[2.0,3)",org.apache.pdfbox.util.filetypede
tector;version="[2.0,3)",org.w3c.dom,org.xml.sax
Main-Class: org.apache.pdfbox.tools.PDFBox
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.6))"
Specification-Title: Apache PDFBox application
Specification-Vendor: The Apache Software Foundation
Specification-Version: 2.0.0
Tool: Bnd-3.0.0.201509101326

View file

@ -0,0 +1,10 @@
Apache PDFBox application
Copyright 2002-2016 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Based on source code originally developed in the PDFBox and FontBox projects.
Copyright (c) 2002-2007, www.pdfbox.org

View file

@ -0,0 +1,5 @@
#Generated by org.apache.felix.bundleplugin
#Mon Mar 14 18:27:38 CET 2016
version=2.0.0
groupId=org.apache.pdfbox
artifactId=pdfbox-app

View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
! Licensed to the Apache Software Foundation (ASF) under one or more
! contributor license agreements. See the NOTICE file distributed with
! this work for additional information regarding copyright ownership.
! The ASF licenses this file to You under the Apache License, Version 2.0
! (the "License"); you may not use this file except in compliance with
! the License. You may obtain a copy of the License at
!
! http://www.apache.org/licenses/LICENSE-2.0
!
! Unless required by applicable law or agreed to in writing, software
! distributed under the License is distributed on an "AS IS" BASIS,
! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
! See the License for the specific language governing permissions and
! limitations under the License.
!-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-parent</artifactId>
<version>2.0.0</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<artifactId>pdfbox-app</artifactId>
<packaging>bundle</packaging>
<name>Apache PDFBox application</name>
<url>http://pdfbox.apache.org/</url>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>org.apache.pdfbox.*</Export-Package>
<Embed-Transitive>true</Embed-Transitive>
<Embed-Dependency>*;scope=provided;inline=org/apache/**|org/bouncycastle/**</Embed-Dependency>
<Bundle-DocURL>${project.url}</Bundle-DocURL>
<Import-Package>!junit.framework,!junit.textui,javax.*;resolution:=optional,org.apache.avalon.framework.logger;resolution:=optional,org.apache.log;resolution:=optional,org.apache.log4j;resolution:=optional,*</Import-Package>
<Main-Class>org.apache.pdfbox.tools.PDFBox</Main-Class>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,39 @@
package org.apache.commons.logging;
public interface Log {
void debug(Object paramObject);
void debug(Object paramObject, Throwable paramThrowable);
void error(Object paramObject);
void error(Object paramObject, Throwable paramThrowable);
void fatal(Object paramObject);
void fatal(Object paramObject, Throwable paramThrowable);
void info(Object paramObject);
void info(Object paramObject, Throwable paramThrowable);
boolean isDebugEnabled();
boolean isErrorEnabled();
boolean isFatalEnabled();
boolean isInfoEnabled();
boolean isTraceEnabled();
boolean isWarnEnabled();
void trace(Object paramObject);
void trace(Object paramObject, Throwable paramThrowable);
void warn(Object paramObject);
void warn(Object paramObject, Throwable paramThrowable);
}

View file

@ -0,0 +1,26 @@
package org.apache.commons.logging;
public class LogConfigurationException extends RuntimeException {
private static final long serialVersionUID = 8486587136871052495L;
public LogConfigurationException() {}
public LogConfigurationException(String message) {
super(message);
}
public LogConfigurationException(Throwable cause) {
this((cause == null) ? null : cause.toString(), cause);
}
public LogConfigurationException(String message, Throwable cause) {
super(message + " (Caused by " + cause + ")");
this.cause = cause;
}
protected Throwable cause = null;
public Throwable getCause() {
return this.cause;
}
}

View file

@ -0,0 +1,693 @@
package org.apache.commons.logging;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Properties;
public abstract class LogFactory {
private static PrintStream diagnosticsStream = null;
protected static Hashtable factories = null;
protected static volatile LogFactory nullClassLoaderFactory = null;
private static final Hashtable createFactoryStore() {
String str;
Hashtable result = null;
try {
str = getSystemProperty("org.apache.commons.logging.LogFactory.HashtableImpl", null);
} catch (SecurityException ex) {
str = null;
}
if (str == null)
str = "org.apache.commons.logging.impl.WeakHashtable";
try {
Class implementationClass = Class.forName(str);
result = (Hashtable)implementationClass.newInstance();
} catch (Throwable t) {
handleThrowable(t);
if (!"org.apache.commons.logging.impl.WeakHashtable".equals(str))
if (isDiagnosticsEnabled()) {
logDiagnostic("[ERROR] LogFactory: Load of custom hashtable failed");
} else {
System.err.println("[ERROR] LogFactory: Load of custom hashtable failed");
}
}
if (result == null)
result = new Hashtable();
return result;
}
private static String trim(String src) {
if (src == null)
return null;
return src.trim();
}
protected static void handleThrowable(Throwable t) {
if (t instanceof ThreadDeath)
throw (ThreadDeath)t;
if (t instanceof VirtualMachineError)
throw (VirtualMachineError)t;
}
public static LogFactory getFactory() throws LogConfigurationException {
ClassLoader contextClassLoader = getContextClassLoaderInternal();
if (contextClassLoader == null)
if (isDiagnosticsEnabled())
logDiagnostic("Context classloader is null.");
LogFactory factory = getCachedFactory(contextClassLoader);
if (factory != null)
return factory;
if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] LogFactory implementation requested for the first time for context classloader " + objectId(contextClassLoader));
logHierarchy("[LOOKUP] ", contextClassLoader);
}
Properties props = getConfigurationFile(contextClassLoader, "commons-logging.properties");
ClassLoader baseClassLoader = contextClassLoader;
if (props != null) {
String useTCCLStr = props.getProperty("use_tccl");
if (useTCCLStr != null)
if (!Boolean.valueOf(useTCCLStr).booleanValue())
baseClassLoader = thisClassLoader;
}
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Looking for system property [org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...");
try {
String factoryClass = getSystemProperty("org.apache.commons.logging.LogFactory", null);
if (factoryClass != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Creating an instance of LogFactory class '" + factoryClass + "' as specified by system property " + "org.apache.commons.logging.LogFactory");
factory = newFactory(factoryClass, baseClassLoader, contextClassLoader);
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] No system property [org.apache.commons.logging.LogFactory] defined.");
}
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] A security exception occurred while trying to create an instance of the custom factory class: [" + trim(e.getMessage()) + "]. Trying alternative implementations...");
} catch (RuntimeException e) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] An exception occurred while trying to create an instance of the custom factory class: [" + trim(e.getMessage()) + "] as specified by a system property.");
throw e;
}
if (factory == null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Looking for a resource file of name [META-INF/services/org.apache.commons.logging.LogFactory] to define the LogFactory subclass to use...");
try {
InputStream is = getResourceAsStream(contextClassLoader, "META-INF/services/org.apache.commons.logging.LogFactory");
if (is != null) {
BufferedReader bufferedReader;
try {
bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
} catch (UnsupportedEncodingException e) {
bufferedReader = new BufferedReader(new InputStreamReader(is));
}
String factoryClassName = bufferedReader.readLine();
bufferedReader.close();
if (factoryClassName != null && !"".equals(factoryClassName)) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Creating an instance of LogFactory class " + factoryClassName + " as specified by file '" + "META-INF/services/org.apache.commons.logging.LogFactory" + "' which was present in the path of the context classloader.");
factory = newFactory(factoryClassName, baseClassLoader, contextClassLoader);
}
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] No resource file with name 'META-INF/services/org.apache.commons.logging.LogFactory' found.");
}
} catch (Exception ex) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] A security exception occurred while trying to create an instance of the custom factory class: [" + trim(ex.getMessage()) + "]. Trying alternative implementations...");
}
}
if (factory == null)
if (props != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Looking in properties file for entry with key 'org.apache.commons.logging.LogFactory' to define the LogFactory subclass to use...");
String factoryClass = props.getProperty("org.apache.commons.logging.LogFactory");
if (factoryClass != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file specifies LogFactory subclass '" + factoryClass + "'");
factory = newFactory(factoryClass, baseClassLoader, contextClassLoader);
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] Properties file has no entry specifying LogFactory subclass.");
}
} else if (isDiagnosticsEnabled()) {
logDiagnostic("[LOOKUP] No properties file available to determine LogFactory subclass from..");
}
if (factory == null) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Loading the default LogFactory implementation 'org.apache.commons.logging.impl.LogFactoryImpl' via the same classloader that loaded this LogFactory class (ie not looking in the context classloader).");
factory = newFactory("org.apache.commons.logging.impl.LogFactoryImpl", thisClassLoader, contextClassLoader);
}
if (factory != null) {
cacheFactory(contextClassLoader, factory);
if (props != null) {
Enumeration names = props.propertyNames();
while (names.hasMoreElements()) {
String name = (String)names.nextElement();
String value = props.getProperty(name);
factory.setAttribute(name, value);
}
}
}
return factory;
}
public static Log getLog(Class clazz) throws LogConfigurationException {
return getFactory().getInstance(clazz);
}
public static Log getLog(String name) throws LogConfigurationException {
return getFactory().getInstance(name);
}
public static void release(ClassLoader classLoader) {
if (isDiagnosticsEnabled())
logDiagnostic("Releasing factory for classloader " + objectId(classLoader));
Hashtable factories = LogFactory.factories;
synchronized (factories) {
if (classLoader == null) {
if (nullClassLoaderFactory != null) {
nullClassLoaderFactory.release();
nullClassLoaderFactory = null;
}
} else {
LogFactory factory = (LogFactory)factories.get(classLoader);
if (factory != null) {
factory.release();
factories.remove(classLoader);
}
}
}
}
public static void releaseAll() {
if (isDiagnosticsEnabled())
logDiagnostic("Releasing factory for all classloaders.");
Hashtable factories = LogFactory.factories;
synchronized (factories) {
Enumeration elements = factories.elements();
while (elements.hasMoreElements()) {
LogFactory element = (LogFactory)elements.nextElement();
element.release();
}
factories.clear();
if (nullClassLoaderFactory != null) {
nullClassLoaderFactory.release();
nullClassLoaderFactory = null;
}
}
}
protected static ClassLoader getClassLoader(Class clazz) {
try {
return clazz.getClassLoader();
} catch (SecurityException ex) {
if (isDiagnosticsEnabled())
logDiagnostic("Unable to get classloader for class '" + clazz + "' due to security restrictions - " + ex.getMessage());
throw ex;
}
}
protected static ClassLoader getContextClassLoader() throws LogConfigurationException {
return directGetContextClassLoader();
}
private static ClassLoader getContextClassLoaderInternal() throws LogConfigurationException {
return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return LogFactory.directGetContextClassLoader();
}
});
}
protected static ClassLoader directGetContextClassLoader() throws LogConfigurationException {
ClassLoader classLoader = null;
try {
classLoader = Thread.currentThread().getContextClassLoader();
} catch (SecurityException ex) {}
return classLoader;
}
private static LogFactory getCachedFactory(ClassLoader contextClassLoader) {
if (contextClassLoader == null)
return nullClassLoaderFactory;
return (LogFactory)factories.get(contextClassLoader);
}
private static void cacheFactory(ClassLoader classLoader, LogFactory factory) {
if (factory != null)
if (classLoader == null) {
nullClassLoaderFactory = factory;
} else {
factories.put(classLoader, factory);
}
}
protected static LogFactory newFactory(String factoryClass, ClassLoader classLoader, ClassLoader contextClassLoader) throws LogConfigurationException {
Object result = AccessController.doPrivileged(new PrivilegedAction(factoryClass, classLoader) {
private final String val$factoryClass;
private final ClassLoader val$classLoader;
{
this.val$factoryClass = param1String;
this.val$classLoader = param1ClassLoader;
}
public Object run() {
return LogFactory.createFactory(this.val$factoryClass, this.val$classLoader);
}
});
if (result instanceof LogConfigurationException) {
LogConfigurationException ex = (LogConfigurationException)result;
if (isDiagnosticsEnabled())
logDiagnostic("An error occurred while loading the factory class:" + ex.getMessage());
throw ex;
}
if (isDiagnosticsEnabled())
logDiagnostic("Created object " + objectId(result) + " to manage classloader " + objectId(contextClassLoader));
return (LogFactory)result;
}
protected static LogFactory newFactory(String factoryClass, ClassLoader classLoader) {
return newFactory(factoryClass, classLoader, null);
}
protected static Object createFactory(String factoryClass, ClassLoader classLoader) {
Class logFactoryClass = null;
try {
if (classLoader != null)
try {
logFactoryClass = classLoader.loadClass(factoryClass);
if (LogFactory.class.isAssignableFrom(logFactoryClass)) {
if (isDiagnosticsEnabled())
logDiagnostic("Loaded class " + logFactoryClass.getName() + " from classloader " + objectId(classLoader));
} else if (isDiagnosticsEnabled()) {
logDiagnostic("Factory class " + logFactoryClass.getName() + " loaded from classloader " + objectId(logFactoryClass.getClassLoader()) + " does not extend '" + LogFactory.class.getName() + "' as loaded by this classloader.");
logHierarchy("[BAD CL TREE] ", classLoader);
}
return logFactoryClass.newInstance();
} catch (ClassNotFoundException ex) {
if (classLoader == thisClassLoader) {
if (isDiagnosticsEnabled())
logDiagnostic("Unable to locate any class called '" + factoryClass + "' via classloader " + objectId(classLoader));
throw ex;
}
} catch (NoClassDefFoundError e) {
if (classLoader == thisClassLoader) {
if (isDiagnosticsEnabled())
logDiagnostic("Class '" + factoryClass + "' cannot be loaded" + " via classloader " + objectId(classLoader) + " - it depends on some other class that cannot be found.");
throw e;
}
} catch (ClassCastException e) {
if (classLoader == thisClassLoader) {
boolean implementsLogFactory = implementsLogFactory(logFactoryClass);
StringBuffer msg = new StringBuffer();
msg.append("The application has specified that a custom LogFactory implementation ");
msg.append("should be used but Class '");
msg.append(factoryClass);
msg.append("' cannot be converted to '");
msg.append(LogFactory.class.getName());
msg.append("'. ");
if (implementsLogFactory) {
msg.append("The conflict is caused by the presence of multiple LogFactory classes ");
msg.append("in incompatible classloaders. ");
msg.append("Background can be found in http://commons.apache.org/logging/tech.html. ");
msg.append("If you have not explicitly specified a custom LogFactory then it is likely ");
msg.append("that the container has set one without your knowledge. ");
msg.append("In this case, consider using the commons-logging-adapters.jar file or ");
msg.append("specifying the standard LogFactory from the command line. ");
} else {
msg.append("Please check the custom implementation. ");
}
msg.append("Help can be found @http://commons.apache.org/logging/troubleshooting.html.");
if (isDiagnosticsEnabled())
logDiagnostic(msg.toString());
throw new ClassCastException(msg.toString());
}
}
if (isDiagnosticsEnabled())
logDiagnostic("Unable to load factory class via classloader " + objectId(classLoader) + " - trying the classloader associated with this LogFactory.");
logFactoryClass = Class.forName(factoryClass);
return logFactoryClass.newInstance();
} catch (Exception e) {
if (isDiagnosticsEnabled())
logDiagnostic("Unable to create LogFactory instance.");
if (logFactoryClass != null && !LogFactory.class.isAssignableFrom(logFactoryClass))
return new LogConfigurationException("The chosen LogFactory implementation does not extend LogFactory. Please check your configuration.", e);
return new LogConfigurationException(e);
}
}
private static boolean implementsLogFactory(Class logFactoryClass) {
boolean implementsLogFactory = false;
if (logFactoryClass != null)
try {
ClassLoader logFactoryClassLoader = logFactoryClass.getClassLoader();
if (logFactoryClassLoader == null) {
logDiagnostic("[CUSTOM LOG FACTORY] was loaded by the boot classloader");
} else {
logHierarchy("[CUSTOM LOG FACTORY] ", logFactoryClassLoader);
Class factoryFromCustomLoader = Class.forName("org.apache.commons.logging.LogFactory", false, logFactoryClassLoader);
implementsLogFactory = factoryFromCustomLoader.isAssignableFrom(logFactoryClass);
if (implementsLogFactory) {
logDiagnostic("[CUSTOM LOG FACTORY] " + logFactoryClass.getName() + " implements LogFactory but was loaded by an incompatible classloader.");
} else {
logDiagnostic("[CUSTOM LOG FACTORY] " + logFactoryClass.getName() + " does not implement LogFactory.");
}
}
} catch (SecurityException e) {
logDiagnostic("[CUSTOM LOG FACTORY] SecurityException thrown whilst trying to determine whether the compatibility was caused by a classloader conflict: " + e.getMessage());
} catch (LinkageError e) {
logDiagnostic("[CUSTOM LOG FACTORY] LinkageError thrown whilst trying to determine whether the compatibility was caused by a classloader conflict: " + e.getMessage());
} catch (ClassNotFoundException e) {
logDiagnostic("[CUSTOM LOG FACTORY] LogFactory class cannot be loaded by classloader which loaded the custom LogFactory implementation. Is the custom factory in the right classloader?");
}
return implementsLogFactory;
}
private static InputStream getResourceAsStream(ClassLoader loader, String name) {
return (InputStream)AccessController.doPrivileged(new PrivilegedAction(loader, name) {
private final ClassLoader val$loader;
private final String val$name;
{
this.val$loader = param1ClassLoader;
this.val$name = param1String;
}
public Object run() {
if (this.val$loader != null)
return this.val$loader.getResourceAsStream(this.val$name);
return ClassLoader.getSystemResourceAsStream(this.val$name);
}
});
}
private static Enumeration getResources(ClassLoader loader, String name) {
PrivilegedAction action = new PrivilegedAction(loader, name) {
private final ClassLoader val$loader;
private final String val$name;
{
this.val$loader = param1ClassLoader;
this.val$name = param1String;
}
public Object run() {
try {
if (this.val$loader != null)
return this.val$loader.getResources(this.val$name);
return ClassLoader.getSystemResources(this.val$name);
} catch (IOException e) {
if (LogFactory.isDiagnosticsEnabled())
LogFactory.logDiagnostic("Exception while trying to find configuration file " + this.val$name + ":" + e.getMessage());
return null;
} catch (NoSuchMethodError e) {
return null;
}
}
};
Object result = AccessController.doPrivileged(action);
return (Enumeration)result;
}
private static Properties getProperties(URL url) {
PrivilegedAction action = new PrivilegedAction(url) {
private final URL val$url;
{
this.val$url = param1URL;
}
public Object run() {
InputStream stream = null;
try {
URLConnection connection = this.val$url.openConnection();
connection.setUseCaches(false);
stream = connection.getInputStream();
if (stream != null) {
Properties props = new Properties();
props.load(stream);
stream.close();
stream = null;
return props;
}
} catch (IOException e) {
if (LogFactory.isDiagnosticsEnabled())
LogFactory.logDiagnostic("Unable to read URL " + this.val$url);
} finally {
if (stream != null)
try {
stream.close();
} catch (IOException e) {
if (LogFactory.isDiagnosticsEnabled())
LogFactory.logDiagnostic("Unable to close stream for URL " + this.val$url);
}
}
return null;
}
};
return (Properties)AccessController.doPrivileged(action);
}
private static final Properties getConfigurationFile(ClassLoader classLoader, String fileName) {
Properties props = null;
double priority = 0.0D;
URL propsUrl = null;
try {
Enumeration urls = getResources(classLoader, fileName);
if (urls == null)
return null;
while (urls.hasMoreElements()) {
URL url = (URL)urls.nextElement();
Properties newProps = getProperties(url);
if (newProps != null) {
if (props == null) {
propsUrl = url;
props = newProps;
String priorityStr = props.getProperty("priority");
priority = 0.0D;
if (priorityStr != null)
priority = Double.parseDouble(priorityStr);
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file found at '" + url + "'" + " with priority " + priority);
continue;
}
String newPriorityStr = newProps.getProperty("priority");
double newPriority = 0.0D;
if (newPriorityStr != null)
newPriority = Double.parseDouble(newPriorityStr);
if (newPriority > priority) {
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file at '" + url + "'" + " with priority " + newPriority + " overrides file at '" + propsUrl + "'" + " with priority " + priority);
propsUrl = url;
props = newProps;
priority = newPriority;
continue;
}
if (isDiagnosticsEnabled())
logDiagnostic("[LOOKUP] Properties file at '" + url + "'" + " with priority " + newPriority + " does not override file at '" + propsUrl + "'" + " with priority " + priority);
}
}
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("SecurityException thrown while trying to find/read config files.");
}
if (isDiagnosticsEnabled())
if (props == null) {
logDiagnostic("[LOOKUP] No properties file of name '" + fileName + "' found.");
} else {
logDiagnostic("[LOOKUP] Properties file of name '" + fileName + "' found at '" + propsUrl + '"');
}
return props;
}
private static String getSystemProperty(String key, String def) throws SecurityException {
return (String)AccessController.doPrivileged(new PrivilegedAction(key, def) {
private final String val$key;
private final String val$def;
{
this.val$key = param1String1;
this.val$def = param1String2;
}
public Object run() {
return System.getProperty(this.val$key, this.val$def);
}
});
}
private static PrintStream initDiagnostics() {
String dest;
try {
dest = getSystemProperty("org.apache.commons.logging.diagnostics.dest", null);
if (dest == null)
return null;
} catch (SecurityException ex) {
return null;
}
if (dest.equals("STDOUT"))
return System.out;
if (dest.equals("STDERR"))
return System.err;
try {
FileOutputStream fos = new FileOutputStream(dest, true);
return new PrintStream(fos);
} catch (IOException ex) {
return null;
}
}
protected static boolean isDiagnosticsEnabled() {
return (diagnosticsStream != null);
}
private static final void logDiagnostic(String msg) {
if (diagnosticsStream != null) {
diagnosticsStream.print(diagnosticPrefix);
diagnosticsStream.println(msg);
diagnosticsStream.flush();
}
}
protected static final void logRawDiagnostic(String msg) {
if (diagnosticsStream != null) {
diagnosticsStream.println(msg);
diagnosticsStream.flush();
}
}
private static void logClassLoaderEnvironment(Class clazz) {
ClassLoader classLoader;
if (!isDiagnosticsEnabled())
return;
try {
logDiagnostic("[ENV] Extension directories (java.ext.dir): " + System.getProperty("java.ext.dir"));
logDiagnostic("[ENV] Application classpath (java.class.path): " + System.getProperty("java.class.path"));
} catch (SecurityException ex) {
logDiagnostic("[ENV] Security setting prevent interrogation of system classpaths.");
}
String className = clazz.getName();
try {
classLoader = getClassLoader(clazz);
} catch (SecurityException ex) {
logDiagnostic("[ENV] Security forbids determining the classloader for " + className);
return;
}
logDiagnostic("[ENV] Class " + className + " was loaded via classloader " + objectId(classLoader));
logHierarchy("[ENV] Ancestry of classloader which loaded " + className + " is ", classLoader);
}
private static void logHierarchy(String prefix, ClassLoader classLoader) {
ClassLoader systemClassLoader;
if (!isDiagnosticsEnabled())
return;
if (classLoader != null) {
String classLoaderString = classLoader.toString();
logDiagnostic(prefix + objectId(classLoader) + " == '" + classLoaderString + "'");
}
try {
systemClassLoader = ClassLoader.getSystemClassLoader();
} catch (SecurityException ex) {
logDiagnostic(prefix + "Security forbids determining the system classloader.");
return;
}
if (classLoader != null) {
StringBuffer buf = new StringBuffer(prefix + "ClassLoader tree:");
while (true) {
buf.append(objectId(classLoader));
if (classLoader == systemClassLoader)
buf.append(" (SYSTEM) ");
try {
classLoader = classLoader.getParent();
} catch (SecurityException ex) {
buf.append(" --> SECRET");
break;
}
buf.append(" --> ");
if (classLoader == null) {
buf.append("BOOT");
break;
}
}
logDiagnostic(buf.toString());
}
}
public static String objectId(Object o) {
if (o == null)
return "null";
return o.getClass().getName() + "@" + System.identityHashCode(o);
}
private static final ClassLoader thisClassLoader = getClassLoader(LogFactory.class);
public static final String PRIORITY_KEY = "priority";
public static final String TCCL_KEY = "use_tccl";
public static final String FACTORY_PROPERTY = "org.apache.commons.logging.LogFactory";
public static final String FACTORY_DEFAULT = "org.apache.commons.logging.impl.LogFactoryImpl";
public static final String FACTORY_PROPERTIES = "commons-logging.properties";
protected static final String SERVICE_ID = "META-INF/services/org.apache.commons.logging.LogFactory";
public static final String DIAGNOSTICS_DEST_PROPERTY = "org.apache.commons.logging.diagnostics.dest";
private static final String diagnosticPrefix;
public static final String HASHTABLE_IMPLEMENTATION_PROPERTY = "org.apache.commons.logging.LogFactory.HashtableImpl";
private static final String WEAK_HASHTABLE_CLASSNAME = "org.apache.commons.logging.impl.WeakHashtable";
static {
String str;
try {
ClassLoader classLoader = thisClassLoader;
if (thisClassLoader == null) {
str = "BOOTLOADER";
} else {
str = objectId(classLoader);
}
} catch (SecurityException e) {
str = "UNKNOWN";
}
diagnosticPrefix = "[LogFactory from " + str + "] ";
diagnosticsStream = initDiagnostics();
logClassLoaderEnvironment(LogFactory.class);
factories = createFactoryStore();
if (isDiagnosticsEnabled())
logDiagnostic("BOOTSTRAP COMPLETED");
}
public abstract Object getAttribute(String paramString);
public abstract String[] getAttributeNames();
public abstract Log getInstance(Class paramClass) throws LogConfigurationException;
public abstract Log getInstance(String paramString) throws LogConfigurationException;
public abstract void release();
public abstract void removeAttribute(String paramString);
public abstract void setAttribute(String paramString, Object paramObject);
}

View file

@ -0,0 +1,104 @@
package org.apache.commons.logging;
import java.lang.reflect.Constructor;
import java.util.Hashtable;
import org.apache.commons.logging.impl.NoOpLog;
public class LogSource {
protected static Hashtable logs = new Hashtable();
protected static boolean log4jIsAvailable = false;
protected static boolean jdk14IsAvailable = false;
protected static Constructor logImplctor = null;
static {
try {
log4jIsAvailable = (null != Class.forName("org.apache.log4j.Logger"));
} catch (Throwable t) {
log4jIsAvailable = false;
}
try {
jdk14IsAvailable = (null != Class.forName("java.util.logging.Logger") && null != Class.forName("org.apache.commons.logging.impl.Jdk14Logger"));
} catch (Throwable t) {
jdk14IsAvailable = false;
}
String name = null;
try {
name = System.getProperty("org.apache.commons.logging.log");
if (name == null)
name = System.getProperty("org.apache.commons.logging.Log");
} catch (Throwable t) {}
if (name != null) {
try {
setLogImplementation(name);
} catch (Throwable t) {
try {
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");
} catch (Throwable u) {}
}
} else {
try {
if (log4jIsAvailable) {
setLogImplementation("org.apache.commons.logging.impl.Log4JLogger");
} else if (jdk14IsAvailable) {
setLogImplementation("org.apache.commons.logging.impl.Jdk14Logger");
} else {
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");
}
} catch (Throwable t) {
try {
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");
} catch (Throwable u) {}
}
}
}
public static void setLogImplementation(String classname) throws LinkageError, NoSuchMethodException, SecurityException, ClassNotFoundException {
try {
Class logclass = Class.forName(classname);
Class[] argtypes = new Class[1];
argtypes[0] = "".getClass();
logImplctor = logclass.getConstructor(argtypes);
} catch (Throwable t) {
logImplctor = null;
}
}
public static void setLogImplementation(Class logclass) throws LinkageError, ExceptionInInitializerError, NoSuchMethodException, SecurityException {
Class[] argtypes = new Class[1];
argtypes[0] = "".getClass();
logImplctor = logclass.getConstructor(argtypes);
}
public static Log getInstance(String name) {
Log log = (Log)logs.get(name);
if (null == log) {
log = makeNewLogInstance(name);
logs.put(name, log);
}
return log;
}
public static Log getInstance(Class clazz) {
return getInstance(clazz.getName());
}
public static Log makeNewLogInstance(String name) {
NoOpLog noOpLog;
try {
Object[] args = { name };
noOpLog = (NoOpLog)logImplctor.newInstance(args);
} catch (Throwable t) {
noOpLog = null;
}
if (null == noOpLog)
noOpLog = new NoOpLog(name);
return noOpLog;
}
public static String[] getLogNames() {
return (String[])logs.keySet().toArray(new String[logs.size()]);
}
}

View file

@ -0,0 +1,112 @@
package org.apache.commons.logging.impl;
import org.apache.avalon.framework.logger.Logger;
import org.apache.commons.logging.Log;
public class AvalonLogger implements Log {
private static volatile Logger defaultLogger = null;
private final transient Logger logger;
public AvalonLogger(Logger logger) {
this.logger = logger;
}
public AvalonLogger(String name) {
if (defaultLogger == null)
throw new NullPointerException("default logger has to be specified if this constructor is used!");
this.logger = defaultLogger.getChildLogger(name);
}
public Logger getLogger() {
return this.logger;
}
public static void setDefaultLogger(Logger logger) {
defaultLogger = logger;
}
public void debug(Object message, Throwable t) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message), t);
}
public void debug(Object message) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message));
}
public void error(Object message, Throwable t) {
if (getLogger().isErrorEnabled())
getLogger().error(String.valueOf(message), t);
}
public void error(Object message) {
if (getLogger().isErrorEnabled())
getLogger().error(String.valueOf(message));
}
public void fatal(Object message, Throwable t) {
if (getLogger().isFatalErrorEnabled())
getLogger().fatalError(String.valueOf(message), t);
}
public void fatal(Object message) {
if (getLogger().isFatalErrorEnabled())
getLogger().fatalError(String.valueOf(message));
}
public void info(Object message, Throwable t) {
if (getLogger().isInfoEnabled())
getLogger().info(String.valueOf(message), t);
}
public void info(Object message) {
if (getLogger().isInfoEnabled())
getLogger().info(String.valueOf(message));
}
public boolean isDebugEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isErrorEnabled() {
return getLogger().isErrorEnabled();
}
public boolean isFatalEnabled() {
return getLogger().isFatalErrorEnabled();
}
public boolean isInfoEnabled() {
return getLogger().isInfoEnabled();
}
public boolean isTraceEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isWarnEnabled() {
return getLogger().isWarnEnabled();
}
public void trace(Object message, Throwable t) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message), t);
}
public void trace(Object message) {
if (getLogger().isDebugEnabled())
getLogger().debug(String.valueOf(message));
}
public void warn(Object message, Throwable t) {
if (getLogger().isWarnEnabled())
getLogger().warn(String.valueOf(message), t);
}
public void warn(Object message) {
if (getLogger().isWarnEnabled())
getLogger().warn(String.valueOf(message));
}
}

View file

@ -0,0 +1,147 @@
package org.apache.commons.logging.impl;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import org.apache.commons.logging.Log;
public class Jdk13LumberjackLogger implements Log, Serializable {
private static final long serialVersionUID = -8649807923527610591L;
protected transient Logger logger = null;
protected String name = null;
private String sourceClassName = "unknown";
private String sourceMethodName = "unknown";
private boolean classAndMethodFound = false;
protected static final Level dummyLevel = Level.FINE;
public Jdk13LumberjackLogger(String name) {
this.name = name;
this.logger = getLogger();
}
private void log(Level level, String msg, Throwable ex) {
if (getLogger().isLoggable(level)) {
LogRecord record = new LogRecord(level, msg);
if (!this.classAndMethodFound)
getClassAndMethod();
record.setSourceClassName(this.sourceClassName);
record.setSourceMethodName(this.sourceMethodName);
if (ex != null)
record.setThrown(ex);
getLogger().log(record);
}
}
private void getClassAndMethod() {
try {
Throwable throwable = new Throwable();
throwable.fillInStackTrace();
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
throwable.printStackTrace(printWriter);
String traceString = stringWriter.getBuffer().toString();
StringTokenizer tokenizer = new StringTokenizer(traceString, "\n");
tokenizer.nextToken();
String line = tokenizer.nextToken();
while (line.indexOf(getClass().getName()) == -1)
line = tokenizer.nextToken();
while (line.indexOf(getClass().getName()) >= 0)
line = tokenizer.nextToken();
int start = line.indexOf("at ") + 3;
int end = line.indexOf('(');
String temp = line.substring(start, end);
int lastPeriod = temp.lastIndexOf('.');
this.sourceClassName = temp.substring(0, lastPeriod);
this.sourceMethodName = temp.substring(lastPeriod + 1);
} catch (Exception ex) {}
this.classAndMethodFound = true;
}
public void debug(Object message) {
log(Level.FINE, String.valueOf(message), null);
}
public void debug(Object message, Throwable exception) {
log(Level.FINE, String.valueOf(message), exception);
}
public void error(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void error(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public void fatal(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void fatal(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public Logger getLogger() {
if (this.logger == null)
this.logger = Logger.getLogger(this.name);
return this.logger;
}
public void info(Object message) {
log(Level.INFO, String.valueOf(message), null);
}
public void info(Object message, Throwable exception) {
log(Level.INFO, String.valueOf(message), exception);
}
public boolean isDebugEnabled() {
return getLogger().isLoggable(Level.FINE);
}
public boolean isErrorEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isFatalEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isInfoEnabled() {
return getLogger().isLoggable(Level.INFO);
}
public boolean isTraceEnabled() {
return getLogger().isLoggable(Level.FINEST);
}
public boolean isWarnEnabled() {
return getLogger().isLoggable(Level.WARNING);
}
public void trace(Object message) {
log(Level.FINEST, String.valueOf(message), null);
}
public void trace(Object message, Throwable exception) {
log(Level.FINEST, String.valueOf(message), exception);
}
public void warn(Object message) {
log(Level.WARNING, String.valueOf(message), null);
}
public void warn(Object message, Throwable exception) {
log(Level.WARNING, String.valueOf(message), exception);
}
}

View file

@ -0,0 +1,118 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.logging.Log;
public class Jdk14Logger implements Log, Serializable {
private static final long serialVersionUID = 4784713551416303804L;
protected static final Level dummyLevel = Level.FINE;
public Jdk14Logger(String name) {
this.name = name;
this.logger = getLogger();
}
protected transient Logger logger = null;
protected String name = null;
protected void log(Level level, String msg, Throwable ex) {
Logger logger = getLogger();
if (logger.isLoggable(level)) {
Throwable dummyException = new Throwable();
StackTraceElement[] locations = dummyException.getStackTrace();
String cname = this.name;
String method = "unknown";
if (locations != null && locations.length > 2) {
StackTraceElement caller = locations[2];
method = caller.getMethodName();
}
if (ex == null) {
logger.logp(level, cname, method, msg);
} else {
logger.logp(level, cname, method, msg, ex);
}
}
}
public void debug(Object message) {
log(Level.FINE, String.valueOf(message), null);
}
public void debug(Object message, Throwable exception) {
log(Level.FINE, String.valueOf(message), exception);
}
public void error(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void error(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public void fatal(Object message) {
log(Level.SEVERE, String.valueOf(message), null);
}
public void fatal(Object message, Throwable exception) {
log(Level.SEVERE, String.valueOf(message), exception);
}
public Logger getLogger() {
if (this.logger == null)
this.logger = Logger.getLogger(this.name);
return this.logger;
}
public void info(Object message) {
log(Level.INFO, String.valueOf(message), null);
}
public void info(Object message, Throwable exception) {
log(Level.INFO, String.valueOf(message), exception);
}
public boolean isDebugEnabled() {
return getLogger().isLoggable(Level.FINE);
}
public boolean isErrorEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isFatalEnabled() {
return getLogger().isLoggable(Level.SEVERE);
}
public boolean isInfoEnabled() {
return getLogger().isLoggable(Level.INFO);
}
public boolean isTraceEnabled() {
return getLogger().isLoggable(Level.FINEST);
}
public boolean isWarnEnabled() {
return getLogger().isLoggable(Level.WARNING);
}
public void trace(Object message) {
log(Level.FINEST, String.valueOf(message), null);
}
public void trace(Object message, Throwable exception) {
log(Level.FINEST, String.valueOf(message), exception);
}
public void warn(Object message) {
log(Level.WARNING, String.valueOf(message), null);
}
public void warn(Object message, Throwable exception) {
log(Level.WARNING, String.valueOf(message), exception);
}
}

View file

@ -0,0 +1,130 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import org.apache.commons.logging.Log;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
public class Log4JLogger implements Log, Serializable {
private static final long serialVersionUID = 5160705895411730424L;
private static final String FQCN = Log4JLogger.class.getName();
private volatile transient Logger logger = null;
private final String name;
private static final Priority traceLevel;
static {
Level level;
if (!Priority.class.isAssignableFrom(Level.class))
throw new InstantiationError("Log4J 1.2 not available");
try {
Priority _traceLevel = (Priority)Level.class.getDeclaredField("TRACE").get(null);
} catch (Exception ex) {
level = Level.DEBUG;
}
traceLevel = (Priority)level;
}
public Log4JLogger() {
this.name = null;
}
public Log4JLogger(String name) {
this.name = name;
this.logger = getLogger();
}
public Log4JLogger(Logger logger) {
if (logger == null)
throw new IllegalArgumentException("Warning - null logger in constructor; possible log4j misconfiguration.");
this.name = logger.getName();
this.logger = logger;
}
public void trace(Object message) {
getLogger().log(FQCN, traceLevel, message, null);
}
public void trace(Object message, Throwable t) {
getLogger().log(FQCN, traceLevel, message, t);
}
public void debug(Object message) {
getLogger().log(FQCN, (Priority)Level.DEBUG, message, null);
}
public void debug(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.DEBUG, message, t);
}
public void info(Object message) {
getLogger().log(FQCN, (Priority)Level.INFO, message, null);
}
public void info(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.INFO, message, t);
}
public void warn(Object message) {
getLogger().log(FQCN, (Priority)Level.WARN, message, null);
}
public void warn(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.WARN, message, t);
}
public void error(Object message) {
getLogger().log(FQCN, (Priority)Level.ERROR, message, null);
}
public void error(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.ERROR, message, t);
}
public void fatal(Object message) {
getLogger().log(FQCN, (Priority)Level.FATAL, message, null);
}
public void fatal(Object message, Throwable t) {
getLogger().log(FQCN, (Priority)Level.FATAL, message, t);
}
public Logger getLogger() {
Logger result = this.logger;
if (result == null)
synchronized (this) {
result = this.logger;
if (result == null)
this.logger = result = Logger.getLogger(this.name);
}
return result;
}
public boolean isDebugEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isErrorEnabled() {
return getLogger().isEnabledFor((Priority)Level.ERROR);
}
public boolean isFatalEnabled() {
return getLogger().isEnabledFor((Priority)Level.FATAL);
}
public boolean isInfoEnabled() {
return getLogger().isInfoEnabled();
}
public boolean isTraceEnabled() {
return getLogger().isEnabledFor(traceLevel);
}
public boolean isWarnEnabled() {
return getLogger().isEnabledFor((Priority)Level.WARN);
}
}

View file

@ -0,0 +1,587 @@
package org.apache.commons.logging.impl;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Hashtable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
import org.apache.commons.logging.LogFactory;
public class LogFactoryImpl extends LogFactory {
private static final String LOGGING_IMPL_LOG4J_LOGGER = "org.apache.commons.logging.impl.Log4JLogger";
private static final String LOGGING_IMPL_JDK14_LOGGER = "org.apache.commons.logging.impl.Jdk14Logger";
private static final String LOGGING_IMPL_LUMBERJACK_LOGGER = "org.apache.commons.logging.impl.Jdk13LumberjackLogger";
private static final String LOGGING_IMPL_SIMPLE_LOGGER = "org.apache.commons.logging.impl.SimpleLog";
private static final String PKG_IMPL = "org.apache.commons.logging.impl.";
private static final int PKG_LEN = "org.apache.commons.logging.impl.".length();
public static final String LOG_PROPERTY = "org.apache.commons.logging.Log";
protected static final String LOG_PROPERTY_OLD = "org.apache.commons.logging.log";
public static final String ALLOW_FLAWED_CONTEXT_PROPERTY = "org.apache.commons.logging.Log.allowFlawedContext";
public static final String ALLOW_FLAWED_DISCOVERY_PROPERTY = "org.apache.commons.logging.Log.allowFlawedDiscovery";
public static final String ALLOW_FLAWED_HIERARCHY_PROPERTY = "org.apache.commons.logging.Log.allowFlawedHierarchy";
public LogFactoryImpl() {
initDiagnostics();
if (isDiagnosticsEnabled())
logDiagnostic("Instance created.");
}
private static final String[] classesToDiscover = new String[] { "org.apache.commons.logging.impl.Log4JLogger", "org.apache.commons.logging.impl.Jdk14Logger", "org.apache.commons.logging.impl.Jdk13LumberjackLogger", "org.apache.commons.logging.impl.SimpleLog" };
private boolean useTCCL = true;
private String diagnosticPrefix;
protected Hashtable attributes = new Hashtable();
protected Hashtable instances = new Hashtable();
private String logClassName;
protected Constructor logConstructor = null;
protected Class[] logConstructorSignature = new Class[] { String.class };
protected Method logMethod = null;
protected Class[] logMethodSignature = new Class[] { LogFactory.class };
private boolean allowFlawedContext;
private boolean allowFlawedDiscovery;
private boolean allowFlawedHierarchy;
public Object getAttribute(String name) {
return this.attributes.get(name);
}
public String[] getAttributeNames() {
return (String[])this.attributes.keySet().toArray(new String[this.attributes.size()]);
}
public Log getInstance(Class clazz) throws LogConfigurationException {
return getInstance(clazz.getName());
}
public Log getInstance(String name) throws LogConfigurationException {
Log instance = (Log)this.instances.get(name);
if (instance == null) {
instance = newInstance(name);
this.instances.put(name, instance);
}
return instance;
}
public void release() {
logDiagnostic("Releasing all known loggers");
this.instances.clear();
}
public void removeAttribute(String name) {
this.attributes.remove(name);
}
public void setAttribute(String name, Object value) {
if (this.logConstructor != null)
logDiagnostic("setAttribute: call too late; configuration already performed.");
if (value == null) {
this.attributes.remove(name);
} else {
this.attributes.put(name, value);
}
if (name.equals("use_tccl"))
this.useTCCL = (value != null && Boolean.valueOf(value.toString()).booleanValue());
}
protected static ClassLoader getContextClassLoader() throws LogConfigurationException {
return LogFactory.getContextClassLoader();
}
protected static boolean isDiagnosticsEnabled() {
return LogFactory.isDiagnosticsEnabled();
}
protected static ClassLoader getClassLoader(Class clazz) {
return LogFactory.getClassLoader(clazz);
}
private void initDiagnostics() {
String str;
Class clazz = getClass();
ClassLoader classLoader = getClassLoader(clazz);
try {
if (classLoader == null) {
str = "BOOTLOADER";
} else {
str = objectId(classLoader);
}
} catch (SecurityException e) {
str = "UNKNOWN";
}
this.diagnosticPrefix = "[LogFactoryImpl@" + System.identityHashCode(this) + " from " + str + "] ";
}
protected void logDiagnostic(String msg) {
if (isDiagnosticsEnabled())
logRawDiagnostic(this.diagnosticPrefix + msg);
}
protected String getLogClassName() {
if (this.logClassName == null)
discoverLogImplementation(getClass().getName());
return this.logClassName;
}
protected Constructor getLogConstructor() throws LogConfigurationException {
if (this.logConstructor == null)
discoverLogImplementation(getClass().getName());
return this.logConstructor;
}
protected boolean isJdk13LumberjackAvailable() {
return isLogLibraryAvailable("Jdk13Lumberjack", "org.apache.commons.logging.impl.Jdk13LumberjackLogger");
}
protected boolean isJdk14Available() {
return isLogLibraryAvailable("Jdk14", "org.apache.commons.logging.impl.Jdk14Logger");
}
protected boolean isLog4JAvailable() {
return isLogLibraryAvailable("Log4J", "org.apache.commons.logging.impl.Log4JLogger");
}
protected Log newInstance(String name) throws LogConfigurationException {
try {
Log instance;
if (this.logConstructor == null) {
instance = discoverLogImplementation(name);
} else {
Object[] params = { name };
instance = (Log)this.logConstructor.newInstance(params);
}
if (this.logMethod != null) {
Object[] params = { this };
this.logMethod.invoke(instance, params);
}
return instance;
} catch (LogConfigurationException lce) {
throw lce;
} catch (InvocationTargetException e) {
Throwable c = e.getTargetException();
throw new LogConfigurationException((c == null) ? e : c);
} catch (Throwable t) {
handleThrowable(t);
throw new LogConfigurationException(t);
}
}
private static ClassLoader getContextClassLoaderInternal() throws LogConfigurationException {
return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return LogFactoryImpl.directGetContextClassLoader();
}
});
}
private static String getSystemProperty(String key, String def) throws SecurityException {
return (String)AccessController.doPrivileged(new PrivilegedAction(key, def) {
private final String val$key;
private final String val$def;
{
this.val$key = param1String1;
this.val$def = param1String2;
}
public Object run() {
return System.getProperty(this.val$key, this.val$def);
}
});
}
private ClassLoader getParentClassLoader(ClassLoader cl) {
try {
return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction(this, cl) {
private final ClassLoader val$cl;
private final LogFactoryImpl this$0;
{
this.this$0 = this$0;
this.val$cl = param1ClassLoader;
}
public Object run() {
return this.val$cl.getParent();
}
});
} catch (SecurityException ex) {
logDiagnostic("[SECURITY] Unable to obtain parent classloader");
return null;
}
}
private boolean isLogLibraryAvailable(String name, String classname) {
if (isDiagnosticsEnabled())
logDiagnostic("Checking for '" + name + "'.");
try {
Log log = createLogFromClass(classname, getClass().getName(), false);
if (log == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Did not find '" + name + "'.");
return false;
}
if (isDiagnosticsEnabled())
logDiagnostic("Found '" + name + "'.");
return true;
} catch (LogConfigurationException e) {
if (isDiagnosticsEnabled())
logDiagnostic("Logging system '" + name + "' is available but not useable.");
return false;
}
}
private String getConfigurationValue(String property) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Trying to get configuration for item " + property);
Object valueObj = getAttribute(property);
if (valueObj != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Found LogFactory attribute [" + valueObj + "] for " + property);
return valueObj.toString();
}
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] No LogFactory attribute found for " + property);
try {
String value = getSystemProperty(property, null);
if (value != null) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Found system property [" + value + "] for " + property);
return value;
}
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] No system property found for property " + property);
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] Security prevented reading system property " + property);
}
if (isDiagnosticsEnabled())
logDiagnostic("[ENV] No configuration defined for item " + property);
return null;
}
private boolean getBooleanConfiguration(String key, boolean dflt) {
String val = getConfigurationValue(key);
if (val == null)
return dflt;
return Boolean.valueOf(val).booleanValue();
}
private void initConfiguration() {
this.allowFlawedContext = getBooleanConfiguration("org.apache.commons.logging.Log.allowFlawedContext", true);
this.allowFlawedDiscovery = getBooleanConfiguration("org.apache.commons.logging.Log.allowFlawedDiscovery", true);
this.allowFlawedHierarchy = getBooleanConfiguration("org.apache.commons.logging.Log.allowFlawedHierarchy", true);
}
private Log discoverLogImplementation(String logCategory) throws LogConfigurationException {
if (isDiagnosticsEnabled())
logDiagnostic("Discovering a Log implementation...");
initConfiguration();
Log result = null;
String specifiedLogClassName = findUserSpecifiedLogClassName();
if (specifiedLogClassName != null) {
if (isDiagnosticsEnabled())
logDiagnostic("Attempting to load user-specified log class '" + specifiedLogClassName + "'...");
result = createLogFromClass(specifiedLogClassName, logCategory, true);
if (result == null) {
StringBuffer messageBuffer = new StringBuffer("User-specified log class '");
messageBuffer.append(specifiedLogClassName);
messageBuffer.append("' cannot be found or is not useable.");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.Log4JLogger");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.Jdk14Logger");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.Jdk13LumberjackLogger");
informUponSimilarName(messageBuffer, specifiedLogClassName, "org.apache.commons.logging.impl.SimpleLog");
throw new LogConfigurationException(messageBuffer.toString());
}
return result;
}
if (isDiagnosticsEnabled())
logDiagnostic("No user-specified Log implementation; performing discovery using the standard supported logging implementations...");
for (int i = 0; i < classesToDiscover.length && result == null; i++)
result = createLogFromClass(classesToDiscover[i], logCategory, true);
if (result == null)
throw new LogConfigurationException("No suitable Log implementation");
return result;
}
private void informUponSimilarName(StringBuffer messageBuffer, String name, String candidate) {
if (name.equals(candidate))
return;
if (name.regionMatches(true, 0, candidate, 0, PKG_LEN + 5)) {
messageBuffer.append(" Did you mean '");
messageBuffer.append(candidate);
messageBuffer.append("'?");
}
}
private String findUserSpecifiedLogClassName() {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from attribute 'org.apache.commons.logging.Log'");
String specifiedClass = (String)getAttribute("org.apache.commons.logging.Log");
if (specifiedClass == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from attribute 'org.apache.commons.logging.log'");
specifiedClass = (String)getAttribute("org.apache.commons.logging.log");
}
if (specifiedClass == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from system property 'org.apache.commons.logging.Log'");
try {
specifiedClass = getSystemProperty("org.apache.commons.logging.Log", null);
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("No access allowed to system property 'org.apache.commons.logging.Log' - " + e.getMessage());
}
}
if (specifiedClass == null) {
if (isDiagnosticsEnabled())
logDiagnostic("Trying to get log class from system property 'org.apache.commons.logging.log'");
try {
specifiedClass = getSystemProperty("org.apache.commons.logging.log", null);
} catch (SecurityException e) {
if (isDiagnosticsEnabled())
logDiagnostic("No access allowed to system property 'org.apache.commons.logging.log' - " + e.getMessage());
}
}
if (specifiedClass != null)
specifiedClass = specifiedClass.trim();
return specifiedClass;
}
private Log createLogFromClass(String logAdapterClassName, String logCategory, boolean affectState) throws LogConfigurationException {
if (isDiagnosticsEnabled())
logDiagnostic("Attempting to instantiate '" + logAdapterClassName + "'");
Object[] params = { logCategory };
Log logAdapter = null;
Constructor constructor = null;
Class logAdapterClass = null;
ClassLoader currentCL = getBaseClassLoader();
while (true) {
logDiagnostic("Trying to load '" + logAdapterClassName + "' from classloader " + objectId(currentCL));
try {
Class clazz;
if (isDiagnosticsEnabled()) {
URL url;
String resourceName = logAdapterClassName.replace('.', '/') + ".class";
if (currentCL != null) {
url = currentCL.getResource(resourceName);
} else {
url = ClassLoader.getSystemResource(resourceName + ".class");
}
if (url == null) {
logDiagnostic("Class '" + logAdapterClassName + "' [" + resourceName + "] cannot be found.");
} else {
logDiagnostic("Class '" + logAdapterClassName + "' was found at '" + url + "'");
}
}
try {
clazz = Class.forName(logAdapterClassName, true, currentCL);
} catch (ClassNotFoundException originalClassNotFoundException) {
String msg = originalClassNotFoundException.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is not available via classloader " + objectId(currentCL) + ": " + msg.trim());
try {
clazz = Class.forName(logAdapterClassName);
} catch (ClassNotFoundException secondaryClassNotFoundException) {
msg = secondaryClassNotFoundException.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is not available via the LogFactoryImpl class classloader: " + msg.trim());
break;
}
}
constructor = clazz.getConstructor(this.logConstructorSignature);
Object o = constructor.newInstance(params);
if (o instanceof Log) {
logAdapterClass = clazz;
logAdapter = (Log)o;
break;
}
handleFlawedHierarchy(currentCL, clazz);
} catch (NoClassDefFoundError e) {
String msg = e.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is missing dependencies when loaded via classloader " + objectId(currentCL) + ": " + msg.trim());
break;
} catch (ExceptionInInitializerError e) {
String msg = e.getMessage();
logDiagnostic("The log adapter '" + logAdapterClassName + "' is unable to initialize itself when loaded via classloader " + objectId(currentCL) + ": " + msg.trim());
break;
} catch (LogConfigurationException e) {
throw e;
} catch (Throwable t) {
handleThrowable(t);
handleFlawedDiscovery(logAdapterClassName, currentCL, t);
}
if (currentCL == null)
break;
currentCL = getParentClassLoader(currentCL);
}
if (logAdapterClass != null && affectState) {
this.logClassName = logAdapterClassName;
this.logConstructor = constructor;
try {
this.logMethod = logAdapterClass.getMethod("setLogFactory", this.logMethodSignature);
logDiagnostic("Found method setLogFactory(LogFactory) in '" + logAdapterClassName + "'");
} catch (Throwable t) {
handleThrowable(t);
this.logMethod = null;
logDiagnostic("[INFO] '" + logAdapterClassName + "' from classloader " + objectId(currentCL) + " does not declare optional method " + "setLogFactory(LogFactory)");
}
logDiagnostic("Log adapter '" + logAdapterClassName + "' from classloader " + objectId(logAdapterClass.getClassLoader()) + " has been selected for use.");
}
return logAdapter;
}
private ClassLoader getBaseClassLoader() throws LogConfigurationException {
ClassLoader thisClassLoader = getClassLoader(LogFactoryImpl.class);
if (!this.useTCCL)
return thisClassLoader;
ClassLoader contextClassLoader = getContextClassLoaderInternal();
ClassLoader baseClassLoader = getLowestClassLoader(contextClassLoader, thisClassLoader);
if (baseClassLoader == null) {
if (this.allowFlawedContext) {
if (isDiagnosticsEnabled())
logDiagnostic("[WARNING] the context classloader is not part of a parent-child relationship with the classloader that loaded LogFactoryImpl.");
return contextClassLoader;
}
throw new LogConfigurationException("Bad classloader hierarchy; LogFactoryImpl was loaded via a classloader that is not related to the current context classloader.");
}
if (baseClassLoader != contextClassLoader)
if (this.allowFlawedContext) {
if (isDiagnosticsEnabled())
logDiagnostic("Warning: the context classloader is an ancestor of the classloader that loaded LogFactoryImpl; it should be the same or a descendant. The application using commons-logging should ensure the context classloader is used correctly.");
} else {
throw new LogConfigurationException("Bad classloader hierarchy; LogFactoryImpl was loaded via a classloader that is not related to the current context classloader.");
}
return baseClassLoader;
}
private ClassLoader getLowestClassLoader(ClassLoader c1, ClassLoader c2) {
if (c1 == null)
return c2;
if (c2 == null)
return c1;
ClassLoader current = c1;
while (current != null) {
if (current == c2)
return c1;
current = getParentClassLoader(current);
}
current = c2;
while (current != null) {
if (current == c1)
return c2;
current = getParentClassLoader(current);
}
return null;
}
private void handleFlawedDiscovery(String logAdapterClassName, ClassLoader classLoader, Throwable discoveryFlaw) {
if (isDiagnosticsEnabled()) {
logDiagnostic("Could not instantiate Log '" + logAdapterClassName + "' -- " + discoveryFlaw.getClass().getName() + ": " + discoveryFlaw.getLocalizedMessage());
if (discoveryFlaw instanceof InvocationTargetException) {
InvocationTargetException ite = (InvocationTargetException)discoveryFlaw;
Throwable cause = ite.getTargetException();
if (cause != null) {
logDiagnostic("... InvocationTargetException: " + cause.getClass().getName() + ": " + cause.getLocalizedMessage());
if (cause instanceof ExceptionInInitializerError) {
ExceptionInInitializerError eiie = (ExceptionInInitializerError)cause;
Throwable cause2 = eiie.getException();
if (cause2 != null) {
StringWriter sw = new StringWriter();
cause2.printStackTrace(new PrintWriter((Writer)sw, true));
logDiagnostic("... ExceptionInInitializerError: " + sw.toString());
}
}
}
}
}
if (!this.allowFlawedDiscovery)
throw new LogConfigurationException(discoveryFlaw);
}
private void handleFlawedHierarchy(ClassLoader badClassLoader, Class badClass) throws LogConfigurationException {
boolean implementsLog = false;
String logInterfaceName = Log.class.getName();
Class[] interfaces = badClass.getInterfaces();
for (int i = 0; i < interfaces.length; i++) {
if (logInterfaceName.equals(interfaces[i].getName())) {
implementsLog = true;
break;
}
}
if (implementsLog) {
if (isDiagnosticsEnabled())
try {
ClassLoader logInterfaceClassLoader = getClassLoader(Log.class);
logDiagnostic("Class '" + badClass.getName() + "' was found in classloader " + objectId(badClassLoader) + ". It is bound to a Log interface which is not" + " the one loaded from classloader " + objectId(logInterfaceClassLoader));
} catch (Throwable t) {
handleThrowable(t);
logDiagnostic("Error while trying to output diagnostics about bad class '" + badClass + "'");
}
if (!this.allowFlawedHierarchy) {
StringBuffer msg = new StringBuffer();
msg.append("Terminating logging for this context ");
msg.append("due to bad log hierarchy. ");
msg.append("You have more than one version of '");
msg.append(Log.class.getName());
msg.append("' visible.");
if (isDiagnosticsEnabled())
logDiagnostic(msg.toString());
throw new LogConfigurationException(msg.toString());
}
if (isDiagnosticsEnabled()) {
StringBuffer msg = new StringBuffer();
msg.append("Warning: bad log hierarchy. ");
msg.append("You have more than one version of '");
msg.append(Log.class.getName());
msg.append("' visible.");
logDiagnostic(msg.toString());
}
} else {
if (!this.allowFlawedDiscovery) {
StringBuffer msg = new StringBuffer();
msg.append("Terminating logging for this context. ");
msg.append("Log class '");
msg.append(badClass.getName());
msg.append("' does not implement the Log interface.");
if (isDiagnosticsEnabled())
logDiagnostic(msg.toString());
throw new LogConfigurationException(msg.toString());
}
if (isDiagnosticsEnabled()) {
StringBuffer msg = new StringBuffer();
msg.append("[WARNING] Log class '");
msg.append(badClass.getName());
msg.append("' does not implement the Log interface.");
logDiagnostic(msg.toString());
}
}
}
}

View file

@ -0,0 +1,112 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import org.apache.commons.logging.Log;
import org.apache.log.Hierarchy;
import org.apache.log.Logger;
public class LogKitLogger implements Log, Serializable {
private static final long serialVersionUID = 3768538055836059519L;
protected volatile transient Logger logger = null;
protected String name = null;
public LogKitLogger(String name) {
this.name = name;
this.logger = getLogger();
}
public Logger getLogger() {
Logger result = this.logger;
if (result == null)
synchronized (this) {
result = this.logger;
if (result == null)
this.logger = result = Hierarchy.getDefaultHierarchy().getLoggerFor(this.name);
}
return result;
}
public void trace(Object message) {
debug(message);
}
public void trace(Object message, Throwable t) {
debug(message, t);
}
public void debug(Object message) {
if (message != null)
getLogger().debug(String.valueOf(message));
}
public void debug(Object message, Throwable t) {
if (message != null)
getLogger().debug(String.valueOf(message), t);
}
public void info(Object message) {
if (message != null)
getLogger().info(String.valueOf(message));
}
public void info(Object message, Throwable t) {
if (message != null)
getLogger().info(String.valueOf(message), t);
}
public void warn(Object message) {
if (message != null)
getLogger().warn(String.valueOf(message));
}
public void warn(Object message, Throwable t) {
if (message != null)
getLogger().warn(String.valueOf(message), t);
}
public void error(Object message) {
if (message != null)
getLogger().error(String.valueOf(message));
}
public void error(Object message, Throwable t) {
if (message != null)
getLogger().error(String.valueOf(message), t);
}
public void fatal(Object message) {
if (message != null)
getLogger().fatalError(String.valueOf(message));
}
public void fatal(Object message, Throwable t) {
if (message != null)
getLogger().fatalError(String.valueOf(message), t);
}
public boolean isDebugEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isErrorEnabled() {
return getLogger().isErrorEnabled();
}
public boolean isFatalEnabled() {
return getLogger().isFatalErrorEnabled();
}
public boolean isInfoEnabled() {
return getLogger().isInfoEnabled();
}
public boolean isTraceEnabled() {
return getLogger().isDebugEnabled();
}
public boolean isWarnEnabled() {
return getLogger().isWarnEnabled();
}
}

View file

@ -0,0 +1,60 @@
package org.apache.commons.logging.impl;
import java.io.Serializable;
import org.apache.commons.logging.Log;
public class NoOpLog implements Log, Serializable {
private static final long serialVersionUID = 561423906191706148L;
public NoOpLog() {}
public NoOpLog(String name) {}
public void trace(Object message) {}
public void trace(Object message, Throwable t) {}
public void debug(Object message) {}
public void debug(Object message, Throwable t) {}
public void info(Object message) {}
public void info(Object message, Throwable t) {}
public void warn(Object message) {}
public void warn(Object message, Throwable t) {}
public void error(Object message) {}
public void error(Object message, Throwable t) {}
public void fatal(Object message) {}
public void fatal(Object message, Throwable t) {}
public final boolean isDebugEnabled() {
return false;
}
public final boolean isErrorEnabled() {
return false;
}
public final boolean isFatalEnabled() {
return false;
}
public final boolean isInfoEnabled() {
return false;
}
public final boolean isTraceEnabled() {
return false;
}
public final boolean isWarnEnabled() {
return false;
}
}

View file

@ -0,0 +1,40 @@
package org.apache.commons.logging.impl;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.logging.LogFactory;
public class ServletContextCleaner implements ServletContextListener {
private static final Class[] RELEASE_SIGNATURE = new Class[] { ClassLoader.class };
public void contextDestroyed(ServletContextEvent sce) {
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
Object[] params = new Object[1];
params[0] = tccl;
ClassLoader loader = tccl;
while (loader != null) {
try {
Class logFactoryClass = loader.loadClass("org.apache.commons.logging.LogFactory");
Method releaseMethod = logFactoryClass.getMethod("release", RELEASE_SIGNATURE);
releaseMethod.invoke(null, params);
loader = logFactoryClass.getClassLoader().getParent();
} catch (ClassNotFoundException ex) {
loader = null;
} catch (NoSuchMethodException ex) {
System.err.println("LogFactory instance found which does not support release method!");
loader = null;
} catch (IllegalAccessException ex) {
System.err.println("LogFactory instance found which is not accessable!");
loader = null;
} catch (InvocationTargetException ex) {
System.err.println("LogFactory instance release method failed!");
loader = null;
}
}
LogFactory.release(tccl);
}
public void contextInitialized(ServletContextEvent sce) {}
}

View file

@ -0,0 +1,318 @@
package org.apache.commons.logging.impl;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.Serializable;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
public class SimpleLog implements Log, Serializable {
private static final long serialVersionUID = 136942970684951178L;
protected static final String systemPrefix = "org.apache.commons.logging.simplelog.";
protected static final Properties simpleLogProps = new Properties();
protected static final String DEFAULT_DATE_TIME_FORMAT = "yyyy/MM/dd HH:mm:ss:SSS zzz";
protected static volatile boolean showLogName = false;
protected static volatile boolean showShortName = true;
protected static volatile boolean showDateTime = false;
protected static volatile String dateTimeFormat = "yyyy/MM/dd HH:mm:ss:SSS zzz";
protected static DateFormat dateFormatter = null;
public static final int LOG_LEVEL_TRACE = 1;
public static final int LOG_LEVEL_DEBUG = 2;
public static final int LOG_LEVEL_INFO = 3;
public static final int LOG_LEVEL_WARN = 4;
public static final int LOG_LEVEL_ERROR = 5;
public static final int LOG_LEVEL_FATAL = 6;
public static final int LOG_LEVEL_ALL = 0;
public static final int LOG_LEVEL_OFF = 7;
private static String getStringProperty(String name) {
String prop = null;
try {
prop = System.getProperty(name);
} catch (SecurityException e) {}
return (prop == null) ? simpleLogProps.getProperty(name) : prop;
}
private static String getStringProperty(String name, String dephault) {
String prop = getStringProperty(name);
return (prop == null) ? dephault : prop;
}
private static boolean getBooleanProperty(String name, boolean dephault) {
String prop = getStringProperty(name);
return (prop == null) ? dephault : "true".equalsIgnoreCase(prop);
}
static {
InputStream in = getResourceAsStream("simplelog.properties");
if (null != in)
try {
simpleLogProps.load(in);
in.close();
} catch (IOException e) {}
showLogName = getBooleanProperty("org.apache.commons.logging.simplelog.showlogname", showLogName);
showShortName = getBooleanProperty("org.apache.commons.logging.simplelog.showShortLogname", showShortName);
showDateTime = getBooleanProperty("org.apache.commons.logging.simplelog.showdatetime", showDateTime);
if (showDateTime) {
dateTimeFormat = getStringProperty("org.apache.commons.logging.simplelog.dateTimeFormat", dateTimeFormat);
try {
dateFormatter = new SimpleDateFormat(dateTimeFormat);
} catch (IllegalArgumentException e) {
dateTimeFormat = "yyyy/MM/dd HH:mm:ss:SSS zzz";
dateFormatter = new SimpleDateFormat(dateTimeFormat);
}
}
}
protected volatile String logName = null;
protected volatile int currentLogLevel;
private volatile String shortLogName = null;
public SimpleLog(String name) {
this.logName = name;
setLevel(3);
String lvl = getStringProperty("org.apache.commons.logging.simplelog.log." + this.logName);
int i = String.valueOf(name).lastIndexOf(".");
while (null == lvl && i > -1) {
name = name.substring(0, i);
lvl = getStringProperty("org.apache.commons.logging.simplelog.log." + name);
i = String.valueOf(name).lastIndexOf(".");
}
if (null == lvl)
lvl = getStringProperty("org.apache.commons.logging.simplelog.defaultlog");
if ("all".equalsIgnoreCase(lvl)) {
setLevel(0);
} else if ("trace".equalsIgnoreCase(lvl)) {
setLevel(1);
} else if ("debug".equalsIgnoreCase(lvl)) {
setLevel(2);
} else if ("info".equalsIgnoreCase(lvl)) {
setLevel(3);
} else if ("warn".equalsIgnoreCase(lvl)) {
setLevel(4);
} else if ("error".equalsIgnoreCase(lvl)) {
setLevel(5);
} else if ("fatal".equalsIgnoreCase(lvl)) {
setLevel(6);
} else if ("off".equalsIgnoreCase(lvl)) {
setLevel(7);
}
}
public void setLevel(int currentLogLevel) {
this.currentLogLevel = currentLogLevel;
}
public int getLevel() {
return this.currentLogLevel;
}
protected void log(int type, Object message, Throwable t) {
StringBuffer buf = new StringBuffer();
if (showDateTime) {
String dateText;
Date now = new Date();
synchronized (dateFormatter) {
dateText = dateFormatter.format(now);
}
buf.append(dateText);
buf.append(" ");
}
switch (type) {
case 1:
buf.append("[TRACE] ");
break;
case 2:
buf.append("[DEBUG] ");
break;
case 3:
buf.append("[INFO] ");
break;
case 4:
buf.append("[WARN] ");
break;
case 5:
buf.append("[ERROR] ");
break;
case 6:
buf.append("[FATAL] ");
break;
}
if (showShortName) {
if (this.shortLogName == null) {
String slName = this.logName.substring(this.logName.lastIndexOf(".") + 1);
this.shortLogName = slName.substring(slName.lastIndexOf("/") + 1);
}
buf.append(String.valueOf(this.shortLogName)).append(" - ");
} else if (showLogName) {
buf.append(String.valueOf(this.logName)).append(" - ");
}
buf.append(String.valueOf(message));
if (t != null) {
buf.append(" <");
buf.append(t.toString());
buf.append(">");
StringWriter sw = new StringWriter(1024);
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
pw.close();
buf.append(sw.toString());
}
write(buf);
}
protected void write(StringBuffer buffer) {
System.err.println(buffer.toString());
}
protected boolean isLevelEnabled(int logLevel) {
return (logLevel >= this.currentLogLevel);
}
public final void debug(Object message) {
if (isLevelEnabled(2))
log(2, message, null);
}
public final void debug(Object message, Throwable t) {
if (isLevelEnabled(2))
log(2, message, t);
}
public final void trace(Object message) {
if (isLevelEnabled(1))
log(1, message, null);
}
public final void trace(Object message, Throwable t) {
if (isLevelEnabled(1))
log(1, message, t);
}
public final void info(Object message) {
if (isLevelEnabled(3))
log(3, message, null);
}
public final void info(Object message, Throwable t) {
if (isLevelEnabled(3))
log(3, message, t);
}
public final void warn(Object message) {
if (isLevelEnabled(4))
log(4, message, null);
}
public final void warn(Object message, Throwable t) {
if (isLevelEnabled(4))
log(4, message, t);
}
public final void error(Object message) {
if (isLevelEnabled(5))
log(5, message, null);
}
public final void error(Object message, Throwable t) {
if (isLevelEnabled(5))
log(5, message, t);
}
public final void fatal(Object message) {
if (isLevelEnabled(6))
log(6, message, null);
}
public final void fatal(Object message, Throwable t) {
if (isLevelEnabled(6))
log(6, message, t);
}
public final boolean isDebugEnabled() {
return isLevelEnabled(2);
}
public final boolean isErrorEnabled() {
return isLevelEnabled(5);
}
public final boolean isFatalEnabled() {
return isLevelEnabled(6);
}
public final boolean isInfoEnabled() {
return isLevelEnabled(3);
}
public final boolean isTraceEnabled() {
return isLevelEnabled(1);
}
public final boolean isWarnEnabled() {
return isLevelEnabled(4);
}
private static ClassLoader getContextClassLoader() {
ClassLoader classLoader = null;
try {
Method method = Thread.class.getMethod("getContextClassLoader", null);
try {
classLoader = (ClassLoader)method.invoke(Thread.currentThread(), null);
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
if (!(e.getTargetException() instanceof SecurityException))
throw new LogConfigurationException("Unexpected InvocationTargetException", e.getTargetException());
}
} catch (NoSuchMethodException e) {}
if (classLoader == null)
classLoader = SimpleLog.class.getClassLoader();
return classLoader;
}
private static InputStream getResourceAsStream(String name) {
return (InputStream)AccessController.doPrivileged(new PrivilegedAction(name) {
private final String val$name;
{
this.val$name = param1String;
}
public Object run() {
ClassLoader threadCL = SimpleLog.getContextClassLoader();
if (threadCL != null)
return threadCL.getResourceAsStream(this.val$name);
return ClassLoader.getSystemResourceAsStream(this.val$name);
}
});
}
}

View file

@ -0,0 +1,279 @@
package org.apache.commons.logging.impl;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public final class WeakHashtable extends Hashtable {
private static final long serialVersionUID = -1546036869799732453L;
private static final int MAX_CHANGES_BEFORE_PURGE = 100;
private static final int PARTIAL_PURGE_COUNT = 10;
private final ReferenceQueue queue = new ReferenceQueue();
private int changeCount = 0;
public boolean containsKey(Object key) {
Referenced referenced = new Referenced(key);
return super.containsKey(referenced);
}
public Enumeration elements() {
purge();
return super.elements();
}
public Set entrySet() {
purge();
Set referencedEntries = super.entrySet();
Set unreferencedEntries = new HashSet();
for (Iterator it = referencedEntries.iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry)it.next();
Referenced referencedKey = (Referenced)entry.getKey();
Object key = referencedKey.getValue();
Object value = entry.getValue();
if (key != null) {
Entry dereferencedEntry = new Entry(key, value);
unreferencedEntries.add(dereferencedEntry);
}
}
return unreferencedEntries;
}
public Object get(Object key) {
Referenced referenceKey = new Referenced(key);
return super.get(referenceKey);
}
public Enumeration keys() {
purge();
Enumeration enumer = super.keys();
return new Enumeration(this, enumer) {
private final Enumeration val$enumer;
private final WeakHashtable this$0;
{
this.this$0 = this$0;
this.val$enumer = param1Enumeration;
}
public boolean hasMoreElements() {
return this.val$enumer.hasMoreElements();
}
public Object nextElement() {
WeakHashtable.Referenced nextReference = (WeakHashtable.Referenced)this.val$enumer.nextElement();
return nextReference.getValue();
}
};
}
public Set keySet() {
purge();
Set referencedKeys = super.keySet();
Set unreferencedKeys = new HashSet();
for (Iterator it = referencedKeys.iterator(); it.hasNext(); ) {
Referenced referenceKey = (Referenced)it.next();
Object keyValue = referenceKey.getValue();
if (keyValue != null)
unreferencedKeys.add(keyValue);
}
return unreferencedKeys;
}
public synchronized Object put(Object key, Object value) {
if (key == null)
throw new NullPointerException("Null keys are not allowed");
if (value == null)
throw new NullPointerException("Null values are not allowed");
if (this.changeCount++ > 100) {
purge();
this.changeCount = 0;
} else if (this.changeCount % 10 == 0) {
purgeOne();
}
Referenced keyRef = new Referenced(key, this.queue);
return super.put(keyRef, value);
}
public void putAll(Map t) {
if (t != null) {
Set entrySet = t.entrySet();
for (Iterator it = entrySet.iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry)it.next();
put(entry.getKey(), entry.getValue());
}
}
}
public Collection values() {
purge();
return super.values();
}
public synchronized Object remove(Object key) {
if (this.changeCount++ > 100) {
purge();
this.changeCount = 0;
} else if (this.changeCount % 10 == 0) {
purgeOne();
}
return super.remove(new Referenced(key));
}
public boolean isEmpty() {
purge();
return super.isEmpty();
}
public int size() {
purge();
return super.size();
}
public String toString() {
purge();
return super.toString();
}
protected void rehash() {
purge();
super.rehash();
}
private void purge() {
List toRemove = new ArrayList();
synchronized (this.queue) {
WeakKey key;
while ((key = (WeakKey)this.queue.poll()) != null)
toRemove.add(key.getReferenced());
}
int size = toRemove.size();
for (int i = 0; i < size; i++)
super.remove(toRemove.get(i));
}
private void purgeOne() {
synchronized (this.queue) {
WeakKey key = (WeakKey)this.queue.poll();
if (key != null)
super.remove(key.getReferenced());
}
}
private static final class Entry implements Map.Entry {
private final Object key;
private final Object value;
Entry(Object x0, Object x1, WeakHashtable.null x2) {
this(x0, x1);
}
private Entry(Object key, Object value) {
this.key = key;
this.value = value;
}
public boolean equals(Object o) {
boolean result = false;
if (o != null && o instanceof Map.Entry) {
Map.Entry entry = (Map.Entry)o;
result = (((getKey() == null) ? (entry.getKey() == null) : getKey().equals(entry.getKey())) && ((getValue() == null) ? (entry.getValue() == null) : getValue().equals(entry.getValue())));
}
return result;
}
public int hashCode() {
return ((getKey() == null) ? 0 : getKey().hashCode()) ^ ((getValue() == null) ? 0 : getValue().hashCode());
}
public Object setValue(Object value) {
throw new UnsupportedOperationException("Entry.setValue is not supported.");
}
public Object getValue() {
return this.value;
}
public Object getKey() {
return this.key;
}
}
private static final class Referenced {
private final WeakReference reference;
private final int hashCode;
Referenced(Object x0, WeakHashtable.null x1) {
this(x0);
}
Referenced(Object x0, ReferenceQueue x1, WeakHashtable.null x2) {
this(x0, x1);
}
private Referenced(Object referant) {
this.reference = new WeakReference(referant);
this.hashCode = referant.hashCode();
}
private Referenced(Object key, ReferenceQueue queue) {
this.reference = new WeakHashtable.WeakKey(key, queue, this);
this.hashCode = key.hashCode();
}
public int hashCode() {
return this.hashCode;
}
private Object getValue() {
return this.reference.get();
}
public boolean equals(Object o) {
boolean result = false;
if (o instanceof Referenced) {
Referenced otherKey = (Referenced)o;
Object thisKeyValue = getValue();
Object otherKeyValue = otherKey.getValue();
if (thisKeyValue == null) {
result = (otherKeyValue == null);
result = (result && hashCode() == otherKey.hashCode());
} else {
result = thisKeyValue.equals(otherKeyValue);
}
}
return result;
}
}
private static final class WeakKey extends WeakReference {
private final WeakHashtable.Referenced referenced;
WeakKey(Object x0, ReferenceQueue x1, WeakHashtable.Referenced x2, WeakHashtable.null x3) {
this(x0, x1, x2);
}
private WeakKey(Object key, ReferenceQueue queue, WeakHashtable.Referenced referenced) {
super(key, queue);
this.referenced = referenced;
}
private WeakHashtable.Referenced getReferenced() {
return this.referenced;
}
}
}

View file

@ -0,0 +1,8 @@
package org.apache.fontbox;
import java.io.IOException;
import org.apache.fontbox.encoding.Encoding;
public interface EncodedFont {
Encoding getEncoding() throws IOException;
}

View file

@ -0,0 +1,20 @@
package org.apache.fontbox;
import java.awt.geom.GeneralPath;
import java.io.IOException;
import java.util.List;
import org.apache.fontbox.util.BoundingBox;
public interface FontBoxFont {
String getName() throws IOException;
BoundingBox getFontBBox() throws IOException;
List<Number> getFontMatrix() throws IOException;
GeneralPath getPath(String paramString) throws IOException;
float getWidth(String paramString) throws IOException;
boolean hasGlyph(String paramString) throws IOException;
}

View file

@ -0,0 +1,659 @@
package org.apache.fontbox.afm;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import org.apache.fontbox.util.BoundingBox;
import org.apache.fontbox.util.Charsets;
public class AFMParser {
public static final String COMMENT = "Comment";
public static final String START_FONT_METRICS = "StartFontMetrics";
public static final String END_FONT_METRICS = "EndFontMetrics";
public static final String FONT_NAME = "FontName";
public static final String FULL_NAME = "FullName";
public static final String FAMILY_NAME = "FamilyName";
public static final String WEIGHT = "Weight";
public static final String FONT_BBOX = "FontBBox";
public static final String VERSION = "Version";
public static final String NOTICE = "Notice";
public static final String ENCODING_SCHEME = "EncodingScheme";
public static final String MAPPING_SCHEME = "MappingScheme";
public static final String ESC_CHAR = "EscChar";
public static final String CHARACTER_SET = "CharacterSet";
public static final String CHARACTERS = "Characters";
public static final String IS_BASE_FONT = "IsBaseFont";
public static final String V_VECTOR = "VVector";
public static final String IS_FIXED_V = "IsFixedV";
public static final String CAP_HEIGHT = "CapHeight";
public static final String X_HEIGHT = "XHeight";
public static final String ASCENDER = "Ascender";
public static final String DESCENDER = "Descender";
public static final String UNDERLINE_POSITION = "UnderlinePosition";
public static final String UNDERLINE_THICKNESS = "UnderlineThickness";
public static final String ITALIC_ANGLE = "ItalicAngle";
public static final String CHAR_WIDTH = "CharWidth";
public static final String IS_FIXED_PITCH = "IsFixedPitch";
public static final String START_CHAR_METRICS = "StartCharMetrics";
public static final String END_CHAR_METRICS = "EndCharMetrics";
public static final String CHARMETRICS_C = "C";
public static final String CHARMETRICS_CH = "CH";
public static final String CHARMETRICS_WX = "WX";
public static final String CHARMETRICS_W0X = "W0X";
public static final String CHARMETRICS_W1X = "W1X";
public static final String CHARMETRICS_WY = "WY";
public static final String CHARMETRICS_W0Y = "W0Y";
public static final String CHARMETRICS_W1Y = "W1Y";
public static final String CHARMETRICS_W = "W";
public static final String CHARMETRICS_W0 = "W0";
public static final String CHARMETRICS_W1 = "W1";
public static final String CHARMETRICS_VV = "VV";
public static final String CHARMETRICS_N = "N";
public static final String CHARMETRICS_B = "B";
public static final String CHARMETRICS_L = "L";
public static final String STD_HW = "StdHW";
public static final String STD_VW = "StdVW";
public static final String START_TRACK_KERN = "StartTrackKern";
public static final String END_TRACK_KERN = "EndTrackKern";
public static final String START_KERN_DATA = "StartKernData";
public static final String END_KERN_DATA = "EndKernData";
public static final String START_KERN_PAIRS = "StartKernPairs";
public static final String END_KERN_PAIRS = "EndKernPairs";
public static final String START_KERN_PAIRS0 = "StartKernPairs0";
public static final String START_KERN_PAIRS1 = "StartKernPairs1";
public static final String START_COMPOSITES = "StartComposites";
public static final String END_COMPOSITES = "EndComposites";
public static final String CC = "CC";
public static final String PCC = "PCC";
public static final String KERN_PAIR_KP = "KP";
public static final String KERN_PAIR_KPH = "KPH";
public static final String KERN_PAIR_KPX = "KPX";
public static final String KERN_PAIR_KPY = "KPY";
private static final int BITS_IN_HEX = 16;
private final InputStream input;
public AFMParser(InputStream in) {
this.input = in;
}
public FontMetrics parse() throws IOException {
return parseFontMetric(false);
}
public FontMetrics parse(boolean reducedDataset) throws IOException {
return parseFontMetric(reducedDataset);
}
private FontMetrics parseFontMetric(boolean reducedDataset) throws IOException {
FontMetrics fontMetrics = new FontMetrics();
String startFontMetrics = readString();
if (!"StartFontMetrics".equals(startFontMetrics))
throw new IOException("Error: The AFM file should start with StartFontMetrics and not '" + startFontMetrics + "'");
fontMetrics.setAFMVersion(readFloat());
boolean charMetricsRead = false;
String nextCommand;
while (!"EndFontMetrics".equals(nextCommand = readString())) {
if ("FontName".equals(nextCommand)) {
fontMetrics.setFontName(readLine());
continue;
}
if ("FullName".equals(nextCommand)) {
fontMetrics.setFullName(readLine());
continue;
}
if ("FamilyName".equals(nextCommand)) {
fontMetrics.setFamilyName(readLine());
continue;
}
if ("Weight".equals(nextCommand)) {
fontMetrics.setWeight(readLine());
continue;
}
if ("FontBBox".equals(nextCommand)) {
BoundingBox bBox = new BoundingBox();
bBox.setLowerLeftX(readFloat());
bBox.setLowerLeftY(readFloat());
bBox.setUpperRightX(readFloat());
bBox.setUpperRightY(readFloat());
fontMetrics.setFontBBox(bBox);
continue;
}
if ("Version".equals(nextCommand)) {
fontMetrics.setFontVersion(readLine());
continue;
}
if ("Notice".equals(nextCommand)) {
fontMetrics.setNotice(readLine());
continue;
}
if ("EncodingScheme".equals(nextCommand)) {
fontMetrics.setEncodingScheme(readLine());
continue;
}
if ("MappingScheme".equals(nextCommand)) {
fontMetrics.setMappingScheme(readInt());
continue;
}
if ("EscChar".equals(nextCommand)) {
fontMetrics.setEscChar(readInt());
continue;
}
if ("CharacterSet".equals(nextCommand)) {
fontMetrics.setCharacterSet(readLine());
continue;
}
if ("Characters".equals(nextCommand)) {
fontMetrics.setCharacters(readInt());
continue;
}
if ("IsBaseFont".equals(nextCommand)) {
fontMetrics.setIsBaseFont(readBoolean());
continue;
}
if ("VVector".equals(nextCommand)) {
float[] vector = new float[2];
vector[0] = readFloat();
vector[1] = readFloat();
fontMetrics.setVVector(vector);
continue;
}
if ("IsFixedV".equals(nextCommand)) {
fontMetrics.setIsFixedV(readBoolean());
continue;
}
if ("CapHeight".equals(nextCommand)) {
fontMetrics.setCapHeight(readFloat());
continue;
}
if ("XHeight".equals(nextCommand)) {
fontMetrics.setXHeight(readFloat());
continue;
}
if ("Ascender".equals(nextCommand)) {
fontMetrics.setAscender(readFloat());
continue;
}
if ("Descender".equals(nextCommand)) {
fontMetrics.setDescender(readFloat());
continue;
}
if ("StdHW".equals(nextCommand)) {
fontMetrics.setStandardHorizontalWidth(readFloat());
continue;
}
if ("StdVW".equals(nextCommand)) {
fontMetrics.setStandardVerticalWidth(readFloat());
continue;
}
if ("Comment".equals(nextCommand)) {
fontMetrics.addComment(readLine());
continue;
}
if ("UnderlinePosition".equals(nextCommand)) {
fontMetrics.setUnderlinePosition(readFloat());
continue;
}
if ("UnderlineThickness".equals(nextCommand)) {
fontMetrics.setUnderlineThickness(readFloat());
continue;
}
if ("ItalicAngle".equals(nextCommand)) {
fontMetrics.setItalicAngle(readFloat());
continue;
}
if ("CharWidth".equals(nextCommand)) {
float[] widths = new float[2];
widths[0] = readFloat();
widths[1] = readFloat();
fontMetrics.setCharWidth(widths);
continue;
}
if ("IsFixedPitch".equals(nextCommand)) {
fontMetrics.setFixedPitch(readBoolean());
continue;
}
if ("StartCharMetrics".equals(nextCommand)) {
int count = readInt();
List<CharMetric> charMetrics = new ArrayList<CharMetric>(count);
for (int i = 0; i < count; i++) {
CharMetric charMetric = parseCharMetric();
charMetrics.add(charMetric);
}
String end = readString();
if (!end.equals("EndCharMetrics"))
throw new IOException("Error: Expected 'EndCharMetrics' actual '" + end + "'");
charMetricsRead = true;
fontMetrics.setCharMetrics(charMetrics);
continue;
}
if (!reducedDataset && "StartComposites".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
Composite part = parseComposite();
fontMetrics.addComposite(part);
}
String end = readString();
if (!end.equals("EndComposites"))
throw new IOException("Error: Expected 'EndComposites' actual '" + end + "'");
continue;
}
if (!reducedDataset && "StartKernData".equals(nextCommand)) {
parseKernData(fontMetrics);
continue;
}
if (reducedDataset && charMetricsRead)
break;
throw new IOException("Unknown AFM key '" + nextCommand + "'");
}
return fontMetrics;
}
private void parseKernData(FontMetrics fontMetrics) throws IOException {
String nextCommand;
while (!(nextCommand = readString()).equals("EndKernData")) {
if ("StartTrackKern".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
TrackKern kern = new TrackKern();
kern.setDegree(readInt());
kern.setMinPointSize(readFloat());
kern.setMinKern(readFloat());
kern.setMaxPointSize(readFloat());
kern.setMaxKern(readFloat());
fontMetrics.addTrackKern(kern);
}
String end = readString();
if (!end.equals("EndTrackKern"))
throw new IOException("Error: Expected 'EndTrackKern' actual '" + end + "'");
continue;
}
if ("StartKernPairs".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
KernPair pair = parseKernPair();
fontMetrics.addKernPair(pair);
}
String end = readString();
if (!end.equals("EndKernPairs"))
throw new IOException("Error: Expected 'EndKernPairs' actual '" + end + "'");
continue;
}
if ("StartKernPairs0".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
KernPair pair = parseKernPair();
fontMetrics.addKernPair0(pair);
}
String end = readString();
if (!end.equals("EndKernPairs"))
throw new IOException("Error: Expected 'EndKernPairs' actual '" + end + "'");
continue;
}
if ("StartKernPairs1".equals(nextCommand)) {
int count = readInt();
for (int i = 0; i < count; i++) {
KernPair pair = parseKernPair();
fontMetrics.addKernPair1(pair);
}
String end = readString();
if (!end.equals("EndKernPairs"))
throw new IOException("Error: Expected 'EndKernPairs' actual '" + end + "'");
continue;
}
throw new IOException("Unknown kerning data type '" + nextCommand + "'");
}
}
private KernPair parseKernPair() throws IOException {
KernPair kernPair = new KernPair();
String cmd = readString();
if ("KP".equals(cmd)) {
String first = readString();
String second = readString();
float x = readFloat();
float y = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(x);
kernPair.setY(y);
} else if ("KPH".equals(cmd)) {
String first = hexToString(readString());
String second = hexToString(readString());
float x = readFloat();
float y = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(x);
kernPair.setY(y);
} else if ("KPX".equals(cmd)) {
String first = readString();
String second = readString();
float x = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(x);
kernPair.setY(0.0F);
} else if ("KPY".equals(cmd)) {
String first = readString();
String second = readString();
float y = readFloat();
kernPair.setFirstKernCharacter(first);
kernPair.setSecondKernCharacter(second);
kernPair.setX(0.0F);
kernPair.setY(y);
} else {
throw new IOException("Error expected kern pair command actual='" + cmd + "'");
}
return kernPair;
}
private String hexToString(String hexString) throws IOException {
if (hexString.length() < 2)
throw new IOException("Error: Expected hex string of length >= 2 not='" + hexString);
if (hexString.charAt(0) != '<' || hexString.charAt(hexString.length() - 1) != '>')
throw new IOException("String should be enclosed by angle brackets '" + hexString + "'");
hexString = hexString.substring(1, hexString.length() - 1);
byte[] data = new byte[hexString.length() / 2];
for (int i = 0; i < hexString.length(); i += 2) {
String hex = "" + hexString.charAt(i) + hexString.charAt(i + 1);
try {
data[i / 2] = (byte)Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM file:" + e);
}
}
return new String(data, Charsets.ISO_8859_1);
}
private Composite parseComposite() throws IOException {
int partCount;
Composite composite = new Composite();
String partData = readLine();
StringTokenizer tokenizer = new StringTokenizer(partData, " ;");
String cc = tokenizer.nextToken();
if (!cc.equals("CC"))
throw new IOException("Expected 'CC' actual='" + cc + "'");
String name = tokenizer.nextToken();
composite.setName(name);
try {
partCount = Integer.parseInt(tokenizer.nextToken());
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM document:" + e);
}
for (int i = 0; i < partCount; i++) {
CompositePart part = new CompositePart();
String pcc = tokenizer.nextToken();
if (!pcc.equals("PCC"))
throw new IOException("Expected 'PCC' actual='" + pcc + "'");
String partName = tokenizer.nextToken();
try {
int x = Integer.parseInt(tokenizer.nextToken());
int y = Integer.parseInt(tokenizer.nextToken());
part.setName(partName);
part.setXDisplacement(x);
part.setYDisplacement(y);
composite.addPart(part);
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM document:" + e);
}
}
return composite;
}
private CharMetric parseCharMetric() throws IOException {
CharMetric charMetric = new CharMetric();
String metrics = readLine();
StringTokenizer metricsTokenizer = new StringTokenizer(metrics);
try {
while (metricsTokenizer.hasMoreTokens()) {
String nextCommand = metricsTokenizer.nextToken();
if (nextCommand.equals("C")) {
String charCode = metricsTokenizer.nextToken();
charMetric.setCharacterCode(Integer.parseInt(charCode));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("CH")) {
String charCode = metricsTokenizer.nextToken();
charMetric.setCharacterCode(Integer.parseInt(charCode, 16));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("WX")) {
String wx = metricsTokenizer.nextToken();
charMetric.setWx(Float.parseFloat(wx));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W0X")) {
String w0x = metricsTokenizer.nextToken();
charMetric.setW0x(Float.parseFloat(w0x));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W1X")) {
String w1x = metricsTokenizer.nextToken();
charMetric.setW0x(Float.parseFloat(w1x));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("WY")) {
String wy = metricsTokenizer.nextToken();
charMetric.setWy(Float.parseFloat(wy));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W0Y")) {
String w0y = metricsTokenizer.nextToken();
charMetric.setW0y(Float.parseFloat(w0y));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W1Y")) {
String w1y = metricsTokenizer.nextToken();
charMetric.setW0y(Float.parseFloat(w1y));
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W")) {
String w0 = metricsTokenizer.nextToken();
String w1 = metricsTokenizer.nextToken();
float[] w = new float[2];
w[0] = Float.parseFloat(w0);
w[1] = Float.parseFloat(w1);
charMetric.setW(w);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W0")) {
String w00 = metricsTokenizer.nextToken();
String w01 = metricsTokenizer.nextToken();
float[] w0 = new float[2];
w0[0] = Float.parseFloat(w00);
w0[1] = Float.parseFloat(w01);
charMetric.setW0(w0);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("W1")) {
String w10 = metricsTokenizer.nextToken();
String w11 = metricsTokenizer.nextToken();
float[] w1 = new float[2];
w1[0] = Float.parseFloat(w10);
w1[1] = Float.parseFloat(w11);
charMetric.setW1(w1);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("VV")) {
String vv0 = metricsTokenizer.nextToken();
String vv1 = metricsTokenizer.nextToken();
float[] vv = new float[2];
vv[0] = Float.parseFloat(vv0);
vv[1] = Float.parseFloat(vv1);
charMetric.setVv(vv);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("N")) {
String name = metricsTokenizer.nextToken();
charMetric.setName(name);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("B")) {
String llx = metricsTokenizer.nextToken();
String lly = metricsTokenizer.nextToken();
String urx = metricsTokenizer.nextToken();
String ury = metricsTokenizer.nextToken();
BoundingBox box = new BoundingBox();
box.setLowerLeftX(Float.parseFloat(llx));
box.setLowerLeftY(Float.parseFloat(lly));
box.setUpperRightX(Float.parseFloat(urx));
box.setUpperRightY(Float.parseFloat(ury));
charMetric.setBoundingBox(box);
verifySemicolon(metricsTokenizer);
continue;
}
if (nextCommand.equals("L")) {
String successor = metricsTokenizer.nextToken();
String ligature = metricsTokenizer.nextToken();
Ligature lig = new Ligature();
lig.setSuccessor(successor);
lig.setLigature(ligature);
charMetric.addLigature(lig);
verifySemicolon(metricsTokenizer);
continue;
}
throw new IOException("Unknown CharMetrics command '" + nextCommand + "'");
}
} catch (NumberFormatException e) {
throw new IOException("Error: Corrupt AFM document:" + e);
}
return charMetric;
}
private void verifySemicolon(StringTokenizer tokenizer) throws IOException {
if (tokenizer.hasMoreTokens()) {
String semicolon = tokenizer.nextToken();
if (!semicolon.equals(";"))
throw new IOException("Error: Expected semicolon in stream actual='" + semicolon + "'");
} else {
throw new IOException("CharMetrics is missing a semicolon after a command");
}
}
private boolean readBoolean() throws IOException {
String theBoolean = readString();
return Boolean.valueOf(theBoolean);
}
private int readInt() throws IOException {
String theInt = readString();
try {
return Integer.parseInt(theInt);
} catch (NumberFormatException e) {
throw new IOException("Error parsing AFM document:" + e);
}
}
private float readFloat() throws IOException {
String theFloat = readString();
return Float.parseFloat(theFloat);
}
private String readLine() throws IOException {
StringBuilder buf = new StringBuilder(60);
int nextByte = this.input.read();
while (isWhitespace(nextByte))
nextByte = this.input.read();
buf.append((char)nextByte);
while (!isEOL(nextByte = this.input.read()))
buf.append((char)nextByte);
return buf.toString();
}
private String readString() throws IOException {
StringBuilder buf = new StringBuilder(24);
int nextByte = this.input.read();
while (isWhitespace(nextByte))
nextByte = this.input.read();
buf.append((char)nextByte);
while (!isWhitespace(nextByte = this.input.read()))
buf.append((char)nextByte);
return buf.toString();
}
private boolean isEOL(int character) {
return (character == 13 || character == 10);
}
private boolean isWhitespace(int character) {
return (character == 32 || character == 9 || character == 13 || character == 10);
}
}

View file

@ -0,0 +1,151 @@
package org.apache.fontbox.afm;
import java.util.ArrayList;
import java.util.List;
import org.apache.fontbox.util.BoundingBox;
public class CharMetric {
private int characterCode;
private float wx;
private float w0x;
private float w1x;
private float wy;
private float w0y;
private float w1y;
private float[] w;
private float[] w0;
private float[] w1;
private float[] vv;
private String name;
private BoundingBox boundingBox;
private List<Ligature> ligatures = new ArrayList<Ligature>();
public BoundingBox getBoundingBox() {
return this.boundingBox;
}
public void setBoundingBox(BoundingBox bBox) {
this.boundingBox = bBox;
}
public int getCharacterCode() {
return this.characterCode;
}
public void setCharacterCode(int cCode) {
this.characterCode = cCode;
}
public void addLigature(Ligature ligature) {
this.ligatures.add(ligature);
}
public List<Ligature> getLigatures() {
return this.ligatures;
}
public void setLigatures(List<Ligature> lig) {
this.ligatures = lig;
}
public String getName() {
return this.name;
}
public void setName(String n) {
this.name = n;
}
public float[] getVv() {
return this.vv;
}
public void setVv(float[] vvValue) {
this.vv = vvValue;
}
public float[] getW() {
return this.w;
}
public void setW(float[] wValue) {
this.w = wValue;
}
public float[] getW0() {
return this.w0;
}
public void setW0(float[] w0Value) {
this.w0 = w0Value;
}
public float getW0x() {
return this.w0x;
}
public void setW0x(float w0xValue) {
this.w0x = w0xValue;
}
public float getW0y() {
return this.w0y;
}
public void setW0y(float w0yValue) {
this.w0y = w0yValue;
}
public float[] getW1() {
return this.w1;
}
public void setW1(float[] w1Value) {
this.w1 = w1Value;
}
public float getW1x() {
return this.w1x;
}
public void setW1x(float w1xValue) {
this.w1x = w1xValue;
}
public float getW1y() {
return this.w1y;
}
public void setW1y(float w1yValue) {
this.w1y = w1yValue;
}
public float getWx() {
return this.wx;
}
public void setWx(float wxValue) {
this.wx = wxValue;
}
public float getWy() {
return this.wy;
}
public void setWy(float wyValue) {
this.wy = wyValue;
}
}

View file

@ -0,0 +1,30 @@
package org.apache.fontbox.afm;
import java.util.ArrayList;
import java.util.List;
public class Composite {
private String name;
private List<CompositePart> parts = new ArrayList<CompositePart>();
public String getName() {
return this.name;
}
public void setName(String nameValue) {
this.name = nameValue;
}
public void addPart(CompositePart part) {
this.parts.add(part);
}
public List<CompositePart> getParts() {
return this.parts;
}
public void setParts(List<CompositePart> partsList) {
this.parts = partsList;
}
}

View file

@ -0,0 +1,33 @@
package org.apache.fontbox.afm;
public class CompositePart {
private String name;
private int xDisplacement;
private int yDisplacement;
public String getName() {
return this.name;
}
public void setName(String nameValue) {
this.name = nameValue;
}
public int getXDisplacement() {
return this.xDisplacement;
}
public void setXDisplacement(int xDisp) {
this.xDisplacement = xDisp;
}
public int getYDisplacement() {
return this.yDisplacement;
}
public void setYDisplacement(int yDisp) {
this.yDisplacement = yDisp;
}
}

View file

@ -0,0 +1,426 @@
package org.apache.fontbox.afm;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.fontbox.util.BoundingBox;
public class FontMetrics {
private float afmVersion;
private int metricSets = 0;
private String fontName;
private String fullName;
private String familyName;
private String weight;
private BoundingBox fontBBox;
private String fontVersion;
private String notice;
private String encodingScheme;
private int mappingScheme;
private int escChar;
private String characterSet;
private int characters;
private boolean isBaseFont;
private float[] vVector;
private boolean isFixedV;
private float capHeight;
private float xHeight;
private float ascender;
private float descender;
private final List<String> comments = new ArrayList<String>();
private float underlinePosition;
private float underlineThickness;
private float italicAngle;
private float[] charWidth;
private boolean isFixedPitch;
private float standardHorizontalWidth;
private float standardVerticalWidth;
private List<CharMetric> charMetrics = new ArrayList<CharMetric>();
private Map<String, CharMetric> charMetricsMap = new HashMap<String, CharMetric>();
private List<TrackKern> trackKern = new ArrayList<TrackKern>();
private List<Composite> composites = new ArrayList<Composite>();
private List<KernPair> kernPairs = new ArrayList<KernPair>();
private List<KernPair> kernPairs0 = new ArrayList<KernPair>();
private List<KernPair> kernPairs1 = new ArrayList<KernPair>();
public float getCharacterWidth(String name) {
float result = 0.0F;
CharMetric metric = this.charMetricsMap.get(name);
if (metric != null)
result = metric.getWx();
return result;
}
public float getCharacterHeight(String name) {
float result = 0.0F;
CharMetric metric = this.charMetricsMap.get(name);
if (metric != null) {
result = metric.getWy();
if (result == 0.0F)
result = metric.getBoundingBox().getHeight();
}
return result;
}
public float getAverageCharacterWidth() {
float average = 0.0F;
float totalWidths = 0.0F;
float characterCount = 0.0F;
for (CharMetric metric : this.charMetrics) {
if (metric.getWx() > 0.0F) {
totalWidths += metric.getWx();
characterCount++;
}
}
if (totalWidths > 0.0F)
average = totalWidths / characterCount;
return average;
}
public void addComment(String comment) {
this.comments.add(comment);
}
public List<String> getComments() {
return Collections.<String>unmodifiableList(this.comments);
}
public float getAFMVersion() {
return this.afmVersion;
}
public int getMetricSets() {
return this.metricSets;
}
public void setAFMVersion(float afmVersionValue) {
this.afmVersion = afmVersionValue;
}
public void setMetricSets(int metricSetsValue) {
if (metricSetsValue < 0 || metricSetsValue > 2)
throw new IllegalArgumentException("The metricSets attribute must be in the set {0,1,2} and not '" + metricSetsValue + "'");
this.metricSets = metricSetsValue;
}
public String getFontName() {
return this.fontName;
}
public void setFontName(String name) {
this.fontName = name;
}
public String getFullName() {
return this.fullName;
}
public void setFullName(String fullNameValue) {
this.fullName = fullNameValue;
}
public String getFamilyName() {
return this.familyName;
}
public void setFamilyName(String familyNameValue) {
this.familyName = familyNameValue;
}
public String getWeight() {
return this.weight;
}
public void setWeight(String weightValue) {
this.weight = weightValue;
}
public BoundingBox getFontBBox() {
return this.fontBBox;
}
public void setFontBBox(BoundingBox bBox) {
this.fontBBox = bBox;
}
public String getNotice() {
return this.notice;
}
public void setNotice(String noticeValue) {
this.notice = noticeValue;
}
public String getEncodingScheme() {
return this.encodingScheme;
}
public void setEncodingScheme(String encodingSchemeValue) {
this.encodingScheme = encodingSchemeValue;
}
public int getMappingScheme() {
return this.mappingScheme;
}
public void setMappingScheme(int mappingSchemeValue) {
this.mappingScheme = mappingSchemeValue;
}
public int getEscChar() {
return this.escChar;
}
public void setEscChar(int escCharValue) {
this.escChar = escCharValue;
}
public String getCharacterSet() {
return this.characterSet;
}
public void setCharacterSet(String characterSetValue) {
this.characterSet = characterSetValue;
}
public int getCharacters() {
return this.characters;
}
public void setCharacters(int charactersValue) {
this.characters = charactersValue;
}
public boolean isBaseFont() {
return this.isBaseFont;
}
public void setIsBaseFont(boolean isBaseFontValue) {
this.isBaseFont = isBaseFontValue;
}
public float[] getVVector() {
return this.vVector;
}
public void setVVector(float[] vVectorValue) {
this.vVector = vVectorValue;
}
public boolean isFixedV() {
return this.isFixedV;
}
public void setIsFixedV(boolean isFixedVValue) {
this.isFixedV = isFixedVValue;
}
public float getCapHeight() {
return this.capHeight;
}
public void setCapHeight(float capHeightValue) {
this.capHeight = capHeightValue;
}
public float getXHeight() {
return this.xHeight;
}
public void setXHeight(float xHeightValue) {
this.xHeight = xHeightValue;
}
public float getAscender() {
return this.ascender;
}
public void setAscender(float ascenderValue) {
this.ascender = ascenderValue;
}
public float getDescender() {
return this.descender;
}
public void setDescender(float descenderValue) {
this.descender = descenderValue;
}
public String getFontVersion() {
return this.fontVersion;
}
public void setFontVersion(String fontVersionValue) {
this.fontVersion = fontVersionValue;
}
public float getUnderlinePosition() {
return this.underlinePosition;
}
public void setUnderlinePosition(float underlinePositionValue) {
this.underlinePosition = underlinePositionValue;
}
public float getUnderlineThickness() {
return this.underlineThickness;
}
public void setUnderlineThickness(float underlineThicknessValue) {
this.underlineThickness = underlineThicknessValue;
}
public float getItalicAngle() {
return this.italicAngle;
}
public void setItalicAngle(float italicAngleValue) {
this.italicAngle = italicAngleValue;
}
public float[] getCharWidth() {
return this.charWidth;
}
public void setCharWidth(float[] charWidthValue) {
this.charWidth = charWidthValue;
}
public boolean isFixedPitch() {
return this.isFixedPitch;
}
public void setFixedPitch(boolean isFixedPitchValue) {
this.isFixedPitch = isFixedPitchValue;
}
public List<CharMetric> getCharMetrics() {
return Collections.<CharMetric>unmodifiableList(this.charMetrics);
}
public void setCharMetrics(List<CharMetric> charMetricsValue) {
this.charMetrics = charMetricsValue;
this.charMetricsMap = new HashMap<String, CharMetric>(this.charMetrics.size());
for (CharMetric metric : charMetricsValue)
this.charMetricsMap.put(metric.getName(), metric);
}
public void addCharMetric(CharMetric metric) {
this.charMetrics.add(metric);
this.charMetricsMap.put(metric.getName(), metric);
}
public List<TrackKern> getTrackKern() {
return Collections.<TrackKern>unmodifiableList(this.trackKern);
}
public void setTrackKern(List<TrackKern> trackKernValue) {
this.trackKern = trackKernValue;
}
public void addTrackKern(TrackKern kern) {
this.trackKern.add(kern);
}
public List<Composite> getComposites() {
return Collections.<Composite>unmodifiableList(this.composites);
}
public void setComposites(List<Composite> compositesList) {
this.composites = compositesList;
}
public void addComposite(Composite composite) {
this.composites.add(composite);
}
public List<KernPair> getKernPairs() {
return Collections.<KernPair>unmodifiableList(this.kernPairs);
}
public void addKernPair(KernPair kernPair) {
this.kernPairs.add(kernPair);
}
public void setKernPairs(List<KernPair> kernPairsList) {
this.kernPairs = kernPairsList;
}
public List<KernPair> getKernPairs0() {
return Collections.<KernPair>unmodifiableList(this.kernPairs0);
}
public void addKernPair0(KernPair kernPair) {
this.kernPairs0.add(kernPair);
}
public void setKernPairs0(List<KernPair> kernPairs0List) {
this.kernPairs0 = kernPairs0List;
}
public List<KernPair> getKernPairs1() {
return Collections.<KernPair>unmodifiableList(this.kernPairs1);
}
public void addKernPair1(KernPair kernPair) {
this.kernPairs1.add(kernPair);
}
public void setKernPairs1(List<KernPair> kernPairs1List) {
this.kernPairs1 = kernPairs1List;
}
public float getStandardHorizontalWidth() {
return this.standardHorizontalWidth;
}
public void setStandardHorizontalWidth(float standardHorizontalWidthValue) {
this.standardHorizontalWidth = standardHorizontalWidthValue;
}
public float getStandardVerticalWidth() {
return this.standardVerticalWidth;
}
public void setStandardVerticalWidth(float standardVerticalWidthValue) {
this.standardVerticalWidth = standardVerticalWidthValue;
}
}

View file

@ -0,0 +1,43 @@
package org.apache.fontbox.afm;
public class KernPair {
private String firstKernCharacter;
private String secondKernCharacter;
private float x;
private float y;
public String getFirstKernCharacter() {
return this.firstKernCharacter;
}
public void setFirstKernCharacter(String firstKernCharacterValue) {
this.firstKernCharacter = firstKernCharacterValue;
}
public String getSecondKernCharacter() {
return this.secondKernCharacter;
}
public void setSecondKernCharacter(String secondKernCharacterValue) {
this.secondKernCharacter = secondKernCharacterValue;
}
public float getX() {
return this.x;
}
public void setX(float xValue) {
this.x = xValue;
}
public float getY() {
return this.y;
}
public void setY(float yValue) {
this.y = yValue;
}
}

View file

@ -0,0 +1,23 @@
package org.apache.fontbox.afm;
public class Ligature {
private String successor;
private String ligature;
public String getLigature() {
return this.ligature;
}
public void setLigature(String lig) {
this.ligature = lig;
}
public String getSuccessor() {
return this.successor;
}
public void setSuccessor(String successorValue) {
this.successor = successorValue;
}
}

View file

@ -0,0 +1,53 @@
package org.apache.fontbox.afm;
public class TrackKern {
private int degree;
private float minPointSize;
private float minKern;
private float maxPointSize;
private float maxKern;
public int getDegree() {
return this.degree;
}
public void setDegree(int degreeValue) {
this.degree = degreeValue;
}
public float getMaxKern() {
return this.maxKern;
}
public void setMaxKern(float maxKernValue) {
this.maxKern = maxKernValue;
}
public float getMaxPointSize() {
return this.maxPointSize;
}
public void setMaxPointSize(float maxPointSizeValue) {
this.maxPointSize = maxPointSizeValue;
}
public float getMinKern() {
return this.minKern;
}
public void setMinKern(float minKernValue) {
this.minKern = minKernValue;
}
public float getMinPointSize() {
return this.minPointSize;
}
public void setMinPointSize(float minPointSizeValue) {
this.minPointSize = minPointSizeValue;
}
}

View file

@ -0,0 +1,147 @@
package org.apache.fontbox.cff;
import java.awt.geom.GeneralPath;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.fontbox.type1.Type1CharStringReader;
public class CFFCIDFont extends CFFFont {
private String registry;
private String ordering;
private int supplement;
private List<Map<String, Object>> fontDictionaries = new LinkedList<Map<String, Object>>();
private List<Map<String, Object>> privateDictionaries = new LinkedList<Map<String, Object>>();
private FDSelect fdSelect;
private final Map<Integer, CIDKeyedType2CharString> charStringCache = new ConcurrentHashMap<Integer, CIDKeyedType2CharString>();
private final PrivateType1CharStringReader reader = new PrivateType1CharStringReader();
public String getRegistry() {
return this.registry;
}
void setRegistry(String registry) {
this.registry = registry;
}
public String getOrdering() {
return this.ordering;
}
void setOrdering(String ordering) {
this.ordering = ordering;
}
public int getSupplement() {
return this.supplement;
}
void setSupplement(int supplement) {
this.supplement = supplement;
}
public List<Map<String, Object>> getFontDicts() {
return this.fontDictionaries;
}
void setFontDict(List<Map<String, Object>> fontDict) {
this.fontDictionaries = fontDict;
}
public List<Map<String, Object>> getPrivDicts() {
return this.privateDictionaries;
}
void setPrivDict(List<Map<String, Object>> privDict) {
this.privateDictionaries = privDict;
}
public FDSelect getFdSelect() {
return this.fdSelect;
}
void setFdSelect(FDSelect fdSelect) {
this.fdSelect = fdSelect;
}
private int getDefaultWidthX(int gid) {
int fdArrayIndex = this.fdSelect.getFDIndex(gid);
if (fdArrayIndex == -1)
return 1000;
Map<String, Object> privDict = this.privateDictionaries.get(fdArrayIndex);
return privDict.containsKey("defaultWidthX") ? ((Number)privDict.get("defaultWidthX")).intValue() : 1000;
}
private int getNominalWidthX(int gid) {
int fdArrayIndex = this.fdSelect.getFDIndex(gid);
if (fdArrayIndex == -1)
return 0;
Map<String, Object> privDict = this.privateDictionaries.get(fdArrayIndex);
return privDict.containsKey("nominalWidthX") ? ((Number)privDict.get("nominalWidthX")).intValue() : 0;
}
private byte[][] getLocalSubrIndex(int gid) {
int fdArrayIndex = this.fdSelect.getFDIndex(gid);
if (fdArrayIndex == -1)
return null;
Map<String, Object> privDict = this.privateDictionaries.get(fdArrayIndex);
return (byte[][])privDict.get("Subrs");
}
public CIDKeyedType2CharString getType2CharString(int cid) throws IOException {
CIDKeyedType2CharString type2 = this.charStringCache.get(Integer.valueOf(cid));
if (type2 == null) {
int gid = this.charset.getGIDForCID(cid);
byte[] bytes = this.charStrings[gid];
if (bytes == null)
bytes = this.charStrings[0];
Type2CharStringParser parser = new Type2CharStringParser(this.fontName, cid);
List<Object> type2seq = parser.parse(bytes, this.globalSubrIndex, getLocalSubrIndex(gid));
type2 = new CIDKeyedType2CharString(this.reader, this.fontName, cid, gid, type2seq, getDefaultWidthX(gid), getNominalWidthX(gid));
this.charStringCache.put(Integer.valueOf(cid), type2);
}
return type2;
}
public List<Number> getFontMatrix() {
return (List<Number>)this.topDict.get("FontMatrix");
}
public GeneralPath getPath(String selector) throws IOException {
int cid = selectorToCID(selector);
return getType2CharString(cid).getPath();
}
public float getWidth(String selector) throws IOException {
int cid = selectorToCID(selector);
return (float)getType2CharString(cid).getWidth();
}
public boolean hasGlyph(String selector) throws IOException {
int cid = selectorToCID(selector);
return (cid != 0);
}
private int selectorToCID(String selector) {
if (!selector.startsWith("\\"))
throw new IllegalArgumentException("Invalid selector");
return Integer.parseInt(selector.substring(1));
}
private class PrivateType1CharStringReader implements Type1CharStringReader {
private PrivateType1CharStringReader() {}
public Type1CharString getType1CharString(String name) throws IOException {
return CFFCIDFont.this.getType2CharString(0);
}
}
}

View file

@ -0,0 +1,93 @@
package org.apache.fontbox.cff;
import java.util.HashMap;
import java.util.Map;
public abstract class CFFCharset {
private final boolean isCIDFont;
private final Map<Integer, Integer> sidOrCidToGid = new HashMap<Integer, Integer>(250);
private final Map<Integer, Integer> gidToSid = new HashMap<Integer, Integer>(250);
private final Map<String, Integer> nameToSid = new HashMap<String, Integer>(250);
private final Map<Integer, Integer> gidToCid = new HashMap<Integer, Integer>();
private final Map<Integer, String> gidToName = new HashMap<Integer, String>(250);
CFFCharset(boolean isCIDFont) {
this.isCIDFont = isCIDFont;
}
public boolean isCIDFont() {
return this.isCIDFont;
}
public void addSID(int gid, int sid, String name) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
this.sidOrCidToGid.put(Integer.valueOf(sid), Integer.valueOf(gid));
this.gidToSid.put(Integer.valueOf(gid), Integer.valueOf(sid));
this.nameToSid.put(name, Integer.valueOf(sid));
this.gidToName.put(Integer.valueOf(gid), name);
}
public void addCID(int gid, int cid) {
if (!this.isCIDFont)
throw new IllegalStateException("Not a CIDFont");
this.sidOrCidToGid.put(Integer.valueOf(cid), Integer.valueOf(gid));
this.gidToCid.put(Integer.valueOf(gid), Integer.valueOf(cid));
}
int getSIDForGID(int sid) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
Integer gid = this.gidToSid.get(Integer.valueOf(sid));
if (gid == null)
return 0;
return gid;
}
int getGIDForSID(int sid) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
Integer gid = this.sidOrCidToGid.get(Integer.valueOf(sid));
if (gid == null)
return 0;
return gid;
}
public int getGIDForCID(int cid) {
if (!this.isCIDFont)
throw new IllegalStateException("Not a CIDFont");
Integer gid = this.sidOrCidToGid.get(Integer.valueOf(cid));
if (gid == null)
return 0;
return gid;
}
int getSID(String name) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
Integer sid = this.nameToSid.get(name);
if (sid == null)
return 0;
return sid;
}
public String getNameForGID(int gid) {
if (this.isCIDFont)
throw new IllegalStateException("Not a Type 1-equivalent font");
return this.gidToName.get(Integer.valueOf(gid));
}
public int getCIDForGID(int gid) {
if (!this.isCIDFont)
throw new IllegalStateException("Not a CIDFont");
Integer cid = this.gidToCid.get(Integer.valueOf(gid));
if (cid != null)
return cid;
return 0;
}
}

View file

@ -0,0 +1,32 @@
package org.apache.fontbox.cff;
import java.io.IOException;
public class CFFDataInput extends DataInput {
public CFFDataInput(byte[] buffer) {
super(buffer);
}
public int readCard8() throws IOException {
return readUnsignedByte();
}
public int readCard16() throws IOException {
return readUnsignedShort();
}
public int readOffset(int offSize) throws IOException {
int value = 0;
for (int i = 0; i < offSize; i++)
value = value << 8 | readUnsignedByte();
return value;
}
public int readOffSize() throws IOException {
return readUnsignedByte();
}
public int readSID() throws IOException {
return readUnsignedShort();
}
}

View file

@ -0,0 +1,27 @@
package org.apache.fontbox.cff;
import java.util.HashMap;
import java.util.Map;
import org.apache.fontbox.encoding.Encoding;
public abstract class CFFEncoding extends Encoding {
private final Map<Integer, String> codeToName = new HashMap<Integer, String>(250);
public String getName(int code) {
String name = this.codeToName.get(Integer.valueOf(code));
if (name == null)
return ".notdef";
return name;
}
public void add(int code, int sid, String name) {
this.codeToName.put(Integer.valueOf(code), name);
addCharacterEncoding(code, name);
}
protected void add(int code, int sid) {
String name = CFFStandardString.getName(sid);
this.codeToName.put(Integer.valueOf(code), name);
addCharacterEncoding(code, name);
}
}

View file

@ -0,0 +1,42 @@
package org.apache.fontbox.cff;
public final class CFFExpertCharset extends CFFCharset {
private static final int CHAR_CODE = 0;
private static final int CHAR_NAME = 1;
private static final Object[][] CFF_EXPERT_CHARSET_TABLE = new Object[][] {
new Object[] { 0, ".notdef" }, new Object[] { 1, "space" }, new Object[] { 229, "exclamsmall" }, new Object[] { 230, "Hungarumlautsmall" }, new Object[] { 231, "dollaroldstyle" }, new Object[] { 232, "dollarsuperior" }, new Object[] { 233, "ampersandsmall" }, new Object[] { 234, "Acutesmall" }, new Object[] { 235, "parenleftsuperior" }, new Object[] { 236, "parenrightsuperior" },
new Object[] { 237, "twodotenleader" }, new Object[] { 238, "onedotenleader" }, new Object[] { 13, "comma" }, new Object[] { 14, "hyphen" }, new Object[] { 15, "period" }, new Object[] { 99, "fraction" }, new Object[] { 239, "zerooldstyle" }, new Object[] { 240, "oneoldstyle" }, new Object[] { 241, "twooldstyle" }, new Object[] { 242, "threeoldstyle" },
new Object[] { 243, "fouroldstyle" }, new Object[] { 244, "fiveoldstyle" }, new Object[] { 245, "sixoldstyle" }, new Object[] { 246, "sevenoldstyle" }, new Object[] { 247, "eightoldstyle" }, new Object[] { 248, "nineoldstyle" }, new Object[] { 27, "colon" }, new Object[] { 28, "semicolon" }, new Object[] { 249, "commasuperior" }, new Object[] { 250, "threequartersemdash" },
new Object[] { 251, "periodsuperior" }, new Object[] { 252, "questionsmall" }, new Object[] { 253, "asuperior" }, new Object[] { 254, "bsuperior" }, new Object[] { 255, "centsuperior" }, new Object[] { 256, "dsuperior" }, new Object[] { 257, "esuperior" }, new Object[] { 258, "isuperior" }, new Object[] { 259, "lsuperior" }, new Object[] { 260, "msuperior" },
new Object[] { 261, "nsuperior" }, new Object[] { 262, "osuperior" }, new Object[] { 263, "rsuperior" }, new Object[] { 264, "ssuperior" }, new Object[] { 265, "tsuperior" }, new Object[] { 266, "ff" }, new Object[] { 109, "fi" }, new Object[] { 110, "fl" }, new Object[] { 267, "ffi" }, new Object[] { 268, "ffl" },
new Object[] { 269, "parenleftinferior" }, new Object[] { 270, "parenrightinferior" }, new Object[] { 271, "Circumflexsmall" }, new Object[] { 272, "hyphensuperior" }, new Object[] { 273, "Gravesmall" }, new Object[] { 274, "Asmall" }, new Object[] { 275, "Bsmall" }, new Object[] { 276, "Csmall" }, new Object[] { 277, "Dsmall" }, new Object[] { 278, "Esmall" },
new Object[] { 279, "Fsmall" }, new Object[] { 280, "Gsmall" }, new Object[] { 281, "Hsmall" }, new Object[] { 282, "Ismall" }, new Object[] { 283, "Jsmall" }, new Object[] { 284, "Ksmall" }, new Object[] { 285, "Lsmall" }, new Object[] { 286, "Msmall" }, new Object[] { 287, "Nsmall" }, new Object[] { 288, "Osmall" },
new Object[] { 289, "Psmall" }, new Object[] { 290, "Qsmall" }, new Object[] { 291, "Rsmall" }, new Object[] { 292, "Ssmall" }, new Object[] { 293, "Tsmall" }, new Object[] { 294, "Usmall" }, new Object[] { 295, "Vsmall" }, new Object[] { 296, "Wsmall" }, new Object[] { 297, "Xsmall" }, new Object[] { 298, "Ysmall" },
new Object[] { 299, "Zsmall" }, new Object[] { 300, "colonmonetary" }, new Object[] { 301, "onefitted" }, new Object[] { 302, "rupiah" }, new Object[] { 303, "Tildesmall" }, new Object[] { 304, "exclamdownsmall" }, new Object[] { 305, "centoldstyle" }, new Object[] { 306, "Lslashsmall" }, new Object[] { 307, "Scaronsmall" }, new Object[] { 308, "Zcaronsmall" },
new Object[] { 309, "Dieresissmall" }, new Object[] { 310, "Brevesmall" }, new Object[] { 311, "Caronsmall" }, new Object[] { 312, "Dotaccentsmall" }, new Object[] { 313, "Macronsmall" }, new Object[] { 314, "figuredash" }, new Object[] { 315, "hypheninferior" }, new Object[] { 316, "Ogoneksmall" }, new Object[] { 317, "Ringsmall" }, new Object[] { 318, "Cedillasmall" },
new Object[] { 158, "onequarter" }, new Object[] { 155, "onehalf" }, new Object[] { 163, "threequarters" }, new Object[] { 319, "questiondownsmall" }, new Object[] { 320, "oneeighth" }, new Object[] { 321, "threeeighths" }, new Object[] { 322, "fiveeighths" }, new Object[] { 323, "seveneighths" }, new Object[] { 324, "onethird" }, new Object[] { 325, "twothirds" },
new Object[] { 326, "zerosuperior" }, new Object[] { 150, "onesuperior" }, new Object[] { 164, "twosuperior" }, new Object[] { 169, "threesuperior" }, new Object[] { 327, "foursuperior" }, new Object[] { 328, "fivesuperior" }, new Object[] { 329, "sixsuperior" }, new Object[] { 330, "sevensuperior" }, new Object[] { 331, "eightsuperior" }, new Object[] { 332, "ninesuperior" },
new Object[] { 333, "zeroinferior" }, new Object[] { 334, "oneinferior" }, new Object[] { 335, "twoinferior" }, new Object[] { 336, "threeinferior" }, new Object[] { 337, "fourinferior" }, new Object[] { 338, "fiveinferior" }, new Object[] { 339, "sixinferior" }, new Object[] { 340, "seveninferior" }, new Object[] { 341, "eightinferior" }, new Object[] { 342, "nineinferior" },
new Object[] { 343, "centinferior" }, new Object[] { 344, "dollarinferior" }, new Object[] { 345, "periodinferior" }, new Object[] { 346, "commainferior" }, new Object[] { 347, "Agravesmall" }, new Object[] { 348, "Aacutesmall" }, new Object[] { 349, "Acircumflexsmall" }, new Object[] { 350, "Atildesmall" }, new Object[] { 351, "Adieresissmall" }, new Object[] { 352, "Aringsmall" },
new Object[] { 353, "AEsmall" }, new Object[] { 354, "Ccedillasmall" }, new Object[] { 355, "Egravesmall" }, new Object[] { 356, "Eacutesmall" }, new Object[] { 357, "Ecircumflexsmall" }, new Object[] { 358, "Edieresissmall" }, new Object[] { 359, "Igravesmall" }, new Object[] { 360, "Iacutesmall" }, new Object[] { 361, "Icircumflexsmall" }, new Object[] { 362, "Idieresissmall" },
new Object[] { 363, "Ethsmall" }, new Object[] { 364, "Ntildesmall" }, new Object[] { 365, "Ogravesmall" }, new Object[] { 366, "Oacutesmall" }, new Object[] { 367, "Ocircumflexsmall" }, new Object[] { 368, "Otildesmall" }, new Object[] { 369, "Odieresissmall" }, new Object[] { 370, "OEsmall" }, new Object[] { 371, "Oslashsmall" }, new Object[] { 372, "Ugravesmall" },
new Object[] { 373, "Uacutesmall" }, new Object[] { 374, "Ucircumflexsmall" }, new Object[] { 375, "Udieresissmall" }, new Object[] { 376, "Yacutesmall" }, new Object[] { 377, "Thornsmall" }, new Object[] { 378, "Ydieresissmall" } };
private CFFExpertCharset() {
super(false);
}
public static CFFExpertCharset getInstance() {
return INSTANCE;
}
private static final CFFExpertCharset INSTANCE = new CFFExpertCharset();
static {
int gid = 0;
for (Object[] charsetEntry : CFF_EXPERT_CHARSET_TABLE)
INSTANCE.addSID(gid++, ((Integer)charsetEntry[0]).intValue(), charsetEntry[1].toString());
}
}

View file

@ -0,0 +1,46 @@
package org.apache.fontbox.cff;
public final class CFFExpertEncoding extends CFFEncoding {
private static final int CHAR_CODE = 0;
private static final int CHAR_SID = 1;
private static final int[][] CFF_EXPERT_ENCODING_TABLE = new int[][] {
new int[] { 0, 0 }, new int[] { 1, 0 }, new int[] { 2, 0 }, new int[] { 3, 0 }, new int[] { 4, 0 }, new int[] { 5, 0 }, new int[] { 6, 0 }, new int[] { 7, 0 }, new int[] { 8, 0 }, new int[] { 9, 0 },
new int[] { 10, 0 }, new int[] { 11, 0 }, new int[] { 12, 0 }, new int[] { 13, 0 }, new int[] { 14, 0 }, new int[] { 15, 0 }, new int[] { 16, 0 }, new int[] { 17, 0 }, new int[] { 18, 0 }, new int[] { 19, 0 },
new int[] { 20, 0 }, new int[] { 21, 0 }, new int[] { 22, 0 }, new int[] { 23, 0 }, new int[] { 24, 0 }, new int[] { 25, 0 }, new int[] { 26, 0 }, new int[] { 27, 0 }, new int[] { 28, 0 }, new int[] { 29, 0 },
new int[] { 30, 0 }, new int[] { 31, 0 }, new int[] { 32, 1 }, new int[] { 33, 229 }, new int[] { 34, 230 }, new int[] { 35, 0 }, new int[] { 36, 231 }, new int[] { 37, 232 }, new int[] { 38, 233 }, new int[] { 39, 234 },
new int[] { 40, 235 }, new int[] { 41, 236 }, new int[] { 42, 237 }, new int[] { 43, 238 }, new int[] { 44, 13 }, new int[] { 45, 14 }, new int[] { 46, 15 }, new int[] { 47, 99 }, new int[] { 48, 239 }, new int[] { 49, 240 },
new int[] { 50, 241 }, new int[] { 51, 242 }, new int[] { 52, 243 }, new int[] { 53, 244 }, new int[] { 54, 245 }, new int[] { 55, 246 }, new int[] { 56, 247 }, new int[] { 57, 248 }, new int[] { 58, 27 }, new int[] { 59, 28 },
new int[] { 60, 249 }, new int[] { 61, 250 }, new int[] { 62, 251 }, new int[] { 63, 252 }, new int[] { 64, 0 }, new int[] { 65, 253 }, new int[] { 66, 254 }, new int[] { 67, 255 }, new int[] { 68, 256 }, new int[] { 69, 257 },
new int[] { 70, 0 }, new int[] { 71, 0 }, new int[] { 72, 0 }, new int[] { 73, 258 }, new int[] { 74, 0 }, new int[] { 75, 0 }, new int[] { 76, 259 }, new int[] { 77, 260 }, new int[] { 78, 261 }, new int[] { 79, 262 },
new int[] { 80, 0 }, new int[] { 81, 0 }, new int[] { 82, 263 }, new int[] { 83, 264 }, new int[] { 84, 265 }, new int[] { 85, 0 }, new int[] { 86, 266 }, new int[] { 87, 109 }, new int[] { 88, 110 }, new int[] { 89, 267 },
new int[] { 90, 268 }, new int[] { 91, 269 }, new int[] { 92, 0 }, new int[] { 93, 270 }, new int[] { 94, 271 }, new int[] { 95, 272 }, new int[] { 96, 273 }, new int[] { 97, 274 }, new int[] { 98, 275 }, new int[] { 99, 276 },
new int[] { 100, 277 }, new int[] { 101, 278 }, new int[] { 102, 279 }, new int[] { 103, 280 }, new int[] { 104, 281 }, new int[] { 105, 282 }, new int[] { 106, 283 }, new int[] { 107, 284 }, new int[] { 108, 285 }, new int[] { 109, 286 },
new int[] { 110, 287 }, new int[] { 111, 288 }, new int[] { 112, 289 }, new int[] { 113, 290 }, new int[] { 114, 291 }, new int[] { 115, 292 }, new int[] { 116, 293 }, new int[] { 117, 294 }, new int[] { 118, 295 }, new int[] { 119, 296 },
new int[] { 120, 297 }, new int[] { 121, 298 }, new int[] { 122, 299 }, new int[] { 123, 300 }, new int[] { 124, 301 }, new int[] { 125, 302 }, new int[] { 126, 303 }, new int[] { 127, 0 }, new int[] { 128, 0 }, new int[] { 129, 0 },
new int[] { 130, 0 }, new int[] { 131, 0 }, new int[] { 132, 0 }, new int[] { 133, 0 }, new int[] { 134, 0 }, new int[] { 135, 0 }, new int[] { 136, 0 }, new int[] { 137, 0 }, new int[] { 138, 0 }, new int[] { 139, 0 },
new int[] { 140, 0 }, new int[] { 141, 0 }, new int[] { 142, 0 }, new int[] { 143, 0 }, new int[] { 144, 0 }, new int[] { 145, 0 }, new int[] { 146, 0 }, new int[] { 147, 0 }, new int[] { 148, 0 }, new int[] { 149, 0 },
new int[] { 150, 0 }, new int[] { 151, 0 }, new int[] { 152, 0 }, new int[] { 153, 0 }, new int[] { 154, 0 }, new int[] { 155, 0 }, new int[] { 156, 0 }, new int[] { 157, 0 }, new int[] { 158, 0 }, new int[] { 159, 0 },
new int[] { 160, 0 }, new int[] { 161, 304 }, new int[] { 162, 305 }, new int[] { 163, 306 }, new int[] { 164, 0 }, new int[] { 165, 0 }, new int[] { 166, 307 }, new int[] { 167, 308 }, new int[] { 168, 309 }, new int[] { 169, 310 },
new int[] { 170, 311 }, new int[] { 171, 0 }, new int[] { 172, 312 }, new int[] { 173, 0 }, new int[] { 174, 0 }, new int[] { 175, 313 }, new int[] { 176, 0 }, new int[] { 177, 0 }, new int[] { 178, 314 }, new int[] { 179, 315 },
new int[] { 180, 0 }, new int[] { 181, 0 }, new int[] { 182, 316 }, new int[] { 183, 317 }, new int[] { 184, 318 }, new int[] { 185, 0 }, new int[] { 186, 0 }, new int[] { 187, 0 }, new int[] { 188, 158 }, new int[] { 189, 155 },
new int[] { 190, 163 }, new int[] { 191, 319 }, new int[] { 192, 320 }, new int[] { 193, 321 }, new int[] { 194, 322 }, new int[] { 195, 323 }, new int[] { 196, 324 }, new int[] { 197, 325 }, new int[] { 198, 0 }, new int[] { 199, 0 },
new int[] { 200, 326 }, new int[] { 201, 150 }, new int[] { 202, 164 }, new int[] { 203, 169 }, new int[] { 204, 327 }, new int[] { 205, 328 }, new int[] { 206, 329 }, new int[] { 207, 330 }, new int[] { 208, 331 }, new int[] { 209, 332 },
new int[] { 210, 333 }, new int[] { 211, 334 }, new int[] { 212, 335 }, new int[] { 213, 336 }, new int[] { 214, 337 }, new int[] { 215, 338 }, new int[] { 216, 339 }, new int[] { 217, 340 }, new int[] { 218, 341 }, new int[] { 219, 342 },
new int[] { 220, 343 }, new int[] { 221, 344 }, new int[] { 222, 345 }, new int[] { 223, 346 }, new int[] { 224, 347 }, new int[] { 225, 348 }, new int[] { 226, 349 }, new int[] { 227, 350 }, new int[] { 228, 351 }, new int[] { 229, 352 },
new int[] { 230, 353 }, new int[] { 231, 354 }, new int[] { 232, 355 }, new int[] { 233, 356 }, new int[] { 234, 357 }, new int[] { 235, 358 }, new int[] { 236, 359 }, new int[] { 237, 360 }, new int[] { 238, 361 }, new int[] { 239, 362 },
new int[] { 240, 363 }, new int[] { 241, 364 }, new int[] { 242, 365 }, new int[] { 243, 366 }, new int[] { 244, 367 }, new int[] { 245, 368 }, new int[] { 246, 369 }, new int[] { 247, 370 }, new int[] { 248, 371 }, new int[] { 249, 372 },
new int[] { 250, 373 }, new int[] { 251, 374 }, new int[] { 252, 375 }, new int[] { 253, 376 }, new int[] { 254, 377 }, new int[] { 255, 378 } };
public static CFFExpertEncoding getInstance() {
return INSTANCE;
}
private static final CFFExpertEncoding INSTANCE = new CFFExpertEncoding();
static {
for (int[] encodingEntry : CFF_EXPERT_ENCODING_TABLE)
INSTANCE.add(encodingEntry[0], encodingEntry[1]);
}
}

View file

@ -0,0 +1,34 @@
package org.apache.fontbox.cff;
public final class CFFExpertSubsetCharset extends CFFCharset {
private static final int CHAR_CODE = 0;
private static final int CHAR_NAME = 1;
private static final Object[][] CFF_EXPERT_SUBSET_CHARSET_TABLE = new Object[][] {
new Object[] { 0, ".notdef" }, new Object[] { 1, "space" }, new Object[] { 231, "dollaroldstyle" }, new Object[] { 232, "dollarsuperior" }, new Object[] { 235, "parenleftsuperior" }, new Object[] { 236, "parenrightsuperior" }, new Object[] { 237, "twodotenleader" }, new Object[] { 238, "onedotenleader" }, new Object[] { 13, "comma" }, new Object[] { 14, "hyphen" },
new Object[] { 15, "period" }, new Object[] { 99, "fraction" }, new Object[] { 239, "zerooldstyle" }, new Object[] { 240, "oneoldstyle" }, new Object[] { 241, "twooldstyle" }, new Object[] { 242, "threeoldstyle" }, new Object[] { 243, "fouroldstyle" }, new Object[] { 244, "fiveoldstyle" }, new Object[] { 245, "sixoldstyle" }, new Object[] { 246, "sevenoldstyle" },
new Object[] { 247, "eightoldstyle" }, new Object[] { 248, "nineoldstyle" }, new Object[] { 27, "colon" }, new Object[] { 28, "semicolon" }, new Object[] { 249, "commasuperior" }, new Object[] { 250, "threequartersemdash" }, new Object[] { 251, "periodsuperior" }, new Object[] { 253, "asuperior" }, new Object[] { 254, "bsuperior" }, new Object[] { 255, "centsuperior" },
new Object[] { 256, "dsuperior" }, new Object[] { 257, "esuperior" }, new Object[] { 258, "isuperior" }, new Object[] { 259, "lsuperior" }, new Object[] { 260, "msuperior" }, new Object[] { 261, "nsuperior" }, new Object[] { 262, "osuperior" }, new Object[] { 263, "rsuperior" }, new Object[] { 264, "ssuperior" }, new Object[] { 265, "tsuperior" },
new Object[] { 266, "ff" }, new Object[] { 109, "fi" }, new Object[] { 110, "fl" }, new Object[] { 267, "ffi" }, new Object[] { 268, "ffl" }, new Object[] { 269, "parenleftinferior" }, new Object[] { 270, "parenrightinferior" }, new Object[] { 272, "hyphensuperior" }, new Object[] { 300, "colonmonetary" }, new Object[] { 301, "onefitted" },
new Object[] { 302, "rupiah" }, new Object[] { 305, "centoldstyle" }, new Object[] { 314, "figuredash" }, new Object[] { 315, "hypheninferior" }, new Object[] { 158, "onequarter" }, new Object[] { 155, "onehalf" }, new Object[] { 163, "threequarters" }, new Object[] { 320, "oneeighth" }, new Object[] { 321, "threeeighths" }, new Object[] { 322, "fiveeighths" },
new Object[] { 323, "seveneighths" }, new Object[] { 324, "onethird" }, new Object[] { 325, "twothirds" }, new Object[] { 326, "zerosuperior" }, new Object[] { 150, "onesuperior" }, new Object[] { 164, "twosuperior" }, new Object[] { 169, "threesuperior" }, new Object[] { 327, "foursuperior" }, new Object[] { 328, "fivesuperior" }, new Object[] { 329, "sixsuperior" },
new Object[] { 330, "sevensuperior" }, new Object[] { 331, "eightsuperior" }, new Object[] { 332, "ninesuperior" }, new Object[] { 333, "zeroinferior" }, new Object[] { 334, "oneinferior" }, new Object[] { 335, "twoinferior" }, new Object[] { 336, "threeinferior" }, new Object[] { 337, "fourinferior" }, new Object[] { 338, "fiveinferior" }, new Object[] { 339, "sixinferior" },
new Object[] { 340, "seveninferior" }, new Object[] { 341, "eightinferior" }, new Object[] { 342, "nineinferior" }, new Object[] { 343, "centinferior" }, new Object[] { 344, "dollarinferior" }, new Object[] { 345, "periodinferior" }, new Object[] { 346, "commainferior" } };
private CFFExpertSubsetCharset() {
super(false);
}
public static CFFExpertSubsetCharset getInstance() {
return INSTANCE;
}
private static final CFFExpertSubsetCharset INSTANCE = new CFFExpertSubsetCharset();
static {
int gid = 0;
for (Object[] charsetEntry : CFF_EXPERT_SUBSET_CHARSET_TABLE)
INSTANCE.addSID(gid++, ((Integer)charsetEntry[0]).intValue(), charsetEntry[1].toString());
}
}

View file

@ -0,0 +1,85 @@
package org.apache.fontbox.cff;
import java.io.IOException;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.fontbox.FontBoxFont;
import org.apache.fontbox.util.BoundingBox;
public abstract class CFFFont implements FontBoxFont {
protected String fontName;
protected final Map<String, Object> topDict = new LinkedHashMap<String, Object>();
protected CFFCharset charset;
protected byte[][] charStrings;
protected byte[][] globalSubrIndex;
private CFFParser.ByteSource source;
public String getName() {
return this.fontName;
}
void setName(String name) {
this.fontName = name;
}
public void addValueToTopDict(String name, Object value) {
if (value != null)
this.topDict.put(name, value);
}
public Map<String, Object> getTopDict() {
return this.topDict;
}
public abstract List<Number> getFontMatrix();
public BoundingBox getFontBBox() {
List<Number> numbers = (List<Number>)this.topDict.get("FontBBox");
return new BoundingBox(numbers);
}
public CFFCharset getCharset() {
return this.charset;
}
void setCharset(CFFCharset charset) {
this.charset = charset;
}
public final List<byte[]> getCharStringBytes() {
return Arrays.<byte[]>asList(this.charStrings);
}
final void setData(CFFParser.ByteSource source) {
this.source = source;
}
public byte[] getData() throws IOException {
return this.source.getBytes();
}
public int getNumCharStrings() {
return this.charStrings.length;
}
void setGlobalSubrIndex(byte[][] globalSubrIndexValue) {
this.globalSubrIndex = globalSubrIndexValue;
}
public List<byte[]> getGlobalSubrIndex() {
return Arrays.<byte[]>asList(this.globalSubrIndex);
}
public abstract Type2CharString getType2CharString(int paramInt) throws IOException;
public String toString() {
return getClass().getSimpleName() + "[name=" + this.fontName + ", topDict=" + this.topDict + ", charset=" + this.charset + ", charStrings=" + Arrays.deepToString((Object[])this.charStrings) + "]";
}
}

View file

@ -0,0 +1,48 @@
package org.apache.fontbox.cff;
public final class CFFISOAdobeCharset extends CFFCharset {
private static final int CHAR_CODE = 0;
private static final int CHAR_NAME = 1;
private static final Object[][] CFF_ISO_ADOBE_CHARSET_TABLE = new Object[][] {
new Object[] { 0, ".notdef" }, new Object[] { 1, "space" }, new Object[] { 2, "exclam" }, new Object[] { 3, "quotedbl" }, new Object[] { 4, "numbersign" }, new Object[] { 5, "dollar" }, new Object[] { 6, "percent" }, new Object[] { 7, "ampersand" }, new Object[] { 8, "quoteright" }, new Object[] { 9, "parenleft" },
new Object[] { 10, "parenright" }, new Object[] { 11, "asterisk" }, new Object[] { 12, "plus" }, new Object[] { 13, "comma" }, new Object[] { 14, "hyphen" }, new Object[] { 15, "period" }, new Object[] { 16, "slash" }, new Object[] { 17, "zero" }, new Object[] { 18, "one" }, new Object[] { 19, "two" },
new Object[] { 20, "three" }, new Object[] { 21, "four" }, new Object[] { 22, "five" }, new Object[] { 23, "six" }, new Object[] { 24, "seven" }, new Object[] { 25, "eight" }, new Object[] { 26, "nine" }, new Object[] { 27, "colon" }, new Object[] { 28, "semicolon" }, new Object[] { 29, "less" },
new Object[] { 30, "equal" }, new Object[] { 31, "greater" }, new Object[] { 32, "question" }, new Object[] { 33, "at" }, new Object[] { 34, "A" }, new Object[] { 35, "B" }, new Object[] { 36, "C" }, new Object[] { 37, "D" }, new Object[] { 38, "E" }, new Object[] { 39, "F" },
new Object[] { 40, "G" }, new Object[] { 41, "H" }, new Object[] { 42, "I" }, new Object[] { 43, "J" }, new Object[] { 44, "K" }, new Object[] { 45, "L" }, new Object[] { 46, "M" }, new Object[] { 47, "N" }, new Object[] { 48, "O" }, new Object[] { 49, "P" },
new Object[] { 50, "Q" }, new Object[] { 51, "R" }, new Object[] { 52, "S" }, new Object[] { 53, "T" }, new Object[] { 54, "U" }, new Object[] { 55, "V" }, new Object[] { 56, "W" }, new Object[] { 57, "X" }, new Object[] { 58, "Y" }, new Object[] { 59, "Z" },
new Object[] { 60, "bracketleft" }, new Object[] { 61, "backslash" }, new Object[] { 62, "bracketright" }, new Object[] { 63, "asciicircum" }, new Object[] { 64, "underscore" }, new Object[] { 65, "quoteleft" }, new Object[] { 66, "a" }, new Object[] { 67, "b" }, new Object[] { 68, "c" }, new Object[] { 69, "d" },
new Object[] { 70, "e" }, new Object[] { 71, "f" }, new Object[] { 72, "g" }, new Object[] { 73, "h" }, new Object[] { 74, "i" }, new Object[] { 75, "j" }, new Object[] { 76, "k" }, new Object[] { 77, "l" }, new Object[] { 78, "m" }, new Object[] { 79, "n" },
new Object[] { 80, "o" }, new Object[] { 81, "p" }, new Object[] { 82, "q" }, new Object[] { 83, "r" }, new Object[] { 84, "s" }, new Object[] { 85, "t" }, new Object[] { 86, "u" }, new Object[] { 87, "v" }, new Object[] { 88, "w" }, new Object[] { 89, "x" },
new Object[] { 90, "y" }, new Object[] { 91, "z" }, new Object[] { 92, "braceleft" }, new Object[] { 93, "bar" }, new Object[] { 94, "braceright" }, new Object[] { 95, "asciitilde" }, new Object[] { 96, "exclamdown" }, new Object[] { 97, "cent" }, new Object[] { 98, "sterling" }, new Object[] { 99, "fraction" },
new Object[] { 100, "yen" }, new Object[] { 101, "florin" }, new Object[] { 102, "section" }, new Object[] { 103, "currency" }, new Object[] { 104, "quotesingle" }, new Object[] { 105, "quotedblleft" }, new Object[] { 106, "guillemotleft" }, new Object[] { 107, "guilsinglleft" }, new Object[] { 108, "guilsinglright" }, new Object[] { 109, "fi" },
new Object[] { 110, "fl" }, new Object[] { 111, "endash" }, new Object[] { 112, "dagger" }, new Object[] { 113, "daggerdbl" }, new Object[] { 114, "periodcentered" }, new Object[] { 115, "paragraph" }, new Object[] { 116, "bullet" }, new Object[] { 117, "quotesinglbase" }, new Object[] { 118, "quotedblbase" }, new Object[] { 119, "quotedblright" },
new Object[] { 120, "guillemotright" }, new Object[] { 121, "ellipsis" }, new Object[] { 122, "perthousand" }, new Object[] { 123, "questiondown" }, new Object[] { 124, "grave" }, new Object[] { 125, "acute" }, new Object[] { 126, "circumflex" }, new Object[] { 127, "tilde" }, new Object[] { 128, "macron" }, new Object[] { 129, "breve" },
new Object[] { 130, "dotaccent" }, new Object[] { 131, "dieresis" }, new Object[] { 132, "ring" }, new Object[] { 133, "cedilla" }, new Object[] { 134, "hungarumlaut" }, new Object[] { 135, "ogonek" }, new Object[] { 136, "caron" }, new Object[] { 137, "emdash" }, new Object[] { 138, "AE" }, new Object[] { 139, "ordfeminine" },
new Object[] { 140, "Lslash" }, new Object[] { 141, "Oslash" }, new Object[] { 142, "OE" }, new Object[] { 143, "ordmasculine" }, new Object[] { 144, "ae" }, new Object[] { 145, "dotlessi" }, new Object[] { 146, "lslash" }, new Object[] { 147, "oslash" }, new Object[] { 148, "oe" }, new Object[] { 149, "germandbls" },
new Object[] { 150, "onesuperior" }, new Object[] { 151, "logicalnot" }, new Object[] { 152, "mu" }, new Object[] { 153, "trademark" }, new Object[] { 154, "Eth" }, new Object[] { 155, "onehalf" }, new Object[] { 156, "plusminus" }, new Object[] { 157, "Thorn" }, new Object[] { 158, "onequarter" }, new Object[] { 159, "divide" },
new Object[] { 160, "brokenbar" }, new Object[] { 161, "degree" }, new Object[] { 162, "thorn" }, new Object[] { 163, "threequarters" }, new Object[] { 164, "twosuperior" }, new Object[] { 165, "registered" }, new Object[] { 166, "minus" }, new Object[] { 167, "eth" }, new Object[] { 168, "multiply" }, new Object[] { 169, "threesuperior" },
new Object[] { 170, "copyright" }, new Object[] { 171, "Aacute" }, new Object[] { 172, "Acircumflex" }, new Object[] { 173, "Adieresis" }, new Object[] { 174, "Agrave" }, new Object[] { 175, "Aring" }, new Object[] { 176, "Atilde" }, new Object[] { 177, "Ccedilla" }, new Object[] { 178, "Eacute" }, new Object[] { 179, "Ecircumflex" },
new Object[] { 180, "Edieresis" }, new Object[] { 181, "Egrave" }, new Object[] { 182, "Iacute" }, new Object[] { 183, "Icircumflex" }, new Object[] { 184, "Idieresis" }, new Object[] { 185, "Igrave" }, new Object[] { 186, "Ntilde" }, new Object[] { 187, "Oacute" }, new Object[] { 188, "Ocircumflex" }, new Object[] { 189, "Odieresis" },
new Object[] { 190, "Ograve" }, new Object[] { 191, "Otilde" }, new Object[] { 192, "Scaron" }, new Object[] { 193, "Uacute" }, new Object[] { 194, "Ucircumflex" }, new Object[] { 195, "Udieresis" }, new Object[] { 196, "Ugrave" }, new Object[] { 197, "Yacute" }, new Object[] { 198, "Ydieresis" }, new Object[] { 199, "Zcaron" },
new Object[] { 200, "aacute" }, new Object[] { 201, "acircumflex" }, new Object[] { 202, "adieresis" }, new Object[] { 203, "agrave" }, new Object[] { 204, "aring" }, new Object[] { 205, "atilde" }, new Object[] { 206, "ccedilla" }, new Object[] { 207, "eacute" }, new Object[] { 208, "ecircumflex" }, new Object[] { 209, "edieresis" },
new Object[] { 210, "egrave" }, new Object[] { 211, "iacute" }, new Object[] { 212, "icircumflex" }, new Object[] { 213, "idieresis" }, new Object[] { 214, "igrave" }, new Object[] { 215, "ntilde" }, new Object[] { 216, "oacute" }, new Object[] { 217, "ocircumflex" }, new Object[] { 218, "odieresis" }, new Object[] { 219, "ograve" },
new Object[] { 220, "otilde" }, new Object[] { 221, "scaron" }, new Object[] { 222, "uacute" }, new Object[] { 223, "ucircumflex" }, new Object[] { 224, "udieresis" }, new Object[] { 225, "ugrave" }, new Object[] { 226, "yacute" }, new Object[] { 227, "ydieresis" }, new Object[] { 228, "zcaron" } };
private CFFISOAdobeCharset() {
super(false);
}
public static CFFISOAdobeCharset getInstance() {
return INSTANCE;
}
private static final CFFISOAdobeCharset INSTANCE = new CFFISOAdobeCharset();
static {
int gid = 0;
for (Object[] charsetEntry : CFF_ISO_ADOBE_CHARSET_TABLE)
INSTANCE.addSID(gid++, ((Integer)charsetEntry[0]).intValue(), charsetEntry[1].toString());
}
}

View file

@ -0,0 +1,161 @@
package org.apache.fontbox.cff;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
public final class CFFOperator {
private Key operatorKey = null;
private String operatorName = null;
private CFFOperator(Key key, String name) {
setKey(key);
setName(name);
}
public Key getKey() {
return this.operatorKey;
}
private void setKey(Key key) {
this.operatorKey = key;
}
public String getName() {
return this.operatorName;
}
private void setName(String name) {
this.operatorName = name;
}
public String toString() {
return getName();
}
public int hashCode() {
return getKey().hashCode();
}
public boolean equals(Object object) {
if (object instanceof CFFOperator) {
CFFOperator that = (CFFOperator)object;
return getKey().equals(that.getKey());
}
return false;
}
private static void register(Key key, String name) {
CFFOperator operator = new CFFOperator(key, name);
keyMap.put(key, operator);
nameMap.put(name, operator);
}
public static CFFOperator getOperator(Key key) {
return keyMap.get(key);
}
public static CFFOperator getOperator(String name) {
return nameMap.get(name);
}
public static class Key {
private int[] value = null;
public Key(int b0) {
this(new int[] { b0 });
}
public Key(int b0, int b1) {
this(new int[] { b0, b1 });
}
private Key(int[] value) {
setValue(value);
}
public int[] getValue() {
return this.value;
}
private void setValue(int[] value) {
this.value = value;
}
public String toString() {
return Arrays.toString(getValue());
}
public int hashCode() {
return Arrays.hashCode(getValue());
}
public boolean equals(Object object) {
if (object instanceof Key) {
Key that = (Key)object;
return Arrays.equals(getValue(), that.getValue());
}
return false;
}
}
private static Map<Key, CFFOperator> keyMap = new LinkedHashMap<Key, CFFOperator>(52);
private static Map<String, CFFOperator> nameMap = new LinkedHashMap<String, CFFOperator>(52);
static {
register(new Key(0), "version");
register(new Key(1), "Notice");
register(new Key(12, 0), "Copyright");
register(new Key(2), "FullName");
register(new Key(3), "FamilyName");
register(new Key(4), "Weight");
register(new Key(12, 1), "isFixedPitch");
register(new Key(12, 2), "ItalicAngle");
register(new Key(12, 3), "UnderlinePosition");
register(new Key(12, 4), "UnderlineThickness");
register(new Key(12, 5), "PaintType");
register(new Key(12, 6), "CharstringType");
register(new Key(12, 7), "FontMatrix");
register(new Key(13), "UniqueID");
register(new Key(5), "FontBBox");
register(new Key(12, 8), "StrokeWidth");
register(new Key(14), "XUID");
register(new Key(15), "charset");
register(new Key(16), "Encoding");
register(new Key(17), "CharStrings");
register(new Key(18), "Private");
register(new Key(12, 20), "SyntheticBase");
register(new Key(12, 21), "PostScript");
register(new Key(12, 22), "BaseFontName");
register(new Key(12, 23), "BaseFontBlend");
register(new Key(12, 30), "ROS");
register(new Key(12, 31), "CIDFontVersion");
register(new Key(12, 32), "CIDFontRevision");
register(new Key(12, 33), "CIDFontType");
register(new Key(12, 34), "CIDCount");
register(new Key(12, 35), "UIDBase");
register(new Key(12, 36), "FDArray");
register(new Key(12, 37), "FDSelect");
register(new Key(12, 38), "FontName");
register(new Key(6), "BlueValues");
register(new Key(7), "OtherBlues");
register(new Key(8), "FamilyBlues");
register(new Key(9), "FamilyOtherBlues");
register(new Key(12, 9), "BlueScale");
register(new Key(12, 10), "BlueShift");
register(new Key(12, 11), "BlueFuzz");
register(new Key(10), "StdHW");
register(new Key(11), "StdVW");
register(new Key(12, 12), "StemSnapH");
register(new Key(12, 13), "StemSnapV");
register(new Key(12, 14), "ForceBold");
register(new Key(12, 15), "LanguageGroup");
register(new Key(12, 16), "ExpansionFactor");
register(new Key(12, 17), "initialRandomSeed");
register(new Key(19), "Subrs");
register(new Key(20), "defaultWidthX");
register(new Key(21), "nominalWidthX");
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,46 @@
package org.apache.fontbox.cff;
public final class CFFStandardEncoding extends CFFEncoding {
private static final int CHAR_CODE = 0;
private static final int CHAR_SID = 1;
private static final int[][] CFF_STANDARD_ENCODING_TABLE = new int[][] {
new int[] { 0, 0 }, new int[] { 1, 0 }, new int[] { 2, 0 }, new int[] { 3, 0 }, new int[] { 4, 0 }, new int[] { 5, 0 }, new int[] { 6, 0 }, new int[] { 7, 0 }, new int[] { 8, 0 }, new int[] { 9, 0 },
new int[] { 10, 0 }, new int[] { 11, 0 }, new int[] { 12, 0 }, new int[] { 13, 0 }, new int[] { 14, 0 }, new int[] { 15, 0 }, new int[] { 16, 0 }, new int[] { 17, 0 }, new int[] { 18, 0 }, new int[] { 19, 0 },
new int[] { 20, 0 }, new int[] { 21, 0 }, new int[] { 22, 0 }, new int[] { 23, 0 }, new int[] { 24, 0 }, new int[] { 25, 0 }, new int[] { 26, 0 }, new int[] { 27, 0 }, new int[] { 28, 0 }, new int[] { 29, 0 },
new int[] { 30, 0 }, new int[] { 31, 0 }, new int[] { 32, 1 }, new int[] { 33, 2 }, new int[] { 34, 3 }, new int[] { 35, 4 }, new int[] { 36, 5 }, new int[] { 37, 6 }, new int[] { 38, 7 }, new int[] { 39, 8 },
new int[] { 40, 9 }, new int[] { 41, 10 }, new int[] { 42, 11 }, new int[] { 43, 12 }, new int[] { 44, 13 }, new int[] { 45, 14 }, new int[] { 46, 15 }, new int[] { 47, 16 }, new int[] { 48, 17 }, new int[] { 49, 18 },
new int[] { 50, 19 }, new int[] { 51, 20 }, new int[] { 52, 21 }, new int[] { 53, 22 }, new int[] { 54, 23 }, new int[] { 55, 24 }, new int[] { 56, 25 }, new int[] { 57, 26 }, new int[] { 58, 27 }, new int[] { 59, 28 },
new int[] { 60, 29 }, new int[] { 61, 30 }, new int[] { 62, 31 }, new int[] { 63, 32 }, new int[] { 64, 33 }, new int[] { 65, 34 }, new int[] { 66, 35 }, new int[] { 67, 36 }, new int[] { 68, 37 }, new int[] { 69, 38 },
new int[] { 70, 39 }, new int[] { 71, 40 }, new int[] { 72, 41 }, new int[] { 73, 42 }, new int[] { 74, 43 }, new int[] { 75, 44 }, new int[] { 76, 45 }, new int[] { 77, 46 }, new int[] { 78, 47 }, new int[] { 79, 48 },
new int[] { 80, 49 }, new int[] { 81, 50 }, new int[] { 82, 51 }, new int[] { 83, 52 }, new int[] { 84, 53 }, new int[] { 85, 54 }, new int[] { 86, 55 }, new int[] { 87, 56 }, new int[] { 88, 57 }, new int[] { 89, 58 },
new int[] { 90, 59 }, new int[] { 91, 60 }, new int[] { 92, 61 }, new int[] { 93, 62 }, new int[] { 94, 63 }, new int[] { 95, 64 }, new int[] { 96, 65 }, new int[] { 97, 66 }, new int[] { 98, 67 }, new int[] { 99, 68 },
new int[] { 100, 69 }, new int[] { 101, 70 }, new int[] { 102, 71 }, new int[] { 103, 72 }, new int[] { 104, 73 }, new int[] { 105, 74 }, new int[] { 106, 75 }, new int[] { 107, 76 }, new int[] { 108, 77 }, new int[] { 109, 78 },
new int[] { 110, 79 }, new int[] { 111, 80 }, new int[] { 112, 81 }, new int[] { 113, 82 }, new int[] { 114, 83 }, new int[] { 115, 84 }, new int[] { 116, 85 }, new int[] { 117, 86 }, new int[] { 118, 87 }, new int[] { 119, 88 },
new int[] { 120, 89 }, new int[] { 121, 90 }, new int[] { 122, 91 }, new int[] { 123, 92 }, new int[] { 124, 93 }, new int[] { 125, 94 }, new int[] { 126, 95 }, new int[] { 127, 0 }, new int[] { 128, 0 }, new int[] { 129, 0 },
new int[] { 130, 0 }, new int[] { 131, 0 }, new int[] { 132, 0 }, new int[] { 133, 0 }, new int[] { 134, 0 }, new int[] { 135, 0 }, new int[] { 136, 0 }, new int[] { 137, 0 }, new int[] { 138, 0 }, new int[] { 139, 0 },
new int[] { 140, 0 }, new int[] { 141, 0 }, new int[] { 142, 0 }, new int[] { 143, 0 }, new int[] { 144, 0 }, new int[] { 145, 0 }, new int[] { 146, 0 }, new int[] { 147, 0 }, new int[] { 148, 0 }, new int[] { 149, 0 },
new int[] { 150, 0 }, new int[] { 151, 0 }, new int[] { 152, 0 }, new int[] { 153, 0 }, new int[] { 154, 0 }, new int[] { 155, 0 }, new int[] { 156, 0 }, new int[] { 157, 0 }, new int[] { 158, 0 }, new int[] { 159, 0 },
new int[] { 160, 0 }, new int[] { 161, 96 }, new int[] { 162, 97 }, new int[] { 163, 98 }, new int[] { 164, 99 }, new int[] { 165, 100 }, new int[] { 166, 101 }, new int[] { 167, 102 }, new int[] { 168, 103 }, new int[] { 169, 104 },
new int[] { 170, 105 }, new int[] { 171, 106 }, new int[] { 172, 107 }, new int[] { 173, 108 }, new int[] { 174, 109 }, new int[] { 175, 110 }, new int[] { 176, 0 }, new int[] { 177, 111 }, new int[] { 178, 112 }, new int[] { 179, 113 },
new int[] { 180, 114 }, new int[] { 181, 0 }, new int[] { 182, 115 }, new int[] { 183, 116 }, new int[] { 184, 117 }, new int[] { 185, 118 }, new int[] { 186, 119 }, new int[] { 187, 120 }, new int[] { 188, 121 }, new int[] { 189, 122 },
new int[] { 190, 0 }, new int[] { 191, 123 }, new int[] { 192, 0 }, new int[] { 193, 124 }, new int[] { 194, 125 }, new int[] { 195, 126 }, new int[] { 196, 127 }, new int[] { 197, 128 }, new int[] { 198, 129 }, new int[] { 199, 130 },
new int[] { 200, 131 }, new int[] { 201, 0 }, new int[] { 202, 132 }, new int[] { 203, 133 }, new int[] { 204, 0 }, new int[] { 205, 134 }, new int[] { 206, 135 }, new int[] { 207, 136 }, new int[] { 208, 137 }, new int[] { 209, 0 },
new int[] { 210, 0 }, new int[] { 211, 0 }, new int[] { 212, 0 }, new int[] { 213, 0 }, new int[] { 214, 0 }, new int[] { 215, 0 }, new int[] { 216, 0 }, new int[] { 217, 0 }, new int[] { 218, 0 }, new int[] { 219, 0 },
new int[] { 220, 0 }, new int[] { 221, 0 }, new int[] { 222, 0 }, new int[] { 223, 0 }, new int[] { 224, 0 }, new int[] { 225, 138 }, new int[] { 226, 0 }, new int[] { 227, 139 }, new int[] { 228, 0 }, new int[] { 229, 0 },
new int[] { 230, 0 }, new int[] { 231, 0 }, new int[] { 232, 140 }, new int[] { 233, 141 }, new int[] { 234, 142 }, new int[] { 235, 143 }, new int[] { 236, 0 }, new int[] { 237, 0 }, new int[] { 238, 0 }, new int[] { 239, 0 },
new int[] { 240, 0 }, new int[] { 241, 144 }, new int[] { 242, 0 }, new int[] { 243, 0 }, new int[] { 244, 0 }, new int[] { 245, 145 }, new int[] { 246, 0 }, new int[] { 247, 0 }, new int[] { 248, 146 }, new int[] { 249, 147 },
new int[] { 250, 148 }, new int[] { 251, 149 }, new int[] { 252, 0 }, new int[] { 253, 0 }, new int[] { 254, 0 }, new int[] { 255, 0 } };
public static CFFStandardEncoding getInstance() {
return INSTANCE;
}
private static final CFFStandardEncoding INSTANCE = new CFFStandardEncoding();
static {
for (int[] encodingEntry : CFF_STANDARD_ENCODING_TABLE)
INSTANCE.add(encodingEntry[0], encodingEntry[1]);
}
}

View file

@ -0,0 +1,49 @@
package org.apache.fontbox.cff;
public final class CFFStandardString {
public static String getName(int sid) {
return SID2STR[sid];
}
private static final String[] SID2STR = new String[] {
".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft",
"parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two",
"three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less",
"equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
"bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d",
"e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
"y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction",
"yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi",
"fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright",
"guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve",
"dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine",
"Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls",
"onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide",
"brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior",
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex",
"Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis",
"Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron",
"aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis",
"egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve",
"otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall",
"Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle",
"oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior",
"threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior",
"msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior",
"parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall",
"Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall",
"Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall",
"colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall",
"Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall",
"oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior",
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior",
"seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall",
"Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall",
"Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall",
"OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000",
"001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman",
"Semibold" };
}

View file

@ -0,0 +1,123 @@
package org.apache.fontbox.cff;
import java.awt.geom.GeneralPath;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.fontbox.EncodedFont;
import org.apache.fontbox.encoding.Encoding;
import org.apache.fontbox.type1.Type1CharStringReader;
public class CFFType1Font extends CFFFont implements EncodedFont {
private final Map<String, Object> privateDict = new LinkedHashMap<String, Object>();
private CFFEncoding encoding;
private final Map<Integer, Type2CharString> charStringCache = new ConcurrentHashMap<Integer, Type2CharString>();
private final PrivateType1CharStringReader reader = new PrivateType1CharStringReader();
private class PrivateType1CharStringReader implements Type1CharStringReader {
private PrivateType1CharStringReader() {}
public Type1CharString getType1CharString(String name) throws IOException {
return CFFType1Font.this.getType1CharString(name);
}
}
public GeneralPath getPath(String name) throws IOException {
return getType1CharString(name).getPath();
}
public float getWidth(String name) throws IOException {
return (float)getType1CharString(name).getWidth();
}
public boolean hasGlyph(String name) {
int sid = this.charset.getSID(name);
int gid = this.charset.getGIDForSID(sid);
return (gid != 0);
}
public List<Number> getFontMatrix() {
return (List<Number>)this.topDict.get("FontMatrix");
}
public Type1CharString getType1CharString(String name) throws IOException {
int gid = nameToGID(name);
return getType2CharString(gid, name);
}
public int nameToGID(String name) {
int sid = this.charset.getSID(name);
return this.charset.getGIDForSID(sid);
}
public Type2CharString getType2CharString(int gid) throws IOException {
String name = "GID+" + gid;
return getType2CharString(gid, name);
}
private Type2CharString getType2CharString(int gid, String name) throws IOException {
Type2CharString type2 = this.charStringCache.get(Integer.valueOf(gid));
if (type2 == null) {
byte[] bytes = null;
if (gid < this.charStrings.length)
bytes = this.charStrings[gid];
if (bytes == null)
bytes = this.charStrings[0];
Type2CharStringParser parser = new Type2CharStringParser(this.fontName, name);
List<Object> type2seq = parser.parse(bytes, this.globalSubrIndex, getLocalSubrIndex());
type2 = new Type2CharString(this.reader, this.fontName, name, gid, type2seq, getDefaultWidthX(), getNominalWidthX());
this.charStringCache.put(Integer.valueOf(gid), type2);
}
return type2;
}
public Map<String, Object> getPrivateDict() {
return this.privateDict;
}
void addToPrivateDict(String name, Object value) {
if (value != null)
this.privateDict.put(name, value);
}
public CFFEncoding getEncoding() {
return this.encoding;
}
void setEncoding(CFFEncoding encoding) {
this.encoding = encoding;
}
private byte[][] getLocalSubrIndex() {
return (byte[][])this.privateDict.get("Subrs");
}
private Object getProperty(String name) {
Object topDictValue = this.topDict.get(name);
if (topDictValue != null)
return topDictValue;
Object privateDictValue = this.privateDict.get(name);
if (privateDictValue != null)
return privateDictValue;
return null;
}
private int getDefaultWidthX() {
Number num = (Number)getProperty("defaultWidthX");
if (num == null)
return 1000;
return num.intValue();
}
private int getNominalWidthX() {
Number num = (Number)getProperty("nominalWidthX");
if (num == null)
return 0;
return num.intValue();
}
}

View file

@ -0,0 +1,17 @@
package org.apache.fontbox.cff;
import java.util.List;
import org.apache.fontbox.type1.Type1CharStringReader;
public class CIDKeyedType2CharString extends Type2CharString {
private final int cid;
public CIDKeyedType2CharString(Type1CharStringReader font, String fontName, int cid, int gid, List<Object> sequence, int defaultWidthX, int nomWidthX) {
super(font, fontName, String.format("%04x", cid), gid, sequence, defaultWidthX, nomWidthX);
this.cid = cid;
}
public int getCID() {
return this.cid;
}
}

View file

@ -0,0 +1,184 @@
package org.apache.fontbox.cff;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
public class CharStringCommand {
private Key commandKey = null;
public static final Map<Key, String> TYPE1_VOCABULARY;
public static final Map<Key, String> TYPE2_VOCABULARY;
public CharStringCommand(int b0) {
setKey(new Key(b0));
}
public CharStringCommand(int b0, int b1) {
setKey(new Key(b0, b1));
}
public CharStringCommand(int[] values) {
setKey(new Key(values));
}
public Key getKey() {
return this.commandKey;
}
private void setKey(Key key) {
this.commandKey = key;
}
public String toString() {
String str = TYPE2_VOCABULARY.get(getKey());
if (str == null)
str = TYPE1_VOCABULARY.get(getKey());
if (str == null)
return getKey().toString() + '|';
return str + '|';
}
public int hashCode() {
return getKey().hashCode();
}
public boolean equals(Object object) {
if (object instanceof CharStringCommand) {
CharStringCommand that = (CharStringCommand)object;
return getKey().equals(that.getKey());
}
return false;
}
public static class Key {
private int[] keyValues = null;
public Key(int b0) {
setValue(new int[] { b0 });
}
public Key(int b0, int b1) {
setValue(new int[] { b0, b1 });
}
public Key(int[] values) {
setValue(values);
}
public int[] getValue() {
return this.keyValues;
}
private void setValue(int[] value) {
this.keyValues = value;
}
public String toString() {
return Arrays.toString(getValue());
}
public int hashCode() {
if (this.keyValues[0] == 12 && this.keyValues.length > 1)
return this.keyValues[0] ^ this.keyValues[1];
return this.keyValues[0];
}
public boolean equals(Object object) {
if (object instanceof Key) {
Key that = (Key)object;
if (this.keyValues[0] == 12 && that.keyValues[0] == 12) {
if (this.keyValues.length > 1 && that.keyValues.length > 1)
return (this.keyValues[1] == that.keyValues[1]);
return (this.keyValues.length == that.keyValues.length);
}
return (this.keyValues[0] == that.keyValues[0]);
}
return false;
}
}
static {
Map<Key, String> map = new LinkedHashMap<Key, String>(26);
map.put(new Key(1), "hstem");
map.put(new Key(3), "vstem");
map.put(new Key(4), "vmoveto");
map.put(new Key(5), "rlineto");
map.put(new Key(6), "hlineto");
map.put(new Key(7), "vlineto");
map.put(new Key(8), "rrcurveto");
map.put(new Key(9), "closepath");
map.put(new Key(10), "callsubr");
map.put(new Key(11), "return");
map.put(new Key(12), "escape");
map.put(new Key(12, 0), "dotsection");
map.put(new Key(12, 1), "vstem3");
map.put(new Key(12, 2), "hstem3");
map.put(new Key(12, 6), "seac");
map.put(new Key(12, 7), "sbw");
map.put(new Key(12, 12), "div");
map.put(new Key(12, 16), "callothersubr");
map.put(new Key(12, 17), "pop");
map.put(new Key(12, 33), "setcurrentpoint");
map.put(new Key(13), "hsbw");
map.put(new Key(14), "endchar");
map.put(new Key(21), "rmoveto");
map.put(new Key(22), "hmoveto");
map.put(new Key(30), "vhcurveto");
map.put(new Key(31), "hvcurveto");
TYPE1_VOCABULARY = Collections.<Key, String>unmodifiableMap(map);
map = new LinkedHashMap<Key, String>(48);
map.put(new Key(1), "hstem");
map.put(new Key(3), "vstem");
map.put(new Key(4), "vmoveto");
map.put(new Key(5), "rlineto");
map.put(new Key(6), "hlineto");
map.put(new Key(7), "vlineto");
map.put(new Key(8), "rrcurveto");
map.put(new Key(10), "callsubr");
map.put(new Key(11), "return");
map.put(new Key(12), "escape");
map.put(new Key(12, 3), "and");
map.put(new Key(12, 4), "or");
map.put(new Key(12, 5), "not");
map.put(new Key(12, 9), "abs");
map.put(new Key(12, 10), "add");
map.put(new Key(12, 11), "sub");
map.put(new Key(12, 12), "div");
map.put(new Key(12, 14), "neg");
map.put(new Key(12, 15), "eq");
map.put(new Key(12, 18), "drop");
map.put(new Key(12, 20), "put");
map.put(new Key(12, 21), "get");
map.put(new Key(12, 22), "ifelse");
map.put(new Key(12, 23), "random");
map.put(new Key(12, 24), "mul");
map.put(new Key(12, 26), "sqrt");
map.put(new Key(12, 27), "dup");
map.put(new Key(12, 28), "exch");
map.put(new Key(12, 29), "index");
map.put(new Key(12, 30), "roll");
map.put(new Key(12, 34), "hflex");
map.put(new Key(12, 35), "flex");
map.put(new Key(12, 36), "hflex1");
map.put(new Key(12, 37), "flex1");
map.put(new Key(14), "endchar");
map.put(new Key(18), "hstemhm");
map.put(new Key(19), "hintmask");
map.put(new Key(20), "cntrmask");
map.put(new Key(21), "rmoveto");
map.put(new Key(22), "hmoveto");
map.put(new Key(23), "vstemhm");
map.put(new Key(24), "rcurveline");
map.put(new Key(25), "rlinecurve");
map.put(new Key(26), "vvcurveto");
map.put(new Key(27), "hhcurveto");
map.put(new Key(28), "shortint");
map.put(new Key(29), "callgsubr");
map.put(new Key(30), "vhcurveto");
map.put(new Key(31), "hvcurveto");
TYPE2_VOCABULARY = Collections.<Key, String>unmodifiableMap(map);
}
}

View file

@ -0,0 +1,23 @@
package org.apache.fontbox.cff;
import java.util.List;
import java.util.Stack;
public abstract class CharStringHandler {
public List<Integer> handleSequence(List<Object> sequence) {
Stack<Integer> stack = new Stack<Integer>();
for (Object obj : sequence) {
if (obj instanceof CharStringCommand) {
List<Integer> results = handleCommand(stack, (CharStringCommand)obj);
stack.clear();
if (results != null)
stack.addAll(results);
continue;
}
stack.push((Integer)obj);
}
return stack;
}
public abstract List<Integer> handleCommand(List<Integer> paramList, CharStringCommand paramCharStringCommand);
}

View file

@ -0,0 +1,109 @@
package org.apache.fontbox.cff;
import java.io.EOFException;
import java.io.IOException;
import org.apache.fontbox.util.Charsets;
public class DataInput {
private byte[] inputBuffer = null;
private int bufferPosition = 0;
public DataInput(byte[] buffer) {
this.inputBuffer = buffer;
}
public boolean hasRemaining() {
return (this.bufferPosition < this.inputBuffer.length);
}
public int getPosition() {
return this.bufferPosition;
}
public void setPosition(int position) {
this.bufferPosition = position;
}
public String getString() throws IOException {
return new String(this.inputBuffer, Charsets.ISO_8859_1);
}
public byte readByte() throws IOException {
try {
byte value = this.inputBuffer[this.bufferPosition];
this.bufferPosition++;
return value;
} catch (RuntimeException re) {
return -1;
}
}
public int readUnsignedByte() throws IOException {
int b = read();
if (b < 0)
throw new EOFException();
return b;
}
public int peekUnsignedByte(int offset) throws IOException {
int b = peek(offset);
if (b < 0)
throw new EOFException();
return b;
}
public short readShort() throws IOException {
return (short)readUnsignedShort();
}
public int readUnsignedShort() throws IOException {
int b1 = read();
int b2 = read();
if ((b1 | b2) < 0)
throw new EOFException();
return b1 << 8 | b2;
}
public int readInt() throws IOException {
int b1 = read();
int b2 = read();
int b3 = read();
int b4 = read();
if ((b1 | b2 | b3 | b4) < 0)
throw new EOFException();
return b1 << 24 | b2 << 16 | b3 << 8 | b4;
}
public byte[] readBytes(int length) throws IOException {
if (this.inputBuffer.length - this.bufferPosition < length)
throw new EOFException();
byte[] bytes = new byte[length];
System.arraycopy(this.inputBuffer, this.bufferPosition, bytes, 0, length);
this.bufferPosition += length;
return bytes;
}
private int read() {
try {
int value = this.inputBuffer[this.bufferPosition] & 0xFF;
this.bufferPosition++;
return value;
} catch (RuntimeException re) {
return -1;
}
}
private int peek(int offset) {
try {
int value = this.inputBuffer[this.bufferPosition + offset] & 0xFF;
return value;
} catch (RuntimeException re) {
return -1;
}
}
public int length() {
return this.inputBuffer.length;
}
}

View file

@ -0,0 +1,47 @@
package org.apache.fontbox.cff;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class DataOutput {
private ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();
private String outputEncoding = null;
public DataOutput() {
this("ISO-8859-1");
}
public DataOutput(String encoding) {
this.outputEncoding = encoding;
}
public byte[] getBytes() {
return this.outputBuffer.toByteArray();
}
public void write(int value) {
this.outputBuffer.write(value);
}
public void write(byte[] buffer) {
this.outputBuffer.write(buffer, 0, buffer.length);
}
public void write(byte[] buffer, int offset, int length) {
this.outputBuffer.write(buffer, offset, length);
}
public void print(String string) throws IOException {
write(string.getBytes(this.outputEncoding));
}
public void println(String string) throws IOException {
write(string.getBytes(this.outputEncoding));
write(10);
}
public void println() {
write(10);
}
}

View file

@ -0,0 +1,11 @@
package org.apache.fontbox.cff;
public abstract class FDSelect {
protected final CFFCIDFont owner;
public FDSelect(CFFCIDFont owner) {
this.owner = owner;
}
public abstract int getFDIndex(int paramInt);
}

View file

@ -0,0 +1,272 @@
package org.apache.fontbox.cff;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.fontbox.encoding.StandardEncoding;
import org.apache.fontbox.type1.Type1CharStringReader;
public class Type1CharString {
private static final Log LOG = LogFactory.getLog(Type1CharString.class);
private Type1CharStringReader font;
private String fontName;
private String glyphName;
private GeneralPath path = null;
private int width = 0;
private Point2D.Float leftSideBearing = null;
private Point2D.Float current = null;
private boolean isFlex = false;
private List<Point2D.Float> flexPoints = new ArrayList<Point2D.Float>();
protected List<Object> type1Sequence;
protected int commandCount;
public Type1CharString(Type1CharStringReader font, String fontName, String glyphName, List<Object> sequence) {
this(font, fontName, glyphName);
this.type1Sequence = sequence;
}
protected Type1CharString(Type1CharStringReader font, String fontName, String glyphName) {
this.font = font;
this.fontName = fontName;
this.glyphName = glyphName;
this.current = new Point2D.Float(0.0F, 0.0F);
}
public String getName() {
return this.glyphName;
}
public Rectangle2D getBounds() {
if (this.path == null)
render();
return this.path.getBounds2D();
}
public int getWidth() {
if (this.path == null)
render();
return this.width;
}
public GeneralPath getPath() {
if (this.path == null)
render();
return this.path;
}
public List<Object> getType1Sequence() {
return this.type1Sequence;
}
private void render() {
this.path = new GeneralPath();
this.leftSideBearing = new Point2D.Float(0.0F, 0.0F);
this.width = 0;
CharStringHandler handler = new CharStringHandler() {
public List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
return Type1CharString.this.handleCommand(numbers, command);
}
};
handler.handleSequence(this.type1Sequence);
}
private List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
this.commandCount++;
String name = CharStringCommand.TYPE1_VOCABULARY.get(command.getKey());
if ("rmoveto".equals(name)) {
if (numbers.size() >= 2)
if (this.isFlex) {
this.flexPoints.add(new Point2D.Float((float)numbers.get(0), (float)numbers.get(1)));
} else {
rmoveTo(numbers.get(0), numbers.get(1));
}
} else if ("vmoveto".equals(name)) {
if (numbers.size() >= 1)
if (this.isFlex) {
this.flexPoints.add(new Point2D.Float(0.0F, (float)numbers.get(0)));
} else {
rmoveTo(Integer.valueOf(0), numbers.get(0));
}
} else if ("hmoveto".equals(name)) {
if (numbers.size() >= 1)
if (this.isFlex) {
this.flexPoints.add(new Point2D.Float((float)numbers.get(0), 0.0F));
} else {
rmoveTo(numbers.get(0), Integer.valueOf(0));
}
} else if ("rlineto".equals(name)) {
if (numbers.size() >= 2)
rlineTo(numbers.get(0), numbers.get(1));
} else if ("hlineto".equals(name)) {
if (numbers.size() >= 1)
rlineTo(numbers.get(0), Integer.valueOf(0));
} else if ("vlineto".equals(name)) {
if (numbers.size() >= 1)
rlineTo(Integer.valueOf(0), numbers.get(0));
} else if ("rrcurveto".equals(name)) {
if (numbers.size() >= 6)
rrcurveTo(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4), numbers.get(5));
} else if ("closepath".equals(name)) {
closepath();
} else if ("sbw".equals(name)) {
if (numbers.size() >= 3) {
this.leftSideBearing = new Point2D.Float((float)numbers.get(0), (float)numbers.get(1));
this.width = numbers.get(2);
this.current.setLocation(this.leftSideBearing);
}
} else if ("hsbw".equals(name)) {
if (numbers.size() >= 2) {
this.leftSideBearing = new Point2D.Float((float)numbers.get(0), 0.0F);
this.width = numbers.get(1);
this.current.setLocation(this.leftSideBearing);
}
} else if ("vhcurveto".equals(name)) {
if (numbers.size() >= 4)
rrcurveTo(Integer.valueOf(0), numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), Integer.valueOf(0));
} else if ("hvcurveto".equals(name)) {
if (numbers.size() >= 4)
rrcurveTo(numbers.get(0), Integer.valueOf(0), numbers.get(1), numbers.get(2), Integer.valueOf(0), numbers.get(3));
} else if ("seac".equals(name)) {
if (numbers.size() >= 5)
seac(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4));
} else if ("setcurrentpoint".equals(name)) {
if (numbers.size() >= 2)
setcurrentpoint(numbers.get(0).intValue(), numbers.get(1).intValue());
} else if ("callothersubr".equals(name)) {
if (numbers.size() >= 1)
callothersubr(numbers.get(0).intValue());
} else {
if ("div".equals(name)) {
int b = numbers.get(numbers.size() - 1);
int a = numbers.get(numbers.size() - 2);
int result = a / b;
List<Integer> list = new ArrayList<Integer>(numbers);
list.remove(list.size() - 1);
list.remove(list.size() - 1);
list.add(Integer.valueOf(result));
return list;
}
if (!"hstem".equals(name) && !"vstem".equals(name) && !"hstem3".equals(name) && !"vstem3".equals(name) && !"dotsection".equals(name))
if (!"endchar".equals(name))
if ("return".equals(name)) {
LOG.warn("Unexpected charstring command: " + command.getKey() + " in glyph " + this.glyphName + " of font " + this.fontName);
} else {
if (name != null)
throw new IllegalArgumentException("Unhandled command: " + name);
LOG.warn("Unknown charstring command: " + command.getKey() + " in glyph " + this.glyphName + " of font " + this.fontName);
}
}
return null;
}
private void setcurrentpoint(int x, int y) {
this.current.setLocation((float)x, (float)y);
}
private void callothersubr(int num) {
if (num == 0) {
this.isFlex = false;
if (this.flexPoints.size() < 7) {
LOG.warn("flex without moveTo in font " + this.fontName + ", glyph " + this.glyphName + ", command " + this.commandCount);
return;
}
Point2D.Float reference = this.flexPoints.get(0);
reference.setLocation(this.current.getX() + reference.getX(), this.current.getY() + reference.getY());
Point2D.Float first = this.flexPoints.get(1);
first.setLocation(reference.getX() + first.getX(), reference.getY() + first.getY());
first.setLocation(first.getX() - this.current.getX(), first.getY() - this.current.getY());
rrcurveTo(Double.valueOf(this.flexPoints.get(1).getX()), Double.valueOf(this.flexPoints.get(1).getY()), Double.valueOf(this.flexPoints.get(2).getX()), Double.valueOf(this.flexPoints.get(2).getY()), Double.valueOf(this.flexPoints.get(3).getX()), Double.valueOf(this.flexPoints.get(3).getY()));
rrcurveTo(Double.valueOf(this.flexPoints.get(4).getX()), Double.valueOf(this.flexPoints.get(4).getY()), Double.valueOf(this.flexPoints.get(5).getX()), Double.valueOf(this.flexPoints.get(5).getY()), Double.valueOf(this.flexPoints.get(6).getX()), Double.valueOf(this.flexPoints.get(6).getY()));
this.flexPoints.clear();
} else if (num == 1) {
this.isFlex = true;
} else {
throw new IllegalArgumentException("Unexpected other subroutine: " + num);
}
}
private void rmoveTo(Number dx, Number dy) {
float x = (float)this.current.getX() + dx.floatValue();
float y = (float)this.current.getY() + dy.floatValue();
this.path.moveTo(x, y);
this.current.setLocation(x, y);
}
private void rlineTo(Number dx, Number dy) {
float x = (float)this.current.getX() + dx.floatValue();
float y = (float)this.current.getY() + dy.floatValue();
if (this.path.getCurrentPoint() == null) {
LOG.warn("rlineTo without initial moveTo in font " + this.fontName + ", glyph " + this.glyphName);
this.path.moveTo(x, y);
} else {
this.path.lineTo(x, y);
}
this.current.setLocation(x, y);
}
private void rrcurveTo(Number dx1, Number dy1, Number dx2, Number dy2, Number dx3, Number dy3) {
float x1 = (float)this.current.getX() + dx1.floatValue();
float y1 = (float)this.current.getY() + dy1.floatValue();
float x2 = x1 + dx2.floatValue();
float y2 = y1 + dy2.floatValue();
float x3 = x2 + dx3.floatValue();
float y3 = y2 + dy3.floatValue();
if (this.path.getCurrentPoint() == null) {
LOG.warn("rrcurveTo without initial moveTo in font " + this.fontName + ", glyph " + this.glyphName);
this.path.moveTo(x3, y3);
} else {
this.path.curveTo(x1, y1, x2, y2, x3, y3);
}
this.current.setLocation(x3, y3);
}
private void closepath() {
if (this.path.getCurrentPoint() == null) {
LOG.warn("closepath without initial moveTo in font " + this.fontName + ", glyph " + this.glyphName);
} else {
this.path.closePath();
}
this.path.moveTo(this.current.getX(), this.current.getY());
}
private void seac(Number asb, Number adx, Number ady, Number bchar, Number achar) {
String baseName = StandardEncoding.INSTANCE.getName(bchar.intValue());
if (baseName != null)
try {
Type1CharString base = this.font.getType1CharString(baseName);
this.path.append(base.getPath().getPathIterator(null), false);
} catch (IOException e) {
LOG.warn("invalid seac character in glyph " + this.glyphName + " of font " + this.fontName);
}
String accentName = StandardEncoding.INSTANCE.getName(achar.intValue());
if (accentName != null)
try {
Type1CharString accent = this.font.getType1CharString(accentName);
AffineTransform at = AffineTransform.getTranslateInstance(this.leftSideBearing.getX() + (double)adx.floatValue(), this.leftSideBearing.getY() + (double)ady.floatValue());
this.path.append(accent.getPath().getPathIterator(at), false);
} catch (IOException e) {
LOG.warn("invalid seac character in glyph " + this.glyphName + " of font " + this.fontName);
}
}
public String toString() {
return this.type1Sequence.toString().replace("|", "\n").replace(",", " ");
}
}

View file

@ -0,0 +1,134 @@
package org.apache.fontbox.cff;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class Type1CharStringParser {
private static final Log LOG = LogFactory.getLog(Type1CharStringParser.class);
static final int RETURN = 11;
static final int CALLSUBR = 10;
static final int TWO_BYTE = 12;
static final int CALLOTHERSUBR = 16;
static final int POP = 17;
private final String fontName;
private final String glyphName;
public Type1CharStringParser(String fontName, String glyphName) {
this.fontName = fontName;
this.glyphName = glyphName;
}
public List<Object> parse(byte[] bytes, List<byte[]> subrs) throws IOException {
return parse(bytes, subrs, new ArrayList());
}
private List<Object> parse(byte[] bytes, List<byte[]> subrs, List<Object> sequence) throws IOException {
DataInput input = new DataInput(bytes);
while (input.hasRemaining()) {
int b0 = input.readUnsignedByte();
if (b0 == 10) {
Object obj = sequence.remove(sequence.size() - 1);
if (!(obj instanceof Integer)) {
LOG.warn("Parameter " + obj + " for CALLSUBR is ignored, integer expected in glyph '" + this.glyphName + "' of font " + this.fontName);
continue;
}
Integer operand = (Integer)obj;
if (operand >= 0 && operand < subrs.size()) {
byte[] subrBytes = subrs.get(operand.intValue());
parse(subrBytes, subrs, sequence);
Object lastItem = sequence.get(sequence.size() - 1);
if (lastItem instanceof CharStringCommand && ((CharStringCommand)lastItem).getKey().getValue()[0] == 11)
sequence.remove(sequence.size() - 1);
}
continue;
}
if (b0 == 12 && input.peekUnsignedByte(0) == 16) {
input.readByte();
Integer othersubrNum = (Integer)sequence.remove(sequence.size() - 1);
Integer numArgs = (Integer)sequence.remove(sequence.size() - 1);
Stack<Integer> results = new Stack<Integer>();
if (othersubrNum == 0) {
results.push(removeInteger(sequence));
results.push(removeInteger(sequence));
sequence.remove(sequence.size() - 1);
sequence.add(Integer.valueOf(0));
sequence.add(new CharStringCommand(12, 16));
} else if (othersubrNum == 1) {
sequence.add(Integer.valueOf(1));
sequence.add(new CharStringCommand(12, 16));
} else if (othersubrNum == 3) {
results.push(removeInteger(sequence));
} else {
for (int i = 0; i < numArgs; i++)
results.push(removeInteger(sequence));
}
while (input.peekUnsignedByte(0) == 12 && input.peekUnsignedByte(1) == 17) {
input.readByte();
input.readByte();
sequence.add(results.pop());
}
if (results.size() > 0)
LOG.warn("Value left on the PostScript stack in glyph " + this.glyphName + " of font " + this.fontName);
continue;
}
if (b0 >= 0 && b0 <= 31) {
sequence.add(readCommand(input, b0));
continue;
}
if (b0 >= 32 && b0 <= 255) {
sequence.add(readNumber(input, b0));
continue;
}
throw new IllegalArgumentException();
}
return sequence;
}
private static Integer removeInteger(List<Object> sequence) throws IOException {
Object item = sequence.remove(sequence.size() - 1);
if (item instanceof Integer)
return (Integer)item;
CharStringCommand command = (CharStringCommand)item;
if (command.getKey().getValue()[0] == 12 && command.getKey().getValue()[1] == 12) {
int a = (Integer)sequence.remove(sequence.size() - 1);
int b = (Integer)sequence.remove(sequence.size() - 1);
return b / a;
}
throw new IOException("Unexpected char string command: " + command.getKey());
}
private CharStringCommand readCommand(DataInput input, int b0) throws IOException {
if (b0 == 12) {
int b1 = input.readUnsignedByte();
return new CharStringCommand(b0, b1);
}
return new CharStringCommand(b0);
}
private Integer readNumber(DataInput input, int b0) throws IOException {
if (b0 >= 32 && b0 <= 246)
return b0 - 139;
if (b0 >= 247 && b0 <= 250) {
int b1 = input.readUnsignedByte();
return (b0 - 247) * 256 + b1 + 108;
}
if (b0 >= 251 && b0 <= 254) {
int b1 = input.readUnsignedByte();
return -(b0 - 251) * 256 - b1 - 108;
}
if (b0 == 255)
return input.readInt();
throw new IllegalArgumentException();
}
}

View file

@ -0,0 +1,71 @@
package org.apache.fontbox.cff;
public final class Type1FontUtil {
public static String hexEncode(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
String string = Integer.toHexString(bytes[i] & 0xFF);
if (string.length() == 1)
sb.append("0");
sb.append(string.toUpperCase());
}
return sb.toString();
}
public static byte[] hexDecode(String string) {
if (string.length() % 2 != 0)
throw new IllegalArgumentException();
byte[] bytes = new byte[string.length() / 2];
for (int i = 0; i < string.length(); i += 2)
bytes[i / 2] = (byte)Integer.parseInt(string.substring(i, i + 2), 16);
return bytes;
}
public static byte[] eexecEncrypt(byte[] buffer) {
return encrypt(buffer, 55665, 4);
}
public static byte[] charstringEncrypt(byte[] buffer, int n) {
return encrypt(buffer, 4330, n);
}
private static byte[] encrypt(byte[] plaintextBytes, int r, int n) {
byte[] buffer = new byte[plaintextBytes.length + n];
for (int i = 0; i < n; i++)
buffer[i] = 0;
System.arraycopy(plaintextBytes, 0, buffer, n, buffer.length - n);
int c1 = 52845;
int c2 = 22719;
byte[] ciphertextBytes = new byte[buffer.length];
for (int j = 0; j < buffer.length; j++) {
int plain = buffer[j] & 0xFF;
int cipher = plain ^ r >> 8;
ciphertextBytes[j] = (byte)cipher;
r = (cipher + r) * c1 + c2 & 0xFFFF;
}
return ciphertextBytes;
}
public static byte[] eexecDecrypt(byte[] buffer) {
return decrypt(buffer, 55665, 4);
}
public static byte[] charstringDecrypt(byte[] buffer, int n) {
return decrypt(buffer, 4330, n);
}
private static byte[] decrypt(byte[] ciphertextBytes, int r, int n) {
byte[] buffer = new byte[ciphertextBytes.length];
int c1 = 52845;
int c2 = 22719;
for (int i = 0; i < ciphertextBytes.length; i++) {
int cipher = ciphertextBytes[i] & 0xFF;
int plain = cipher ^ r >> 8;
buffer[i] = (byte)plain;
r = (cipher + r) * c1 + c2 & 0xFFFF;
}
byte[] plaintextBytes = new byte[ciphertextBytes.length - n];
System.arraycopy(buffer, n, plaintextBytes, 0, plaintextBytes.length);
return plaintextBytes;
}
}

View file

@ -0,0 +1,213 @@
package org.apache.fontbox.cff;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.apache.fontbox.type1.Type1CharStringReader;
public class Type2CharString extends Type1CharString {
private int defWidthX = 0;
private int nominalWidthX = 0;
private int pathCount = 0;
private final List<Object> type2sequence;
private final int gid;
public Type2CharString(Type1CharStringReader font, String fontName, String glyphName, int gid, List<Object> sequence, int defaultWidthX, int nomWidthX) {
super(font, fontName, glyphName);
this.gid = gid;
this.type2sequence = sequence;
this.defWidthX = defaultWidthX;
this.nominalWidthX = nomWidthX;
convertType1ToType2(sequence);
}
public int getGID() {
return this.gid;
}
public List<Object> getType2Sequence() {
return this.type2sequence;
}
private void convertType1ToType2(List<Object> sequence) {
this.type1Sequence = new ArrayList();
this.pathCount = 0;
CharStringHandler handler = new CharStringHandler() {
public List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
return Type2CharString.this.handleCommand(numbers, command);
}
};
handler.handleSequence(sequence);
}
private List<Integer> handleCommand(List<Integer> numbers, CharStringCommand command) {
this.commandCount++;
String name = CharStringCommand.TYPE2_VOCABULARY.get(command.getKey());
if ("hstem".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, true);
} else if ("vstem".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, false);
} else if ("vmoveto".equals(name)) {
numbers = clearStack(numbers, (numbers.size() > 1));
markPath();
addCommand(numbers, command);
} else if ("rlineto".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers, 2), command);
} else if ("hlineto".equals(name)) {
drawAlternatingLine(numbers, true);
} else if ("vlineto".equals(name)) {
drawAlternatingLine(numbers, false);
} else if ("rrcurveto".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers, 6), command);
} else if ("endchar".equals(name)) {
numbers = clearStack(numbers, (numbers.size() == 5 || numbers.size() == 1));
closePath();
if (numbers.size() == 4) {
numbers.add(0, Integer.valueOf(0));
addCommand(numbers, new CharStringCommand(12, 6));
} else {
addCommand(numbers, command);
}
} else if ("rmoveto".equals(name)) {
numbers = clearStack(numbers, (numbers.size() > 2));
markPath();
addCommand(numbers, command);
} else if ("hmoveto".equals(name)) {
numbers = clearStack(numbers, (numbers.size() > 1));
markPath();
addCommand(numbers, command);
} else if ("vhcurveto".equals(name)) {
drawAlternatingCurve(numbers, false);
} else if ("hvcurveto".equals(name)) {
drawAlternatingCurve(numbers, true);
} else if ("hflex".equals(name)) {
List<Integer> first = Arrays.<Integer>asList(numbers.get(0), 0, numbers.get(1), numbers.get(2), numbers.get(3), 0);
List<Integer> second = Arrays.<Integer>asList(numbers.get(4), 0, numbers.get(5), -((Integer)numbers.get(2)), numbers.get(6), 0);
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("flex".equals(name)) {
List<Integer> first = numbers.subList(0, 6);
List<Integer> second = numbers.subList(6, 12);
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("hflex1".equals(name)) {
List<Integer> first = Arrays.<Integer>asList(numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), numbers.get(4), 0);
List<Integer> second = Arrays.<Integer>asList(numbers.get(5), 0, numbers.get(6), numbers.get(7), numbers.get(8), 0);
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("flex1".equals(name)) {
int dx = 0;
int dy = 0;
for (int i = 0; i < 5; i++) {
dx += numbers.get(i * 2);
dy += numbers.get(i * 2 + 1);
}
List<Integer> first = numbers.subList(0, 6);
List<Integer> second = Arrays.<Integer>asList(numbers.get(6), numbers.get(7), numbers.get(8), numbers.get(9), (Math.abs(dx) > Math.abs(dy)) ? numbers.get(10) : -dx, (Math.abs(dx) > Math.abs(dy)) ? -dy : numbers.get(10));
addCommandList(Arrays.<List<Integer>>asList(first, second), new CharStringCommand(8));
} else if ("hstemhm".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, true);
} else if ("hintmask".equals(name) || "cntrmask".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
if (numbers.size() > 0)
expandStemHints(numbers, false);
} else if ("vstemhm".equals(name)) {
numbers = clearStack(numbers, (numbers.size() % 2 != 0));
expandStemHints(numbers, false);
} else if ("rcurveline".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers.subList(0, numbers.size() - 2), 6), new CharStringCommand(8));
addCommand(numbers.subList(numbers.size() - 2, numbers.size()), new CharStringCommand(5));
} else if ("rlinecurve".equals(name)) {
addCommandList(Type2CharString.<Integer>split(numbers.subList(0, numbers.size() - 6), 2), new CharStringCommand(5));
addCommand(numbers.subList(numbers.size() - 6, numbers.size()), new CharStringCommand(8));
} else if ("vvcurveto".equals(name)) {
drawCurve(numbers, false);
} else if ("hhcurveto".equals(name)) {
drawCurve(numbers, true);
} else {
addCommand(numbers, command);
}
return null;
}
private List<Integer> clearStack(List<Integer> numbers, boolean flag) {
if (this.type1Sequence.isEmpty())
if (flag) {
addCommand(Arrays.<Integer>asList(0, numbers.get(0) + this.nominalWidthX), new CharStringCommand(13));
numbers = numbers.subList(1, numbers.size());
} else {
addCommand(Arrays.<Integer>asList(0, this.defWidthX), new CharStringCommand(13));
}
return numbers;
}
private void expandStemHints(List<Integer> numbers, boolean horizontal) {}
private void markPath() {
if (this.pathCount > 0)
closePath();
this.pathCount++;
}
private void closePath() {
CharStringCommand command = (this.pathCount > 0) ? (CharStringCommand)this.type1Sequence.get(this.type1Sequence.size() - 1) : null;
CharStringCommand closepathCommand = new CharStringCommand(9);
if (command != null && !closepathCommand.equals(command))
addCommand(Collections.<Integer>emptyList(), closepathCommand);
}
private void drawAlternatingLine(List<Integer> numbers, boolean horizontal) {
while (numbers.size() > 0) {
addCommand(numbers.subList(0, 1), new CharStringCommand(horizontal ? 6 : 7));
numbers = numbers.subList(1, numbers.size());
horizontal = !horizontal;
}
}
private void drawAlternatingCurve(List<Integer> numbers, boolean horizontal) {
while (numbers.size() > 0) {
boolean last = (numbers.size() == 5);
if (horizontal) {
addCommand(Arrays.<Integer>asList(numbers.get(0), 0, numbers.get(1), numbers.get(2), last ? numbers.get(4) : 0, numbers.get(3)), new CharStringCommand(8));
} else {
addCommand(Arrays.<Integer>asList(0, numbers.get(0), numbers.get(1), numbers.get(2), numbers.get(3), last ? numbers.get(4) : 0), new CharStringCommand(8));
}
numbers = numbers.subList(last ? 5 : 4, numbers.size());
horizontal = !horizontal;
}
}
private void drawCurve(List<Integer> numbers, boolean horizontal) {
while (numbers.size() > 0) {
boolean first = (numbers.size() % 4 == 1);
if (horizontal) {
addCommand(Arrays.<Integer>asList(numbers.get(first ? 1 : 0), first ? numbers.get(0) : 0, numbers.get(first ? 2 : 1), numbers.get(first ? 3 : 2), numbers.get(first ? 4 : 3), 0), new CharStringCommand(8));
} else {
addCommand(Arrays.<Integer>asList(first ? numbers.get(0) : 0, numbers.get(first ? 1 : 0), numbers.get(first ? 2 : 1), numbers.get(first ? 3 : 2), 0, numbers.get(first ? 4 : 3)), new CharStringCommand(8));
}
numbers = numbers.subList(first ? 5 : 4, numbers.size());
}
}
private void addCommandList(List<List<Integer>> numbers, CharStringCommand command) {
for (List<Integer> ns : numbers)
addCommand(ns, command);
}
private void addCommand(List<Integer> numbers, CharStringCommand command) {
this.type1Sequence.addAll(numbers);
this.type1Sequence.add(command);
}
private static <E> List<List<E>> split(List<E> list, int size) {
List<List<E>> result = new ArrayList<List<E>>();
for (int i = 0; i < list.size() / size; i++)
result.add(list.subList(i * size, (i + 1) * size));
return result;
}
}

View file

@ -0,0 +1,168 @@
package org.apache.fontbox.cff;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Type2CharStringParser {
private int hstemCount = 0;
private int vstemCount = 0;
private List<Object> sequence = null;
private final String fontName;
private final String glyphName;
public Type2CharStringParser(String fontName, String glyphName) {
this.fontName = fontName;
this.glyphName = glyphName;
}
public Type2CharStringParser(String fontName, int cid) {
this.fontName = fontName;
this.glyphName = String.format("%04x", cid);
}
public List<Object> parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex) throws IOException {
return parse(bytes, globalSubrIndex, localSubrIndex, true);
}
private List<Object> parse(byte[] bytes, byte[][] globalSubrIndex, byte[][] localSubrIndex, boolean init) throws IOException {
if (init) {
this.hstemCount = 0;
this.vstemCount = 0;
this.sequence = new ArrayList();
}
DataInput input = new DataInput(bytes);
boolean localSubroutineIndexProvided = (localSubrIndex != null && localSubrIndex.length > 0);
boolean globalSubroutineIndexProvided = (globalSubrIndex != null && globalSubrIndex.length > 0);
while (input.hasRemaining()) {
int b0 = input.readUnsignedByte();
if (b0 == 10 && localSubroutineIndexProvided) {
Integer operand = (Integer)this.sequence.remove(this.sequence.size() - 1);
int bias = 0;
int nSubrs = localSubrIndex.length;
if (nSubrs < 1240) {
bias = 107;
} else if (nSubrs < 33900) {
bias = 1131;
} else {
bias = 32768;
}
int subrNumber = bias + operand;
if (subrNumber < localSubrIndex.length) {
byte[] subrBytes = localSubrIndex[subrNumber];
parse(subrBytes, globalSubrIndex, localSubrIndex, false);
Object lastItem = this.sequence.get(this.sequence.size() - 1);
if (lastItem instanceof CharStringCommand && ((CharStringCommand)lastItem).getKey().getValue()[0] == 11)
this.sequence.remove(this.sequence.size() - 1);
}
continue;
}
if (b0 == 29 && globalSubroutineIndexProvided) {
Integer operand = (Integer)this.sequence.remove(this.sequence.size() - 1);
int bias = 0;
int nSubrs = globalSubrIndex.length;
if (nSubrs < 1240) {
bias = 107;
} else if (nSubrs < 33900) {
bias = 1131;
} else {
bias = 32768;
}
int subrNumber = bias + operand;
if (subrNumber < globalSubrIndex.length) {
byte[] subrBytes = globalSubrIndex[subrNumber];
parse(subrBytes, globalSubrIndex, localSubrIndex, false);
Object lastItem = this.sequence.get(this.sequence.size() - 1);
if (lastItem instanceof CharStringCommand && ((CharStringCommand)lastItem).getKey().getValue()[0] == 11)
this.sequence.remove(this.sequence.size() - 1);
}
continue;
}
if (b0 >= 0 && b0 <= 27) {
this.sequence.add(readCommand(b0, input));
continue;
}
if (b0 == 28) {
this.sequence.add(readNumber(b0, input));
continue;
}
if (b0 >= 29 && b0 <= 31) {
this.sequence.add(readCommand(b0, input));
continue;
}
if (b0 >= 32 && b0 <= 255) {
this.sequence.add(readNumber(b0, input));
continue;
}
throw new IllegalArgumentException();
}
return this.sequence;
}
private CharStringCommand readCommand(int b0, DataInput input) throws IOException {
if (b0 == 1 || b0 == 18) {
this.hstemCount += peekNumbers().size() / 2;
} else if (b0 == 3 || b0 == 19 || b0 == 20 || b0 == 23) {
this.vstemCount += peekNumbers().size() / 2;
}
if (b0 == 12) {
int b1 = input.readUnsignedByte();
return new CharStringCommand(b0, b1);
}
if (b0 == 19 || b0 == 20) {
int[] value = new int[1 + getMaskLength()];
value[0] = b0;
for (int i = 1; i < value.length; i++)
value[i] = input.readUnsignedByte();
return new CharStringCommand(value);
}
return new CharStringCommand(b0);
}
private Integer readNumber(int b0, DataInput input) throws IOException {
if (b0 == 28)
return Integer.valueOf(input.readShort());
if (b0 >= 32 && b0 <= 246)
return b0 - 139;
if (b0 >= 247 && b0 <= 250) {
int b1 = input.readUnsignedByte();
return (b0 - 247) * 256 + b1 + 108;
}
if (b0 >= 251 && b0 <= 254) {
int b1 = input.readUnsignedByte();
return -(b0 - 251) * 256 - b1 - 108;
}
if (b0 == 255) {
short value = input.readShort();
input.readUnsignedByte();
input.readUnsignedByte();
return Integer.valueOf(value);
}
throw new IllegalArgumentException();
}
private int getMaskLength() {
int hintCount = this.hstemCount + this.vstemCount;
int length = hintCount / 8;
if (hintCount % 8 > 0)
length++;
return length;
}
private List<Number> peekNumbers() {
List<Number> numbers = new ArrayList<Number>();
for (int i = this.sequence.size() - 1; i > -1; i--) {
Object object = this.sequence.get(i);
if (object instanceof Number) {
numbers.add(0, (Number)object);
} else {
return numbers;
}
}
return numbers;
}
}

View file

@ -0,0 +1,314 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (83pv-RKSJ-H)
%%Title: (83pv-RKSJ-H Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /83pv-RKSJ-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 0 def
/XUID [1 10 25324] def
/WMode 0 def
5 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
<FD> <FF>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<80> <80> 97
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8540> <857e> 232
<8580> <8580> 390
<8581> <859e> 296
<859f> <85dd> 327
<85de> <85fc> 391
<8640> <867e> 422
<8680> <8691> 485
<8692> <8692> 295
<8693> <869e> 503
<86a2> <86ed> 7479
<8740> <875d> 7555
<875f> <8775> 7585
<8780> <878f> 7608
<8790> <8790> 762
<8791> <8791> 761
<8792> <8792> 769
<8793> <8799> 7624
<879a> <879a> 768
<879b> <879c> 7631
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
<9480> <94fc> 3350
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
endcidrange
100 begincidrange
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<eb40> <eb40> 633
<eb41> <eb42> 7887
<eb43> <eb4f> 636
<eb50> <eb51> 7889
<eb52> <eb5a> 651
<eb5b> <eb5d> 7891
<eb5e> <eb5f> 663
<eb60> <eb64> 7894
<eb65> <eb68> 670
<eb69> <eb7a> 7899
<eb7b> <eb7e> 692
<eb80> <eb80> 696
<eb81> <eb81> 7917
<eb82> <ebac> 698
<ebb8> <ebbf> 741
<ebc8> <ebce> 749
<ebda> <ebe8> 756
<ebf0> <ebf7> 771
<ebfc> <ebfc> 779
<ec4f> <ec58> 780
<ec60> <ec79> 790
<ec81> <ec9a> 816
<ec9f> <ec9f> 7918
<eca0> <eca0> 843
<eca1> <eca1> 7919
<eca2> <eca2> 845
<eca3> <eca3> 7920
<eca4> <eca4> 847
<eca5> <eca5> 7921
<eca6> <eca6> 849
<eca7> <eca7> 7922
<eca8> <ecc0> 851
<ecc1> <ecc1> 7923
<ecc2> <ece0> 877
<ece1> <ece1> 7924
<ece2> <ece2> 909
<ece3> <ece3> 7925
<ece4> <ece4> 911
<ece5> <ece5> 7926
<ece6> <eceb> 913
<ecec> <ecec> 7927
<eced> <ecf1> 920
<ed40> <ed40> 7928
<ed41> <ed41> 926
<ed42> <ed42> 7929
<ed43> <ed43> 928
<ed44> <ed44> 7930
<ed45> <ed45> 930
<ed46> <ed46> 7931
<ed47> <ed47> 932
<ed48> <ed48> 7932
<ed49> <ed61> 934
<ed62> <ed62> 7933
<ed63> <ed7e> 960
<ed80> <ed82> 988
<ed83> <ed83> 7934
<ed84> <ed84> 992
<ed85> <ed85> 7935
endcidrange
22 begincidrange
<ed86> <ed86> 994
<ed87> <ed87> 7936
<ed88> <ed8d> 996
<ed8e> <ed8e> 7937
<ed8f> <ed94> 1003
<ed95> <ed96> 7938
<ed9f> <edb6> 1011
<edbf> <edd6> 1035
<ee40> <ee5d> 7555
<ee5f> <ee6e> 7940
<ee6f> <ee75> 7601
<ee80> <ee81> 7956
<ee82> <ee8f> 7610
<ee90> <ee90> 762
<ee91> <ee91> 761
<ee92> <ee92> 769
<ee93> <ee99> 7624
<ee9a> <ee9a> 768
<ee9b> <ee9c> 7631
<fd> <fd> 152
<fe> <fe> 228
<ff> <ff> 124
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,259 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (90ms-RKSJ-H)
%%Title: (90ms-RKSJ-H Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90ms-RKSJ-H def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 950 def
/XUID [1 10 25343] def
/WMode 0 def
4 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
endcodespacerange
1 beginnotdefrange
<00> <1f> 231
endnotdefrange
100 begincidrange
<20> <7d> 231
<7e> <7e> 631
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8740> <875d> 7555
<875f> <8760> 7585
<8761> <8761> 8038
<8762> <8762> 7588
<8763> <8763> 8040
<8764> <8764> 7590
<8765> <8765> 8042
<8766> <8767> 7592
<8768> <8768> 8044
<8769> <876a> 7595
<876b> <876b> 8043
<876c> <876d> 7598
<876e> <876e> 8047
<876f> <8775> 7601
<877e> <877e> 8323
<8780> <8783> 7608
<8784> <8784> 8055
<8785> <878f> 7613
<8790> <8790> 762
<8791> <8791> 761
<8792> <8792> 769
<8793> <8799> 7624
<879a> <879a> 768
<879b> <879c> 7631
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
endcidrange
71 begincidrange
<9480> <94fc> 3350
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<ed40> <ed7e> 8359
<ed80> <edb3> 8422
<edb4> <edb4> 1993
<edb5> <edfc> 8474
<ee40> <ee7e> 8546
<ee80> <eeec> 8609
<eeef> <eef8> 8092
<eef9> <eef9> 751
<eefa> <eefc> 8005
<fa40> <fa49> 8092
<fa4a> <fa53> 7575
<fa54> <fa54> 751
<fa55> <fa57> 8005
<fa58> <fa58> 7618
<fa59> <fa59> 7610
<fa5a> <fa5a> 8055
<fa5b> <fa5b> 768
<fa5c> <fa7e> 8359
<fa80> <facf> 8394
<fad0> <fad0> 1993
<fad1> <fafc> 8474
<fb40> <fb7e> 8518
<fb80> <fbfc> 8581
<fc40> <fc4b> 8706
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,156 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (90ms-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (90ms-RKSJ-H)
%%BeginResource: CMap (90ms-RKSJ-V)
%%Title: (90ms-RKSJ-V Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/90ms-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90ms-RKSJ-V def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 1020 def
/XUID [1 10 25344] def
/WMode 1 def
78 begincidrange
<8141> <8142> 7887
<8143> <8143> 8268
<8144> <8144> 8274
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8169> <817a> 7899
<8181> <8181> 7917
<81a8> <81a8> 739
<81a9> <81a9> 738
<81aa> <81ab> 736
<81ac> <81ac> 8270
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<849f> <849f> 7481
<84a0> <84a0> 7479
<84a1> <84a1> 7495
<84a2> <84a2> 7503
<84a3> <84a3> 7499
<84a4> <84a4> 7491
<84a5> <84a5> 7523
<84a6> <84a6> 7515
<84a7> <84a7> 7531
<84a8> <84a8> 7507
<84a9> <84a9> 7539
<84aa> <84aa> 7482
<84ab> <84ab> 7480
<84ac> <84ac> 7498
<84ad> <84ad> 7506
<84ae> <84ae> 7502
<84af> <84af> 7494
<84b0> <84b0> 7530
<84b1> <84b1> 7522
<84b2> <84b2> 7538
<84b3> <84b3> 7514
<84b4> <84b4> 7554
<84b5> <84b5> 7526
<84b6> <84b6> 7519
<84b7> <84b7> 7534
<84b8> <84b8> 7511
<84b9> <84b9> 7545
<84ba> <84ba> 7527
<84bb> <84bb> 7516
<84bc> <84bc> 7535
<84bd> <84bd> 7508
<84be> <84be> 7542
<875f> <8760> 7940
<8761> <8761> 8329
<8762> <8762> 7943
<8763> <8763> 8339
<8764> <8764> 7945
<8765> <8765> 8338
<8766> <8767> 7947
<8768> <8768> 8344
<8769> <876a> 7950
<876b> <876b> 8348
<876c> <876d> 7953
<876e> <876e> 8349
<8780> <8781> 7956
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,257 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (90msp-RKSJ-H)
%%Title: (90msp-RKSJ-H Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90msp-RKSJ-H def
/CMapVersion 11.003 def
/CMapType 1 def
/XUID [1 10 25445] def
/WMode 0 def
4 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8740> <875d> 7555
<875f> <8760> 7585
<8761> <8761> 8038
<8762> <8762> 7588
<8763> <8763> 8040
<8764> <8764> 7590
<8765> <8765> 8042
<8766> <8767> 7592
<8768> <8768> 8044
<8769> <876a> 7595
<876b> <876b> 8043
<876c> <876d> 7598
<876e> <876e> 8047
<876f> <8775> 7601
<877e> <877e> 8323
<8780> <8783> 7608
<8784> <8784> 8055
<8785> <878f> 7613
<8790> <8790> 762
<8791> <8791> 761
<8792> <8792> 769
<8793> <8799> 7624
<879a> <879a> 768
<879b> <879c> 7631
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
<9480> <94fc> 3350
endcidrange
70 begincidrange
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<ed40> <ed7e> 8359
<ed80> <edb3> 8422
<edb4> <edb4> 1993
<edb5> <edfc> 8474
<ee40> <ee7e> 8546
<ee80> <eeec> 8609
<eeef> <eef8> 8092
<eef9> <eef9> 751
<eefa> <eefc> 8005
<fa40> <fa49> 8092
<fa4a> <fa53> 7575
<fa54> <fa54> 751
<fa55> <fa57> 8005
<fa58> <fa58> 7618
<fa59> <fa59> 7610
<fa5a> <fa5a> 8055
<fa5b> <fa5b> 768
<fa5c> <fa7e> 8359
<fa80> <facf> 8394
<fad0> <fad0> 1993
<fad1> <fafc> 8474
<fb40> <fb7e> 8518
<fb80> <fbfc> 8581
<fc40> <fc4b> 8706
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,155 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (90msp-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (90msp-RKSJ-H)
%%BeginResource: CMap (90msp-RKSJ-V)
%%Title: (90msp-RKSJ-V Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/90msp-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /90msp-RKSJ-V def
/CMapVersion 11.003 def
/CMapType 1 def
/XUID [1 10 25446] def
/WMode 1 def
78 begincidrange
<8141> <8142> 7887
<8143> <8143> 8268
<8144> <8144> 8274
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8169> <817a> 7899
<8181> <8181> 7917
<81a8> <81a8> 739
<81a9> <81a9> 738
<81aa> <81ab> 736
<81ac> <81ac> 8270
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<849f> <849f> 7481
<84a0> <84a0> 7479
<84a1> <84a1> 7495
<84a2> <84a2> 7503
<84a3> <84a3> 7499
<84a4> <84a4> 7491
<84a5> <84a5> 7523
<84a6> <84a6> 7515
<84a7> <84a7> 7531
<84a8> <84a8> 7507
<84a9> <84a9> 7539
<84aa> <84aa> 7482
<84ab> <84ab> 7480
<84ac> <84ac> 7498
<84ad> <84ad> 7506
<84ae> <84ae> 7502
<84af> <84af> 7494
<84b0> <84b0> 7530
<84b1> <84b1> 7522
<84b2> <84b2> 7538
<84b3> <84b3> 7514
<84b4> <84b4> 7554
<84b5> <84b5> 7526
<84b6> <84b6> 7519
<84b7> <84b7> 7534
<84b8> <84b8> 7511
<84b9> <84b9> 7545
<84ba> <84ba> 7527
<84bb> <84bb> 7516
<84bc> <84bc> 7535
<84bd> <84bd> 7508
<84be> <84be> 7542
<875f> <8760> 7940
<8761> <8761> 8329
<8762> <8762> 7943
<8763> <8763> 8339
<8764> <8764> 7945
<8765> <8765> 8338
<8766> <8767> 7947
<8768> <8768> 8344
<8769> <876a> 7950
<876b> <876b> 8348
<876c> <876d> 7953
<876e> <876e> 8349
<8780> <8781> 7956
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,355 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (90pv-RKSJ-H)
%%Title: (90pv-RKSJ-H Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /90pv-RKSJ-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 870 def
/XUID [1 10 25341] def
/WMode 0 def
5 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
<FD> <FF>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<80> <80> 97
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<8540> <8553> 7555
<855e> <8571> 8071
<857c> <857e> 8286
<8580> <8585> 8289
<8591> <859a> 8061
<859f> <85a8> 7575
<85a9> <85aa> 8225
<85ab> <85ad> 8295
<85b3> <85bc> 8092
<85bd> <85c1> 8298
<85db> <85f4> 8112
<8640> <8640> 7601
<8641> <8641> 8186
<8642> <8642> 7602
<8643> <8643> 8020
<8644> <8644> 8022
<8645> <8645> 8303
<8646> <8646> 7607
<8647> <8647> 8023
<8648> <8648> 7603
<8649> <8649> 8021
<864a> <864a> 7604
<864b> <864b> 8304
<864c> <864d> 7605
<864e> <864e> 8037
<864f> <8655> 8024
<8656> <8656> 8305
<8657> <8657> 8036
<8658> <8659> 8034
<865a> <865c> 8031
<865d> <865d> 8306
<869b> <869d> 7610
<869e> <869e> 8307
<869f> <869f> 8018
<86a0> <86a1> 8016
<86a2> <86a2> 8019
<86a3> <86a3> 8211
<86a4> <86a4> 8213
<86a5> <86a5> 8212
<86a6> <86a6> 8214
<86b3> <86b3> 8058
<86b4> <86b4> 8056
<86b5> <86b5> 8308
<86c7> <86ca> 8219
<86cb> <86ce> 8309
<86cf> <86cf> 8014
<86d0> <86d0> 8013
<86d1> <86d1> 8012
endcidrange
100 begincidrange
<86d2> <86d2> 8011
<86d3> <86d6> 8206
<8740> <8746> 8197
<8747> <8747> 8150
<8748> <8748> 8204
<8749> <8749> 8145
<874a> <874a> 8138
<874b> <874b> 7620
<874c> <874c> 8151
<874d> <874d> 7618
<874e> <874e> 8146
<874f> <874f> 8141
<8750> <8750> 7619
<8751> <8751> 8149
<8752> <8752> 8147
<8753> <8753> 8143
<8754> <8754> 8148
<8755> <8755> 8144
<8756> <8757> 8139
<8758> <8758> 8142
<8791> <8792> 8317
<8793> <8797> 7613
<8798> <8798> 8154
<8799> <8799> 8165
<879a> <879a> 8319
<879b> <879b> 8158
<879c> <879c> 8191
<879d> <879d> 8320
<879e> <879e> 8223
<879f> <879f> 7585
<87a0> <87a0> 8038
<87a1> <87a1> 7588
<87a2> <87a2> 7586
<87a3> <87a3> 8039
<87a4> <87a4> 8183
<87a5> <87a6> 8327
<87a7> <87a7> 8042
<87a8> <87a8> 7592
<87a9> <87aa> 8040
<87ab> <87ab> 7590
<87ac> <87ac> 7593
<87ad> <87ad> 7599
<87ae> <87ae> 8046
<87af> <87af> 8044
<87b0> <87b0> 7595
<87b1> <87b1> 8045
<87b2> <87b2> 8043
<87b3> <87b3> 7596
<87b4> <87b4> 8047
<87b5> <87b5> 7598
<87bd> <87bd> 8048
<87be> <87bf> 8051
<87c0> <87c1> 8049
<87e5> <87e7> 7621
<87e8> <87e8> 8323
<87fa> <87fa> 8054
<87fb> <87fc> 8321
<8840> <8840> 7624
<8841> <8842> 7629
<8854> <8855> 7608
<8868> <8868> 7958
<886a> <886d> 8313
<889f> <88fc> 1125
<8940> <897e> 1219
<8980> <89fc> 1282
<8a40> <8a7e> 1407
<8a80> <8afc> 1470
<8b40> <8b7e> 1595
<8b80> <8bfc> 1658
<8c40> <8c7e> 1783
<8c80> <8cfc> 1846
<8d40> <8d7e> 1971
<8d80> <8dfc> 2034
<8e40> <8e7e> 2159
<8e80> <8efc> 2222
<8f40> <8f7e> 2347
<8f80> <8ffc> 2410
<9040> <907e> 2535
<9080> <90fc> 2598
<9140> <917e> 2723
<9180> <91fc> 2786
<9240> <927e> 2911
<9280> <92fc> 2974
<9340> <937e> 3099
<9380> <93fc> 3162
<9440> <947e> 3287
<9480> <94fc> 3350
<9540> <957e> 3475
<9580> <95fc> 3538
<9640> <967e> 3663
<9680> <96fc> 3726
<9740> <977e> 3851
<9780> <97fc> 3914
<9840> <9872> 4039
<989f> <98fc> 4090
<9940> <997e> 4184
<9980> <99fc> 4247
<9a40> <9a7e> 4372
<9a80> <9afc> 4435
<9b40> <9b7e> 4560
endcidrange
63 begincidrange
<9b80> <9bfc> 4623
<9c40> <9c7e> 4748
<9c80> <9cfc> 4811
<9d40> <9d7e> 4936
<9d80> <9dfc> 4999
<9e40> <9e7e> 5124
<9e80> <9efc> 5187
<9f40> <9f7e> 5312
<9f80> <9ffc> 5375
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e0fc> 5563
<e140> <e17e> 5688
<e180> <e1fc> 5751
<e240> <e27e> 5876
<e280> <e2fc> 5939
<e340> <e37e> 6064
<e380> <e3fc> 6127
<e440> <e47e> 6252
<e480> <e4fc> 6315
<e540> <e57e> 6440
<e580> <e5fc> 6503
<e640> <e67e> 6628
<e680> <e6fc> 6691
<e740> <e77e> 6816
<e780> <e7fc> 6879
<e840> <e87e> 7004
<e880> <e8fc> 7067
<e940> <e97e> 7192
<e980> <e9fc> 7255
<ea40> <ea7e> 7380
<ea80> <eaa2> 7443
<eaa3> <eaa4> 8284
<eb41> <eb42> 7887
<eb50> <eb51> 7889
<eb5b> <eb5d> 7891
<eb60> <eb64> 7894
<eb69> <eb7a> 7899
<eb81> <eb81> 7917
<ec9f> <ec9f> 7918
<eca1> <eca1> 7919
<eca3> <eca3> 7920
<eca5> <eca5> 7921
<eca7> <eca7> 7922
<ecc1> <ecc1> 7923
<ece1> <ece1> 7924
<ece3> <ece3> 7925
<ece5> <ece5> 7926
<ecec> <ecec> 7927
<ed40> <ed40> 7928
<ed42> <ed42> 7929
<ed44> <ed44> 7930
<ed46> <ed46> 7931
<ed48> <ed48> 7932
<ed62> <ed62> 7933
<ed83> <ed83> 7934
<ed85> <ed85> 7935
<ed87> <ed87> 7936
<ed8e> <ed8e> 7937
<ed95> <ed96> 7938
<fd> <fd> 152
<fe> <fe> 228
<ff> <ff> 124
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,129 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (90pv-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (90pv-RKSJ-H)
%%BeginResource: CMap (90pv-RKSJ-V)
%%Title: (90pv-RKSJ-V Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/90pv-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /90pv-RKSJ-V def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 940 def
/XUID [1 10 25342] def
/WMode 1 def
51 begincidrange
<8141> <8142> 7887
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8169> <817a> 7899
<8181> <8181> 7917
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<879f> <879f> 7940
<87a0> <87a0> 8329
<87a1> <87a1> 7943
<87a2> <87a2> 7941
<87a3> <87a3> 8330
<87a4> <87a5> 8333
<87a6> <87a7> 8337
<87a8> <87a8> 7947
<87a9> <87aa> 8339
<87ab> <87ab> 7945
<87ac> <87ac> 7948
<87ad> <87ad> 7954
<87ae> <87af> 8343
<87b0> <87b0> 7950
<87b1> <87b2> 8347
<87b3> <87b3> 7951
<87b4> <87b4> 8349
<87b5> <87b5> 7953
<87bd> <87bd> 8350
<87be> <87be> 8353
<87bf> <87bf> 8356
<87c0> <87c0> 8358
<87c1> <87c1> 8357
<87fa> <87fc> 8324
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,738 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Add-RKSJ-H)
%%Title: (Add-RKSJ-H Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /Add-RKSJ-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 140 def
/XUID [1 10 25326] def
/WMode 0 def
4 begincodespacerange
<00> <80>
<8140> <9FFC>
<A0> <DF>
<E040> <FCFC>
endcodespacerange
1 beginnotdefrange
<00> <1f> 231
endnotdefrange
100 begincidrange
<20> <7e> 231
<8140> <817e> 633
<8180> <81ac> 696
<81b8> <81bf> 741
<81c8> <81ce> 749
<81da> <81e8> 756
<81f0> <81f7> 771
<81fc> <81fc> 779
<824f> <8258> 780
<8260> <8279> 790
<8281> <829a> 816
<829f> <82f1> 842
<82f2> <82f4> 7958
<8340> <837e> 925
<8380> <8396> 988
<839f> <83b6> 1011
<83bf> <83d6> 1035
<8440> <8460> 1059
<8470> <847e> 1092
<8480> <8491> 1107
<849f> <849f> 7479
<84a0> <84a0> 7481
<84a1> <84a1> 7491
<84a2> <84a2> 7495
<84a3> <84a3> 7503
<84a4> <84a4> 7499
<84a5> <84a5> 7507
<84a6> <84a6> 7523
<84a7> <84a7> 7515
<84a8> <84a8> 7531
<84a9> <84a9> 7539
<84aa> <84aa> 7480
<84ab> <84ab> 7482
<84ac> <84ac> 7494
<84ad> <84ad> 7498
<84ae> <84ae> 7506
<84af> <84af> 7502
<84b0> <84b0> 7514
<84b1> <84b1> 7530
<84b2> <84b2> 7522
<84b3> <84b3> 7538
<84b4> <84b4> 7554
<84b5> <84b5> 7511
<84b6> <84b6> 7526
<84b7> <84b7> 7519
<84b8> <84b8> 7534
<84b9> <84b9> 7542
<84ba> <84ba> 7508
<84bb> <84bb> 7527
<84bc> <84bc> 7516
<84bd> <84bd> 7535
<84be> <84be> 7545
<889f> <889f> 1125
<88a0> <88a0> 7633
<88a1> <88af> 1127
<88b0> <88b0> 7961
<88b1> <88b8> 1143
<88b9> <88b9> 7634
<88ba> <88eb> 1152
<88ec> <88ec> 7635
<88ed> <88ee> 1203
<88ef> <88ef> 7962
<88f0> <88f0> 1206
<88f1> <88f1> 7636
<88f2> <88f9> 1208
<88fa> <88fa> 7637
<88fb> <88fc> 1217
<8940> <8948> 1219
<8949> <8949> 7638
<894a> <8951> 1229
<8952> <8952> 7963
<8953> <8953> 1238
<8954> <8954> 7639
<8955> <8957> 1240
<8958> <8958> 7964
<8959> <895b> 1244
<895c> <895c> 7642
<895d> <8960> 1248
<8961> <8961> 7643
<8962> <897e> 1253
<8980> <898a> 1282
<898b> <898b> 7644
<898c> <89a5> 1294
<89a6> <89a6> 7645
<89a7> <89a7> 1321
<89a8> <89a8> 7646
<89a9> <89dd> 1323
<89de> <89de> 7647
<89df> <89e4> 1377
<89e5> <89e5> 7965
<89e6> <89f7> 1384
<89f8> <89f8> 7648
<89f9> <89fc> 1403
<8a40> <8a40> 1407
<8a41> <8a41> 7650
<8a42> <8a7e> 1409
<8a80> <8a8a> 1470
<8a8b> <8a8b> 7652
<8a8c> <8a92> 1482
<8a93> <8a93> 7653
endcidrange
100 begincidrange
<8a94> <8a99> 1490
<8a9a> <8a9a> 7654
<8a9b> <8abf> 1497
<8ac0> <8ac0> 7655
<8ac1> <8aca> 1535
<8acb> <8acb> 7656
<8acc> <8ae2> 1546
<8ae3> <8ae3> 7657
<8ae4> <8afc> 1570
<8b40> <8b49> 1595
<8b4a> <8b4a> 7658
<8b4b> <8b5e> 1606
<8b5f> <8b5f> 7659
<8b60> <8b7e> 1627
<8b80> <8b81> 1658
<8b82> <8b82> 7966
<8b83> <8b87> 1661
<8b88> <8b88> 7967
<8b89> <8b9f> 1667
<8ba0> <8ba0> 7660
<8ba1> <8ba7> 1691
<8ba8> <8ba8> 7661
<8ba9> <8bbf> 1699
<8bc0> <8bc0> 7968
<8bc1> <8bcc> 1723
<8bcd> <8bcd> 7662
<8bce> <8bea> 1736
<8beb> <8beb> 7663
<8bec> <8bf1> 1766
<8bf2> <8bf2> 7664
<8bf3> <8bf8> 1773
<8bf9> <8bf9> 7665
<8bfa> <8bfa> 1780
<8bfb> <8bfb> 7666
<8bfc> <8bfc> 1782
<8c40> <8c55> 1783
<8c56> <8c56> 7668
<8c57> <8c70> 1806
<8c71> <8c71> 7671
<8c72> <8c7e> 1833
<8c80> <8c90> 1846
<8c91> <8c91> 7674
<8c92> <8c9c> 1864
<8c9d> <8c9d> 7969
<8c9e> <8c9e> 7676
<8c9f> <8cb1> 1877
<8cb2> <8cb2> 7677
<8cb3> <8cbe> 1897
<8cbf> <8cbf> 7678
<8cc0> <8cfc> 1910
<8d40> <8d49> 1971
<8d4a> <8d4a> 7679
<8d4b> <8d7e> 1982
<8d80> <8d8c> 2034
<8d8d> <8d8d> 7682
<8d8e> <8d93> 2048
<8d94> <8d94> 7683
<8d95> <8d98> 2055
<8d99> <8d99> 7684
<8d9a> <8dd0> 2060
<8dd1> <8dd1> 7685
<8dd2> <8de4> 2116
<8de5> <8de5> 7686
<8de6> <8df1> 2136
<8df2> <8df2> 7687
<8df3> <8dfc> 2149
<8e40> <8e45> 2159
<8e46> <8e46> 7688
<8e47> <8e48> 2166
<8e49> <8e49> 7689
<8e4a> <8e4a> 2169
<8e4b> <8e4b> 7690
<8e4c> <8e57> 2171
<8e58> <8e58> 7691
<8e59> <8e5f> 2184
<8e60> <8e60> 7970
<8e61> <8e7e> 2192
<8e80> <8ec5> 2222
<8ec6> <8ec6> 7693
<8ec7> <8eda> 2293
<8edb> <8edc> 7695
<8edd> <8efc> 2315
<8f40> <8f49> 2347
<8f4a> <8f4a> 7697
<8f4b> <8f54> 2358
<8f55> <8f55> 7698
<8f56> <8f7e> 2369
<8f80> <8f8b> 2410
<8f8c> <8f8c> 7699
<8f8d> <8f91> 2423
<8f92> <8f93> 7701
<8f94> <8fa2> 2430
<8fa3> <8fa3> 7703
<8fa4> <8fb0> 2446
<8fb1> <8fb1> 7704
<8fb2> <8fd2> 2460
<8fd3> <8fd3> 7706
<8fd4> <8fdc> 2494
<8fdd> <8fdd> 7707
<8fde> <8fe1> 2504
endcidrange
100 begincidrange
<8fe2> <8fe2> 7708
<8fe3> <8ffc> 2509
<9040> <9048> 2535
<9049> <9049> 7709
<904a> <9077> 2545
<9078> <9078> 7971
<9079> <907e> 2592
<9080> <9080> 7711
<9081> <909f> 2599
<90a0> <90a0> 7713
<90a1> <90e3> 2631
<90e4> <90e4> 7715
<90e5> <90ee> 2699
<90ef> <90ef> 7716
<90f0> <90f6> 2710
<90f7> <90f7> 7718
<90f8> <90f8> 7972
<90f9> <90f9> 2719
<90fa> <90fb> 7973
<90fc> <90fc> 2722
<9140> <9145> 2723
<9146> <9146> 7720
<9147> <9157> 2730
<9158> <9158> 7721
<9159> <916a> 2748
<916b> <916b> 7722
<916c> <916d> 2767
<916e> <916e> 7723
<916f> <917d> 2770
<917e> <917e> 7724
<9180> <9188> 2786
<9189> <9189> 7725
<918a> <91b4> 2796
<91b5> <91b5> 7975
<91b6> <91ba> 2840
<91bb> <91bb> 7726
<91bc> <91ca> 2846
<91cb> <91cb> 7727
<91cc> <91d9> 2862
<91da> <91da> 7728
<91db> <91e0> 2877
<91e1> <91e1> 7729
<91e2> <91ec> 2884
<91ed> <91ed> 7730
<91ee> <91fa> 2896
<91fb> <91fb> 7733
<91fc> <91fc> 2910
<9240> <9245> 2911
<9246> <9246> 7734
<9247> <9247> 2918
<9248> <9248> 7735
<9249> <924b> 2920
<924c> <924d> 7737
<924e> <925b> 2925
<925c> <925c> 7739
<925d> <927e> 2940
<9280> <928f> 2974
<9290> <9290> 7740
<9291> <9294> 2991
<9295> <9295> 7741
<9296> <929b> 2996
<929c> <929c> 7742
<929d> <92ba> 3003
<92bb> <92bb> 7743
<92bc> <92c5> 3034
<92c6> <92c6> 7744
<92c7> <92c7> 3045
<92c8> <92c8> 7745
<92c9> <92cc> 3047
<92cd> <92cd> 7747
<92ce> <92fc> 3052
<9340> <9340> 3099
<9341> <9341> 7748
<9342> <9345> 3101
<9346> <9346> 7749
<9347> <934c> 3106
<934d> <934d> 7750
<934e> <9354> 3113
<9355> <9355> 7751
<9356> <935d> 3121
<935e> <935e> 7752
<935f> <9366> 3130
<9367> <9367> 7753
<9368> <9369> 3139
<936a> <936a> 7754
<936b> <936f> 3142
<9370> <9370> 7976
<9371> <9371> 7756
<9372> <937e> 3149
<9380> <9383> 3162
<9384> <9384> 7757
<9385> <9397> 3167
<9398> <9398> 7758
<9399> <93bf> 3187
<93c0> <93c0> 7760
<93c1> <93d1> 3227
<93d2> <93d2> 7761
<93d3> <93d8> 3245
<93d9> <93d9> 7763
<93da> <93e3> 3252
endcidrange
100 begincidrange
<93e4> <93e5> 7766
<93e6> <93e7> 3264
<93e8> <93e8> 7768
<93e9> <93f3> 3267
<93f4> <93f4> 7872
<93f5> <93fc> 3279
<9440> <9447> 3287
<9448> <9448> 7769
<9449> <9449> 7977
<944a> <9457> 3297
<9458> <9458> 7770
<9459> <9475> 3312
<9476> <9476> 7771
<9477> <947e> 3342
<9480> <9486> 3350
<9487> <9487> 7772
<9488> <9488> 3358
<9489> <9489> 7773
<948a> <948c> 3360
<948d> <948d> 7774
<948e> <94a1> 3364
<94a2> <94a2> 7775
<94a3> <94ab> 3385
<94ac> <94ac> 7776
<94ad> <94ad> 3395
<94ae> <94ae> 7777
<94af> <94bd> 3397
<94be> <94be> 7978
<94bf> <94d1> 3413
<94d2> <94d2> 7778
<94d3> <94f2> 3433
<94f3> <94f3> 7780
<94f4> <94fc> 3466
<9540> <9540> 3475
<9541> <9542> 7781
<9543> <954d> 3478
<954e> <954e> 7783
<954f> <9550> 3490
<9551> <9551> 7784
<9552> <9553> 3493
<9554> <9554> 7785
<9555> <955e> 3496
<955f> <955f> 7786
<9560> <956c> 3507
<956d> <956d> 7787
<956e> <957e> 3521
<9580> <95c0> 3538
<95c1> <95c1> 7789
<95c2> <95ca> 3604
<95cb> <95cb> 7790
<95cc> <95d0> 3614
<95d1> <95d1> 7979
<95d2> <95d7> 3620
<95d8> <95d8> 7791
<95d9> <95f6> 3627
<95f7> <95f7> 7792
<95f8> <95fc> 3658
<9640> <9647> 3663
<9648> <9648> 7794
<9649> <9669> 3672
<966a> <966a> 7795
<966b> <967e> 3706
<9680> <968f> 3726
<9690> <9690> 7796
<9691> <9697> 3743
<9698> <9698> 7980
<9699> <96ca> 3751
<96cb> <96cb> 7797
<96cc> <96d6> 3802
<96d7> <96d7> 7798
<96d8> <96dc> 3814
<96dd> <96dd> 7799
<96de> <96df> 3820
<96e0> <96e0> 7800
<96e1> <96f7> 3823
<96f8> <96f8> 7801
<96f9> <96f9> 3847
<96fa> <96fa> 7802
<96fb> <96fc> 3849
<9740> <9750> 3851
<9751> <9751> 7804
<9752> <976e> 3869
<976f> <976f> 7805
<9770> <9772> 3899
<9773> <9773> 7806
<9774> <977e> 3903
<9780> <9788> 3914
<9789> <9789> 7807
<978a> <97f7> 3924
<97f8> <97f9> 7809
<97fa> <97fa> 7981
<97fb> <97fc> 4037
<9840> <9840> 7811
<9841> <984f> 4040
<9850> <9850> 7812
<9851> <9857> 4056
<9858> <9858> 7813
<9859> <9872> 4064
<989f> <98fc> 4090
<9940> <9940> 4184
endcidrange
100 begincidrange
<9941> <9941> 7982
<9942> <995b> 4186
<995c> <995c> 7814
<995d> <996b> 4213
<996c> <996c> 7817
<996d> <997e> 4229
<9980> <99b5> 4247
<99b6> <99b6> 7983
<99b7> <99fc> 4302
<9a40> <9a4e> 4372
<9a4f> <9a4f> 7818
<9a50> <9a58> 4388
<9a59> <9a59> 7819
<9a5a> <9a66> 4398
<9a67> <9a67> 7984
<9a68> <9a7c> 4412
<9a7d> <9a7d> 7821
<9a7e> <9a7e> 4434
<9a80> <9a8a> 4435
<9a8b> <9a8b> 7822
<9a8c> <9a8c> 7985
<9a8d> <9ac1> 4448
<9ac2> <9ac2> 7823
<9ac3> <9ac3> 7986
<9ac4> <9ae9> 4503
<9aea> <9aea> 7987
<9aeb> <9afc> 4542
<9b40> <9b5b> 4560
<9b5c> <9b5c> 7824
<9b5d> <9b7e> 4589
<9b80> <9b82> 4623
<9b83> <9b83> 7825
<9b84> <9b97> 4627
<9b98> <9b98> 7988
<9b99> <9b9f> 4648
<9ba0> <9ba0> 7826
<9ba1> <9bfa> 4656
<9bfb> <9bfc> 7989
<9c40> <9c7e> 4748
<9c80> <9ca1> 4811
<9ca2> <9ca2> 7828
<9ca3> <9cfc> 4846
<9d40> <9d46> 4936
<9d47> <9d47> 7991
<9d48> <9d7e> 4944
<9d80> <9d80> 7829
<9d81> <9d8b> 5000
<9d8c> <9d8c> 7830
<9d8d> <9db6> 5012
<9db7> <9db7> 7831
<9db8> <9df7> 5055
<9df8> <9df8> 7992
<9df9> <9dfc> 5120
<9e40> <9e63> 5124
<9e64> <9e64> 7833
<9e65> <9e7e> 5161
<9e80> <9e8a> 5187
<9e8b> <9e8b> 7835
<9e8c> <9efc> 5199
<9f40> <9f7e> 5312
<9f80> <9f80> 5375
<9f81> <9f81> 7993
<9f82> <9fcd> 5377
<9fce> <9fce> 7837
<9fcf> <9fd3> 5454
<9fd4> <9fd4> 7994
<9fd5> <9ff3> 5460
<9ff4> <9ff4> 7995
<9ff5> <9ffc> 5492
<a0> <df> 326
<e040> <e07e> 5500
<e080> <e092> 5563
<e093> <e093> 7838
<e094> <e0a3> 5583
<e0a4> <e0a4> 7839
<e0a5> <e0dc> 5600
<e0dd> <e0dd> 7840
<e0de> <e0fc> 5657
<e140> <e149> 5688
<e14a> <e14a> 7841
<e14b> <e17e> 5699
<e180> <e1ec> 5751
<e1ed> <e1ed> 7845
<e1ee> <e1fc> 5861
<e240> <e268> 5876
<e269> <e269> 7846
<e26a> <e272> 5918
<e273> <e273> 7847
<e274> <e277> 5928
<e278> <e278> 7996
<e279> <e27e> 5933
<e280> <e2b6> 5939
<e2b7> <e2b7> 7848
<e2b8> <e2bd> 5995
<e2be> <e2be> 7997
<e2bf> <e2e1> 6002
<e2e2> <e2e2> 7849
<e2e3> <e2eb> 6038
<e2ec> <e2ec> 7850
<e2ed> <e2fc> 6048
endcidrange
100 begincidrange
<e340> <e357> 6064
<e358> <e358> 7851
<e359> <e359> 6089
<e35a> <e35a> 7852
<e35b> <e364> 6091
<e365> <e365> 7853
<e366> <e37e> 6102
<e380> <e3c6> 6127
<e3c7> <e3c7> 7998
<e3c8> <e3fc> 6199
<e440> <e47e> 6252
<e480> <e483> 6315
<e484> <e484> 7855
<e485> <e488> 6320
<e489> <e489> 7856
<e48a> <e491> 6325
<e492> <e492> 7857
<e493> <e4b8> 6334
<e4b9> <e4b9> 7859
<e4ba> <e4ca> 6373
<e4cb> <e4cb> 7999
<e4cc> <e4fc> 6391
<e540> <e57e> 6440
<e580> <e59d> 6503
<e59e> <e59e> 8000
<e59f> <e5b9> 6534
<e5ba> <e5bb> 8001
<e5bc> <e5ec> 6563
<e5ed> <e5ed> 7864
<e5ee> <e5fc> 6613
<e640> <e650> 6628
<e651> <e651> 7865
<e652> <e67e> 6646
<e680> <e685> 6691
<e686> <e686> 7866
<e687> <e6e6> 6698
<e6e7> <e6e7> 7868
<e6e8> <e6fc> 6795
<e740> <e76c> 6816
<e76d> <e76d> 7870
<e76e> <e77e> 6862
<e780> <e7a6> 6879
<e7a7> <e7a7> 7873
<e7a8> <e7ba> 6919
<e7bb> <e7bb> 7874
<e7bc> <e7fc> 6939
<e840> <e87e> 7004
<e880> <e8ce> 7067
<e8cf> <e8cf> 7879
<e8d0> <e8fc> 7147
<e940> <e977> 7192
<e978> <e978> 8003
<e979> <e97e> 7249
<e980> <e9aa> 7255
<e9ab> <e9ab> 7882
<e9ac> <e9b9> 7299
<e9ba> <e9ba> 7883
<e9bb> <e9cb> 7314
<e9cc> <e9cc> 7884
<e9cd> <e9fc> 7332
<ea40> <ea6f> 7380
<ea70> <ea70> 7885
<ea71> <ea71> 8004
<ea72> <ea7e> 7430
<ea80> <ea9c> 7443
<ea9d> <ea9d> 7886
<ea9e> <eaa2> 7473
<eaa3> <eaa4> 8284
<ec40> <ec42> 8005
<ec46> <ec46> 8008
<ec47> <ec47> 768
<ec48> <ec48> 762
<ec49> <ec49> 761
<ec4d> <ec57> 8009
<ec5b> <ec5d> 7601
<ec5e> <ec5e> 8020
<ec5f> <ec5f> 7607
<ec60> <ec62> 8021
<ec63> <ec65> 7604
<ec66> <ec6f> 8024
<ec70> <ec70> 771
<ec71> <ec71> 8034
<ec72> <ec72> 772
<ec73> <ec74> 8035
<ec76> <ec76> 8037
<ec78> <ec78> 7588
<ec79> <ec79> 7585
<ec7a> <ec7a> 8038
<ec7b> <ec7b> 7586
<ec7c> <ec7e> 8039
<ec80> <ec80> 7590
<ec81> <ec81> 8042
<ec82> <ec82> 7592
<ec83> <ec83> 7596
<ec84> <ec84> 8043
<ec85> <ec85> 7598
<ec86> <ec86> 7595
<ec87> <ec88> 8044
<ec89> <ec89> 7599
<ec8a> <ec90> 8046
endcidrange
35 begincidrange
<ec94> <ec99> 8053
<ec9a> <ec9a> 7610
<ec9b> <ec9b> 8059
<ec9e> <ec9e> 8060
<eca7> <ecb0> 8061
<ecb2> <ecc5> 8071
<ecc7> <ecda> 7555
<ecdb> <ecdb> 8091
<ecdc> <ece5> 7575
<ece9> <ecfc> 8092
<ed40> <ed59> 8112
<ed64> <ed64> 7958
<ed68> <ed69> 8138
<ed6a> <ed6a> 7620
<ed6b> <ed6d> 8140
<ed6e> <ed6e> 7619
<ed6f> <ed73> 8143
<ed74> <ed74> 7618
<ed75> <ed78> 8148
<ed7c> <ed7e> 8152
<ed80> <ed8a> 8155
<ed8f> <ed9e> 8166
<ef40> <ef41> 7887
<ef42> <ef42> 8268
<ef43> <ef43> 8274
<ef44> <ef4d> 7889
<ef4e> <ef4e> 8282
<ef4f> <ef4f> 8275
<ef50> <ef50> 8280
<ef51> <ef51> 8277
<ef52> <ef63> 7899
<ef64> <ef79> 7918
<ef7a> <ef7b> 8264
<ef8d> <ef90> 736
<ef91> <ef94> 8182
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,135 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (Add-RKSJ-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (Add-RKSJ-H)
%%BeginResource: CMap (Add-RKSJ-V)
%%Title: (Add-RKSJ-V Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/Add-RKSJ-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /Add-RKSJ-V def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 780 def
/XUID [1 10 25327] def
/WMode 1 def
57 begincidrange
<8141> <8142> 7887
<8143> <8143> 8268
<8144> <8144> 8274
<8150> <8151> 7889
<815b> <815d> 7891
<8160> <8164> 7894
<8165> <8165> 8282
<8166> <8166> 8275
<8167> <8167> 8280
<8168> <8168> 8277
<8169> <817a> 7899
<829f> <829f> 7918
<82a1> <82a1> 7919
<82a3> <82a3> 7920
<82a5> <82a5> 7921
<82a7> <82a7> 7922
<82c1> <82c1> 7923
<82e1> <82e1> 7924
<82e3> <82e3> 7925
<82e5> <82e5> 7926
<82ec> <82ec> 7927
<82f3> <82f4> 8264
<8340> <8340> 7928
<8342> <8342> 7929
<8344> <8344> 7930
<8346> <8346> 7931
<8348> <8348> 7932
<8362> <8362> 7933
<8383> <8383> 7934
<8385> <8385> 7935
<8387> <8387> 7936
<838e> <838e> 7937
<8395> <8396> 7938
<ec78> <ec78> 7943
<ec79> <ec79> 7940
<ec7a> <ec7a> 8329
<ec7b> <ec7b> 7941
<ec7c> <ec7c> 8330
<ec7d> <ec7e> 8339
<ec80> <ec80> 7945
<ec81> <ec81> 8338
<ec82> <ec82> 7947
<ec83> <ec83> 7951
<ec84> <ec84> 8348
<ec85> <ec85> 7953
<ec86> <ec86> 7950
<ec87> <ec87> 8344
<ec88> <ec88> 8347
<ec89> <ec89> 7954
<ec8a> <ec8a> 8343
<ec8b> <ec8c> 8349
<ec8d> <ec8d> 8358
<ec8e> <ec8e> 8357
<ec8f> <ec8f> 8353
<ec90> <ec90> 8356
<ec95> <ec95> 8324
<ef92> <ef92> 8333
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,136 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /Adobe-CNS1-0 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 960 def
/XUID [1 10 25394] def
/WMode 0 def
/CIDCount 14099 def
1 begincodespacerange
<0000> <37FF>
endcodespacerange
56 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <3712> 14080
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,147 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 1)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 1 def
end def
/CMapName /Adobe-CNS1-1 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25590] def
/WMode 0 def
/CIDCount 17408 def
1 begincodespacerange
<0000> <43FF>
endcodespacerange
68 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,148 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 2)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 2 def
end def
/CMapName /Adobe-CNS1-2 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25586] def
/WMode 0 def
/CIDCount 17601 def
1 begincodespacerange
<0000> <44FF>
endcodespacerange
69 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44c0> 17408
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,153 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 3)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 3 def
end def
/CMapName /Adobe-CNS1-3 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25587] def
/WMode 0 def
/CIDCount 18846 def
1 begincodespacerange
<0000> <49FF>
endcodespacerange
74 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <499d> 18688
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,154 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 4)
%%Version: 1.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 4 def
end def
/CMapName /Adobe-CNS1-4 def
/CMapVersion 1.003 def
/CMapType 1 def
/XUID [1 10 25595] def
/WMode 0 def
/CIDCount 18965 def
1 begincodespacerange
<0000> <4AFF>
endcodespacerange
75 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4a14> 18944
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,154 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 5)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 5 def
end def
/CMapName /Adobe-CNS1-5 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25598] def
/WMode 0 def
/CIDCount 19088 def
1 begincodespacerange
<0000> <4AFF>
endcodespacerange
75 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4a8f> 18944
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,154 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe CNS1 6)
%%Version: 1.000
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 6 def
end def
/CMapName /Adobe-CNS1-6 def
/CMapVersion 1.000 def
/CMapType 1 def
/XUID [1 10 25599] def
/WMode 0 def
/CIDCount 19156 def
1 begincodespacerange
<0000> <4AFF>
endcodespacerange
75 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4ad3> 18944
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,111 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 0)
%%Version: 9.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 0 def
end def
/CMapName /Adobe-GB1-0 def
/CMapVersion 9.003 def
/CMapType 1 def
/UIDOffset 330 def
/XUID [1 10 25368] def
/WMode 0 def
/CIDCount 7717 def
1 begincodespacerange
<0000> <1EFF>
endcodespacerange
31 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1e24> 7680
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,119 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 1 def
end def
/CMapName /Adobe-GB1-1 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 710 def
/XUID [1 10 25453] def
/WMode 0 def
/CIDCount 9897 def
1 begincodespacerange
<0000> <26FF>
endcodespacerange
39 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26a8> 9728
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,167 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 2 def
end def
/CMapName /Adobe-GB1-2 def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 750 def
/XUID [1 10 25454] def
/WMode 0 def
/CIDCount 22127 def
1 begincodespacerange
<0000> <56FF>
endcodespacerange
87 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <566e> 22016
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,167 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 3)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 3 def
end def
/CMapName /Adobe-GB1-3 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25457] def
/WMode 0 def
/CIDCount 22353 def
1 begincodespacerange
<0000> <57FF>
endcodespacerange
88 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <5750> 22272
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,197 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 4)
%%Version: 1.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 4 def
end def
/CMapName /Adobe-GB1-4 def
/CMapVersion 1.003 def
/CMapType 1 def
/XUID [1 10 25458] def
/WMode 0 def
/CIDCount 29064 def
1 begincodespacerange
<0000> <71FF>
endcodespacerange
100 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <57ff> 22272
<5800> <58ff> 22528
<5900> <59ff> 22784
<5a00> <5aff> 23040
<5b00> <5bff> 23296
<5c00> <5cff> 23552
<5d00> <5dff> 23808
<5e00> <5eff> 24064
<5f00> <5fff> 24320
<6000> <60ff> 24576
<6100> <61ff> 24832
<6200> <62ff> 25088
<6300> <63ff> 25344
endcidrange
14 begincidrange
<6400> <64ff> 25600
<6500> <65ff> 25856
<6600> <66ff> 26112
<6700> <67ff> 26368
<6800> <68ff> 26624
<6900> <69ff> 26880
<6a00> <6aff> 27136
<6b00> <6bff> 27392
<6c00> <6cff> 27648
<6d00> <6dff> 27904
<6e00> <6eff> 28160
<6f00> <6fff> 28416
<7000> <70ff> 28672
<7100> <7187> 28928
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,202 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe GB1 5)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (GB1) def
/Supplement 5 def
end def
/CMapName /Adobe-GB1-5 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25605] def
/WMode 0 def
/CIDCount 30284 def
1 begincodespacerange
<0000> <76FF>
endcodespacerange
100 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <57ff> 22272
<5800> <58ff> 22528
<5900> <59ff> 22784
<5a00> <5aff> 23040
<5b00> <5bff> 23296
<5c00> <5cff> 23552
<5d00> <5dff> 23808
<5e00> <5eff> 24064
<5f00> <5fff> 24320
<6000> <60ff> 24576
<6100> <61ff> 24832
<6200> <62ff> 25088
<6300> <63ff> 25344
endcidrange
19 begincidrange
<6400> <64ff> 25600
<6500> <65ff> 25856
<6600> <66ff> 26112
<6700> <67ff> 26368
<6800> <68ff> 26624
<6900> <69ff> 26880
<6a00> <6aff> 27136
<6b00> <6bff> 27392
<6c00> <6cff> 27648
<6d00> <6dff> 27904
<6e00> <6eff> 28160
<6f00> <6fff> 28416
<7000> <70ff> 28672
<7100> <71ff> 28928
<7200> <72ff> 29184
<7300> <73ff> 29440
<7400> <74ff> 29696
<7500> <75ff> 29952
<7600> <764b> 30208
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,113 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 0 def
end def
/CMapName /Adobe-Japan1-0 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 480 def
/XUID [1 10 25358] def
/WMode 0 def
/CIDCount 8284 def
1 begincodespacerange
<0000> <20FF>
endcodespacerange
33 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <205b> 8192
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,113 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 1 def
end def
/CMapName /Adobe-Japan1-1 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 1030 def
/XUID [1 10 25530] def
/WMode 0 def
/CIDCount 8359 def
1 begincodespacerange
<0000> <20FF>
endcodespacerange
33 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20a6> 8192
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,115 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 2)
%%Version: 11.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 2 def
end def
/CMapName /Adobe-Japan1-2 def
/CMapVersion 11.003 def
/CMapType 1 def
/UIDOffset 1065 def
/XUID [1 10 25531] def
/WMode 0 def
/CIDCount 8720 def
1 begincodespacerange
<0000> <22FF>
endcodespacerange
35 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <220f> 8704
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,116 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 3)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 3 def
end def
/CMapName /Adobe-Japan1-3 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25534] def
/WMode 0 def
/CIDCount 9354 def
1 begincodespacerange
<0000> <24FF>
endcodespacerange
37 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <2489> 9216
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,140 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 4)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 4 def
end def
/CMapName /Adobe-Japan1-4 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25537] def
/WMode 0 def
/CIDCount 15444 def
1 begincodespacerange
<0000> <3CFF>
endcodespacerange
61 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3c53> 15360
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,159 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 5)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 5 def
end def
/CMapName /Adobe-Japan1-5 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25613] def
/WMode 0 def
/CIDCount 20317 def
1 begincodespacerange
<0000> <4FFF>
endcodespacerange
80 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4f5c> 20224
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,170 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan1 6)
%%Version: 1.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan1) def
/Supplement 6 def
end def
/CMapName /Adobe-Japan1-6 def
/CMapVersion 1.003 def
/CMapType 1 def
/XUID [1 10 25614] def
/WMode 0 def
/CIDCount 23058 def
1 begincodespacerange
<0000> <5AFF>
endcodespacerange
91 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47ff> 18176
<4800> <48ff> 18432
<4900> <49ff> 18688
<4a00> <4aff> 18944
<4b00> <4bff> 19200
<4c00> <4cff> 19456
<4d00> <4dff> 19712
<4e00> <4eff> 19968
<4f00> <4fff> 20224
<5000> <50ff> 20480
<5100> <51ff> 20736
<5200> <52ff> 20992
<5300> <53ff> 21248
<5400> <54ff> 21504
<5500> <55ff> 21760
<5600> <56ff> 22016
<5700> <57ff> 22272
<5800> <58ff> 22528
<5900> <59ff> 22784
<5a00> <5a11> 23040
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,104 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Japan2 0)
%%Version: 9.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Japan2) def
/Supplement 0 def
end def
/CMapName /Adobe-Japan2-0 def
/CMapVersion 9.003 def
/CMapType 1 def
/UIDOffset 220 def
/XUID [1 10 25426] def
/WMode 0 def
/CIDCount 6068 def
1 begincodespacerange
<0000> <17FF>
endcodespacerange
24 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17b3> 5888
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,116 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Korea1 0)
%%Version: 9.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Korea1) def
/Supplement 0 def
end def
/CMapName /Adobe-Korea1-0 def
/CMapVersion 9.003 def
/CMapType 1 def
/XUID [1 10 25408] def
/WMode 0 def
/CIDCount 9333 def
1 begincodespacerange
<0000> <24FF>
endcodespacerange
37 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <2474> 9216
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,151 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Korea1 1)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Korea1) def
/Supplement 1 def
end def
/CMapName /Adobe-Korea1-1 def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 330 def
/XUID [1 10 25418] def
/WMode 0 def
/CIDCount 18155 def
1 begincodespacerange
<0000> <46FF>
endcodespacerange
71 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ea> 17920
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,151 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (Identity)
%%Title: (Identity Adobe Korea1 2)
%%Version: 1.002
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (Korea1) def
/Supplement 2 def
end def
/CMapName /Adobe-Korea1-2 def
/CMapVersion 1.002 def
/CMapType 1 def
/XUID [1 10 25541] def
/WMode 0 def
/CIDCount 18352 def
1 begincodespacerange
<0000> <47FF>
endcodespacerange
72 begincidrange
<0000> <00ff> 0
<0100> <01ff> 256
<0200> <02ff> 512
<0300> <03ff> 768
<0400> <04ff> 1024
<0500> <05ff> 1280
<0600> <06ff> 1536
<0700> <07ff> 1792
<0800> <08ff> 2048
<0900> <09ff> 2304
<0a00> <0aff> 2560
<0b00> <0bff> 2816
<0c00> <0cff> 3072
<0d00> <0dff> 3328
<0e00> <0eff> 3584
<0f00> <0fff> 3840
<1000> <10ff> 4096
<1100> <11ff> 4352
<1200> <12ff> 4608
<1300> <13ff> 4864
<1400> <14ff> 5120
<1500> <15ff> 5376
<1600> <16ff> 5632
<1700> <17ff> 5888
<1800> <18ff> 6144
<1900> <19ff> 6400
<1a00> <1aff> 6656
<1b00> <1bff> 6912
<1c00> <1cff> 7168
<1d00> <1dff> 7424
<1e00> <1eff> 7680
<1f00> <1fff> 7936
<2000> <20ff> 8192
<2100> <21ff> 8448
<2200> <22ff> 8704
<2300> <23ff> 8960
<2400> <24ff> 9216
<2500> <25ff> 9472
<2600> <26ff> 9728
<2700> <27ff> 9984
<2800> <28ff> 10240
<2900> <29ff> 10496
<2a00> <2aff> 10752
<2b00> <2bff> 11008
<2c00> <2cff> 11264
<2d00> <2dff> 11520
<2e00> <2eff> 11776
<2f00> <2fff> 12032
<3000> <30ff> 12288
<3100> <31ff> 12544
<3200> <32ff> 12800
<3300> <33ff> 13056
<3400> <34ff> 13312
<3500> <35ff> 13568
<3600> <36ff> 13824
<3700> <37ff> 14080
<3800> <38ff> 14336
<3900> <39ff> 14592
<3a00> <3aff> 14848
<3b00> <3bff> 15104
<3c00> <3cff> 15360
<3d00> <3dff> 15616
<3e00> <3eff> 15872
<3f00> <3fff> 16128
<4000> <40ff> 16384
<4100> <41ff> 16640
<4200> <42ff> 16896
<4300> <43ff> 17152
<4400> <44ff> 17408
<4500> <45ff> 17664
<4600> <46ff> 17920
<4700> <47af> 18176
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,337 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (B5pc-H)
%%Title: (B5pc-H Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /B5pc-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 0 def
/XUID [1 10 25382] def
/WMode 0 def
3 begincodespacerange
<00> <80>
<A140> <FCFE>
<FD> <FF>
endcodespacerange
1 beginnotdefrange
<00> <1f> 1
endnotdefrange
100 begincidrange
<20> <7e> 1
<80> <80> 61
<a140> <a158> 99
<a159> <a15c> 13743
<a15d> <a17e> 128
<a1a1> <a1f5> 162
<a1f6> <a1f6> 248
<a1f7> <a1f7> 247
<a1f8> <a1fe> 249
<a240> <a27e> 256
<a2a1> <a2fe> 319
<a340> <a37e> 413
<a3a1> <a3bb> 476
<a3bd> <a3bf> 503
<a3c0> <a3e0> 562
<a440> <a47e> 595
<a4a1> <a4fe> 658
<a540> <a57e> 752
<a5a1> <a5fe> 815
<a640> <a67e> 909
<a6a1> <a6fe> 972
<a740> <a77e> 1066
<a7a1> <a7fe> 1129
<a840> <a87e> 1223
<a8a1> <a8fe> 1286
<a940> <a97e> 1380
<a9a1> <a9fe> 1443
<aa40> <aa7e> 1537
<aaa1> <aafe> 1600
<ab40> <ab7e> 1694
<aba1> <abfe> 1757
<ac40> <ac7e> 1851
<aca1> <acfd> 1914
<acfe> <acfe> 2431
<ad40> <ad7e> 2007
<ada1> <adfe> 2070
<ae40> <ae7e> 2164
<aea1> <aefe> 2227
<af40> <af7e> 2321
<afa1> <afcf> 2384
<afd0> <affe> 2432
<b040> <b07e> 2479
<b0a1> <b0fe> 2542
<b140> <b17e> 2636
<b1a1> <b1fe> 2699
<b240> <b27e> 2793
<b2a1> <b2fe> 2856
<b340> <b37e> 2950
<b3a1> <b3fe> 3013
<b440> <b47e> 3107
<b4a1> <b4fe> 3170
<b540> <b57e> 3264
<b5a1> <b5fe> 3327
<b640> <b67e> 3421
<b6a1> <b6fe> 3484
<b740> <b77e> 3578
<b7a1> <b7fe> 3641
<b840> <b87e> 3735
<b8a1> <b8fe> 3798
<b940> <b97e> 3892
<b9a1> <b9fe> 3955
<ba40> <ba7e> 4049
<baa1> <bafe> 4112
<bb40> <bb7e> 4206
<bba1> <bbc7> 4269
<bbc8> <bbfe> 4309
<bc40> <bc7e> 4364
<bca1> <bcfe> 4427
<bd40> <bd7e> 4521
<bda1> <bdfe> 4584
<be40> <be51> 4678
<be52> <be52> 4308
<be53> <be7e> 4696
<bea1> <befe> 4740
<bf40> <bf7e> 4834
<bfa1> <bffe> 4897
<c040> <c07e> 4991
<c0a1> <c0fe> 5054
<c140> <c17e> 5148
<c1a1> <c1aa> 5211
<c1ab> <c1fe> 5222
<c240> <c27e> 5306
<c2a1> <c2ca> 5369
<c2cb> <c2cb> 5221
<c2cc> <c2fe> 5411
<c340> <c360> 5462
<c361> <c37e> 5496
<c3a1> <c3b8> 5526
<c3b9> <c3b9> 5551
<c3ba> <c3ba> 5550
<c3bb> <c3fe> 5552
<c440> <c455> 5620
<c456> <c456> 5495
<c457> <c47e> 5642
<c4a1> <c4fe> 5682
<c540> <c57e> 5776
<c5a1> <c5fe> 5839
<c640> <c67e> 5933
<c940> <c949> 5996
<c94a> <c94a> 628
endcidrange
100 begincidrange
<c94b> <c96b> 6006
<c96c> <c97e> 6040
<c9a1> <c9bd> 6059
<c9be> <c9be> 6039
<c9bf> <c9ec> 6088
<c9ed> <c9fe> 6135
<ca40> <ca7e> 6153
<caa1> <caf6> 6216
<caf7> <caf7> 6134
<caf8> <cafe> 6302
<cb40> <cb7e> 6309
<cba1> <cbfe> 6372
<cc40> <cc7e> 6466
<cca1> <ccfe> 6529
<cd40> <cd7e> 6623
<cda1> <cdfe> 6686
<ce40> <ce7e> 6780
<cea1> <cefe> 6843
<cf40> <cf7e> 6937
<cfa1> <cffe> 7000
<d040> <d07e> 7094
<d0a1> <d0fe> 7157
<d140> <d17e> 7251
<d1a1> <d1fe> 7314
<d240> <d27e> 7408
<d2a1> <d2fe> 7471
<d340> <d37e> 7565
<d3a1> <d3fe> 7628
<d440> <d47e> 7722
<d4a1> <d4fe> 7785
<d540> <d57e> 7879
<d5a1> <d5fe> 7942
<d640> <d67e> 8036
<d6a1> <d6cb> 8099
<d6cc> <d6cc> 8788
<d6cd> <d6fe> 8143
<d740> <d779> 8193
<d77a> <d77a> 8889
<d77b> <d77e> 8251
<d7a1> <d7fe> 8255
<d840> <d87e> 8349
<d8a1> <d8fe> 8412
<d940> <d97e> 8506
<d9a1> <d9fe> 8569
<da40> <da7e> 8663
<daa1> <dade> 8726
<dadf> <dadf> 8142
<dae0> <dafe> 8789
<db40> <db7e> 8820
<dba1> <dba6> 8883
<dba7> <dbfe> 8890
<dc40> <dc7e> 8978
<dca1> <dcfe> 9041
<dd40> <dd7e> 9135
<dda1> <ddfb> 9198
<ddfc> <ddfc> 9089
<ddfd> <ddfe> 9289
<de40> <de7e> 9291
<dea1> <defe> 9354
<df40> <df7e> 9448
<dfa1> <dffe> 9511
<e040> <e07e> 9605
<e0a1> <e0fe> 9668
<e140> <e17e> 9762
<e1a1> <e1fe> 9825
<e240> <e27e> 9919
<e2a1> <e2fe> 9982
<e340> <e37e> 10076
<e3a1> <e3fe> 10139
<e440> <e47e> 10233
<e4a1> <e4fe> 10296
<e540> <e57e> 10390
<e5a1> <e5fe> 10453
<e640> <e67e> 10547
<e6a1> <e6fe> 10610
<e740> <e77e> 10704
<e7a1> <e7fe> 10767
<e840> <e87e> 10861
<e8a1> <e8a2> 10924
<e8a3> <e8fe> 10927
<e940> <e975> 11019
<e976> <e97e> 11074
<e9a1> <e9fe> 11083
<ea40> <ea7e> 11177
<eaa1> <eafe> 11240
<eb40> <eb5a> 11334
<eb5b> <eb7e> 11362
<eba1> <ebf0> 11398
<ebf1> <ebf1> 10926
<ebf2> <ebfe> 11478
<ec40> <ec7e> 11491
<eca1> <ecdd> 11554
<ecde> <ecde> 11073
<ecdf> <ecfe> 11615
<ed40> <ed7e> 11647
<eda1> <eda9> 11710
<edaa> <edfe> 11720
<ee40> <ee7e> 11805
<eea1> <eeea> 11868
<eeeb> <eeeb> 12308
endcidrange
47 begincidrange
<eeec> <eefe> 11942
<ef40> <ef7e> 11961
<efa1> <effe> 12024
<f040> <f055> 12118
<f056> <f056> 11719
<f057> <f07e> 12140
<f0a1> <f0ca> 12180
<f0cb> <f0cb> 11361
<f0cc> <f0fe> 12222
<f140> <f162> 12273
<f163> <f16a> 12309
<f16b> <f16b> 12640
<f16c> <f17e> 12317
<f1a1> <f1fe> 12336
<f240> <f267> 12430
<f268> <f268> 12783
<f269> <f27e> 12470
<f2a1> <f2c2> 12492
<f2c3> <f2fe> 12527
<f340> <f374> 12587
<f375> <f37e> 12641
<f3a1> <f3fe> 12651
<f440> <f465> 12745
<f466> <f47e> 12784
<f4a1> <f4b4> 12809
<f4b5> <f4b5> 12526
<f4b6> <f4fc> 12829
<f4fd> <f4fe> 12901
<f540> <f57e> 12903
<f5a1> <f5fe> 12966
<f640> <f662> 13060
<f663> <f663> 12900
<f664> <f67e> 13095
<f6a1> <f6fe> 13122
<f740> <f77e> 13216
<f7a1> <f7fe> 13279
<f840> <f87e> 13373
<f8a1> <f8fe> 13436
<f940> <f976> 13530
<f977> <f97e> 13586
<f9a1> <f9c3> 13594
<f9c4> <f9c4> 13585
<f9c5> <f9c5> 13629
<f9c6> <f9c6> 13641
<f9c7> <f9d1> 13630
<f9d2> <f9d5> 13642
<fd> <ff> 96
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,90 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%DocumentNeededResources: CMap (B5pc-H)
%%IncludeResource: ProcSet (CIDInit)
%%IncludeResource: CMap (B5pc-H)
%%BeginResource: CMap (B5pc-V)
%%Title: (B5pc-V Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/B5pc-H usecmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /B5pc-V def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 900 def
/XUID [1 10 25383] def
/WMode 1 def
12 begincidrange
<a14b> <a14b> 13646
<a15a> <a15a> 13743
<a15c> <a15c> 13745
<a15d> <a15e> 130
<a161> <a162> 134
<a165> <a166> 138
<a169> <a16a> 142
<a16d> <a16e> 146
<a171> <a172> 150
<a175> <a176> 154
<a179> <a17a> 158
<a1e3> <a1e3> 13647
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,27 @@
package org.apache.fontbox.cmap;
class CIDRange {
private final char from;
private final char to;
private final int cid;
CIDRange(char from, char to, int cid) {
this.from = from;
this.to = to;
this.cid = cid;
}
public int map(char ch) {
if (this.from <= ch && ch <= this.to)
return this.cid + ch - this.from;
return -1;
}
public int unmap(int code) {
if (this.cid <= code && code <= this.cid + this.to - this.from)
return this.from + code - this.cid;
return -1;
}
}

View file

@ -0,0 +1,190 @@
package org.apache.fontbox.cmap;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CMap {
private int wmode = 0;
private String cmapName = null;
private String cmapVersion = null;
private int cmapType = -1;
private String registry = null;
private String ordering = null;
private int supplement = 0;
private int minCodeLength = 4;
private int maxCodeLength;
private final List<CodespaceRange> codespaceRanges = new ArrayList<CodespaceRange>();
private final Map<Integer, String> charToUnicode = new HashMap<Integer, String>();
private final Map<Integer, Integer> codeToCid = new HashMap<Integer, Integer>();
private final List<CIDRange> codeToCidRanges = new ArrayList<CIDRange>();
private static final String SPACE = " ";
private int spaceMapping = -1;
public boolean hasCIDMappings() {
return (!this.codeToCid.isEmpty() || !this.codeToCidRanges.isEmpty());
}
public boolean hasUnicodeMappings() {
return !this.charToUnicode.isEmpty();
}
public String toUnicode(int code) {
return this.charToUnicode.get(Integer.valueOf(code));
}
public int readCode(InputStream in) throws IOException {
byte[] bytes = new byte[this.maxCodeLength];
in.read(bytes, 0, this.minCodeLength);
for (int i = this.minCodeLength - 1; i < this.maxCodeLength; i++) {
int byteCount = i + 1;
for (CodespaceRange range : this.codespaceRanges) {
if (range.isFullMatch(bytes, byteCount))
return toInt(bytes, byteCount);
}
if (byteCount < this.maxCodeLength)
bytes[byteCount] = (byte)in.read();
}
throw new IOException("CMap is invalid");
}
private int toInt(byte[] data, int dataLen) {
int code = 0;
for (int i = 0; i < dataLen; i++) {
code <<= 8;
code |= (data[i] + 256) % 256;
}
return code;
}
public int toCID(int code) {
Integer cid = this.codeToCid.get(Integer.valueOf(code));
if (cid != null)
return cid;
for (CIDRange range : this.codeToCidRanges) {
int ch = range.map((char)code);
if (ch != -1)
return ch;
}
return 0;
}
private int getCodeFromArray(byte[] data, int offset, int length) {
int code = 0;
for (int i = 0; i < length; i++) {
code <<= 8;
code |= (data[offset + i] + 256) % 256;
}
return code;
}
void addCharMapping(byte[] codes, String unicode) {
int code = getCodeFromArray(codes, 0, codes.length);
this.charToUnicode.put(Integer.valueOf(code), unicode);
if (" ".equals(unicode))
this.spaceMapping = code;
}
void addCIDMapping(int code, int cid) {
this.codeToCid.put(Integer.valueOf(cid), Integer.valueOf(code));
}
void addCIDRange(char from, char to, int cid) {
this.codeToCidRanges.add(new CIDRange(from, to, cid));
}
void addCodespaceRange(CodespaceRange range) {
this.codespaceRanges.add(range);
this.maxCodeLength = Math.max(this.maxCodeLength, range.getCodeLength());
this.minCodeLength = Math.min(this.minCodeLength, range.getCodeLength());
}
void useCmap(CMap cmap) {
for (CodespaceRange codespaceRange : cmap.codespaceRanges)
addCodespaceRange(codespaceRange);
this.charToUnicode.putAll(cmap.charToUnicode);
this.codeToCid.putAll(cmap.codeToCid);
this.codeToCidRanges.addAll(cmap.codeToCidRanges);
}
public int getWMode() {
return this.wmode;
}
public void setWMode(int newWMode) {
this.wmode = newWMode;
}
public String getName() {
return this.cmapName;
}
public void setName(String name) {
this.cmapName = name;
}
public String getVersion() {
return this.cmapVersion;
}
public void setVersion(String version) {
this.cmapVersion = version;
}
public int getType() {
return this.cmapType;
}
public void setType(int type) {
this.cmapType = type;
}
public String getRegistry() {
return this.registry;
}
public void setRegistry(String newRegistry) {
this.registry = newRegistry;
}
public String getOrdering() {
return this.ordering;
}
public void setOrdering(String newOrdering) {
this.ordering = newOrdering;
}
public int getSupplement() {
return this.supplement;
}
public void setSupplement(int newSupplement) {
this.supplement = newSupplement;
}
public int getSpaceMapping() {
return this.spaceMapping;
}
public String toString() {
return this.cmapName;
}
}

View file

@ -0,0 +1,497 @@
package org.apache.fontbox.cmap;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PushbackInputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.fontbox.util.Charsets;
public class CMapParser {
private static final String MARK_END_OF_DICTIONARY = ">>";
private static final String MARK_END_OF_ARRAY = "]";
private final byte[] tokenParserByteBuffer = new byte[512];
public CMap parse(File file) throws IOException {
FileInputStream input = null;
try {
input = new FileInputStream(file);
return parse(input);
} finally {
if (input != null)
input.close();
}
}
public CMap parsePredefined(String name) throws IOException {
InputStream input = null;
try {
input = getExternalCMap(name);
return parse(input);
} finally {
if (input != null)
input.close();
}
}
public CMap parse(InputStream input) throws IOException {
PushbackInputStream cmapStream = new PushbackInputStream(input);
CMap result = new CMap();
Object previousToken = null;
Object token;
while ((token = parseNextToken(cmapStream)) != null) {
if (token instanceof Operator) {
Operator op = (Operator)token;
if (op.op.equals("usecmap")) {
parseUsecmap(previousToken, result);
} else {
if (op.op.equals("endcmap"))
break;
if (op.op.equals("begincodespacerange")) {
parseBegincodespacerange(previousToken, cmapStream, result);
} else if (op.op.equals("beginbfchar")) {
parseBeginbfchar(previousToken, cmapStream, result);
} else if (op.op.equals("beginbfrange")) {
parseBeginbfrange(previousToken, cmapStream, result);
} else if (op.op.equals("begincidchar")) {
parseBegincidchar(previousToken, cmapStream, result);
} else if (op.op.equals("begincidrange")) {
parseBegincidrange(previousToken, cmapStream, result);
}
}
} else if (token instanceof LiteralName) {
parseLiteralName(token, cmapStream, result);
}
previousToken = token;
}
return result;
}
private void parseUsecmap(Object previousToken, CMap result) throws IOException {
LiteralName useCmapName = (LiteralName)previousToken;
InputStream useStream = getExternalCMap(useCmapName.name);
CMap useCMap = parse(useStream);
result.useCmap(useCMap);
}
private void parseLiteralName(Object token, PushbackInputStream cmapStream, CMap result) throws IOException {
LiteralName literal = (LiteralName)token;
if ("WMode".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Integer)
result.setWMode(((Integer)next).intValue());
} else if ("CMapName".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof LiteralName)
result.setName(((LiteralName)next).name);
} else if ("CMapVersion".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Number) {
result.setVersion(next.toString());
} else if (next instanceof String) {
result.setVersion((String)next);
}
} else if ("CMapType".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Integer)
result.setType(((Integer)next).intValue());
} else if ("Registry".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof String)
result.setRegistry((String)next);
} else if ("Ordering".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof String)
result.setOrdering((String)next);
} else if ("Supplement".equals(literal.name)) {
Object next = parseNextToken(cmapStream);
if (next instanceof Integer)
result.setSupplement(((Integer)next).intValue());
}
}
private void parseBegincodespacerange(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endcodespacerange"))
throw new IOException("Error : ~codespacerange contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] startRange = (byte[])nextToken;
byte[] endRange = (byte[])parseNextToken(cmapStream);
CodespaceRange range = new CodespaceRange();
range.setStart(startRange);
range.setEnd(endRange);
result.addCodespaceRange(range);
}
}
private void parseBeginbfchar(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endbfchar"))
throw new IOException("Error : ~bfchar contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] inputCode = (byte[])nextToken;
nextToken = parseNextToken(cmapStream);
if (nextToken instanceof byte[]) {
byte[] bytes = (byte[])nextToken;
String value = createStringFromBytes(bytes);
result.addCharMapping(inputCode, value);
} else if (nextToken instanceof LiteralName) {
result.addCharMapping(inputCode, ((LiteralName)nextToken).name);
} else {
throw new IOException("Error parsing CMap beginbfchar, expected{COSString or COSName} and not " + nextToken);
}
}
}
private void parseBegincidrange(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
int numberOfLines = (Integer)previousToken;
for (int n = 0; n < numberOfLines; n++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endcidrange"))
throw new IOException("Error : ~cidrange contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] startCode = (byte[])nextToken;
int start = createIntFromBytes(startCode);
byte[] endCode = (byte[])parseNextToken(cmapStream);
int end = createIntFromBytes(endCode);
int mappedCode = (Integer)parseNextToken(cmapStream);
if (startCode.length <= 2 && endCode.length <= 2) {
result.addCIDRange((char)start, (char)end, mappedCode);
} else {
int endOfMappings = mappedCode + end - start;
while (mappedCode <= endOfMappings) {
int mappedCID = createIntFromBytes(startCode);
result.addCIDMapping(mappedCode++, mappedCID);
increment(startCode);
}
}
}
}
private void parseBegincidchar(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endcidchar"))
throw new IOException("Error : ~cidchar contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] inputCode = (byte[])nextToken;
int mappedCode = (Integer)parseNextToken(cmapStream);
int mappedCID = createIntFromBytes(inputCode);
result.addCIDMapping(mappedCode, mappedCID);
}
}
private void parseBeginbfrange(Object previousToken, PushbackInputStream cmapStream, CMap result) throws IOException {
Number cosCount = (Number)previousToken;
for (int j = 0; j < cosCount.intValue(); j++) {
byte[] tokenBytes;
Object nextToken = parseNextToken(cmapStream);
if (nextToken instanceof Operator) {
if (!((Operator)nextToken).op.equals("endbfrange"))
throw new IOException("Error : ~bfrange contains an unexpected operator : " + ((Operator)nextToken).op);
break;
}
byte[] startCode = (byte[])nextToken;
byte[] endCode = (byte[])parseNextToken(cmapStream);
nextToken = parseNextToken(cmapStream);
List<byte[]> array = null;
if (nextToken instanceof List) {
array = (List<byte[]>)nextToken;
tokenBytes = array.get(0);
} else {
tokenBytes = (byte[])nextToken;
}
boolean done = false;
int arrayIndex = 0;
while (!done) {
if (compare(startCode, endCode) >= 0)
done = true;
String value = createStringFromBytes(tokenBytes);
result.addCharMapping(startCode, value);
increment(startCode);
if (array == null) {
increment(tokenBytes);
continue;
}
arrayIndex++;
if (arrayIndex < array.size())
tokenBytes = array.get(arrayIndex);
}
}
}
protected InputStream getExternalCMap(String name) throws IOException {
URL url = getClass().getResource(name);
if (url == null)
throw new IOException("Error: Could not find referenced cmap stream " + name);
return url.openStream();
}
private Object parseNextToken(PushbackInputStream is) throws IOException {
byte[] arrayOfByte1;
LiteralName literalName;
Operator operator;
StringBuffer stringBuffer1;
int secondCloseBrace;
List<Object> list;
int theNextByte;
StringBuffer buffer;
int i;
Object nextToken;
int multiplyer, stringByte;
String value;
int bufferIndex;
byte[] finalResult;
Object<Object> retval = null;
int nextByte = is.read();
while (nextByte == 9 || nextByte == 32 || nextByte == 13 || nextByte == 10)
nextByte = is.read();
switch (nextByte) {
case 37:
stringBuffer1 = new StringBuffer();
stringBuffer1.append((char)nextByte);
readUntilEndOfLine(is, stringBuffer1);
retval = (Object<Object>)stringBuffer1.toString();
break;
case 40:
stringBuffer1 = new StringBuffer();
i = is.read();
while (i != -1 && i != 41) {
stringBuffer1.append((char)i);
i = is.read();
}
retval = (Object<Object>)stringBuffer1.toString();
break;
case 62:
secondCloseBrace = is.read();
if (secondCloseBrace == 62) {
retval = (Object<Object>)">>";
break;
}
throw new IOException("Error: expected the end of a dictionary.");
case 93:
retval = (Object<Object>)"]";
break;
case 91:
list = new ArrayList();
nextToken = parseNextToken(is);
while (nextToken != null && !"]".equals(nextToken)) {
list.add(nextToken);
nextToken = parseNextToken(is);
}
retval = (Object<Object>)list;
break;
case 60:
theNextByte = is.read();
if (theNextByte == 60) {
Map<String, Object> result = new HashMap<String, Object>();
Object key = parseNextToken(is);
while (key instanceof LiteralName && !">>".equals(key)) {
Object object = parseNextToken(is);
result.put(((LiteralName)key).name, object);
key = parseNextToken(is);
}
Map<String, Object> map1 = result;
break;
}
multiplyer = 16;
bufferIndex = -1;
while (theNextByte != -1 && theNextByte != 62) {
int intValue = 0;
if (theNextByte >= 48 && theNextByte <= 57) {
intValue = theNextByte - 48;
} else if (theNextByte >= 65 && theNextByte <= 70) {
intValue = 10 + theNextByte - 65;
} else if (theNextByte >= 97 && theNextByte <= 102) {
intValue = 10 + theNextByte - 97;
} else {
if (isWhitespaceOrEOF(theNextByte)) {
theNextByte = is.read();
continue;
}
throw new IOException("Error: expected hex character and not " + (char)theNextByte + ":" + theNextByte);
}
intValue *= multiplyer;
if (multiplyer == 16) {
bufferIndex++;
this.tokenParserByteBuffer[bufferIndex] = 0;
multiplyer = 1;
} else {
multiplyer = 16;
}
this.tokenParserByteBuffer[bufferIndex] = (byte)(this.tokenParserByteBuffer[bufferIndex] + intValue);
theNextByte = is.read();
}
finalResult = new byte[bufferIndex + 1];
System.arraycopy(this.tokenParserByteBuffer, 0, finalResult, 0, bufferIndex + 1);
arrayOfByte1 = finalResult;
break;
case 47:
buffer = new StringBuffer();
stringByte = is.read();
while (!isWhitespaceOrEOF(stringByte) && !isDelimiter(stringByte)) {
buffer.append((char)stringByte);
stringByte = is.read();
}
if (isDelimiter(stringByte))
is.unread(stringByte);
literalName = new LiteralName(buffer.toString());
break;
case -1:
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
buffer = new StringBuffer();
buffer.append((char)nextByte);
nextByte = is.read();
while (!isWhitespaceOrEOF(nextByte) && (Character.isDigit((char)nextByte) || nextByte == 46)) {
buffer.append((char)nextByte);
nextByte = is.read();
}
is.unread(nextByte);
value = buffer.toString();
if (value.indexOf('.') >= 0) {
Double double_ = new Double(value);
} else {
Integer integer = Integer.valueOf(value);
}
break;
default:
buffer = new StringBuffer();
buffer.append((char)nextByte);
nextByte = is.read();
while (!isWhitespaceOrEOF(nextByte) && !isDelimiter(nextByte) && !Character.isDigit(nextByte)) {
buffer.append((char)nextByte);
nextByte = is.read();
}
if (isDelimiter(nextByte) || Character.isDigit(nextByte))
is.unread(nextByte);
operator = new Operator(buffer.toString());
break;
}
return operator;
}
private void readUntilEndOfLine(InputStream is, StringBuffer buf) throws IOException {
int nextByte = is.read();
while (nextByte != -1 && nextByte != 13 && nextByte != 10) {
buf.append((char)nextByte);
nextByte = is.read();
}
}
private boolean isWhitespaceOrEOF(int aByte) {
return (aByte == -1 || aByte == 32 || aByte == 13 || aByte == 10);
}
private boolean isDelimiter(int aByte) {
switch (aByte) {
case 37:
case 40:
case 41:
case 47:
case 60:
case 62:
case 91:
case 93:
case 123:
case 125:
return true;
}
return false;
}
private void increment(byte[] data) {
increment(data, data.length - 1);
}
private void increment(byte[] data, int position) {
if (position > 0 && (data[position] + 256) % 256 == 255) {
data[position] = 0;
increment(data, position - 1);
} else {
data[position] = (byte)(data[position] + 1);
}
}
private int createIntFromBytes(byte[] bytes) {
int intValue = (bytes[0] + 256) % 256;
if (bytes.length == 2) {
intValue <<= 8;
intValue += (bytes[1] + 256) % 256;
}
return intValue;
}
private String createStringFromBytes(byte[] bytes) throws IOException {
String retval;
if (bytes.length == 1) {
retval = new String(bytes, Charsets.ISO_8859_1);
} else {
retval = new String(bytes, Charsets.UTF_16BE);
}
return retval;
}
private int compare(byte[] first, byte[] second) {
int retval = 1;
int firstLength = first.length;
for (int i = 0; i < firstLength; ) {
if (first[i] == second[i]) {
i++;
continue;
}
if ((first[i] + 256) % 256 < (second[i] + 256) % 256) {
retval = -1;
break;
}
retval = 1;
break;
}
return retval;
}
private final class LiteralName {
private String name;
private LiteralName(String theName) {
this.name = theName;
}
}
private final class Operator {
private String op;
private Operator(String theOp) {
this.op = theOp;
}
}
}

View file

@ -0,0 +1,490 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (CNS-EUC-H)
%%Title: (CNS-EUC-H Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /CNS-EUC-H def
/CMapVersion 10.003 def
/CMapType 1 def
/UIDOffset 300 def
/XUID [1 10 25388] def
/WMode 0 def
5 begincodespacerange
<00> <80>
<8EA1A1A1> <8EA1FEFE>
<8EA2A1A1> <8EA2FEFE>
<8EA3A1A1> <8EA3FEFE>
<A1A1> <FEFE>
endcodespacerange
1 beginnotdefrange
<00> <1f> 13648
endnotdefrange
100 begincidrange
<20> <7e> 13648
<8ea1a1a1> <8ea1a1fe> 99
<8ea1a2a1> <8ea1a2fe> 193
<8ea1a3a1> <8ea1a3ce> 287
<8ea1a4a1> <8ea1a4fe> 333
<8ea1a5a1> <8ea1a5ec> 427
<8ea1a5ee> <8ea1a5f0> 503
<8ea1a6a1> <8ea1a6be> 506
<8ea1a7a1> <8ea1a7a1> 595
<8ea1a7a2> <8ea1a7a4> 536
<8ea1a7a5> <8ea1a7a5> 596
<8ea1a7a6> <8ea1a7a6> 539
<8ea1a7a7> <8ea1a7a7> 602
<8ea1a7a8> <8ea1a7a8> 540
<8ea1a7a9> <8ea1a7ac> 603
<8ea1a7ad> <8ea1a7af> 541
<8ea1a7b0> <8ea1a7b0> 607
<8ea1a7b1> <8ea1a7b1> 5998
<8ea1a7b2> <8ea1a7b2> 608
<8ea1a7b3> <8ea1a7b3> 610
<8ea1a7b4> <8ea1a7b4> 544
<8ea1a7b5> <8ea1a7b5> 611
<8ea1a7b6> <8ea1a7b6> 5999
<8ea1a7b7> <8ea1a7b7> 545
<8ea1a7b8> <8ea1a7b9> 612
<8ea1a7ba> <8ea1a7ba> 546
<8ea1a7bb> <8ea1a7bb> 6000
<8ea1a7bc> <8ea1a7bc> 547
<8ea1a7bd> <8ea1a7bd> 614
<8ea1a7be> <8ea1a7be> 633
<8ea1a7bf> <8ea1a7bf> 6005
<8ea1a7c0> <8ea1a7c1> 634
<8ea1a7c2> <8ea1a7c2> 548
<8ea1a7c3> <8ea1a7c6> 636
<8ea1a7c7> <8ea1a7c7> 549
<8ea1a7c8> <8ea1a7cb> 642
<8ea1a7cc> <8ea1a7cc> 6006
<8ea1a7cd> <8ea1a7cd> 646
<8ea1a7ce> <8ea1a7ce> 550
<8ea1a7cf> <8ea1a7d0> 648
<8ea1a7d1> <8ea1a7d2> 652
<8ea1a7d3> <8ea1a7d5> 551
<8ea1a7d6> <8ea1a7d8> 654
<8ea1a7d9> <8ea1a7da> 554
<8ea1a7db> <8ea1a7db> 6007
<8ea1a7dc> <8ea1a7df> 720
<8ea1a7e0> <8ea1a7e0> 725
<8ea1a7e1> <8ea1a7e1> 556
<8ea1a7e2> <8ea1a7e5> 726
<8ea1a7e6> <8ea1a7e6> 557
<8ea1a7e7> <8ea1a7ed> 730
<8ea1a7ee> <8ea1a7ee> 6026
<8ea1a7ef> <8ea1a7f2> 737
<8ea1a7f3> <8ea1a7f3> 6028
<8ea1a7f4> <8ea1a7f8> 741
<8ea1a7f9> <8ea1a7f9> 6029
<8ea1a7fa> <8ea1a7fd> 746
<8ea1a7fe> <8ea1a7fe> 854
<8ea1a8a1> <8ea1a8a6> 855
<8ea1a8a7> <8ea1a8a7> 862
<8ea1a8a8> <8ea1a8a8> 866
<8ea1a8a9> <8ea1a8aa> 558
<8ea1a8ab> <8ea1a8b2> 867
<8ea1a8b3> <8ea1a8b3> 6066
<8ea1a8b4> <8ea1a8b6> 875
<8ea1a8b7> <8ea1a8ba> 1014
<8ea1a8bb> <8ea1a8bb> 6162
<8ea1a8bc> <8ea1a8be> 1018
<8ea1a8bf> <8ea1a8c3> 1022
<8ea1a8c4> <8ea1a8cc> 1029
<8ea1a8cd> <8ea1a8cd> 6163
<8ea1a8ce> <8ea1a8ce> 6168
<8ea1a8cf> <8ea1a8d2> 1039
<8ea1a8d3> <8ea1a8d3> 6169
<8ea1a8d4> <8ea1a8d9> 1288
<8ea1a8da> <8ea1a8da> 6375
<8ea1a8db> <8ea1a8e2> 1294
<8ea1a8e3> <8ea1a8e3> 560
<8ea1a8e4> <8ea1a8e4> 1307
<8ea1a8e5> <8ea1a8e7> 1312
<8ea1a8e8> <8ea1a8eb> 1686
<8ea1a8ec> <8ea1a8ec> 561
<8ea1a8ed> <8ea1a8f0> 1695
<8ea1a8f1> <8ea1a8fb> 2086
<8ea1a8fc> <8ea1a8fe> 2549
<8ea1a9a1> <8ea1a9a1> 7731
<8ea1a9a2> <8ea1a9a2> 2552
<8ea1a9a3> <8ea1a9a3> 7732
<8ea1a9a4> <8ea1a9a5> 2553
<8ea1a9a6> <8ea1a9ab> 3041
<8ea1a9ac> <8ea1a9ae> 3515
<8ea1a9af> <8ea1a9af> 9056
<8ea1a9b0> <8ea1a9b0> 9746
<8ea1a9b1> <8ea1a9b3> 3963
<8ea1a9b4> <8ea1a9b5> 4352
<8ea1a9b6> <8ea1a9b6> 4745
<8ea1a9b7> <8ea1a9b8> 5042
<8ea1a9b9> <8ea1a9b9> 12045
<8ea1c2a1> <8ea1c2c1> 562
<8ea1c4a1> <8ea1c4fe> 595
endcidrange
100 begincidrange
<8ea1c5a1> <8ea1c5fe> 689
<8ea1c6a1> <8ea1c6fe> 783
<8ea1c7a1> <8ea1c7fe> 877
<8ea1c8a1> <8ea1c8fe> 971
<8ea1c9a1> <8ea1c9fe> 1065
<8ea1caa1> <8ea1cafe> 1159
<8ea1cba1> <8ea1cbfe> 1253
<8ea1cca1> <8ea1ccfe> 1347
<8ea1cda1> <8ea1cdfe> 1441
<8ea1cea1> <8ea1cefe> 1535
<8ea1cfa1> <8ea1cffe> 1629
<8ea1d0a1> <8ea1d0fe> 1723
<8ea1d1a1> <8ea1d1fe> 1817
<8ea1d2a1> <8ea1d2fe> 1911
<8ea1d3a1> <8ea1d3fe> 2005
<8ea1d4a1> <8ea1d4fe> 2099
<8ea1d5a1> <8ea1d5fe> 2193
<8ea1d6a1> <8ea1d6fe> 2287
<8ea1d7a1> <8ea1d7fe> 2381
<8ea1d8a1> <8ea1d8fe> 2475
<8ea1d9a1> <8ea1d9fe> 2569
<8ea1daa1> <8ea1dafe> 2663
<8ea1dba1> <8ea1dbfe> 2757
<8ea1dca1> <8ea1dcfe> 2851
<8ea1dda1> <8ea1ddfe> 2945
<8ea1dea1> <8ea1defe> 3039
<8ea1dfa1> <8ea1dffe> 3133
<8ea1e0a1> <8ea1e0fe> 3227
<8ea1e1a1> <8ea1e1fe> 3321
<8ea1e2a1> <8ea1e2fe> 3415
<8ea1e3a1> <8ea1e3fe> 3509
<8ea1e4a1> <8ea1e4fe> 3603
<8ea1e5a1> <8ea1e5fe> 3697
<8ea1e6a1> <8ea1e6fe> 3791
<8ea1e7a1> <8ea1e7fe> 3885
<8ea1e8a1> <8ea1e8fe> 3979
<8ea1e9a1> <8ea1e9fe> 4073
<8ea1eaa1> <8ea1eafe> 4167
<8ea1eba1> <8ea1ebfe> 4261
<8ea1eca1> <8ea1ecfe> 4355
<8ea1eda1> <8ea1edfe> 4449
<8ea1eea1> <8ea1eefe> 4543
<8ea1efa1> <8ea1effe> 4637
<8ea1f0a1> <8ea1f0fe> 4731
<8ea1f1a1> <8ea1f1fe> 4825
<8ea1f2a1> <8ea1f2fe> 4919
<8ea1f3a1> <8ea1f3fe> 5013
<8ea1f4a1> <8ea1f4fe> 5107
<8ea1f5a1> <8ea1f5fe> 5201
<8ea1f6a1> <8ea1f6fe> 5295
<8ea1f7a1> <8ea1f7fe> 5389
<8ea1f8a1> <8ea1f8fe> 5483
<8ea1f9a1> <8ea1f9fe> 5577
<8ea1faa1> <8ea1fafe> 5671
<8ea1fba1> <8ea1fbfe> 5765
<8ea1fca1> <8ea1fcfe> 5859
<8ea1fda1> <8ea1fdcb> 5953
<8ea2a1a1> <8ea2a1fe> 5996
<8ea2a2a1> <8ea2a2fe> 6090
<8ea2a3a1> <8ea2a3fe> 6184
<8ea2a4a1> <8ea2a4fe> 6278
<8ea2a5a1> <8ea2a5fe> 6372
<8ea2a6a1> <8ea2a6fe> 6466
<8ea2a7a1> <8ea2a7fe> 6560
<8ea2a8a1> <8ea2a8fe> 6654
<8ea2a9a1> <8ea2a9fe> 6748
<8ea2aaa1> <8ea2aafe> 6842
<8ea2aba1> <8ea2abfe> 6936
<8ea2aca1> <8ea2acfe> 7030
<8ea2ada1> <8ea2adfe> 7124
<8ea2aea1> <8ea2aefe> 7218
<8ea2afa1> <8ea2affe> 7312
<8ea2b0a1> <8ea2b0fe> 7406
<8ea2b1a1> <8ea2b1fe> 7500
<8ea2b2a1> <8ea2b2fe> 7594
<8ea2b3a1> <8ea2b3fe> 7688
<8ea2b4a1> <8ea2b4fe> 7782
<8ea2b5a1> <8ea2b5fe> 7876
<8ea2b6a1> <8ea2b6fe> 7970
<8ea2b7a1> <8ea2b7fe> 8064
<8ea2b8a1> <8ea2b8fe> 8158
<8ea2b9a1> <8ea2b9fe> 8252
<8ea2baa1> <8ea2bafe> 8346
<8ea2bba1> <8ea2bbfe> 8440
<8ea2bca1> <8ea2bcfe> 8534
<8ea2bda1> <8ea2bdfe> 8628
<8ea2bea1> <8ea2befe> 8722
<8ea2bfa1> <8ea2bffe> 8816
<8ea2c0a1> <8ea2c0fe> 8910
<8ea2c1a1> <8ea2c1fe> 9004
<8ea2c2a1> <8ea2c2fe> 9098
<8ea2c3a1> <8ea2c3fe> 9192
<8ea2c4a1> <8ea2c4fe> 9286
<8ea2c5a1> <8ea2c5fe> 9380
<8ea2c6a1> <8ea2c6fe> 9474
<8ea2c7a1> <8ea2c7fe> 9568
<8ea2c8a1> <8ea2c8fe> 9662
<8ea2c9a1> <8ea2c9fe> 9756
<8ea2caa1> <8ea2cafe> 9850
<8ea2cba1> <8ea2cbfe> 9944
endcidrange
100 begincidrange
<8ea2cca1> <8ea2ccfe> 10038
<8ea2cda1> <8ea2cdfe> 10132
<8ea2cea1> <8ea2cefe> 10226
<8ea2cfa1> <8ea2cffe> 10320
<8ea2d0a1> <8ea2d0fe> 10414
<8ea2d1a1> <8ea2d1fe> 10508
<8ea2d2a1> <8ea2d2fe> 10602
<8ea2d3a1> <8ea2d3fe> 10696
<8ea2d4a1> <8ea2d4fe> 10790
<8ea2d5a1> <8ea2d5fe> 10884
<8ea2d6a1> <8ea2d6fe> 10978
<8ea2d7a1> <8ea2d7fe> 11072
<8ea2d8a1> <8ea2d8fe> 11166
<8ea2d9a1> <8ea2d9fe> 11260
<8ea2daa1> <8ea2dafe> 11354
<8ea2dba1> <8ea2dbfe> 11448
<8ea2dca1> <8ea2dcfe> 11542
<8ea2dda1> <8ea2ddfe> 11636
<8ea2dea1> <8ea2defe> 11730
<8ea2dfa1> <8ea2dffe> 11824
<8ea2e0a1> <8ea2e0fe> 11918
<8ea2e1a1> <8ea2e1fe> 12012
<8ea2e2a1> <8ea2e2fe> 12106
<8ea2e3a1> <8ea2e3fe> 12200
<8ea2e4a1> <8ea2e4fe> 12294
<8ea2e5a1> <8ea2e5fe> 12388
<8ea2e6a1> <8ea2e6fe> 12482
<8ea2e7a1> <8ea2e7fe> 12576
<8ea2e8a1> <8ea2e8fe> 12670
<8ea2e9a1> <8ea2e9fe> 12764
<8ea2eaa1> <8ea2eafe> 12858
<8ea2eba1> <8ea2ebfe> 12952
<8ea2eca1> <8ea2ecfe> 13046
<8ea2eda1> <8ea2edfe> 13140
<8ea2eea1> <8ea2eefe> 13234
<8ea2efa1> <8ea2effe> 13328
<8ea2f0a1> <8ea2f0fe> 13422
<8ea2f1a1> <8ea2f1fe> 13516
<8ea2f2a1> <8ea2f2c4> 13610
<a1a1> <a1fe> 99
<a2a1> <a2fe> 193
<a3a1> <a3ce> 287
<a4a1> <a4fe> 333
<a5a1> <a5ec> 427
<a5ee> <a5f0> 503
<a6a1> <a6be> 506
<a7a1> <a7a1> 595
<a7a2> <a7a4> 536
<a7a5> <a7a5> 596
<a7a6> <a7a6> 539
<a7a7> <a7a7> 602
<a7a8> <a7a8> 540
<a7a9> <a7ac> 603
<a7ad> <a7af> 541
<a7b0> <a7b0> 607
<a7b1> <a7b1> 5998
<a7b2> <a7b2> 608
<a7b3> <a7b3> 610
<a7b4> <a7b4> 544
<a7b5> <a7b5> 611
<a7b6> <a7b6> 5999
<a7b7> <a7b7> 545
<a7b8> <a7b9> 612
<a7ba> <a7ba> 546
<a7bb> <a7bb> 6000
<a7bc> <a7bc> 547
<a7bd> <a7bd> 614
<a7be> <a7be> 633
<a7bf> <a7bf> 6005
<a7c0> <a7c1> 634
<a7c2> <a7c2> 548
<a7c3> <a7c6> 636
<a7c7> <a7c7> 549
<a7c8> <a7cb> 642
<a7cc> <a7cc> 6006
<a7cd> <a7cd> 646
<a7ce> <a7ce> 550
<a7cf> <a7d0> 648
<a7d1> <a7d2> 652
<a7d3> <a7d5> 551
<a7d6> <a7d8> 654
<a7d9> <a7da> 554
<a7db> <a7db> 6007
<a7dc> <a7df> 720
<a7e0> <a7e0> 725
<a7e1> <a7e1> 556
<a7e2> <a7e5> 726
<a7e6> <a7e6> 557
<a7e7> <a7ed> 730
<a7ee> <a7ee> 6026
<a7ef> <a7f2> 737
<a7f3> <a7f3> 6028
<a7f4> <a7f8> 741
<a7f9> <a7f9> 6029
<a7fa> <a7fd> 746
<a7fe> <a7fe> 854
<a8a1> <a8a6> 855
<a8a7> <a8a7> 862
<a8a8> <a8a8> 866
<a8a9> <a8aa> 558
endcidrange
95 begincidrange
<a8ab> <a8b2> 867
<a8b3> <a8b3> 6066
<a8b4> <a8b6> 875
<a8b7> <a8ba> 1014
<a8bb> <a8bb> 6162
<a8bc> <a8be> 1018
<a8bf> <a8c3> 1022
<a8c4> <a8cc> 1029
<a8cd> <a8cd> 6163
<a8ce> <a8ce> 6168
<a8cf> <a8d2> 1039
<a8d3> <a8d3> 6169
<a8d4> <a8d9> 1288
<a8da> <a8da> 6375
<a8db> <a8e2> 1294
<a8e3> <a8e3> 560
<a8e4> <a8e4> 1307
<a8e5> <a8e7> 1312
<a8e8> <a8eb> 1686
<a8ec> <a8ec> 561
<a8ed> <a8f0> 1695
<a8f1> <a8fb> 2086
<a8fc> <a8fe> 2549
<a9a1> <a9a1> 7731
<a9a2> <a9a2> 2552
<a9a3> <a9a3> 7732
<a9a4> <a9a5> 2553
<a9a6> <a9ab> 3041
<a9ac> <a9ae> 3515
<a9af> <a9af> 9056
<a9b0> <a9b0> 9746
<a9b1> <a9b3> 3963
<a9b4> <a9b5> 4352
<a9b6> <a9b6> 4745
<a9b7> <a9b8> 5042
<a9b9> <a9b9> 12045
<c2a1> <c2c1> 562
<c4a1> <c4fe> 595
<c5a1> <c5fe> 689
<c6a1> <c6fe> 783
<c7a1> <c7fe> 877
<c8a1> <c8fe> 971
<c9a1> <c9fe> 1065
<caa1> <cafe> 1159
<cba1> <cbfe> 1253
<cca1> <ccfe> 1347
<cda1> <cdfe> 1441
<cea1> <cefe> 1535
<cfa1> <cffe> 1629
<d0a1> <d0fe> 1723
<d1a1> <d1fe> 1817
<d2a1> <d2fe> 1911
<d3a1> <d3fe> 2005
<d4a1> <d4fe> 2099
<d5a1> <d5fe> 2193
<d6a1> <d6fe> 2287
<d7a1> <d7fe> 2381
<d8a1> <d8fe> 2475
<d9a1> <d9fe> 2569
<daa1> <dafe> 2663
<dba1> <dbfe> 2757
<dca1> <dcfe> 2851
<dda1> <ddfe> 2945
<dea1> <defe> 3039
<dfa1> <dffe> 3133
<e0a1> <e0fe> 3227
<e1a1> <e1fe> 3321
<e2a1> <e2fe> 3415
<e3a1> <e3fe> 3509
<e4a1> <e4fe> 3603
<e5a1> <e5fe> 3697
<e6a1> <e6fe> 3791
<e7a1> <e7fe> 3885
<e8a1> <e8fe> 3979
<e9a1> <e9fe> 4073
<eaa1> <eafe> 4167
<eba1> <ebfe> 4261
<eca1> <ecfe> 4355
<eda1> <edfe> 4449
<eea1> <eefe> 4543
<efa1> <effe> 4637
<f0a1> <f0fe> 4731
<f1a1> <f1fe> 4825
<f2a1> <f2fe> 4919
<f3a1> <f3fe> 5013
<f4a1> <f4fe> 5107
<f5a1> <f5fe> 5201
<f6a1> <f6fe> 5295
<f7a1> <f7fe> 5389
<f8a1> <f8fe> 5483
<f9a1> <f9fe> 5577
<faa1> <fafe> 5671
<fba1> <fbfe> 5765
<fca1> <fcfe> 5859
<fda1> <fdcb> 5953
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,538 @@
%!PS-Adobe-3.0 Resource-CMap
%%DocumentNeededResources: ProcSet (CIDInit)
%%IncludeResource: ProcSet (CIDInit)
%%BeginResource: CMap (CNS-EUC-V)
%%Title: (CNS-EUC-V Adobe CNS1 0)
%%Version: 10.003
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
%%EndComments
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo 3 dict dup begin
/Registry (Adobe) def
/Ordering (CNS1) def
/Supplement 0 def
end def
/CMapName /CNS-EUC-V def
/CMapVersion 10.003 def
/CMapType 1 def
/XUID [1 10 25389] def
/WMode 1 def
5 begincodespacerange
<00> <80>
<8EA1A1A1> <8EA1FEFE>
<8EA2A1A1> <8EA2FEFE>
<8EA3A1A1> <8EA3FEFE>
<A1A1> <FEFE>
endcodespacerange
1 beginnotdefrange
<00> <1f> 13648
endnotdefrange
100 begincidrange
<20> <7e> 13648
<8ea1a1a1> <8ea1a1ab> 99
<8ea1a1ac> <8ea1a1ac> 13646
<8ea1a1ad> <8ea1a1ba> 111
<8ea1a1bb> <8ea1a1bb> 124
<8ea1a1bc> <8ea1a1bc> 126
<8ea1a1bd> <8ea1a1bd> 126
<8ea1a1be> <8ea1a1bf> 130
<8ea1a1c0> <8ea1a1c1> 130
<8ea1a1c2> <8ea1a1c3> 134
<8ea1a1c4> <8ea1a1c5> 134
<8ea1a1c6> <8ea1a1c7> 138
<8ea1a1c8> <8ea1a1c9> 138
<8ea1a1ca> <8ea1a1cb> 142
<8ea1a1cc> <8ea1a1cd> 142
<8ea1a1ce> <8ea1a1cf> 146
<8ea1a1d0> <8ea1a1d1> 146
<8ea1a1d2> <8ea1a1d3> 150
<8ea1a1d4> <8ea1a1d5> 150
<8ea1a1d6> <8ea1a1d7> 154
<8ea1a1d8> <8ea1a1d9> 154
<8ea1a1da> <8ea1a1db> 158
<8ea1a1dc> <8ea1a1fe> 158
<8ea1a2a1> <8ea1a2c3> 193
<8ea1a2c4> <8ea1a2c4> 13647
<8ea1a2c5> <8ea1a2fe> 229
<8ea1a3a1> <8ea1a3ce> 287
<8ea1a4a1> <8ea1a4fe> 333
<8ea1a5a1> <8ea1a5ec> 427
<8ea1a5ee> <8ea1a5f0> 503
<8ea1a6a1> <8ea1a6be> 506
<8ea1a7a1> <8ea1a7a1> 595
<8ea1a7a2> <8ea1a7a4> 536
<8ea1a7a5> <8ea1a7a5> 596
<8ea1a7a6> <8ea1a7a6> 539
<8ea1a7a7> <8ea1a7a7> 602
<8ea1a7a8> <8ea1a7a8> 540
<8ea1a7a9> <8ea1a7ac> 603
<8ea1a7ad> <8ea1a7af> 541
<8ea1a7b0> <8ea1a7b0> 607
<8ea1a7b1> <8ea1a7b1> 5998
<8ea1a7b2> <8ea1a7b2> 608
<8ea1a7b3> <8ea1a7b3> 610
<8ea1a7b4> <8ea1a7b4> 544
<8ea1a7b5> <8ea1a7b5> 611
<8ea1a7b6> <8ea1a7b6> 5999
<8ea1a7b7> <8ea1a7b7> 545
<8ea1a7b8> <8ea1a7b9> 612
<8ea1a7ba> <8ea1a7ba> 546
<8ea1a7bb> <8ea1a7bb> 6000
<8ea1a7bc> <8ea1a7bc> 547
<8ea1a7bd> <8ea1a7bd> 614
<8ea1a7be> <8ea1a7be> 633
<8ea1a7bf> <8ea1a7bf> 6005
<8ea1a7c0> <8ea1a7c1> 634
<8ea1a7c2> <8ea1a7c2> 548
<8ea1a7c3> <8ea1a7c6> 636
<8ea1a7c7> <8ea1a7c7> 549
<8ea1a7c8> <8ea1a7cb> 642
<8ea1a7cc> <8ea1a7cc> 6006
<8ea1a7cd> <8ea1a7cd> 646
<8ea1a7ce> <8ea1a7ce> 550
<8ea1a7cf> <8ea1a7d0> 648
<8ea1a7d1> <8ea1a7d2> 652
<8ea1a7d3> <8ea1a7d5> 551
<8ea1a7d6> <8ea1a7d8> 654
<8ea1a7d9> <8ea1a7da> 554
<8ea1a7db> <8ea1a7db> 6007
<8ea1a7dc> <8ea1a7df> 720
<8ea1a7e0> <8ea1a7e0> 725
<8ea1a7e1> <8ea1a7e1> 556
<8ea1a7e2> <8ea1a7e5> 726
<8ea1a7e6> <8ea1a7e6> 557
<8ea1a7e7> <8ea1a7ed> 730
<8ea1a7ee> <8ea1a7ee> 6026
<8ea1a7ef> <8ea1a7f2> 737
<8ea1a7f3> <8ea1a7f3> 6028
<8ea1a7f4> <8ea1a7f8> 741
<8ea1a7f9> <8ea1a7f9> 6029
<8ea1a7fa> <8ea1a7fd> 746
<8ea1a7fe> <8ea1a7fe> 854
<8ea1a8a1> <8ea1a8a6> 855
<8ea1a8a7> <8ea1a8a7> 862
<8ea1a8a8> <8ea1a8a8> 866
<8ea1a8a9> <8ea1a8aa> 558
<8ea1a8ab> <8ea1a8b2> 867
<8ea1a8b3> <8ea1a8b3> 6066
<8ea1a8b4> <8ea1a8b6> 875
<8ea1a8b7> <8ea1a8ba> 1014
<8ea1a8bb> <8ea1a8bb> 6162
<8ea1a8bc> <8ea1a8be> 1018
<8ea1a8bf> <8ea1a8c3> 1022
<8ea1a8c4> <8ea1a8cc> 1029
<8ea1a8cd> <8ea1a8cd> 6163
<8ea1a8ce> <8ea1a8ce> 6168
<8ea1a8cf> <8ea1a8d2> 1039
<8ea1a8d3> <8ea1a8d3> 6169
<8ea1a8d4> <8ea1a8d9> 1288
<8ea1a8da> <8ea1a8da> 6375
<8ea1a8db> <8ea1a8e2> 1294
endcidrange
100 begincidrange
<8ea1a8e3> <8ea1a8e3> 560
<8ea1a8e4> <8ea1a8e4> 1307
<8ea1a8e5> <8ea1a8e7> 1312
<8ea1a8e8> <8ea1a8eb> 1686
<8ea1a8ec> <8ea1a8ec> 561
<8ea1a8ed> <8ea1a8f0> 1695
<8ea1a8f1> <8ea1a8fb> 2086
<8ea1a8fc> <8ea1a8fe> 2549
<8ea1a9a1> <8ea1a9a1> 7731
<8ea1a9a2> <8ea1a9a2> 2552
<8ea1a9a3> <8ea1a9a3> 7732
<8ea1a9a4> <8ea1a9a5> 2553
<8ea1a9a6> <8ea1a9ab> 3041
<8ea1a9ac> <8ea1a9ae> 3515
<8ea1a9af> <8ea1a9af> 9056
<8ea1a9b0> <8ea1a9b0> 9746
<8ea1a9b1> <8ea1a9b3> 3963
<8ea1a9b4> <8ea1a9b5> 4352
<8ea1a9b6> <8ea1a9b6> 4745
<8ea1a9b7> <8ea1a9b8> 5042
<8ea1a9b9> <8ea1a9b9> 12045
<8ea1c2a1> <8ea1c2c1> 562
<8ea1c4a1> <8ea1c4fe> 595
<8ea1c5a1> <8ea1c5fe> 689
<8ea1c6a1> <8ea1c6fe> 783
<8ea1c7a1> <8ea1c7fe> 877
<8ea1c8a1> <8ea1c8fe> 971
<8ea1c9a1> <8ea1c9fe> 1065
<8ea1caa1> <8ea1cafe> 1159
<8ea1cba1> <8ea1cbfe> 1253
<8ea1cca1> <8ea1ccfe> 1347
<8ea1cda1> <8ea1cdfe> 1441
<8ea1cea1> <8ea1cefe> 1535
<8ea1cfa1> <8ea1cffe> 1629
<8ea1d0a1> <8ea1d0fe> 1723
<8ea1d1a1> <8ea1d1fe> 1817
<8ea1d2a1> <8ea1d2fe> 1911
<8ea1d3a1> <8ea1d3fe> 2005
<8ea1d4a1> <8ea1d4fe> 2099
<8ea1d5a1> <8ea1d5fe> 2193
<8ea1d6a1> <8ea1d6fe> 2287
<8ea1d7a1> <8ea1d7fe> 2381
<8ea1d8a1> <8ea1d8fe> 2475
<8ea1d9a1> <8ea1d9fe> 2569
<8ea1daa1> <8ea1dafe> 2663
<8ea1dba1> <8ea1dbfe> 2757
<8ea1dca1> <8ea1dcfe> 2851
<8ea1dda1> <8ea1ddfe> 2945
<8ea1dea1> <8ea1defe> 3039
<8ea1dfa1> <8ea1dffe> 3133
<8ea1e0a1> <8ea1e0fe> 3227
<8ea1e1a1> <8ea1e1fe> 3321
<8ea1e2a1> <8ea1e2fe> 3415
<8ea1e3a1> <8ea1e3fe> 3509
<8ea1e4a1> <8ea1e4fe> 3603
<8ea1e5a1> <8ea1e5fe> 3697
<8ea1e6a1> <8ea1e6fe> 3791
<8ea1e7a1> <8ea1e7fe> 3885
<8ea1e8a1> <8ea1e8fe> 3979
<8ea1e9a1> <8ea1e9fe> 4073
<8ea1eaa1> <8ea1eafe> 4167
<8ea1eba1> <8ea1ebfe> 4261
<8ea1eca1> <8ea1ecfe> 4355
<8ea1eda1> <8ea1edfe> 4449
<8ea1eea1> <8ea1eefe> 4543
<8ea1efa1> <8ea1effe> 4637
<8ea1f0a1> <8ea1f0fe> 4731
<8ea1f1a1> <8ea1f1fe> 4825
<8ea1f2a1> <8ea1f2fe> 4919
<8ea1f3a1> <8ea1f3fe> 5013
<8ea1f4a1> <8ea1f4fe> 5107
<8ea1f5a1> <8ea1f5fe> 5201
<8ea1f6a1> <8ea1f6fe> 5295
<8ea1f7a1> <8ea1f7fe> 5389
<8ea1f8a1> <8ea1f8fe> 5483
<8ea1f9a1> <8ea1f9fe> 5577
<8ea1faa1> <8ea1fafe> 5671
<8ea1fba1> <8ea1fbfe> 5765
<8ea1fca1> <8ea1fcfe> 5859
<8ea1fda1> <8ea1fdcb> 5953
<8ea2a1a1> <8ea2a1fe> 5996
<8ea2a2a1> <8ea2a2fe> 6090
<8ea2a3a1> <8ea2a3fe> 6184
<8ea2a4a1> <8ea2a4fe> 6278
<8ea2a5a1> <8ea2a5fe> 6372
<8ea2a6a1> <8ea2a6fe> 6466
<8ea2a7a1> <8ea2a7fe> 6560
<8ea2a8a1> <8ea2a8fe> 6654
<8ea2a9a1> <8ea2a9fe> 6748
<8ea2aaa1> <8ea2aafe> 6842
<8ea2aba1> <8ea2abfe> 6936
<8ea2aca1> <8ea2acfe> 7030
<8ea2ada1> <8ea2adfe> 7124
<8ea2aea1> <8ea2aefe> 7218
<8ea2afa1> <8ea2affe> 7312
<8ea2b0a1> <8ea2b0fe> 7406
<8ea2b1a1> <8ea2b1fe> 7500
<8ea2b2a1> <8ea2b2fe> 7594
<8ea2b3a1> <8ea2b3fe> 7688
<8ea2b4a1> <8ea2b4fe> 7782
endcidrange
100 begincidrange
<8ea2b5a1> <8ea2b5fe> 7876
<8ea2b6a1> <8ea2b6fe> 7970
<8ea2b7a1> <8ea2b7fe> 8064
<8ea2b8a1> <8ea2b8fe> 8158
<8ea2b9a1> <8ea2b9fe> 8252
<8ea2baa1> <8ea2bafe> 8346
<8ea2bba1> <8ea2bbfe> 8440
<8ea2bca1> <8ea2bcfe> 8534
<8ea2bda1> <8ea2bdfe> 8628
<8ea2bea1> <8ea2befe> 8722
<8ea2bfa1> <8ea2bffe> 8816
<8ea2c0a1> <8ea2c0fe> 8910
<8ea2c1a1> <8ea2c1fe> 9004
<8ea2c2a1> <8ea2c2fe> 9098
<8ea2c3a1> <8ea2c3fe> 9192
<8ea2c4a1> <8ea2c4fe> 9286
<8ea2c5a1> <8ea2c5fe> 9380
<8ea2c6a1> <8ea2c6fe> 9474
<8ea2c7a1> <8ea2c7fe> 9568
<8ea2c8a1> <8ea2c8fe> 9662
<8ea2c9a1> <8ea2c9fe> 9756
<8ea2caa1> <8ea2cafe> 9850
<8ea2cba1> <8ea2cbfe> 9944
<8ea2cca1> <8ea2ccfe> 10038
<8ea2cda1> <8ea2cdfe> 10132
<8ea2cea1> <8ea2cefe> 10226
<8ea2cfa1> <8ea2cffe> 10320
<8ea2d0a1> <8ea2d0fe> 10414
<8ea2d1a1> <8ea2d1fe> 10508
<8ea2d2a1> <8ea2d2fe> 10602
<8ea2d3a1> <8ea2d3fe> 10696
<8ea2d4a1> <8ea2d4fe> 10790
<8ea2d5a1> <8ea2d5fe> 10884
<8ea2d6a1> <8ea2d6fe> 10978
<8ea2d7a1> <8ea2d7fe> 11072
<8ea2d8a1> <8ea2d8fe> 11166
<8ea2d9a1> <8ea2d9fe> 11260
<8ea2daa1> <8ea2dafe> 11354
<8ea2dba1> <8ea2dbfe> 11448
<8ea2dca1> <8ea2dcfe> 11542
<8ea2dda1> <8ea2ddfe> 11636
<8ea2dea1> <8ea2defe> 11730
<8ea2dfa1> <8ea2dffe> 11824
<8ea2e0a1> <8ea2e0fe> 11918
<8ea2e1a1> <8ea2e1fe> 12012
<8ea2e2a1> <8ea2e2fe> 12106
<8ea2e3a1> <8ea2e3fe> 12200
<8ea2e4a1> <8ea2e4fe> 12294
<8ea2e5a1> <8ea2e5fe> 12388
<8ea2e6a1> <8ea2e6fe> 12482
<8ea2e7a1> <8ea2e7fe> 12576
<8ea2e8a1> <8ea2e8fe> 12670
<8ea2e9a1> <8ea2e9fe> 12764
<8ea2eaa1> <8ea2eafe> 12858
<8ea2eba1> <8ea2ebfe> 12952
<8ea2eca1> <8ea2ecfe> 13046
<8ea2eda1> <8ea2edfe> 13140
<8ea2eea1> <8ea2eefe> 13234
<8ea2efa1> <8ea2effe> 13328
<8ea2f0a1> <8ea2f0fe> 13422
<8ea2f1a1> <8ea2f1fe> 13516
<8ea2f2a1> <8ea2f2c4> 13610
<a1a1> <a1ab> 99
<a1ac> <a1ac> 13646
<a1ad> <a1ba> 111
<a1bb> <a1bb> 124
<a1bc> <a1bc> 126
<a1bd> <a1bd> 126
<a1be> <a1bf> 130
<a1c0> <a1c1> 130
<a1c2> <a1c3> 134
<a1c4> <a1c5> 134
<a1c6> <a1c7> 138
<a1c8> <a1c9> 138
<a1ca> <a1cb> 142
<a1cc> <a1cd> 142
<a1ce> <a1cf> 146
<a1d0> <a1d1> 146
<a1d2> <a1d3> 150
<a1d4> <a1d5> 150
<a1d6> <a1d7> 154
<a1d8> <a1d9> 154
<a1da> <a1db> 158
<a1dc> <a1fe> 158
<a2a1> <a2c3> 193
<a2c4> <a2c4> 13647
<a2c5> <a2fe> 229
<a3a1> <a3ce> 287
<a4a1> <a4fe> 333
<a5a1> <a5ec> 427
<a5ee> <a5f0> 503
<a6a1> <a6be> 506
<a7a1> <a7a1> 595
<a7a2> <a7a4> 536
<a7a5> <a7a5> 596
<a7a6> <a7a6> 539
<a7a7> <a7a7> 602
<a7a8> <a7a8> 540
<a7a9> <a7ac> 603
<a7ad> <a7af> 541
endcidrange
100 begincidrange
<a7b0> <a7b0> 607
<a7b1> <a7b1> 5998
<a7b2> <a7b2> 608
<a7b3> <a7b3> 610
<a7b4> <a7b4> 544
<a7b5> <a7b5> 611
<a7b6> <a7b6> 5999
<a7b7> <a7b7> 545
<a7b8> <a7b9> 612
<a7ba> <a7ba> 546
<a7bb> <a7bb> 6000
<a7bc> <a7bc> 547
<a7bd> <a7bd> 614
<a7be> <a7be> 633
<a7bf> <a7bf> 6005
<a7c0> <a7c1> 634
<a7c2> <a7c2> 548
<a7c3> <a7c6> 636
<a7c7> <a7c7> 549
<a7c8> <a7cb> 642
<a7cc> <a7cc> 6006
<a7cd> <a7cd> 646
<a7ce> <a7ce> 550
<a7cf> <a7d0> 648
<a7d1> <a7d2> 652
<a7d3> <a7d5> 551
<a7d6> <a7d8> 654
<a7d9> <a7da> 554
<a7db> <a7db> 6007
<a7dc> <a7df> 720
<a7e0> <a7e0> 725
<a7e1> <a7e1> 556
<a7e2> <a7e5> 726
<a7e6> <a7e6> 557
<a7e7> <a7ed> 730
<a7ee> <a7ee> 6026
<a7ef> <a7f2> 737
<a7f3> <a7f3> 6028
<a7f4> <a7f8> 741
<a7f9> <a7f9> 6029
<a7fa> <a7fd> 746
<a7fe> <a7fe> 854
<a8a1> <a8a6> 855
<a8a7> <a8a7> 862
<a8a8> <a8a8> 866
<a8a9> <a8aa> 558
<a8ab> <a8b2> 867
<a8b3> <a8b3> 6066
<a8b4> <a8b6> 875
<a8b7> <a8ba> 1014
<a8bb> <a8bb> 6162
<a8bc> <a8be> 1018
<a8bf> <a8c3> 1022
<a8c4> <a8cc> 1029
<a8cd> <a8cd> 6163
<a8ce> <a8ce> 6168
<a8cf> <a8d2> 1039
<a8d3> <a8d3> 6169
<a8d4> <a8d9> 1288
<a8da> <a8da> 6375
<a8db> <a8e2> 1294
<a8e3> <a8e3> 560
<a8e4> <a8e4> 1307
<a8e5> <a8e7> 1312
<a8e8> <a8eb> 1686
<a8ec> <a8ec> 561
<a8ed> <a8f0> 1695
<a8f1> <a8fb> 2086
<a8fc> <a8fe> 2549
<a9a1> <a9a1> 7731
<a9a2> <a9a2> 2552
<a9a3> <a9a3> 7732
<a9a4> <a9a5> 2553
<a9a6> <a9ab> 3041
<a9ac> <a9ae> 3515
<a9af> <a9af> 9056
<a9b0> <a9b0> 9746
<a9b1> <a9b3> 3963
<a9b4> <a9b5> 4352
<a9b6> <a9b6> 4745
<a9b7> <a9b8> 5042
<a9b9> <a9b9> 12045
<c2a1> <c2c1> 562
<c4a1> <c4fe> 595
<c5a1> <c5fe> 689
<c6a1> <c6fe> 783
<c7a1> <c7fe> 877
<c8a1> <c8fe> 971
<c9a1> <c9fe> 1065
<caa1> <cafe> 1159
<cba1> <cbfe> 1253
<cca1> <ccfe> 1347
<cda1> <cdfe> 1441
<cea1> <cefe> 1535
<cfa1> <cffe> 1629
<d0a1> <d0fe> 1723
<d1a1> <d1fe> 1817
<d2a1> <d2fe> 1911
<d3a1> <d3fe> 2005
<d4a1> <d4fe> 2099
endcidrange
41 begincidrange
<d5a1> <d5fe> 2193
<d6a1> <d6fe> 2287
<d7a1> <d7fe> 2381
<d8a1> <d8fe> 2475
<d9a1> <d9fe> 2569
<daa1> <dafe> 2663
<dba1> <dbfe> 2757
<dca1> <dcfe> 2851
<dda1> <ddfe> 2945
<dea1> <defe> 3039
<dfa1> <dffe> 3133
<e0a1> <e0fe> 3227
<e1a1> <e1fe> 3321
<e2a1> <e2fe> 3415
<e3a1> <e3fe> 3509
<e4a1> <e4fe> 3603
<e5a1> <e5fe> 3697
<e6a1> <e6fe> 3791
<e7a1> <e7fe> 3885
<e8a1> <e8fe> 3979
<e9a1> <e9fe> 4073
<eaa1> <eafe> 4167
<eba1> <ebfe> 4261
<eca1> <ecfe> 4355
<eda1> <edfe> 4449
<eea1> <eefe> 4543
<efa1> <effe> 4637
<f0a1> <f0fe> 4731
<f1a1> <f1fe> 4825
<f2a1> <f2fe> 4919
<f3a1> <f3fe> 5013
<f4a1> <f4fe> 5107
<f5a1> <f5fe> 5201
<f6a1> <f6fe> 5295
<f7a1> <f7fe> 5389
<f8a1> <f8fe> 5483
<f9a1> <f9fe> 5577
<faa1> <fafe> 5671
<fba1> <fbfe> 5765
<fca1> <fcfe> 5859
<fda1> <fdcb> 5953
endcidrange
endcmap
CMapName currentdict /CMap defineresource pop
end
end
%%EndResource
%%EOF

View file

@ -0,0 +1,58 @@
package org.apache.fontbox.cmap;
public class CodespaceRange {
private byte[] start;
private byte[] end;
private int startInt;
private int endInt;
private int codeLength = 0;
public int getCodeLength() {
return this.codeLength;
}
public byte[] getEnd() {
return this.end;
}
void setEnd(byte[] endBytes) {
this.end = endBytes;
this.endInt = toInt(endBytes, endBytes.length);
}
public byte[] getStart() {
return this.start;
}
void setStart(byte[] startBytes) {
this.start = startBytes;
this.codeLength = this.start.length;
this.startInt = toInt(startBytes, startBytes.length);
}
public boolean matches(byte[] code) {
return isFullMatch(code, code.length);
}
private int toInt(byte[] data, int dataLen) {
int code = 0;
for (int i = 0; i < dataLen; i++) {
code <<= 8;
code |= (data[i] + 256) % 256;
}
return code;
}
public boolean isFullMatch(byte[] code, int codeLen) {
if (codeLen == this.codeLength) {
int value = toInt(code, codeLen);
if (value >= this.startInt && value <= this.endInt)
return true;
}
return false;
}
}

Some files were not shown because too many files have changed in this diff Show more