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
|
@@ -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
|
*
|
|
@@ -26,40 +26,43 @@ import org.apache.batik.svggen.font.*;
|
|
|
26
26
|
* @version $Id: KernSubtableFormat0.java,v 1.3 2004/08/18 07:15:21 vhardy Exp $
|
|
27
27
|
*/
|
|
28
28
|
public class KernSubtableFormat0 extends KernSubtable {
|
|
29
|
-
|
|
30
|
-
private final int nPairs;
|
|
31
|
-
private final int searchRange;
|
|
32
|
-
private final int entrySelector;
|
|
33
|
-
private final int rangeShift;
|
|
34
|
-
private final KerningPair[] kerningPairs;
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
searchRange = raf.readUnsignedShort();
|
|
42
|
-
entrySelector = raf.readUnsignedShort();
|
|
43
|
-
rangeShift = raf.readUnsignedShort();
|
|
44
|
-
kerningPairs = new KerningPair[nPairs];
|
|
45
|
-
for (int i = 0; i < nPairs; i++) {
|
|
46
|
-
kerningPairs[i] = new KerningPair(raf);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
30
|
+
private final int nPairs;
|
|
31
|
+
private final int searchRange;
|
|
32
|
+
private final int entrySelector;
|
|
33
|
+
private final int rangeShift;
|
|
34
|
+
private final KerningPair[] kerningPairs;
|
|
49
35
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Creates new KernSubtableFormat0
|
|
38
|
+
*
|
|
39
|
+
* @param raf
|
|
40
|
+
* @throws java.io.IOException
|
|
41
|
+
*/
|
|
42
|
+
protected KernSubtableFormat0(RandomAccessFileEmulator raf) throws IOException {
|
|
43
|
+
nPairs = raf.readUnsignedShort();
|
|
44
|
+
searchRange = raf.readUnsignedShort();
|
|
45
|
+
entrySelector = raf.readUnsignedShort();
|
|
46
|
+
rangeShift = raf.readUnsignedShort();
|
|
47
|
+
kerningPairs = new KerningPair[nPairs];
|
|
48
|
+
for (int i = 0; i < nPairs; i++) {
|
|
49
|
+
kerningPairs[i] = new KerningPair(raf);
|
|
53
50
|
}
|
|
51
|
+
}
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
@Override
|
|
54
|
+
public int getKerningPairCount() {
|
|
55
|
+
return nPairs;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @param i
|
|
61
|
+
* @return
|
|
62
|
+
*/
|
|
63
|
+
@Override
|
|
64
|
+
public KerningPair getKerningPair(int i) {
|
|
65
|
+
return kerningPairs[i];
|
|
66
|
+
}
|
|
64
67
|
|
|
65
68
|
}
|
|
@@ -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 KernSubtableFormat2 extends KernSubtable {
|
|
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
|
-
|
|
30
|
+
private final int rowWidth;
|
|
31
|
+
private final int leftClassTable;
|
|
32
|
+
private final int rightClassTable;
|
|
33
|
+
private final int array;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Creates new KernSubtableFormat2
|
|
37
|
+
*
|
|
38
|
+
* @param raf
|
|
39
|
+
* @throws java.io.IOException
|
|
40
|
+
*/
|
|
41
|
+
protected KernSubtableFormat2(RandomAccessFileEmulator raf) throws IOException {
|
|
42
|
+
rowWidth = raf.readUnsignedShort();
|
|
43
|
+
leftClassTable = raf.readUnsignedShort();
|
|
44
|
+
rightClassTable = raf.readUnsignedShort();
|
|
45
|
+
array = raf.readUnsignedShort();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@Override
|
|
49
|
+
public int getKerningPairCount() {
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@Override
|
|
54
|
+
public KerningPair getKerningPair(int i) {
|
|
55
|
+
return null;
|
|
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
|
*
|
|
@@ -26,39 +26,44 @@ import org.apache.batik.svggen.font.*;
|
|
|
26
26
|
* @version $Id: KernTable.java,v 1.3 2004/08/18 07:15:21 vhardy Exp $
|
|
27
27
|
*/
|
|
28
28
|
public class KernTable implements Table {
|
|
29
|
-
|
|
30
|
-
private final int version;
|
|
31
|
-
private final int nTables;
|
|
32
|
-
private final KernSubtable[] tables;
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
* @throws java.io.IOException */
|
|
38
|
-
protected KernTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
|
39
|
-
raf.seek(de.getOffset());
|
|
40
|
-
version = raf.readUnsignedShort();
|
|
41
|
-
nTables = raf.readUnsignedShort();
|
|
42
|
-
tables = new KernSubtable[nTables];
|
|
43
|
-
for (int i = 0; i < nTables; i++) {
|
|
44
|
-
tables[i] = KernSubtable.read(raf);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
30
|
+
private final int version;
|
|
31
|
+
private final int nTables;
|
|
32
|
+
private final KernSubtable[] tables;
|
|
47
33
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Creates new KernTable
|
|
36
|
+
*
|
|
37
|
+
* @param de
|
|
38
|
+
* @param raf
|
|
39
|
+
* @throws java.io.IOException
|
|
40
|
+
*/
|
|
41
|
+
protected KernTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
|
42
|
+
raf.seek(de.getOffset());
|
|
43
|
+
version = raf.readUnsignedShort();
|
|
44
|
+
nTables = raf.readUnsignedShort();
|
|
45
|
+
tables = new KernSubtable[nTables];
|
|
46
|
+
for (int i = 0; i < nTables; i++) {
|
|
47
|
+
tables[i] = KernSubtable.read(raf);
|
|
54
48
|
}
|
|
49
|
+
}
|
|
55
50
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
51
|
+
public int getSubtableCount() {
|
|
52
|
+
return nTables;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public KernSubtable getSubtable(int i) {
|
|
56
|
+
return tables[i];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get the table type, as a table directory value.
|
|
61
|
+
*
|
|
62
|
+
* @return The table type
|
|
63
|
+
*/
|
|
64
|
+
@Override
|
|
65
|
+
public int getType() {
|
|
66
|
+
return KERN;
|
|
67
|
+
}
|
|
63
68
|
|
|
64
69
|
}
|
|
@@ -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,27 +27,31 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class KerningPair {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
30
|
+
private final int left;
|
|
31
|
+
private final int right;
|
|
32
|
+
private final short value;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Creates new KerningPair
|
|
36
|
+
* @param raf
|
|
37
|
+
* @throws java.io.IOException
|
|
38
|
+
*/
|
|
39
|
+
protected KerningPair(RandomAccessFileEmulator raf) throws IOException {
|
|
40
|
+
left = raf.readUnsignedShort();
|
|
41
|
+
right = raf.readUnsignedShort();
|
|
42
|
+
value = raf.readShort();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public int getLeft() {
|
|
46
|
+
return left;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public int getRight() {
|
|
50
|
+
return right;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public short getValue() {
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
52
56
|
|
|
53
57
|
}
|
|
@@ -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,32 +27,34 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class LangSys {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
30
|
+
private final int lookupOrder;
|
|
31
|
+
private final int reqFeatureIndex;
|
|
32
|
+
private final int featureCount;
|
|
33
|
+
private final int[] featureIndex;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Creates new LangSys
|
|
37
|
+
*
|
|
38
|
+
* @param raf
|
|
39
|
+
* @throws java.io.IOException
|
|
40
|
+
*/
|
|
41
|
+
protected LangSys(RandomAccessFileEmulator raf) throws IOException {
|
|
42
|
+
lookupOrder = raf.readUnsignedShort();
|
|
43
|
+
reqFeatureIndex = raf.readUnsignedShort();
|
|
44
|
+
featureCount = raf.readUnsignedShort();
|
|
45
|
+
featureIndex = new int[featureCount];
|
|
46
|
+
for (int i = 0; i < featureCount; i++) {
|
|
47
|
+
featureIndex[i] = raf.readUnsignedShort();
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
protected boolean isFeatureIndexed(int n) {
|
|
52
|
+
for (int i = 0; i < featureCount; i++) {
|
|
53
|
+
if (featureIndex[i] == n) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
55
56
|
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
56
59
|
|
|
57
60
|
}
|
|
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
|
*
|
|
@@ -27,26 +27,26 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class LangSysRecord {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
30
|
+
private final int tag;
|
|
31
|
+
private final int offset;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates new LangSysRecord
|
|
35
|
+
*
|
|
36
|
+
* @param raf
|
|
37
|
+
* @throws java.io.IOException
|
|
38
|
+
*/
|
|
39
|
+
public LangSysRecord(RandomAccessFileEmulator raf) throws IOException {
|
|
40
|
+
tag = raf.readInt();
|
|
41
|
+
offset = raf.readUnsignedShort();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public int getTag() {
|
|
45
|
+
return tag;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public int getOffset() {
|
|
49
|
+
return offset;
|
|
50
|
+
}
|
|
51
51
|
|
|
52
52
|
}
|
|
@@ -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,31 +27,31 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class Ligature {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
30
|
+
private final int ligGlyph;
|
|
31
|
+
private final int compCount;
|
|
32
|
+
private final int[] components;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Creates new Ligature
|
|
36
|
+
*
|
|
37
|
+
* @param raf
|
|
38
|
+
* @throws java.io.IOException
|
|
39
|
+
*/
|
|
40
|
+
public Ligature(RandomAccessFileEmulator raf) throws IOException {
|
|
41
|
+
ligGlyph = raf.readUnsignedShort();
|
|
42
|
+
compCount = raf.readUnsignedShort();
|
|
43
|
+
components = new int[compCount - 1];
|
|
44
|
+
for (int i = 0; i < compCount - 1; i++) {
|
|
45
|
+
components[i] = raf.readUnsignedShort();
|
|
47
46
|
}
|
|
47
|
+
}
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
public int getGlyphCount() {
|
|
50
|
+
return compCount;
|
|
51
|
+
}
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
public int getGlyphId(int i) {
|
|
54
|
+
return (i == 0) ? ligGlyph : components[i - 1];
|
|
55
|
+
}
|
|
56
56
|
|
|
57
57
|
}
|
|
@@ -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,29 +27,29 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class LigatureSet {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
for (int i = 0; i < ligatureCount; i++) {
|
|
50
|
-
raf.seek(offset + ligatureOffsets[i]);
|
|
51
|
-
ligatures[i] = new Ligature(raf);
|
|
52
|
-
}
|
|
30
|
+
private final int ligatureCount;
|
|
31
|
+
private final int[] ligatureOffsets;
|
|
32
|
+
private final Ligature[] ligatures;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Creates new LigatureSet
|
|
36
|
+
*
|
|
37
|
+
* @param raf
|
|
38
|
+
* @param offset
|
|
39
|
+
* @throws java.io.IOException
|
|
40
|
+
*/
|
|
41
|
+
public LigatureSet(RandomAccessFileEmulator raf, int offset) throws IOException {
|
|
42
|
+
raf.seek(offset);
|
|
43
|
+
ligatureCount = raf.readUnsignedShort();
|
|
44
|
+
ligatureOffsets = new int[ligatureCount];
|
|
45
|
+
ligatures = new Ligature[ligatureCount];
|
|
46
|
+
for (int i = 0; i < ligatureCount; i++) {
|
|
47
|
+
ligatureOffsets[i] = raf.readUnsignedShort();
|
|
53
48
|
}
|
|
49
|
+
for (int i = 0; i < ligatureCount; i++) {
|
|
50
|
+
raf.seek(offset + ligatureOffsets[i]);
|
|
51
|
+
ligatures[i] = new Ligature(raf);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
54
|
|
|
55
55
|
}
|
|
@@ -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,14 +27,14 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public abstract class LigatureSubst extends LookupSubtable {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
return ls;
|
|
30
|
+
public static LigatureSubst read(RandomAccessFileEmulator raf, int offset) throws IOException {
|
|
31
|
+
LigatureSubst ls = null;
|
|
32
|
+
raf.seek(offset);
|
|
33
|
+
int format = raf.readUnsignedShort();
|
|
34
|
+
if (format == 1) {
|
|
35
|
+
ls = new LigatureSubstFormat1(raf, offset);
|
|
38
36
|
}
|
|
37
|
+
return ls;
|
|
38
|
+
}
|
|
39
39
|
|
|
40
40
|
}
|
|
@@ -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
|
*
|
|
@@ -28,36 +28,36 @@ import org.apache.batik.svggen.font.*;
|
|
|
28
28
|
*/
|
|
29
29
|
public class LigatureSubstFormat1 extends LigatureSubst {
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
raf.seek(offset + coverageOffset);
|
|
53
|
-
coverage = Coverage.read(raf);
|
|
54
|
-
for (int i = 0; i < ligSetCount; i++) {
|
|
55
|
-
ligatureSets[i] = new LigatureSet(raf, offset + ligatureSetOffsets[i]);
|
|
56
|
-
}
|
|
31
|
+
private final int coverageOffset;
|
|
32
|
+
private final int ligSetCount;
|
|
33
|
+
private final int[] ligatureSetOffsets;
|
|
34
|
+
private final Coverage coverage;
|
|
35
|
+
private final LigatureSet[] ligatureSets;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Creates new LigatureSubstFormat1
|
|
39
|
+
*
|
|
40
|
+
* @param raf
|
|
41
|
+
* @param offset
|
|
42
|
+
* @throws java.io.IOException
|
|
43
|
+
*/
|
|
44
|
+
protected LigatureSubstFormat1(RandomAccessFileEmulator raf, int offset) throws IOException {
|
|
45
|
+
coverageOffset = raf.readUnsignedShort();
|
|
46
|
+
ligSetCount = raf.readUnsignedShort();
|
|
47
|
+
ligatureSetOffsets = new int[ligSetCount];
|
|
48
|
+
ligatureSets = new LigatureSet[ligSetCount];
|
|
49
|
+
for (int i = 0; i < ligSetCount; i++) {
|
|
50
|
+
ligatureSetOffsets[i] = raf.readUnsignedShort();
|
|
57
51
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
raf.seek(offset + coverageOffset);
|
|
53
|
+
coverage = Coverage.read(raf);
|
|
54
|
+
for (int i = 0; i < ligSetCount; i++) {
|
|
55
|
+
ligatureSets[i] = new LigatureSet(raf, offset + ligatureSetOffsets[i]);
|
|
61
56
|
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public int getFormat() {
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
62
|
|
|
63
63
|
}
|