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
|
* @version $Id: HheaTable.java,v 1.3 2004/08/18 07:15:21 vhardy Exp $
|
|
@@ -26,84 +26,84 @@ import org.apache.batik.svggen.font.*;
|
|
|
26
26
|
*/
|
|
27
27
|
public class HheaTable 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
|
-
metricDataFormat = raf.readShort();
|
|
58
|
-
numberOfHMetrics = raf.readShort();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public short getAdvanceWidthMax() {
|
|
62
|
-
return advanceWidthMax;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
public short getAscender() {
|
|
66
|
-
return ascender;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
public short getCaretSlopeRise() {
|
|
70
|
-
return caretSlopeRise;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
public short getCaretSlopeRun() {
|
|
74
|
-
return caretSlopeRun;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
public short getDescender() {
|
|
78
|
-
return descender;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
public short getLineGap() {
|
|
82
|
-
return lineGap;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
public short getMetricDataFormat() {
|
|
86
|
-
return metricDataFormat;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
public short getMinLeftSideBearing() {
|
|
90
|
-
return minLeftSideBearing;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public short getMinRightSideBearing() {
|
|
94
|
-
return minRightSideBearing;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public short getNumberOfHMetrics() {
|
|
98
|
-
return numberOfHMetrics;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
@Override
|
|
102
|
-
public int getType() {
|
|
103
|
-
return hhea;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public short getXMaxExtent() {
|
|
107
|
-
return xMaxExtent;
|
|
29
|
+
private final int version;
|
|
30
|
+
private final short ascender;
|
|
31
|
+
private final short descender;
|
|
32
|
+
private final short lineGap;
|
|
33
|
+
private final short advanceWidthMax;
|
|
34
|
+
private final short minLeftSideBearing;
|
|
35
|
+
private final short minRightSideBearing;
|
|
36
|
+
private final short xMaxExtent;
|
|
37
|
+
private final short caretSlopeRise;
|
|
38
|
+
private final short caretSlopeRun;
|
|
39
|
+
private final short metricDataFormat;
|
|
40
|
+
private final short numberOfHMetrics;
|
|
41
|
+
|
|
42
|
+
protected HheaTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
|
43
|
+
raf.seek(de.getOffset());
|
|
44
|
+
version = raf.readInt();
|
|
45
|
+
ascender = raf.readShort();
|
|
46
|
+
descender = raf.readShort();
|
|
47
|
+
lineGap = raf.readShort();
|
|
48
|
+
advanceWidthMax = raf.readShort();
|
|
49
|
+
minLeftSideBearing = raf.readShort();
|
|
50
|
+
minRightSideBearing = raf.readShort();
|
|
51
|
+
xMaxExtent = raf.readShort();
|
|
52
|
+
caretSlopeRise = raf.readShort();
|
|
53
|
+
caretSlopeRun = raf.readShort();
|
|
54
|
+
for (int i = 0; i < 5; i++) {
|
|
55
|
+
raf.readShort();
|
|
108
56
|
}
|
|
57
|
+
metricDataFormat = raf.readShort();
|
|
58
|
+
numberOfHMetrics = raf.readShort();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public short getAdvanceWidthMax() {
|
|
62
|
+
return advanceWidthMax;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public short getAscender() {
|
|
66
|
+
return ascender;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public short getCaretSlopeRise() {
|
|
70
|
+
return caretSlopeRise;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public short getCaretSlopeRun() {
|
|
74
|
+
return caretSlopeRun;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public short getDescender() {
|
|
78
|
+
return descender;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
public short getLineGap() {
|
|
82
|
+
return lineGap;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public short getMetricDataFormat() {
|
|
86
|
+
return metricDataFormat;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
public short getMinLeftSideBearing() {
|
|
90
|
+
return minLeftSideBearing;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public short getMinRightSideBearing() {
|
|
94
|
+
return minRightSideBearing;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public short getNumberOfHMetrics() {
|
|
98
|
+
return numberOfHMetrics;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@Override
|
|
102
|
+
public int getType() {
|
|
103
|
+
return HHEA;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
public short getXMaxExtent() {
|
|
107
|
+
return xMaxExtent;
|
|
108
|
+
}
|
|
109
109
|
}
|
|
@@ -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: HmtxTable.java,v 1.4 2004/08/18 07:15:21 vhardy Exp $
|
|
@@ -27,15 +27,15 @@ import org.apache.batik.svggen.font.*;
|
|
|
27
27
|
*/
|
|
28
28
|
public class HmtxTable implements Table {
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
private byte[] buf = null;
|
|
31
|
+
private int[] hMetrics = null;
|
|
32
|
+
private short[] leftSideBearing = null;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
/*
|
|
34
|
+
protected HmtxTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
|
|
35
|
+
raf.seek(de.getOffset());
|
|
36
|
+
buf = new byte[de.getLength()];
|
|
37
|
+
raf.read(buf);
|
|
38
|
+
/*
|
|
39
39
|
TableMaxp t_maxp = (TableMaxp) td.getEntryByTag(maxp).getTable();
|
|
40
40
|
TableHhea t_hhea = (TableHhea) td.getEntryByTag(hhea).getTable();
|
|
41
41
|
int lsbCount = t_maxp.getNumGlyphs() - t_hhea.getNumberOfHMetrics();
|
|
@@ -49,51 +49,52 @@ public class HmtxTable implements Table {
|
|
|
49
49
|
leftSideBearing[i] = raf.readShort();
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
*/
|
|
53
|
-
|
|
52
|
+
*/
|
|
53
|
+
}
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
hMetrics = new int[numberOfHMetrics];
|
|
60
|
-
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
|
|
61
|
-
for (int i = 0; i < numberOfHMetrics; i++) {
|
|
62
|
-
hMetrics[i] = (bais.read()<<24 | bais.read()<<16 |
|
|
63
|
-
bais.read()<< 8 | bais.read());
|
|
64
|
-
}
|
|
65
|
-
if (lsbCount > 0) {
|
|
66
|
-
leftSideBearing = new short[lsbCount];
|
|
67
|
-
for (int i = 0; i < lsbCount; i++) {
|
|
68
|
-
leftSideBearing[i] = (short)(bais.read()<<8 | bais.read());
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
buf = null;
|
|
55
|
+
public void init(int numberOfHMetrics, int lsbCount) {
|
|
56
|
+
if (buf == null) {
|
|
57
|
+
return;
|
|
72
58
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (i < hMetrics.length) {
|
|
79
|
-
return hMetrics[i] >> 16;
|
|
80
|
-
} else {
|
|
81
|
-
return hMetrics[hMetrics.length - 1] >> 16;
|
|
82
|
-
}
|
|
59
|
+
hMetrics = new int[numberOfHMetrics];
|
|
60
|
+
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
|
|
61
|
+
for (int i = 0; i < numberOfHMetrics; i++) {
|
|
62
|
+
hMetrics[i] = (bais.read() << 24 | bais.read() << 16
|
|
63
|
+
| bais.read() << 8 | bais.read());
|
|
83
64
|
}
|
|
65
|
+
if (lsbCount > 0) {
|
|
66
|
+
leftSideBearing = new short[lsbCount];
|
|
67
|
+
for (int i = 0; i < lsbCount; i++) {
|
|
68
|
+
leftSideBearing[i] = (short) (bais.read() << 8 | bais.read());
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
buf = null;
|
|
72
|
+
}
|
|
84
73
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
74
|
+
public int getAdvanceWidth(int i) {
|
|
75
|
+
if (hMetrics == null) {
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
if (i < hMetrics.length) {
|
|
79
|
+
return hMetrics[i] >> 16;
|
|
80
|
+
} else {
|
|
81
|
+
return hMetrics[hMetrics.length - 1] >> 16;
|
|
94
82
|
}
|
|
83
|
+
}
|
|
95
84
|
|
|
96
|
-
|
|
97
|
-
|
|
85
|
+
public short getLeftSideBearing(int i) {
|
|
86
|
+
if (hMetrics == null) {
|
|
87
|
+
return 0;
|
|
98
88
|
}
|
|
89
|
+
if (i < hMetrics.length) {
|
|
90
|
+
return (short) (hMetrics[i] & 0xffff);
|
|
91
|
+
} else {
|
|
92
|
+
return leftSideBearing[i - hMetrics.length];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@Override
|
|
97
|
+
public int getType() {
|
|
98
|
+
return HMTX;
|
|
99
|
+
}
|
|
99
100
|
}
|
|
@@ -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 abstract class 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
|
-
|
|
55
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Creates new KernSubtable
|
|
32
|
+
*/
|
|
33
|
+
protected KernSubtable() {
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public abstract int getKerningPairCount();
|
|
37
|
+
|
|
38
|
+
public abstract KerningPair getKerningPair(int i);
|
|
39
|
+
|
|
40
|
+
public static KernSubtable read(RandomAccessFileEmulator raf) throws IOException {
|
|
41
|
+
KernSubtable table = null;
|
|
42
|
+
/* int version =*/ raf.readUnsignedShort();
|
|
43
|
+
/* int length =*/ raf.readUnsignedShort();
|
|
44
|
+
int coverage = raf.readUnsignedShort();
|
|
45
|
+
int format = coverage >> 8;
|
|
46
|
+
|
|
47
|
+
switch (format) {
|
|
48
|
+
case 0:
|
|
49
|
+
table = new KernSubtableFormat0(raf);
|
|
50
|
+
break;
|
|
51
|
+
case 2:
|
|
52
|
+
table = new KernSubtableFormat2(raf);
|
|
53
|
+
break;
|
|
54
|
+
default:
|
|
55
|
+
break;
|
|
56
56
|
}
|
|
57
|
+
return table;
|
|
58
|
+
}
|
|
57
59
|
|
|
58
60
|
}
|
|
@@ -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
|
}
|