geomerative 0.4.3-java → 2.1.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/.mvn/extensions.xml +1 -1
- data/.mvn/wrapper/maven-wrapper.properties +1 -1
- data/CHANGELOG.md +19 -1
- data/COPYING.md +1 -1
- data/README.md +2 -2
- data/Rakefile +2 -15
- data/docs/_config.yml +8 -0
- data/docs/_includes/head.html +7 -6
- data/docs/_includes/header.html +6 -6
- data/docs/_includes/icon-github.svg +3 -1
- data/docs/_includes/icon-twitter.svg +3 -1
- data/docs/_includes/navigation.html +24 -0
- data/docs/_sass/_base.scss +79 -79
- data/docs/_sass/_layout.scss +137 -137
- data/docs/_sass/_syntax-highlighting.scss +64 -64
- data/docs/index.html +18 -18
- data/examples/README.md +1 -1
- data/examples/data/bot1.svg +1 -1
- data/examples/data/lion.svg +156 -156
- data/examples/data/ruby.svg +1 -1
- data/examples/jruby_merge.rb +1 -1
- data/examples/{f_agent.rb → library/f_agent/f_agent.rb} +0 -0
- data/examples/{font_agent.rb → library/font_agent/font_agent.rb} +2 -1
- data/examples/text_on_geomerative_path.rb +3 -2
- data/examples/typo_deform.rb +2 -2
- data/examples/typo_extra_bright.rb +1 -1
- data/geomerative.gemspec +3 -6
- data/lib/geomerative/version.rb +1 -1
- data/lib/geomerative.jar +0 -0
- data/lib/geomerative.rb +10 -10
- data/mvnw +234 -0
- data/mvnw.cmd +145 -0
- data/pom.rb +14 -16
- data/pom.xml +13 -19
- data/src/geomerative/FastRClip.java +2050 -2334
- data/src/geomerative/RClip.java +2237 -2539
- data/src/geomerative/RClosest.java +33 -31
- data/src/geomerative/RCommand.java +1750 -1758
- data/src/geomerative/RContour.java +290 -292
- data/src/geomerative/RFont.java +277 -246
- data/src/geomerative/RG.java +722 -727
- data/src/geomerative/RGeomElem.java +967 -962
- data/src/geomerative/RGroup.java +508 -467
- data/src/geomerative/RMatrix.java +304 -289
- data/src/geomerative/RMesh.java +241 -229
- data/src/geomerative/RPath.java +924 -926
- data/src/geomerative/RPoint.java +391 -391
- data/src/geomerative/RPolygon.java +1017 -1013
- data/src/geomerative/RRectangle.java +43 -52
- data/src/geomerative/RSVG.java +480 -516
- data/src/geomerative/RShape.java +1767 -1777
- data/src/geomerative/RStrip.java +173 -176
- data/src/geomerative/RStyle.java +197 -194
- data/src/module-info.java +4 -0
- data/src/org/apache/batik/svggen/font/Font.java +141 -142
- data/src/org/apache/batik/svggen/font/Glyph.java +102 -71
- data/src/org/apache/batik/svggen/font/Point.java +12 -12
- data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +14 -12
- data/src/org/apache/batik/svggen/font/table/ClassDef.java +12 -12
- data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +27 -24
- data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +20 -17
- data/src/org/apache/batik/svggen/font/table/CmapFormat.java +43 -43
- data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +33 -26
- data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +25 -20
- data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +106 -96
- data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +36 -32
- data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +69 -49
- data/src/org/apache/batik/svggen/font/table/CmapTable.java +50 -50
- data/src/org/apache/batik/svggen/font/table/Coverage.java +19 -19
- data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +30 -27
- data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +26 -24
- data/src/org/apache/batik/svggen/font/table/CvtTable.java +16 -16
- data/src/org/apache/batik/svggen/font/table/Device.java +32 -32
- data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +39 -39
- data/src/org/apache/batik/svggen/font/table/Feature.java +26 -23
- data/src/org/apache/batik/svggen/font/table/FeatureList.java +37 -35
- data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +22 -22
- data/src/org/apache/batik/svggen/font/table/FeatureTags.java +4 -3
- data/src/org/apache/batik/svggen/font/table/FpgmTable.java +9 -9
- data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +134 -132
- data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +123 -122
- data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +44 -44
- data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +110 -109
- data/src/org/apache/batik/svggen/font/table/GlyfTable.java +46 -46
- data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +25 -13
- data/src/org/apache/batik/svggen/font/table/GposTable.java +26 -23
- data/src/org/apache/batik/svggen/font/table/GsubTable.java +85 -82
- data/src/org/apache/batik/svggen/font/table/HeadTable.java +131 -131
- data/src/org/apache/batik/svggen/font/table/HheaTable.java +80 -80
- data/src/org/apache/batik/svggen/font/table/HmtxTable.java +50 -49
- data/src/org/apache/batik/svggen/font/table/KernSubtable.java +29 -27
- data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +35 -32
- data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +28 -26
- data/src/org/apache/batik/svggen/font/table/KernTable.java +36 -31
- data/src/org/apache/batik/svggen/font/table/KerningPair.java +27 -23
- data/src/org/apache/batik/svggen/font/table/LangSys.java +28 -26
- data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +22 -22
- data/src/org/apache/batik/svggen/font/table/Ligature.java +24 -24
- data/src/org/apache/batik/svggen/font/table/LigatureSet.java +24 -24
- data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +9 -9
- data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +30 -30
- data/src/org/apache/batik/svggen/font/table/LocaTable.java +37 -37
- data/src/org/apache/batik/svggen/font/table/Lookup.java +41 -40
- data/src/org/apache/batik/svggen/font/table/LookupList.java +34 -34
- data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +7 -5
- data/src/org/apache/batik/svggen/font/table/MaxpTable.java +96 -96
- data/src/org/apache/batik/svggen/font/table/NameRecord.java +64 -65
- data/src/org/apache/batik/svggen/font/table/NameTable.java +33 -33
- data/src/org/apache/batik/svggen/font/table/Os2Table.java +196 -196
- data/src/org/apache/batik/svggen/font/table/Panose.java +14 -12
- data/src/org/apache/batik/svggen/font/table/PostTable.java +338 -338
- data/src/org/apache/batik/svggen/font/table/PrepTable.java +9 -9
- data/src/org/apache/batik/svggen/font/table/Program.java +15 -15
- data/src/org/apache/batik/svggen/font/table/RangeRecord.java +26 -25
- data/src/org/apache/batik/svggen/font/table/Script.java +38 -38
- data/src/org/apache/batik/svggen/font/table/ScriptList.java +42 -42
- data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +22 -22
- data/src/org/apache/batik/svggen/font/table/ScriptTags.java +2 -1
- data/src/org/apache/batik/svggen/font/table/SingleSubst.java +15 -16
- data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +33 -33
- data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +32 -32
- data/src/org/apache/batik/svggen/font/table/Table.java +171 -170
- data/src/org/apache/batik/svggen/font/table/TableDirectory.java +55 -55
- data/src/org/apache/batik/svggen/font/table/TableFactory.java +92 -93
- metadata +18 -19
- data/.travis.yml +0 -10
- data/calculate_torsional_angle.rb +0 -17
|
@@ -19,7 +19,7 @@ package org.apache.batik.svggen.font.table;
|
|
|
19
19
|
|
|
20
20
|
import java.io.ByteArrayInputStream;
|
|
21
21
|
import java.io.IOException;
|
|
22
|
-
import org.apache.batik.svggen.font
|
|
22
|
+
import org.apache.batik.svggen.font.RandomAccessFileEmulator;
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* @version $Id: LocaTable.java,v 1.4 2004/08/18 07:15:21 vhardy Exp $
|
|
@@ -27,46 +27,46 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class LocaTable implements Table {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
private byte[] buf = null;
|
|
31
|
+
private int[] offsets = null;
|
|
32
|
+
private short factor = 0;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
protected LocaTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
|
35
|
+
raf.seek(de.getOffset());
|
|
36
|
+
buf = new byte[de.getLength()];
|
|
37
|
+
raf.read(buf);
|
|
38
|
+
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
offsets = new int[numGlyphs + 1];
|
|
45
|
-
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
|
|
46
|
-
if (shortEntries) {
|
|
47
|
-
factor = 2;
|
|
48
|
-
for (int i = 0; i <= numGlyphs; i++) {
|
|
49
|
-
offsets[i] = (bais.read()<<8 | bais.read());
|
|
50
|
-
}
|
|
51
|
-
} else {
|
|
52
|
-
factor = 1;
|
|
53
|
-
for (int i = 0; i <= numGlyphs; i++) {
|
|
54
|
-
offsets[i] = (bais.read()<<24 | bais.read()<<16 |
|
|
55
|
-
bais.read()<< 8 | bais.read());
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
buf = null;
|
|
40
|
+
public void init(int numGlyphs, boolean shortEntries) {
|
|
41
|
+
if (buf == null) {
|
|
42
|
+
return;
|
|
59
43
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
44
|
+
offsets = new int[numGlyphs + 1];
|
|
45
|
+
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
|
|
46
|
+
if (shortEntries) {
|
|
47
|
+
factor = 2;
|
|
48
|
+
for (int i = 0; i <= numGlyphs; i++) {
|
|
49
|
+
offsets[i] = (bais.read() << 8 | bais.read());
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
factor = 1;
|
|
53
|
+
for (int i = 0; i <= numGlyphs; i++) {
|
|
54
|
+
offsets[i] = (bais.read() << 24 | bais.read() << 16
|
|
55
|
+
| bais.read() << 8 | bais.read());
|
|
56
|
+
}
|
|
66
57
|
}
|
|
58
|
+
buf = null;
|
|
59
|
+
}
|
|
67
60
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
public int getOffset(int i) {
|
|
62
|
+
if (offsets == null) {
|
|
63
|
+
return 0;
|
|
71
64
|
}
|
|
65
|
+
return offsets[i] * factor;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@Override
|
|
69
|
+
public int getType() {
|
|
70
|
+
return LOCA;
|
|
71
|
+
}
|
|
72
72
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
package org.apache.batik.svggen.font.table;
|
|
19
19
|
|
|
20
20
|
import java.io.IOException;
|
|
21
|
-
import org.apache.batik.svggen.font
|
|
21
|
+
import org.apache.batik.svggen.font.RandomAccessFileEmulator;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
*
|
|
@@ -27,51 +27,52 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class Lookup {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
// LookupFlag bit enumeration
|
|
31
|
+
public static final int IGNORE_BASE_GLYPHS = 0x0002;
|
|
32
|
+
public static final int IGNORE_BASE_LIGATURES = 0x0004;
|
|
33
|
+
public static final int IGNORE_BASE_MARKS = 0x0008;
|
|
34
|
+
public static final int MARK_ATTACHMENT_TYPE = 0xFF00;
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
private final int type;
|
|
37
|
+
private final int flag;
|
|
38
|
+
private final int subTableCount;
|
|
39
|
+
private final int[] subTableOffsets;
|
|
40
|
+
private final LookupSubtable[] subTables;
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Creates new Lookup
|
|
44
|
+
*
|
|
45
|
+
* @param factory
|
|
46
|
+
* @param raf
|
|
47
|
+
* @param offset
|
|
48
|
+
* @throws java.io.IOException
|
|
49
|
+
*/
|
|
50
|
+
public Lookup(LookupSubtableFactory factory, RandomAccessFileEmulator raf, int offset)
|
|
49
51
|
throws IOException {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
for (int i = 0; i < subTableCount; i++) {
|
|
60
|
-
subTables[i] = factory.read(type, raf, offset + subTableOffsets[i]);
|
|
61
|
-
}
|
|
52
|
+
raf.seek(offset);
|
|
53
|
+
type = raf.readUnsignedShort();
|
|
54
|
+
flag = raf.readUnsignedShort();
|
|
55
|
+
subTableCount = raf.readUnsignedShort();
|
|
56
|
+
subTableOffsets = new int[subTableCount];
|
|
57
|
+
subTables = new LookupSubtable[subTableCount];
|
|
58
|
+
for (int i = 0; i < subTableCount; i++) {
|
|
59
|
+
subTableOffsets[i] = raf.readUnsignedShort();
|
|
62
60
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return type;
|
|
61
|
+
for (int i = 0; i < subTableCount; i++) {
|
|
62
|
+
subTables[i] = factory.read(type, raf, offset + subTableOffsets[i]);
|
|
66
63
|
}
|
|
64
|
+
}
|
|
67
65
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
public int getType() {
|
|
67
|
+
return type;
|
|
68
|
+
}
|
|
71
69
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
public int getSubtableCount() {
|
|
71
|
+
return subTableCount;
|
|
72
|
+
}
|
|
75
73
|
|
|
76
|
-
|
|
74
|
+
public LookupSubtable getSubtable(int i) {
|
|
75
|
+
return subTables[i];
|
|
76
|
+
}
|
|
77
77
|
|
|
78
|
+
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
package org.apache.batik.svggen.font.table;
|
|
19
19
|
|
|
20
20
|
import java.io.IOException;
|
|
21
|
-
import org.apache.batik.svggen.font
|
|
21
|
+
import org.apache.batik.svggen.font.RandomAccessFileEmulator;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
*
|
|
@@ -27,42 +27,42 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class LookupList {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
private final int lookupCount;
|
|
31
|
+
private final int[] lookupOffsets;
|
|
32
|
+
private final Lookup[] lookups;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
for (int i = 0; i < lookupCount; i++) {
|
|
52
|
-
lookups[i] = new Lookup(factory, raf, offset + lookupOffsets[i]);
|
|
53
|
-
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates new LookupList
|
|
36
|
+
*
|
|
37
|
+
* @param raf
|
|
38
|
+
* @param offset
|
|
39
|
+
* @param factory
|
|
40
|
+
* @throws java.io.IOException
|
|
41
|
+
*/
|
|
42
|
+
public LookupList(RandomAccessFileEmulator raf, int offset, LookupSubtableFactory factory)
|
|
43
|
+
throws IOException {
|
|
44
|
+
raf.seek(offset);
|
|
45
|
+
lookupCount = raf.readUnsignedShort();
|
|
46
|
+
lookupOffsets = new int[lookupCount];
|
|
47
|
+
lookups = new Lookup[lookupCount];
|
|
48
|
+
for (int i = 0; i < lookupCount; i++) {
|
|
49
|
+
lookupOffsets[i] = raf.readUnsignedShort();
|
|
54
50
|
}
|
|
51
|
+
for (int i = 0; i < lookupCount; i++) {
|
|
52
|
+
lookups[i] = new Lookup(factory, raf, offset + lookupOffsets[i]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
return null;
|
|
56
|
+
public Lookup getLookup(Feature feature, int index) {
|
|
57
|
+
if (feature == null) {
|
|
58
|
+
System.out.println("Feature is null!! Index is " + index + "!!");
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (feature.getLookupCount() > index) {
|
|
62
|
+
int i = feature.getLookupListIndex(index);
|
|
63
|
+
return lookups[i];
|
|
66
64
|
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
67
|
|
|
68
68
|
}
|
|
@@ -14,18 +14,20 @@
|
|
|
14
14
|
See the License for the specific language governing permissions and
|
|
15
15
|
limitations under the License.
|
|
16
16
|
|
|
17
|
-
*/
|
|
17
|
+
*/
|
|
18
18
|
package org.apache.batik.svggen.font.table;
|
|
19
19
|
|
|
20
20
|
import java.io.IOException;
|
|
21
|
-
import org.apache.batik.svggen.font
|
|
21
|
+
import org.apache.batik.svggen.font.RandomAccessFileEmulator;
|
|
22
22
|
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
24
|
*
|
|
25
25
|
* @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
|
|
26
|
-
* @version $Id: LookupSubtableFactory.java,v 1.3 2004/08/18 07:15:21 vhardy Exp
|
|
26
|
+
* @version $Id: LookupSubtableFactory.java,v 1.3 2004/08/18 07:15:21 vhardy Exp
|
|
27
|
+
* $
|
|
27
28
|
*/
|
|
28
29
|
public interface LookupSubtableFactory {
|
|
29
|
-
|
|
30
|
+
|
|
31
|
+
public LookupSubtable read(int type, RandomAccessFileEmulator raf, int offset)
|
|
30
32
|
throws IOException;
|
|
31
33
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
package org.apache.batik.svggen.font.table;
|
|
19
19
|
|
|
20
20
|
import java.io.IOException;
|
|
21
|
-
import org.apache.batik.svggen.font
|
|
21
|
+
import org.apache.batik.svggen.font.RandomAccessFileEmulator;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* @version $Id: MaxpTable.java,v 1.3 2004/08/18 07:15:21 vhardy Exp $
|
|
@@ -26,99 +26,99 @@ import org.apache.batik.svggen.font.*;
|
|
|
26
26
|
*/
|
|
27
27
|
public class MaxpTable implements Table {
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
29
|
+
private final int versionNumber;
|
|
30
|
+
private final int numGlyphs;
|
|
31
|
+
private final int maxPoints;
|
|
32
|
+
private final int maxContours;
|
|
33
|
+
private final int maxCompositePoints;
|
|
34
|
+
private final int maxCompositeContours;
|
|
35
|
+
private final int maxZones;
|
|
36
|
+
private final int maxTwilightPoints;
|
|
37
|
+
private final int maxStorage;
|
|
38
|
+
private final int maxFunctionDefs;
|
|
39
|
+
private final int maxInstructionDefs;
|
|
40
|
+
private final int maxStackElements;
|
|
41
|
+
private final int maxSizeOfInstructions;
|
|
42
|
+
private final int maxComponentElements;
|
|
43
|
+
private final int maxComponentDepth;
|
|
44
|
+
|
|
45
|
+
protected MaxpTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
|
46
|
+
raf.seek(de.getOffset());
|
|
47
|
+
versionNumber = raf.readInt();
|
|
48
|
+
numGlyphs = raf.readUnsignedShort();
|
|
49
|
+
maxPoints = raf.readUnsignedShort();
|
|
50
|
+
maxContours = raf.readUnsignedShort();
|
|
51
|
+
maxCompositePoints = raf.readUnsignedShort();
|
|
52
|
+
maxCompositeContours = raf.readUnsignedShort();
|
|
53
|
+
maxZones = raf.readUnsignedShort();
|
|
54
|
+
maxTwilightPoints = raf.readUnsignedShort();
|
|
55
|
+
maxStorage = raf.readUnsignedShort();
|
|
56
|
+
maxFunctionDefs = raf.readUnsignedShort();
|
|
57
|
+
maxInstructionDefs = raf.readUnsignedShort();
|
|
58
|
+
maxStackElements = raf.readUnsignedShort();
|
|
59
|
+
maxSizeOfInstructions = raf.readUnsignedShort();
|
|
60
|
+
maxComponentElements = raf.readUnsignedShort();
|
|
61
|
+
maxComponentDepth = raf.readUnsignedShort();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public int getMaxComponentDepth() {
|
|
65
|
+
return maxComponentDepth;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public int getMaxComponentElements() {
|
|
69
|
+
return maxComponentElements;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public int getMaxCompositeContours() {
|
|
73
|
+
return maxCompositeContours;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public int getMaxCompositePoints() {
|
|
77
|
+
return maxCompositePoints;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
public int getMaxContours() {
|
|
81
|
+
return maxContours;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
public int getMaxFunctionDefs() {
|
|
85
|
+
return maxFunctionDefs;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
public int getMaxInstructionDefs() {
|
|
89
|
+
return maxInstructionDefs;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public int getMaxPoints() {
|
|
93
|
+
return maxPoints;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public int getMaxSizeOfInstructions() {
|
|
97
|
+
return maxSizeOfInstructions;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public int getMaxStackElements() {
|
|
101
|
+
return maxStackElements;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public int getMaxStorage() {
|
|
105
|
+
return maxStorage;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public int getMaxTwilightPoints() {
|
|
109
|
+
return maxTwilightPoints;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
public int getMaxZones() {
|
|
113
|
+
return maxZones;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
public int getNumGlyphs() {
|
|
117
|
+
return numGlyphs;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@Override
|
|
121
|
+
public int getType() {
|
|
122
|
+
return MAXP;
|
|
123
|
+
}
|
|
124
124
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
package org.apache.batik.svggen.font.table;
|
|
19
19
|
|
|
20
20
|
import java.io.IOException;
|
|
21
|
-
import org.apache.batik.svggen.font
|
|
21
|
+
import org.apache.batik.svggen.font.RandomAccessFileEmulator;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* @version $Id: NameRecord.java,v 1.3 2004/08/18 07:15:22 vhardy Exp $
|
|
@@ -26,73 +26,72 @@ import org.apache.batik.svggen.font.*;
|
|
|
26
26
|
*/
|
|
27
27
|
public class NameRecord {
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
private final short platformId;
|
|
30
|
+
private final short encodingId;
|
|
31
|
+
private final short languageId;
|
|
32
|
+
private final short nameId;
|
|
33
|
+
private final short stringLength;
|
|
34
|
+
private final short stringOffset;
|
|
35
|
+
private String record;
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
public short getEncodingId() {
|
|
47
|
-
return encodingId;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public short getLanguageId() {
|
|
51
|
-
return languageId;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public short getNameId() {
|
|
55
|
-
return nameId;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public short getPlatformId() {
|
|
59
|
-
return platformId;
|
|
60
|
-
}
|
|
37
|
+
protected NameRecord(RandomAccessFileEmulator raf) throws IOException {
|
|
38
|
+
platformId = raf.readShort();
|
|
39
|
+
encodingId = raf.readShort();
|
|
40
|
+
languageId = raf.readShort();
|
|
41
|
+
nameId = raf.readShort();
|
|
42
|
+
stringLength = raf.readShort();
|
|
43
|
+
stringOffset = raf.readShort();
|
|
44
|
+
}
|
|
61
45
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
46
|
+
public short getEncodingId() {
|
|
47
|
+
return encodingId;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public short getLanguageId() {
|
|
51
|
+
return languageId;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public short getNameId() {
|
|
55
|
+
return nameId;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public short getPlatformId() {
|
|
59
|
+
return platformId;
|
|
60
|
+
}
|
|
65
61
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (platformId == Table.platformAppleUnicode) {
|
|
70
|
-
|
|
71
|
-
// Unicode (big-endian)
|
|
72
|
-
for (int i = 0; i < stringLength/2; i++) {
|
|
73
|
-
sb.append(raf.readChar());
|
|
74
|
-
}
|
|
75
|
-
} else if (platformId == Table.platformMacintosh) {
|
|
62
|
+
public String getRecordString() {
|
|
63
|
+
return record;
|
|
64
|
+
}
|
|
76
65
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
66
|
+
protected void loadString(RandomAccessFileEmulator raf, int stringStorageOffset) throws IOException {
|
|
67
|
+
StringBuilder sb = new StringBuilder();
|
|
68
|
+
raf.seek(stringStorageOffset + stringOffset);
|
|
69
|
+
switch (platformId) {
|
|
70
|
+
case Table.platformAppleUnicode:
|
|
71
|
+
// Unicode (big-endian)
|
|
72
|
+
for (int i = 0; i < stringLength / 2; i++) {
|
|
73
|
+
sb.append(raf.readChar());
|
|
74
|
+
} break;
|
|
75
|
+
case Table.platformMacintosh:
|
|
76
|
+
// Macintosh encoding, ASCII
|
|
77
|
+
for (int i = 0; i < stringLength; i++) {
|
|
78
|
+
sb.append((char) raf.readByte());
|
|
79
|
+
} break;
|
|
80
|
+
case Table.platformISO:
|
|
81
|
+
// ISO encoding, ASCII
|
|
82
|
+
for (int i = 0; i < stringLength; i++) {
|
|
83
|
+
sb.append((char) raf.readByte());
|
|
84
|
+
} break;
|
|
85
|
+
case Table.platformMicrosoft:
|
|
86
|
+
// Microsoft encoding, Unicode
|
|
87
|
+
char c;
|
|
88
|
+
for (int i = 0; i < stringLength / 2; i++) {
|
|
89
|
+
c = raf.readChar();
|
|
90
|
+
sb.append(c);
|
|
91
|
+
} break;
|
|
92
|
+
default:
|
|
93
|
+
break;
|
|
97
94
|
}
|
|
95
|
+
record = sb.toString();
|
|
96
|
+
}
|
|
98
97
|
}
|