geomerative 0.4.0-java → 2.0.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 +25 -0
- data/COPYING.md +1 -1
- data/README.md +4 -2
- data/Rakefile +2 -15
- data/docs/.gitignore +6 -0
- data/docs/_config.yml +30 -0
- data/docs/_includes/footer.html +38 -0
- data/docs/_includes/head.html +16 -0
- data/docs/_includes/header.html +27 -0
- data/docs/_includes/icon-github.html +1 -0
- data/docs/_includes/icon-github.svg +3 -0
- data/docs/_includes/icon-twitter.html +1 -0
- data/docs/_includes/icon-twitter.svg +3 -0
- data/docs/_includes/navigation.html +24 -0
- data/docs/_layouts/default.html +20 -0
- data/docs/_layouts/page.html +14 -0
- data/docs/_layouts/post.html +15 -0
- data/docs/_posts/2015-11-21-getting_started.md +67 -0
- data/docs/_posts/2015-11-25-bubbles.md +111 -0
- data/docs/_posts/2015-11-26-extra_bright.md +103 -0
- data/docs/_posts/2015-11-26-text_merge.md +114 -0
- data/docs/_posts/2016-07-06-dymo.md +99 -0
- data/docs/_sass/_base.scss +206 -0
- data/docs/_sass/_layout.scss +242 -0
- data/docs/_sass/_syntax-highlighting.scss +71 -0
- data/docs/about.md +12 -0
- data/docs/assets/bright.png +0 -0
- data/docs/assets/bubbles.png +0 -0
- data/docs/assets/design.png +0 -0
- data/docs/assets/dymo.png +0 -0
- data/docs/assets/favicon.ico +0 -0
- data/docs/assets/fred.png +0 -0
- data/docs/assets/merge.png +0 -0
- data/docs/css/main.scss +38 -0
- data/docs/favicon.ico +0 -0
- data/docs/feed.xml +30 -0
- data/docs/index.html +38 -0
- 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/hello_svg_to_pdf.rb +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 -7
- data/lib/geomerative.rb +5 -4
- data/lib/geomerative/version.rb +1 -1
- data/mvnw +234 -0
- data/mvnw.cmd +145 -0
- data/pom.rb +19 -18
- data/pom.xml +14 -13
- 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/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 +47 -30
- data/.travis.yml +0 -14
|
@@ -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,24 +27,24 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public abstract class Coverage {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
return c;
|
|
30
|
+
public abstract int getFormat();
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @param glyphId The ID of the glyph to find.
|
|
34
|
+
* @return The index of the glyph within the coverage, or -1 if the glyph
|
|
35
|
+
* can't be found.
|
|
36
|
+
*/
|
|
37
|
+
public abstract int findGlyph(int glyphId);
|
|
38
|
+
|
|
39
|
+
protected static Coverage read(RandomAccessFileEmulator raf) throws IOException {
|
|
40
|
+
Coverage c = null;
|
|
41
|
+
int format = raf.readUnsignedShort();
|
|
42
|
+
if (format == 1) {
|
|
43
|
+
c = new CoverageFormat1(raf);
|
|
44
|
+
} else if (format == 2) {
|
|
45
|
+
c = new CoverageFormat2(raf);
|
|
48
46
|
}
|
|
47
|
+
return c;
|
|
48
|
+
}
|
|
49
49
|
|
|
50
50
|
}
|
|
@@ -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,33 +27,36 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class CoverageFormat1 extends Coverage {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
private final int glyphCount;
|
|
31
|
+
private final int[] glyphIds;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates new CoverageFormat1
|
|
35
|
+
*
|
|
36
|
+
* @param raf
|
|
37
|
+
* @throws java.io.IOException
|
|
38
|
+
*/
|
|
39
|
+
protected CoverageFormat1(RandomAccessFileEmulator raf) throws IOException {
|
|
40
|
+
glyphCount = raf.readUnsignedShort();
|
|
41
|
+
glyphIds = new int[glyphCount];
|
|
42
|
+
for (int i = 0; i < glyphCount; i++) {
|
|
43
|
+
glyphIds[i] = raf.readUnsignedShort();
|
|
42
44
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return -1;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Override
|
|
48
|
+
public int getFormat() {
|
|
49
|
+
return 1;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@Override
|
|
53
|
+
public int findGlyph(int glyphId) {
|
|
54
|
+
for (int i = 0; i < glyphCount; i++) {
|
|
55
|
+
if (glyphIds[i] == glyphId) {
|
|
56
|
+
return i;
|
|
57
|
+
}
|
|
57
58
|
}
|
|
59
|
+
return -1;
|
|
60
|
+
}
|
|
58
61
|
|
|
59
62
|
}
|
|
@@ -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,30 +27,32 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class CoverageFormat2 extends Coverage {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
public int getFormat() {
|
|
43
|
-
return 2;
|
|
30
|
+
private int rangeCount;
|
|
31
|
+
private RangeRecord[] rangeRecords;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates new CoverageFormat2
|
|
35
|
+
*/
|
|
36
|
+
protected CoverageFormat2(RandomAccessFileEmulator raf) throws IOException {
|
|
37
|
+
rangeCount = raf.readUnsignedShort();
|
|
38
|
+
rangeRecords = new RangeRecord[rangeCount];
|
|
39
|
+
for (int i = 0; i < rangeCount; i++) {
|
|
40
|
+
rangeRecords[i] = new RangeRecord(raf);
|
|
44
41
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public int getFormat() {
|
|
45
|
+
return 2;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public int findGlyph(int glyphId) {
|
|
49
|
+
for (int i = 0; i < rangeCount; i++) {
|
|
50
|
+
int n = rangeRecords[i].getCoverageIndex(glyphId);
|
|
51
|
+
if (n > -1) {
|
|
52
|
+
return n;
|
|
53
|
+
}
|
|
54
54
|
}
|
|
55
|
+
return -1;
|
|
56
|
+
}
|
|
55
57
|
|
|
56
58
|
}
|
|
@@ -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: CvtTable.java,v 1.4 2004/08/18 07:15:20 vhardy Exp $
|
|
@@ -26,23 +26,23 @@ import org.apache.batik.svggen.font.*;
|
|
|
26
26
|
*/
|
|
27
27
|
public class CvtTable implements Table {
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
private final short[] values;
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
31
|
+
protected CvtTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
|
32
|
+
raf.seek(de.getOffset());
|
|
33
|
+
int len = de.getLength() / 2;
|
|
34
|
+
values = new short[len];
|
|
35
|
+
for (int i = 0; i < len; i++) {
|
|
36
|
+
values[i] = raf.readShort();
|
|
38
37
|
}
|
|
38
|
+
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
@Override
|
|
41
|
+
public int getType() {
|
|
42
|
+
return CVT;
|
|
43
|
+
}
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
public short[] getValues() {
|
|
46
|
+
return values;
|
|
47
|
+
}
|
|
48
48
|
}
|
|
@@ -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,37 +27,37 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class Device extends Object {
|
|
29
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
|
-
deltaValues = new int[size];
|
|
58
|
-
for (int i = 0; i < size; i++) {
|
|
59
|
-
deltaValues[i] = raf.readUnsignedShort();
|
|
60
|
-
}
|
|
30
|
+
private int startSize;
|
|
31
|
+
private int endSize;
|
|
32
|
+
private int deltaFormat;
|
|
33
|
+
private final int[] deltaValues;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Creates new Device
|
|
37
|
+
*
|
|
38
|
+
* @param raf
|
|
39
|
+
* @throws java.io.IOException
|
|
40
|
+
*/
|
|
41
|
+
public Device(RandomAccessFileEmulator raf) throws IOException {
|
|
42
|
+
startSize = raf.readUnsignedShort();
|
|
43
|
+
endSize = raf.readUnsignedShort();
|
|
44
|
+
deltaFormat = raf.readUnsignedShort();
|
|
45
|
+
int size = startSize - endSize;
|
|
46
|
+
switch (deltaFormat) {
|
|
47
|
+
case 1:
|
|
48
|
+
size = (size % 8 == 0) ? size / 8 : size / 8 + 1;
|
|
49
|
+
break;
|
|
50
|
+
case 2:
|
|
51
|
+
size = (size % 4 == 0) ? size / 4 : size / 4 + 1;
|
|
52
|
+
break;
|
|
53
|
+
case 3:
|
|
54
|
+
size = (size % 2 == 0) ? size / 2 : size / 2 + 1;
|
|
55
|
+
break;
|
|
61
56
|
}
|
|
57
|
+
deltaValues = new int[size];
|
|
58
|
+
for (int i = 0; i < size; i++) {
|
|
59
|
+
deltaValues[i] = raf.readUnsignedShort();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
62
|
|
|
63
63
|
}
|
|
@@ -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: DirectoryEntry.java,v 1.3 2004/08/18 07:15:20 vhardy Exp $
|
|
@@ -26,48 +26,48 @@ import org.apache.batik.svggen.font.*;
|
|
|
26
26
|
*/
|
|
27
27
|
public class DirectoryEntry {
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
private final int tag;
|
|
30
|
+
private final int checksum;
|
|
31
|
+
private final int offset;
|
|
32
|
+
private final int length;
|
|
33
|
+
private final Table table = null;
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
protected DirectoryEntry(RandomAccessFileEmulator raf) throws IOException {
|
|
36
|
+
tag = raf.readInt();
|
|
37
|
+
checksum = raf.readInt();
|
|
38
|
+
offset = raf.readInt();
|
|
39
|
+
length = raf.readInt();
|
|
40
|
+
}
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
public int getChecksum() {
|
|
43
|
+
return checksum;
|
|
44
|
+
}
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
public int getLength() {
|
|
47
|
+
return length;
|
|
48
|
+
}
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
public int getOffset() {
|
|
51
|
+
return offset;
|
|
52
|
+
}
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
public int getTag() {
|
|
55
|
+
return tag;
|
|
56
|
+
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
58
|
+
@Override
|
|
59
|
+
public String toString() {
|
|
60
|
+
return new StringBuilder()
|
|
61
|
+
.append((char) ((tag >> 24) & 0xff))
|
|
62
|
+
.append((char) ((tag >> 16) & 0xff))
|
|
63
|
+
.append((char) ((tag >> 8) & 0xff))
|
|
64
|
+
.append((char) ((tag) & 0xff))
|
|
65
|
+
.append(", offset: ")
|
|
66
|
+
.append(offset)
|
|
67
|
+
.append(", length: ")
|
|
68
|
+
.append(length)
|
|
69
|
+
.append(", checksum: 0x")
|
|
70
|
+
.append(Integer.toHexString(checksum))
|
|
71
|
+
.toString();
|
|
72
|
+
}
|
|
73
73
|
}
|
|
@@ -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,30 +27,33 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class Feature {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
30
|
+
private final int featureParams;
|
|
31
|
+
private final int lookupCount;
|
|
32
|
+
private final int[] lookupListIndex;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Creates new Feature
|
|
36
|
+
*
|
|
37
|
+
* @param raf
|
|
38
|
+
* @param offset
|
|
39
|
+
* @throws java.io.IOException
|
|
40
|
+
*/
|
|
41
|
+
protected Feature(RandomAccessFileEmulator raf, int offset) throws IOException {
|
|
42
|
+
raf.seek(offset);
|
|
43
|
+
featureParams = raf.readUnsignedShort();
|
|
44
|
+
lookupCount = raf.readUnsignedShort();
|
|
45
|
+
lookupListIndex = new int[lookupCount];
|
|
46
|
+
for (int i = 0; i < lookupCount; i++) {
|
|
47
|
+
lookupListIndex[i] = raf.readUnsignedShort();
|
|
46
48
|
}
|
|
49
|
+
}
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
public int getLookupCount() {
|
|
52
|
+
return lookupCount;
|
|
53
|
+
}
|
|
51
54
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
public int getLookupListIndex(int i) {
|
|
56
|
+
return lookupListIndex[i];
|
|
57
|
+
}
|
|
55
58
|
|
|
56
59
|
}
|