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.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.mvn/extensions.xml +1 -1
  4. data/.mvn/wrapper/maven-wrapper.properties +1 -1
  5. data/CHANGELOG.md +19 -1
  6. data/COPYING.md +1 -1
  7. data/README.md +2 -2
  8. data/Rakefile +2 -15
  9. data/docs/_config.yml +8 -0
  10. data/docs/_includes/head.html +7 -6
  11. data/docs/_includes/header.html +6 -6
  12. data/docs/_includes/icon-github.svg +3 -1
  13. data/docs/_includes/icon-twitter.svg +3 -1
  14. data/docs/_includes/navigation.html +24 -0
  15. data/docs/_sass/_base.scss +79 -79
  16. data/docs/_sass/_layout.scss +137 -137
  17. data/docs/_sass/_syntax-highlighting.scss +64 -64
  18. data/docs/index.html +18 -18
  19. data/examples/README.md +1 -1
  20. data/examples/data/bot1.svg +1 -1
  21. data/examples/data/lion.svg +156 -156
  22. data/examples/data/ruby.svg +1 -1
  23. data/examples/jruby_merge.rb +1 -1
  24. data/examples/{f_agent.rb → library/f_agent/f_agent.rb} +0 -0
  25. data/examples/{font_agent.rb → library/font_agent/font_agent.rb} +2 -1
  26. data/examples/text_on_geomerative_path.rb +3 -2
  27. data/examples/typo_deform.rb +2 -2
  28. data/examples/typo_extra_bright.rb +1 -1
  29. data/geomerative.gemspec +3 -6
  30. data/lib/geomerative/version.rb +1 -1
  31. data/lib/geomerative.jar +0 -0
  32. data/lib/geomerative.rb +10 -10
  33. data/mvnw +234 -0
  34. data/mvnw.cmd +145 -0
  35. data/pom.rb +14 -16
  36. data/pom.xml +13 -19
  37. data/src/geomerative/FastRClip.java +2050 -2334
  38. data/src/geomerative/RClip.java +2237 -2539
  39. data/src/geomerative/RClosest.java +33 -31
  40. data/src/geomerative/RCommand.java +1750 -1758
  41. data/src/geomerative/RContour.java +290 -292
  42. data/src/geomerative/RFont.java +277 -246
  43. data/src/geomerative/RG.java +722 -727
  44. data/src/geomerative/RGeomElem.java +967 -962
  45. data/src/geomerative/RGroup.java +508 -467
  46. data/src/geomerative/RMatrix.java +304 -289
  47. data/src/geomerative/RMesh.java +241 -229
  48. data/src/geomerative/RPath.java +924 -926
  49. data/src/geomerative/RPoint.java +391 -391
  50. data/src/geomerative/RPolygon.java +1017 -1013
  51. data/src/geomerative/RRectangle.java +43 -52
  52. data/src/geomerative/RSVG.java +480 -516
  53. data/src/geomerative/RShape.java +1767 -1777
  54. data/src/geomerative/RStrip.java +173 -176
  55. data/src/geomerative/RStyle.java +197 -194
  56. data/src/module-info.java +4 -0
  57. data/src/org/apache/batik/svggen/font/Font.java +141 -142
  58. data/src/org/apache/batik/svggen/font/Glyph.java +102 -71
  59. data/src/org/apache/batik/svggen/font/Point.java +12 -12
  60. data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +14 -12
  61. data/src/org/apache/batik/svggen/font/table/ClassDef.java +12 -12
  62. data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +27 -24
  63. data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +20 -17
  64. data/src/org/apache/batik/svggen/font/table/CmapFormat.java +43 -43
  65. data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +33 -26
  66. data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +25 -20
  67. data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +106 -96
  68. data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +36 -32
  69. data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +69 -49
  70. data/src/org/apache/batik/svggen/font/table/CmapTable.java +50 -50
  71. data/src/org/apache/batik/svggen/font/table/Coverage.java +19 -19
  72. data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +30 -27
  73. data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +26 -24
  74. data/src/org/apache/batik/svggen/font/table/CvtTable.java +16 -16
  75. data/src/org/apache/batik/svggen/font/table/Device.java +32 -32
  76. data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +39 -39
  77. data/src/org/apache/batik/svggen/font/table/Feature.java +26 -23
  78. data/src/org/apache/batik/svggen/font/table/FeatureList.java +37 -35
  79. data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +22 -22
  80. data/src/org/apache/batik/svggen/font/table/FeatureTags.java +4 -3
  81. data/src/org/apache/batik/svggen/font/table/FpgmTable.java +9 -9
  82. data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +134 -132
  83. data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +123 -122
  84. data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +44 -44
  85. data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +110 -109
  86. data/src/org/apache/batik/svggen/font/table/GlyfTable.java +46 -46
  87. data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +25 -13
  88. data/src/org/apache/batik/svggen/font/table/GposTable.java +26 -23
  89. data/src/org/apache/batik/svggen/font/table/GsubTable.java +85 -82
  90. data/src/org/apache/batik/svggen/font/table/HeadTable.java +131 -131
  91. data/src/org/apache/batik/svggen/font/table/HheaTable.java +80 -80
  92. data/src/org/apache/batik/svggen/font/table/HmtxTable.java +50 -49
  93. data/src/org/apache/batik/svggen/font/table/KernSubtable.java +29 -27
  94. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +35 -32
  95. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +28 -26
  96. data/src/org/apache/batik/svggen/font/table/KernTable.java +36 -31
  97. data/src/org/apache/batik/svggen/font/table/KerningPair.java +27 -23
  98. data/src/org/apache/batik/svggen/font/table/LangSys.java +28 -26
  99. data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +22 -22
  100. data/src/org/apache/batik/svggen/font/table/Ligature.java +24 -24
  101. data/src/org/apache/batik/svggen/font/table/LigatureSet.java +24 -24
  102. data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +9 -9
  103. data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +30 -30
  104. data/src/org/apache/batik/svggen/font/table/LocaTable.java +37 -37
  105. data/src/org/apache/batik/svggen/font/table/Lookup.java +41 -40
  106. data/src/org/apache/batik/svggen/font/table/LookupList.java +34 -34
  107. data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +7 -5
  108. data/src/org/apache/batik/svggen/font/table/MaxpTable.java +96 -96
  109. data/src/org/apache/batik/svggen/font/table/NameRecord.java +64 -65
  110. data/src/org/apache/batik/svggen/font/table/NameTable.java +33 -33
  111. data/src/org/apache/batik/svggen/font/table/Os2Table.java +196 -196
  112. data/src/org/apache/batik/svggen/font/table/Panose.java +14 -12
  113. data/src/org/apache/batik/svggen/font/table/PostTable.java +338 -338
  114. data/src/org/apache/batik/svggen/font/table/PrepTable.java +9 -9
  115. data/src/org/apache/batik/svggen/font/table/Program.java +15 -15
  116. data/src/org/apache/batik/svggen/font/table/RangeRecord.java +26 -25
  117. data/src/org/apache/batik/svggen/font/table/Script.java +38 -38
  118. data/src/org/apache/batik/svggen/font/table/ScriptList.java +42 -42
  119. data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +22 -22
  120. data/src/org/apache/batik/svggen/font/table/ScriptTags.java +2 -1
  121. data/src/org/apache/batik/svggen/font/table/SingleSubst.java +15 -16
  122. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +33 -33
  123. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +32 -32
  124. data/src/org/apache/batik/svggen/font/table/Table.java +171 -170
  125. data/src/org/apache/batik/svggen/font/table/TableDirectory.java +55 -55
  126. data/src/org/apache/batik/svggen/font/table/TableFactory.java +92 -93
  127. metadata +18 -19
  128. data/.travis.yml +0 -10
  129. 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
  * @version $Id: PrepTable.java,v 1.3 2004/08/18 07:15:22 vhardy Exp $
@@ -26,13 +26,13 @@ import org.apache.batik.svggen.font.*;
26
26
  */
27
27
  public class PrepTable extends Program implements Table {
28
28
 
29
- public PrepTable(DirectoryEntry de,RandomAccessFileEmulator raf) throws IOException {
30
- raf.seek(de.getOffset());
31
- readInstructions(raf, de.getLength());
32
- }
29
+ public PrepTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
30
+ raf.seek(de.getOffset());
31
+ readInstructions(raf, de.getLength());
32
+ }
33
33
 
34
- @Override
35
- public int getType() {
36
- return prep;
37
- }
34
+ @Override
35
+ public int getType() {
36
+ return PREP;
37
+ }
38
38
  }
@@ -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: Program.java,v 1.4 2004/08/18 07:15:22 vhardy Exp $
@@ -27,23 +27,23 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public abstract class Program {
29
29
 
30
- private short[] instructions;
30
+ private short[] instructions;
31
31
 
32
- public short[] getInstructions() {
33
- return instructions;
34
- }
32
+ public short[] getInstructions() {
33
+ return instructions;
34
+ }
35
35
 
36
- protected void readInstructions(RandomAccessFileEmulator raf, int count) throws IOException {
37
- instructions = new short[count];
38
- for (int i = 0; i < count; i++) {
39
- instructions[i] = (short) raf.readUnsignedByte();
40
- }
36
+ protected void readInstructions(RandomAccessFileEmulator raf, int count) throws IOException {
37
+ instructions = new short[count];
38
+ for (int i = 0; i < count; i++) {
39
+ instructions[i] = (short) raf.readUnsignedByte();
41
40
  }
41
+ }
42
42
 
43
- protected void readInstructions(ByteArrayInputStream bais, int count) {
44
- instructions = new short[count];
45
- for (int i = 0; i < count; i++) {
46
- instructions[i] = (short) bais.read();
47
- }
43
+ protected void readInstructions(ByteArrayInputStream bais, int count) {
44
+ instructions = new short[count];
45
+ for (int i = 0; i < count; i++) {
46
+ instructions[i] = (short) bais.read();
48
47
  }
48
+ }
49
49
  }
@@ -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
  * Coverage Index (GlyphID) = StartCoverageIndex + GlyphID - Start GlyphID
@@ -28,30 +28,31 @@ import org.apache.batik.svggen.font.*;
28
28
  */
29
29
  public class RangeRecord {
30
30
 
31
- private final int start;
32
- private final int end;
33
- private final int startCoverageIndex;
34
-
35
- /** Creates new RangeRecord
36
- * @param raf
37
- * @throws java.io.IOException
38
- */
39
- public RangeRecord(RandomAccessFileEmulator raf) throws IOException {
40
- start = raf.readUnsignedShort();
41
- end = raf.readUnsignedShort();
42
- startCoverageIndex = raf.readUnsignedShort();
43
- }
44
-
45
- public boolean isInRange(int glyphId) {
46
- return (start <= glyphId && glyphId <= end);
47
- }
48
-
49
- public int getCoverageIndex(int glyphId) {
50
- if (isInRange(glyphId)) {
51
- return startCoverageIndex + glyphId - start;
52
- }
53
- return -1;
31
+ private final int start;
32
+ private final int end;
33
+ private final int startCoverageIndex;
34
+
35
+ /**
36
+ * Creates new RangeRecord
37
+ *
38
+ * @param raf
39
+ * @throws java.io.IOException
40
+ */
41
+ public RangeRecord(RandomAccessFileEmulator raf) throws IOException {
42
+ start = raf.readUnsignedShort();
43
+ end = raf.readUnsignedShort();
44
+ startCoverageIndex = raf.readUnsignedShort();
45
+ }
46
+
47
+ public boolean isInRange(int glyphId) {
48
+ return (start <= glyphId && glyphId <= end);
49
+ }
50
+
51
+ public int getCoverageIndex(int glyphId) {
52
+ if (isInRange(glyphId)) {
53
+ return startCoverageIndex + glyphId - start;
54
54
  }
55
+ return -1;
56
+ }
55
57
 
56
58
  }
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,46 +27,46 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class Script {
29
29
 
30
- private final int defaultLangSysOffset;
31
- private final int langSysCount;
32
- private LangSysRecord[] langSysRecords;
33
- private LangSys defaultLangSys;
34
- private LangSys[] langSys;
30
+ private final int defaultLangSysOffset;
31
+ private final int langSysCount;
32
+ private LangSysRecord[] langSysRecords;
33
+ private LangSys defaultLangSys;
34
+ private LangSys[] langSys;
35
35
 
36
- /**
37
- * Creates new ScriptTable
38
- *
39
- * @param raf
40
- * @param offset
41
- * @throws java.io.IOException
42
- */
43
- protected Script(RandomAccessFileEmulator raf, int offset) throws IOException {
44
- raf.seek(offset);
45
- defaultLangSysOffset = raf.readUnsignedShort();
46
- langSysCount = raf.readUnsignedShort();
47
- if (langSysCount > 0) {
48
- langSysRecords = new LangSysRecord[langSysCount];
49
- for (int i = 0; i < langSysCount; i++) {
50
- langSysRecords[i] = new LangSysRecord(raf);
51
- }
52
- }
53
-
54
- // Read the LangSys tables
55
- if (langSysCount > 0) {
56
- langSys = new LangSys[langSysCount];
57
- for (int i = 0; i < langSysCount; i++) {
58
- raf.seek(offset + langSysRecords[i].getOffset());
59
- langSys[i] = new LangSys(raf);
60
- }
61
- }
62
- if (defaultLangSysOffset > 0) {
63
- raf.seek(offset + defaultLangSysOffset);
64
- defaultLangSys = new LangSys(raf);
65
- }
36
+ /**
37
+ * Creates new ScriptTable
38
+ *
39
+ * @param raf
40
+ * @param offset
41
+ * @throws java.io.IOException
42
+ */
43
+ protected Script(RandomAccessFileEmulator raf, int offset) throws IOException {
44
+ raf.seek(offset);
45
+ defaultLangSysOffset = raf.readUnsignedShort();
46
+ langSysCount = raf.readUnsignedShort();
47
+ if (langSysCount > 0) {
48
+ langSysRecords = new LangSysRecord[langSysCount];
49
+ for (int i = 0; i < langSysCount; i++) {
50
+ langSysRecords[i] = new LangSysRecord(raf);
51
+ }
66
52
  }
67
53
 
68
- public LangSys getDefaultLangSys() {
69
- return defaultLangSys;
54
+ // Read the LangSys tables
55
+ if (langSysCount > 0) {
56
+ langSys = new LangSys[langSysCount];
57
+ for (int i = 0; i < langSysCount; i++) {
58
+ raf.seek(offset + langSysRecords[i].getOffset());
59
+ langSys[i] = new LangSys(raf);
60
+ }
61
+ }
62
+ if (defaultLangSysOffset > 0) {
63
+ raf.seek(offset + defaultLangSysOffset);
64
+ defaultLangSys = new LangSys(raf);
70
65
  }
66
+ }
67
+
68
+ public LangSys getDefaultLangSys() {
69
+ return defaultLangSys;
70
+ }
71
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,52 +27,52 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class ScriptList {
29
29
 
30
- private int scriptCount = 0;
31
- private final ScriptRecord[] scriptRecords;
32
- private final Script[] scripts;
30
+ private int scriptCount = 0;
31
+ private final ScriptRecord[] scriptRecords;
32
+ private final Script[] scripts;
33
33
 
34
- /**
35
- * Creates new ScriptList
36
- *
37
- * @param raf
38
- * @param offset
39
- * @throws java.io.IOException
40
- */
41
- protected ScriptList(RandomAccessFileEmulator raf, int offset) throws IOException {
42
- raf.seek(offset);
43
- scriptCount = raf.readUnsignedShort();
44
- scriptRecords = new ScriptRecord[scriptCount];
45
- scripts = new Script[scriptCount];
46
- for (int i = 0; i < scriptCount; i++) {
47
- scriptRecords[i] = new ScriptRecord(raf);
48
- }
49
- for (int i = 0; i < scriptCount; i++) {
50
- scripts[i] = new Script(raf, offset + scriptRecords[i].getOffset());
51
- }
34
+ /**
35
+ * Creates new ScriptList
36
+ *
37
+ * @param raf
38
+ * @param offset
39
+ * @throws java.io.IOException
40
+ */
41
+ protected ScriptList(RandomAccessFileEmulator raf, int offset) throws IOException {
42
+ raf.seek(offset);
43
+ scriptCount = raf.readUnsignedShort();
44
+ scriptRecords = new ScriptRecord[scriptCount];
45
+ scripts = new Script[scriptCount];
46
+ for (int i = 0; i < scriptCount; i++) {
47
+ scriptRecords[i] = new ScriptRecord(raf);
52
48
  }
53
-
54
- public int getScriptCount() {
55
- return scriptCount;
49
+ for (int i = 0; i < scriptCount; i++) {
50
+ scripts[i] = new Script(raf, offset + scriptRecords[i].getOffset());
56
51
  }
52
+ }
57
53
 
58
- public ScriptRecord getScriptRecord(int i) {
59
- return scriptRecords[i];
60
- }
54
+ public int getScriptCount() {
55
+ return scriptCount;
56
+ }
61
57
 
62
- public Script findScript(String tag) {
63
- if (tag.length() != 4) {
64
- return null;
65
- }
66
- int tagVal = ((tag.charAt(0) << 24)
67
- | (tag.charAt(1) << 16)
68
- | (tag.charAt(2) << 8)
69
- | tag.charAt(3));
70
- for (int i = 0; i < scriptCount; i++) {
71
- if (scriptRecords[i].getTag() == tagVal) {
72
- return scripts[i];
73
- }
74
- }
75
- return null;
58
+ public ScriptRecord getScriptRecord(int i) {
59
+ return scriptRecords[i];
60
+ }
61
+
62
+ public Script findScript(String tag) {
63
+ if (tag.length() != 4) {
64
+ return null;
65
+ }
66
+ int tagVal = ((tag.charAt(0) << 24)
67
+ | (tag.charAt(1) << 16)
68
+ | (tag.charAt(2) << 8)
69
+ | tag.charAt(3));
70
+ for (int i = 0; i < scriptCount; i++) {
71
+ if (scriptRecords[i].getTag() == tagVal) {
72
+ return scripts[i];
73
+ }
76
74
  }
75
+ return null;
76
+ }
77
77
 
78
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,26 +27,26 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class ScriptRecord {
29
29
 
30
- private final int tag;
31
- private final int offset;
32
-
33
- /**
34
- * Creates new ScriptRecord
35
- *
36
- * @param raf
37
- * @throws java.io.IOException
38
- */
39
- protected ScriptRecord(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
- }
30
+ private final int tag;
31
+ private final int offset;
32
+
33
+ /**
34
+ * Creates new ScriptRecord
35
+ *
36
+ * @param raf
37
+ * @throws java.io.IOException
38
+ */
39
+ protected ScriptRecord(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
  }
@@ -24,5 +24,6 @@ package org.apache.batik.svggen.font.table;
24
24
  * @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
25
25
  */
26
26
  public interface ScriptTags {
27
- String SCRIPT_TAG_ARAB = "arab";
27
+
28
+ String SCRIPT_TAG_ARAB = "arab";
28
29
  }
@@ -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,21 +27,20 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public abstract class SingleSubst extends LookupSubtable {
29
29
 
30
- public abstract int getFormat();
31
-
32
- public abstract int substitute(int glyphId);
33
-
34
- public static SingleSubst read(RandomAccessFileEmulator raf, int offset) throws IOException {
35
- SingleSubst s = null;
36
- raf.seek(offset);
37
- int format = raf.readUnsignedShort();
38
- if (format == 1) {
39
- s = new SingleSubstFormat1(raf, offset);
40
- } else if (format == 2) {
41
- s = new SingleSubstFormat2(raf, offset);
42
- }
43
- return s;
30
+ public abstract int getFormat();
31
+
32
+ public abstract int substitute(int glyphId);
33
+
34
+ public static SingleSubst read(RandomAccessFileEmulator raf, int offset) throws IOException {
35
+ SingleSubst s = null;
36
+ raf.seek(offset);
37
+ int format = raf.readUnsignedShort();
38
+ if (format == 1) {
39
+ s = new SingleSubstFormat1(raf, offset);
40
+ } else if (format == 2) {
41
+ s = new SingleSubstFormat2(raf, offset);
44
42
  }
43
+ return s;
44
+ }
45
45
 
46
46
  }
47
-
@@ -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,41 +27,41 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class SingleSubstFormat1 extends SingleSubst {
29
29
 
30
- private final int coverageOffset;
31
- private final short deltaGlyphID;
32
- private final Coverage coverage;
30
+ private final int coverageOffset;
31
+ private final short deltaGlyphID;
32
+ private final Coverage coverage;
33
33
 
34
- /**
35
- * Creates new SingleSubstFormat1
36
- *
37
- * @param raf
38
- * @param offset
39
- * @throws java.io.IOException
40
- */
41
- protected SingleSubstFormat1(RandomAccessFileEmulator raf, int offset) throws IOException {
42
- coverageOffset = raf.readUnsignedShort();
43
- deltaGlyphID = raf.readShort();
44
- raf.seek(offset + coverageOffset);
45
- coverage = Coverage.read(raf);
46
- }
34
+ /**
35
+ * Creates new SingleSubstFormat1
36
+ *
37
+ * @param raf
38
+ * @param offset
39
+ * @throws java.io.IOException
40
+ */
41
+ protected SingleSubstFormat1(RandomAccessFileEmulator raf, int offset) throws IOException {
42
+ coverageOffset = raf.readUnsignedShort();
43
+ deltaGlyphID = raf.readShort();
44
+ raf.seek(offset + coverageOffset);
45
+ coverage = Coverage.read(raf);
46
+ }
47
47
 
48
- @Override
49
- public int getFormat() {
50
- return 1;
51
- }
48
+ @Override
49
+ public int getFormat() {
50
+ return 1;
51
+ }
52
52
 
53
- /**
54
- *
55
- * @param glyphId
56
- * @return
57
- */
58
- @Override
59
- public int substitute(int glyphId) {
60
- int i = coverage.findGlyph(glyphId);
61
- if (i > -1) {
62
- return glyphId + deltaGlyphID;
63
- }
64
- return glyphId;
53
+ /**
54
+ *
55
+ * @param glyphId
56
+ * @return
57
+ */
58
+ @Override
59
+ public int substitute(int glyphId) {
60
+ int i = coverage.findGlyph(glyphId);
61
+ if (i > -1) {
62
+ return glyphId + deltaGlyphID;
65
63
  }
64
+ return glyphId;
65
+ }
66
66
 
67
67
  }
@@ -18,8 +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.*;
22
-
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
23
22
 
24
23
  /**
25
24
  *
@@ -28,40 +27,41 @@ import org.apache.batik.svggen.font.*;
28
27
  */
29
28
  public class SingleSubstFormat2 extends SingleSubst {
30
29
 
31
- private final int coverageOffset;
32
- private final int glyphCount;
33
- private final int[] substitutes;
34
- private final Coverage coverage;
30
+ private final int coverageOffset;
31
+ private final int glyphCount;
32
+ private final int[] substitutes;
33
+ private final Coverage coverage;
35
34
 
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);
35
+ /**
36
+ * Creates new SingleSubstFormat2
37
+ *
38
+ * @param raf
39
+ * @param offset
40
+ * @throws java.io.IOException
41
+ */
42
+ protected SingleSubstFormat2(RandomAccessFileEmulator raf, int offset) throws IOException {
43
+ coverageOffset = raf.readUnsignedShort();
44
+ glyphCount = raf.readUnsignedShort();
45
+ substitutes = new int[glyphCount];
46
+ for (int i = 0; i < glyphCount; i++) {
47
+ substitutes[i] = raf.readUnsignedShort();
50
48
  }
49
+ raf.seek(offset + coverageOffset);
50
+ coverage = Coverage.read(raf);
51
+ }
51
52
 
52
- @Override
53
- public int getFormat() {
54
- return 2;
55
- }
53
+ @Override
54
+ public int getFormat() {
55
+ return 2;
56
+ }
56
57
 
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;
58
+ @Override
59
+ public int substitute(int glyphId) {
60
+ int i = coverage.findGlyph(glyphId);
61
+ if (i > -1) {
62
+ return substitutes[i];
64
63
  }
64
+ return glyphId;
65
+ }
65
66
 
66
67
  }
67
-