geomerative 0.1.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/LICENSE +662 -0
- data/LICENSE.md +9 -0
- data/README.md +2 -0
- data/Rakefile +37 -0
- data/examples/README.md +7 -0
- data/examples/data/FreeSans.ttf +0 -0
- data/examples/data/ReplicaBold.ttf +0 -0
- data/examples/data/bot1.svg +160 -0
- data/examples/hello_svg_to_pdf.rb +26 -0
- data/examples/hello_world.rb +23 -0
- data/examples/physics_type.rb +77 -0
- data/examples/rotate_first_letter.rb +28 -0
- data/geomerative.gemspec +32 -0
- data/lib/geomerative.rb +12 -0
- data/lib/geomerative/version.rb +3 -0
- data/pom.xml +110 -0
- data/src/geomerative/FastRClip.java +2715 -0
- data/src/geomerative/RClip.java +2892 -0
- data/src/geomerative/RClosest.java +64 -0
- data/src/geomerative/RCommand.java +1941 -0
- data/src/geomerative/RContour.java +348 -0
- data/src/geomerative/RFont.java +583 -0
- data/src/geomerative/RG.java +753 -0
- data/src/geomerative/RGeomElem.java +1075 -0
- data/src/geomerative/RGroup.java +888 -0
- data/src/geomerative/RMatrix.java +401 -0
- data/src/geomerative/RMesh.java +420 -0
- data/src/geomerative/RPath.java +1095 -0
- data/src/geomerative/RPoint.java +419 -0
- data/src/geomerative/RPolygon.java +1110 -0
- data/src/geomerative/RRectangle.java +91 -0
- data/src/geomerative/RSVG.java +976 -0
- data/src/geomerative/RShape.java +2045 -0
- data/src/geomerative/RStrip.java +221 -0
- data/src/geomerative/RStyle.java +469 -0
- data/src/org/apache/batik/svggen/font/.SVGFont.java.swp +0 -0
- data/src/org/apache/batik/svggen/font/Font.java +188 -0
- data/src/org/apache/batik/svggen/font/Glyph.java +113 -0
- data/src/org/apache/batik/svggen/font/Messages.java.bak +72 -0
- data/src/org/apache/batik/svggen/font/Point.java +38 -0
- data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +15 -0
- data/src/org/apache/batik/svggen/font/table/ClassDef.java +42 -0
- data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +55 -0
- data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +49 -0
- data/src/org/apache/batik/svggen/font/table/CmapFormat.java +81 -0
- data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +60 -0
- data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +48 -0
- data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +147 -0
- data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +60 -0
- data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +84 -0
- data/src/org/apache/batik/svggen/font/table/CmapTable.java +87 -0
- data/src/org/apache/batik/svggen/font/table/Coverage.java +50 -0
- data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +59 -0
- data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +56 -0
- data/src/org/apache/batik/svggen/font/table/CvtTable.java +48 -0
- data/src/org/apache/batik/svggen/font/table/Device.java +63 -0
- data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +73 -0
- data/src/org/apache/batik/svggen/font/table/Feature.java +56 -0
- data/src/org/apache/batik/svggen/font/table/FeatureList.java +70 -0
- data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +52 -0
- data/src/org/apache/batik/svggen/font/table/FeatureTags.java +30 -0
- data/src/org/apache/batik/svggen/font/table/FpgmTable.java +38 -0
- data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +165 -0
- data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +160 -0
- data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +79 -0
- data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +155 -0
- data/src/org/apache/batik/svggen/font/table/GlyfTable.java +111 -0
- data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +39 -0
- data/src/org/apache/batik/svggen/font/table/GposTable.java +80 -0
- data/src/org/apache/batik/svggen/font/table/GsubTable.java +118 -0
- data/src/org/apache/batik/svggen/font/table/HeadTable.java +159 -0
- data/src/org/apache/batik/svggen/font/table/HheaTable.java +109 -0
- data/src/org/apache/batik/svggen/font/table/HmtxTable.java +99 -0
- data/src/org/apache/batik/svggen/font/table/KernSubtable.java +58 -0
- data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +65 -0
- data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +56 -0
- data/src/org/apache/batik/svggen/font/table/KernTable.java +64 -0
- data/src/org/apache/batik/svggen/font/table/KerningPair.java +53 -0
- data/src/org/apache/batik/svggen/font/table/LangSys.java +58 -0
- data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +52 -0
- data/src/org/apache/batik/svggen/font/table/Ligature.java +57 -0
- data/src/org/apache/batik/svggen/font/table/LigatureSet.java +55 -0
- data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +40 -0
- data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +63 -0
- data/src/org/apache/batik/svggen/font/table/LocaTable.java +72 -0
- data/src/org/apache/batik/svggen/font/table/Lookup.java +77 -0
- data/src/org/apache/batik/svggen/font/table/LookupList.java +68 -0
- data/src/org/apache/batik/svggen/font/table/LookupSubtable.java +27 -0
- data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +31 -0
- data/src/org/apache/batik/svggen/font/table/MaxpTable.java +124 -0
- data/src/org/apache/batik/svggen/font/table/NameRecord.java +98 -0
- data/src/org/apache/batik/svggen/font/table/NameTable.java +67 -0
- data/src/org/apache/batik/svggen/font/table/Os2Table.java +232 -0
- data/src/org/apache/batik/svggen/font/table/Panose.java +108 -0
- data/src/org/apache/batik/svggen/font/table/PostTable.java +379 -0
- data/src/org/apache/batik/svggen/font/table/PrepTable.java +38 -0
- data/src/org/apache/batik/svggen/font/table/Program.java +49 -0
- data/src/org/apache/batik/svggen/font/table/RangeRecord.java +57 -0
- data/src/org/apache/batik/svggen/font/table/Script.java +72 -0
- data/src/org/apache/batik/svggen/font/table/ScriptList.java +78 -0
- data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +52 -0
- data/src/org/apache/batik/svggen/font/table/ScriptTags.java +28 -0
- data/src/org/apache/batik/svggen/font/table/SingleSubst.java +47 -0
- data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +67 -0
- data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +67 -0
- data/src/org/apache/batik/svggen/font/table/Table.java +204 -0
- data/src/org/apache/batik/svggen/font/table/TableDirectory.java +94 -0
- data/src/org/apache/batik/svggen/font/table/TableFactory.java +121 -0
- metadata +206 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Copyright 2001 The Apache Software Foundation
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
|
17
|
+
*/
|
18
|
+
package org.apache.batik.svggen.font.table;
|
19
|
+
|
20
|
+
import java.io.IOException;
|
21
|
+
import org.apache.batik.svggen.font.*;
|
22
|
+
|
23
|
+
|
24
|
+
/**
|
25
|
+
*
|
26
|
+
* @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
|
27
|
+
* @version $Id: SingleSubstFormat2.java,v 1.3 2004/08/18 07:15:22 vhardy Exp $
|
28
|
+
*/
|
29
|
+
public class SingleSubstFormat2 extends SingleSubst {
|
30
|
+
|
31
|
+
private final int coverageOffset;
|
32
|
+
private final int glyphCount;
|
33
|
+
private final int[] substitutes;
|
34
|
+
private final Coverage coverage;
|
35
|
+
|
36
|
+
/** Creates new SingleSubstFormat2
|
37
|
+
* @param raf
|
38
|
+
* @param offset
|
39
|
+
* @throws java.io.IOException
|
40
|
+
*/
|
41
|
+
protected SingleSubstFormat2(RandomAccessFileEmulator raf, int offset) throws IOException {
|
42
|
+
coverageOffset = raf.readUnsignedShort();
|
43
|
+
glyphCount = raf.readUnsignedShort();
|
44
|
+
substitutes = new int[glyphCount];
|
45
|
+
for (int i = 0; i < glyphCount; i++) {
|
46
|
+
substitutes[i] = raf.readUnsignedShort();
|
47
|
+
}
|
48
|
+
raf.seek(offset + coverageOffset);
|
49
|
+
coverage = Coverage.read(raf);
|
50
|
+
}
|
51
|
+
|
52
|
+
@Override
|
53
|
+
public int getFormat() {
|
54
|
+
return 2;
|
55
|
+
}
|
56
|
+
|
57
|
+
@Override
|
58
|
+
public int substitute(int glyphId) {
|
59
|
+
int i = coverage.findGlyph(glyphId);
|
60
|
+
if (i > -1) {
|
61
|
+
return substitutes[i];
|
62
|
+
}
|
63
|
+
return glyphId;
|
64
|
+
}
|
65
|
+
|
66
|
+
}
|
67
|
+
|
@@ -0,0 +1,204 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Copyright 2001 The Apache Software Foundation
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
|
17
|
+
*/
|
18
|
+
package org.apache.batik.svggen.font.table;
|
19
|
+
|
20
|
+
/**
|
21
|
+
* @version $Id: Table.java,v 1.3 2004/08/18 07:15:22 vhardy Exp $
|
22
|
+
* @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
|
23
|
+
*/
|
24
|
+
public interface Table {
|
25
|
+
|
26
|
+
// Table constants
|
27
|
+
public static final int BASE = 0x42415345; // Baseline data [OpenType]
|
28
|
+
public static final int CFF = 0x43464620; // PostScript font program (compact font format) [PostScript]
|
29
|
+
public static final int DSIG = 0x44534947; // Digital signature
|
30
|
+
public static final int EBDT = 0x45424454; // Embedded bitmap data
|
31
|
+
public static final int EBLC = 0x45424c43; // Embedded bitmap location data
|
32
|
+
public static final int EBSC = 0x45425343; // Embedded bitmap scaling data
|
33
|
+
public static final int GDEF = 0x47444546; // Glyph definition data [OpenType]
|
34
|
+
public static final int GPOS = 0x47504f53; // Glyph positioning data [OpenType]
|
35
|
+
public static final int GSUB = 0x47535542; // Glyph substitution data [OpenType]
|
36
|
+
public static final int JSTF = 0x4a535446; // Justification data [OpenType]
|
37
|
+
public static final int LTSH = 0x4c545348; // Linear threshold table
|
38
|
+
public static final int MMFX = 0x4d4d4658; // Multiple master font metrics [PostScript]
|
39
|
+
public static final int MMSD = 0x4d4d5344; // Multiple master supplementary data [PostScript]
|
40
|
+
public static final int OS_2 = 0x4f532f32; // OS/2 and Windows specific metrics [r]
|
41
|
+
public static final int PCLT = 0x50434c54; // PCL5
|
42
|
+
public static final int VDMX = 0x56444d58; // Vertical Device Metrics table
|
43
|
+
public static final int cmap = 0x636d6170; // character to glyph mapping [r]
|
44
|
+
public static final int cvt = 0x63767420; // Control Value Table
|
45
|
+
public static final int fpgm = 0x6670676d; // font program
|
46
|
+
public static final int fvar = 0x66766172; // Apple's font variations table [PostScript]
|
47
|
+
public static final int gasp = 0x67617370; // grid-fitting and scan conversion procedure (grayscale)
|
48
|
+
public static final int glyf = 0x676c7966; // glyph data [r]
|
49
|
+
public static final int hdmx = 0x68646d78; // horizontal device metrics
|
50
|
+
public static final int head = 0x68656164; // font header [r]
|
51
|
+
public static final int hhea = 0x68686561; // horizontal header [r]
|
52
|
+
public static final int hmtx = 0x686d7478; // horizontal metrics [r]
|
53
|
+
public static final int kern = 0x6b65726e; // kerning
|
54
|
+
public static final int loca = 0x6c6f6361; // index to location [r]
|
55
|
+
public static final int maxp = 0x6d617870; // maximum profile [r]
|
56
|
+
public static final int name = 0x6e616d65; // naming table [r]
|
57
|
+
public static final int prep = 0x70726570; // CVT Program
|
58
|
+
public static final int post = 0x706f7374; // PostScript information [r]
|
59
|
+
public static final int vhea = 0x76686561; // Vertical Metrics header
|
60
|
+
public static final int vmtx = 0x766d7478; // Vertical Metrics
|
61
|
+
|
62
|
+
// Platform IDs
|
63
|
+
public static final short platformAppleUnicode = 0;
|
64
|
+
public static final short platformMacintosh = 1;
|
65
|
+
public static final short platformISO = 2;
|
66
|
+
public static final short platformMicrosoft = 3;
|
67
|
+
|
68
|
+
// Microsoft Encoding IDs
|
69
|
+
public static final short encodingUndefined = 0;
|
70
|
+
public static final short encodingUGL = 1;
|
71
|
+
|
72
|
+
// Macintosh Encoding IDs
|
73
|
+
public static final short encodingRoman = 0;
|
74
|
+
public static final short encodingJapanese = 1;
|
75
|
+
public static final short encodingChinese = 2;
|
76
|
+
public static final short encodingKorean = 3;
|
77
|
+
public static final short encodingArabic = 4;
|
78
|
+
public static final short encodingHebrew = 5;
|
79
|
+
public static final short encodingGreek = 6;
|
80
|
+
public static final short encodingRussian = 7;
|
81
|
+
public static final short encodingRSymbol = 8;
|
82
|
+
public static final short encodingDevanagari = 9;
|
83
|
+
public static final short encodingGurmukhi = 10;
|
84
|
+
public static final short encodingGujarati = 11;
|
85
|
+
public static final short encodingOriya = 12;
|
86
|
+
public static final short encodingBengali = 13;
|
87
|
+
public static final short encodingTamil = 14;
|
88
|
+
public static final short encodingTelugu = 15;
|
89
|
+
public static final short encodingKannada = 16;
|
90
|
+
public static final short encodingMalayalam = 17;
|
91
|
+
public static final short encodingSinhalese = 18;
|
92
|
+
public static final short encodingBurmese = 19;
|
93
|
+
public static final short encodingKhmer = 20;
|
94
|
+
public static final short encodingThai = 21;
|
95
|
+
public static final short encodingLaotian = 22;
|
96
|
+
public static final short encodingGeorgian = 23;
|
97
|
+
public static final short encodingArmenian = 24;
|
98
|
+
public static final short encodingMaldivian = 25;
|
99
|
+
public static final short encodingTibetan = 26;
|
100
|
+
public static final short encodingMongolian = 27;
|
101
|
+
public static final short encodingGeez = 28;
|
102
|
+
public static final short encodingSlavic = 29;
|
103
|
+
public static final short encodingVietnamese = 30;
|
104
|
+
public static final short encodingSindhi = 31;
|
105
|
+
public static final short encodingUninterp = 32;
|
106
|
+
|
107
|
+
// ISO Encoding IDs
|
108
|
+
public static final short encodingASCII = 0;
|
109
|
+
public static final short encodingISO10646 = 1;
|
110
|
+
public static final short encodingISO8859_1 = 2;
|
111
|
+
|
112
|
+
// Microsoft Language IDs
|
113
|
+
public static final short languageSQI = 0x041c;
|
114
|
+
public static final short languageEUQ = 0x042d;
|
115
|
+
public static final short languageBEL = 0x0423;
|
116
|
+
public static final short languageBGR = 0x0402;
|
117
|
+
public static final short languageCAT = 0x0403;
|
118
|
+
public static final short languageSHL = 0x041a;
|
119
|
+
public static final short languageCSY = 0x0405;
|
120
|
+
public static final short languageDAN = 0x0406;
|
121
|
+
public static final short languageNLD = 0x0413;
|
122
|
+
public static final short languageNLB = 0x0813;
|
123
|
+
public static final short languageENU = 0x0409;
|
124
|
+
public static final short languageENG = 0x0809;
|
125
|
+
public static final short languageENA = 0x0c09;
|
126
|
+
public static final short languageENC = 0x1009;
|
127
|
+
public static final short languageENZ = 0x1409;
|
128
|
+
public static final short languageENI = 0x1809;
|
129
|
+
public static final short languageETI = 0x0425;
|
130
|
+
public static final short languageFIN = 0x040b;
|
131
|
+
public static final short languageFRA = 0x040c;
|
132
|
+
public static final short languageFRB = 0x080c;
|
133
|
+
public static final short languageFRC = 0x0c0c;
|
134
|
+
public static final short languageFRS = 0x100c;
|
135
|
+
public static final short languageFRL = 0x140c;
|
136
|
+
public static final short languageDEU = 0x0407;
|
137
|
+
public static final short languageDES = 0x0807;
|
138
|
+
public static final short languageDEA = 0x0c07;
|
139
|
+
public static final short languageDEL = 0x1007;
|
140
|
+
public static final short languageDEC = 0x1407;
|
141
|
+
public static final short languageELL = 0x0408;
|
142
|
+
public static final short languageHUN = 0x040e;
|
143
|
+
public static final short languageISL = 0x040f;
|
144
|
+
public static final short languageITA = 0x0410;
|
145
|
+
public static final short languageITS = 0x0810;
|
146
|
+
public static final short languageLVI = 0x0426;
|
147
|
+
public static final short languageLTH = 0x0427;
|
148
|
+
public static final short languageNOR = 0x0414;
|
149
|
+
public static final short languageNON = 0x0814;
|
150
|
+
public static final short languagePLK = 0x0415;
|
151
|
+
public static final short languagePTB = 0x0416;
|
152
|
+
public static final short languagePTG = 0x0816;
|
153
|
+
public static final short languageROM = 0x0418;
|
154
|
+
public static final short languageRUS = 0x0419;
|
155
|
+
public static final short languageSKY = 0x041b;
|
156
|
+
public static final short languageSLV = 0x0424;
|
157
|
+
public static final short languageESP = 0x040a;
|
158
|
+
public static final short languageESM = 0x080a;
|
159
|
+
public static final short languageESN = 0x0c0a;
|
160
|
+
public static final short languageSVE = 0x041d;
|
161
|
+
public static final short languageTRK = 0x041f;
|
162
|
+
public static final short languageUKR = 0x0422;
|
163
|
+
|
164
|
+
// Macintosh Language IDs
|
165
|
+
public static final short languageEnglish = 0;
|
166
|
+
public static final short languageFrench = 1;
|
167
|
+
public static final short languageGerman = 2;
|
168
|
+
public static final short languageItalian = 3;
|
169
|
+
public static final short languageDutch = 4;
|
170
|
+
public static final short languageSwedish = 5;
|
171
|
+
public static final short languageSpanish = 6;
|
172
|
+
public static final short languageDanish = 7;
|
173
|
+
public static final short languagePortuguese = 8;
|
174
|
+
public static final short languageNorwegian = 9;
|
175
|
+
public static final short languageHebrew = 10;
|
176
|
+
public static final short languageJapanese = 11;
|
177
|
+
public static final short languageArabic = 12;
|
178
|
+
public static final short languageFinnish = 13;
|
179
|
+
public static final short languageGreek = 14;
|
180
|
+
public static final short languageIcelandic = 15;
|
181
|
+
public static final short languageMaltese = 16;
|
182
|
+
public static final short languageTurkish = 17;
|
183
|
+
public static final short languageYugoslavian = 18;
|
184
|
+
public static final short languageChinese = 19;
|
185
|
+
public static final short languageUrdu = 20;
|
186
|
+
public static final short languageHindi = 21;
|
187
|
+
public static final short languageThai = 22;
|
188
|
+
|
189
|
+
// Name IDs
|
190
|
+
public static final short nameCopyrightNotice = 0;
|
191
|
+
public static final short nameFontFamilyName = 1;
|
192
|
+
public static final short nameFontSubfamilyName = 2;
|
193
|
+
public static final short nameUniqueFontIdentifier = 3;
|
194
|
+
public static final short nameFullFontName = 4;
|
195
|
+
public static final short nameVersionString = 5;
|
196
|
+
public static final short namePostscriptName = 6;
|
197
|
+
public static final short nameTrademark = 7;
|
198
|
+
|
199
|
+
/**
|
200
|
+
* Get the table type, as a table directory value.
|
201
|
+
* @return The table type
|
202
|
+
*/
|
203
|
+
public int getType();
|
204
|
+
}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Copyright 2001 The Apache Software Foundation
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
|
17
|
+
*/
|
18
|
+
package org.apache.batik.svggen.font.table;
|
19
|
+
|
20
|
+
import java.io.IOException;
|
21
|
+
import org.apache.batik.svggen.font.*;
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @version $Id: TableDirectory.java,v 1.3 2004/08/18 07:15:22 vhardy Exp $
|
25
|
+
* @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
|
26
|
+
*/
|
27
|
+
public class TableDirectory {
|
28
|
+
|
29
|
+
private int version = 0;
|
30
|
+
private short numTables = 0;
|
31
|
+
private short searchRange = 0;
|
32
|
+
private short entrySelector = 0;
|
33
|
+
private short rangeShift = 0;
|
34
|
+
private final DirectoryEntry[] entries;
|
35
|
+
|
36
|
+
public TableDirectory(RandomAccessFileEmulator raf) throws IOException {
|
37
|
+
version = raf.readInt();
|
38
|
+
numTables = raf.readShort();
|
39
|
+
searchRange = raf.readShort();
|
40
|
+
entrySelector = raf.readShort();
|
41
|
+
rangeShift = raf.readShort();
|
42
|
+
entries = new DirectoryEntry[numTables];
|
43
|
+
for (int i = 0; i < numTables; i++) {
|
44
|
+
entries[i] = new DirectoryEntry(raf);
|
45
|
+
}
|
46
|
+
|
47
|
+
// Sort them into file order (simple bubble sort)
|
48
|
+
boolean modified = true;
|
49
|
+
while (modified) {
|
50
|
+
modified = false;
|
51
|
+
for (int i = 0; i < numTables - 1; i++) {
|
52
|
+
if (entries[i].getOffset() > entries[i+1].getOffset()) {
|
53
|
+
DirectoryEntry temp = entries[i];
|
54
|
+
entries[i] = entries[i+1];
|
55
|
+
entries[i+1] = temp;
|
56
|
+
modified = true;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
public DirectoryEntry getEntry(int index) {
|
63
|
+
return entries[index];
|
64
|
+
}
|
65
|
+
|
66
|
+
public DirectoryEntry getEntryByTag(int tag) {
|
67
|
+
for (int i = 0; i < numTables; i++) {
|
68
|
+
if (entries[i].getTag() == tag) {
|
69
|
+
return entries[i];
|
70
|
+
}
|
71
|
+
}
|
72
|
+
return null;
|
73
|
+
}
|
74
|
+
|
75
|
+
public short getEntrySelector() {
|
76
|
+
return entrySelector;
|
77
|
+
}
|
78
|
+
|
79
|
+
public short getNumTables() {
|
80
|
+
return numTables;
|
81
|
+
}
|
82
|
+
|
83
|
+
public short getRangeShift() {
|
84
|
+
return rangeShift;
|
85
|
+
}
|
86
|
+
|
87
|
+
public short getSearchRange() {
|
88
|
+
return searchRange;
|
89
|
+
}
|
90
|
+
|
91
|
+
public int getVersion() {
|
92
|
+
return version;
|
93
|
+
}
|
94
|
+
}
|
@@ -0,0 +1,121 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Copyright 1999-2003 The Apache Software Foundation
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
|
17
|
+
*/
|
18
|
+
|
19
|
+
package org.apache.batik.svggen.font.table;
|
20
|
+
|
21
|
+
import java.io.IOException;
|
22
|
+
import org.apache.batik.svggen.font.*;
|
23
|
+
|
24
|
+
/**
|
25
|
+
*
|
26
|
+
* @version $Id: TableFactory.java,v 1.3 2004/10/30 18:38:06 deweese Exp $
|
27
|
+
* @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
|
28
|
+
*/
|
29
|
+
public class TableFactory {
|
30
|
+
|
31
|
+
public static Table create(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
32
|
+
Table t = null;
|
33
|
+
switch (de.getTag()) {
|
34
|
+
case Table.BASE:
|
35
|
+
break;
|
36
|
+
case Table.CFF:
|
37
|
+
break;
|
38
|
+
case Table.DSIG:
|
39
|
+
break;
|
40
|
+
case Table.EBDT:
|
41
|
+
break;
|
42
|
+
case Table.EBLC:
|
43
|
+
break;
|
44
|
+
case Table.EBSC:
|
45
|
+
break;
|
46
|
+
case Table.GDEF:
|
47
|
+
break;
|
48
|
+
case Table.GPOS:
|
49
|
+
t = new GposTable(de, raf);
|
50
|
+
break;
|
51
|
+
case Table.GSUB:
|
52
|
+
t = new GsubTable(de, raf);
|
53
|
+
break;
|
54
|
+
case Table.JSTF:
|
55
|
+
break;
|
56
|
+
case Table.LTSH:
|
57
|
+
break;
|
58
|
+
case Table.MMFX:
|
59
|
+
break;
|
60
|
+
case Table.MMSD:
|
61
|
+
break;
|
62
|
+
case Table.OS_2:
|
63
|
+
t = new Os2Table(de, raf);
|
64
|
+
break;
|
65
|
+
case Table.PCLT:
|
66
|
+
break;
|
67
|
+
case Table.VDMX:
|
68
|
+
break;
|
69
|
+
case Table.cmap:
|
70
|
+
t = new CmapTable(de, raf);
|
71
|
+
break;
|
72
|
+
case Table.cvt:
|
73
|
+
t = new CvtTable(de, raf);
|
74
|
+
break;
|
75
|
+
case Table.fpgm:
|
76
|
+
t = new FpgmTable(de, raf);
|
77
|
+
break;
|
78
|
+
case Table.fvar:
|
79
|
+
break;
|
80
|
+
case Table.gasp:
|
81
|
+
break;
|
82
|
+
case Table.glyf:
|
83
|
+
t = new GlyfTable(de, raf);
|
84
|
+
break;
|
85
|
+
case Table.hdmx:
|
86
|
+
break;
|
87
|
+
case Table.head:
|
88
|
+
t = new HeadTable(de, raf);
|
89
|
+
break;
|
90
|
+
case Table.hhea:
|
91
|
+
t = new HheaTable(de, raf);
|
92
|
+
break;
|
93
|
+
case Table.hmtx:
|
94
|
+
t = new HmtxTable(de, raf);
|
95
|
+
break;
|
96
|
+
case Table.kern:
|
97
|
+
t = new KernTable(de, raf);
|
98
|
+
break;
|
99
|
+
case Table.loca:
|
100
|
+
t = new LocaTable(de, raf);
|
101
|
+
break;
|
102
|
+
case Table.maxp:
|
103
|
+
t = new MaxpTable(de, raf);
|
104
|
+
break;
|
105
|
+
case Table.name:
|
106
|
+
t = new NameTable(de, raf);
|
107
|
+
break;
|
108
|
+
case Table.prep:
|
109
|
+
t = new PrepTable(de, raf);
|
110
|
+
break;
|
111
|
+
case Table.post:
|
112
|
+
t = new PostTable(de, raf);
|
113
|
+
break;
|
114
|
+
case Table.vhea:
|
115
|
+
break;
|
116
|
+
case Table.vmtx:
|
117
|
+
break;
|
118
|
+
}
|
119
|
+
return t;
|
120
|
+
}
|
121
|
+
}
|