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.
Files changed (150) 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 +25 -0
  6. data/COPYING.md +1 -1
  7. data/README.md +4 -2
  8. data/Rakefile +2 -15
  9. data/docs/.gitignore +6 -0
  10. data/docs/_config.yml +30 -0
  11. data/docs/_includes/footer.html +38 -0
  12. data/docs/_includes/head.html +16 -0
  13. data/docs/_includes/header.html +27 -0
  14. data/docs/_includes/icon-github.html +1 -0
  15. data/docs/_includes/icon-github.svg +3 -0
  16. data/docs/_includes/icon-twitter.html +1 -0
  17. data/docs/_includes/icon-twitter.svg +3 -0
  18. data/docs/_includes/navigation.html +24 -0
  19. data/docs/_layouts/default.html +20 -0
  20. data/docs/_layouts/page.html +14 -0
  21. data/docs/_layouts/post.html +15 -0
  22. data/docs/_posts/2015-11-21-getting_started.md +67 -0
  23. data/docs/_posts/2015-11-25-bubbles.md +111 -0
  24. data/docs/_posts/2015-11-26-extra_bright.md +103 -0
  25. data/docs/_posts/2015-11-26-text_merge.md +114 -0
  26. data/docs/_posts/2016-07-06-dymo.md +99 -0
  27. data/docs/_sass/_base.scss +206 -0
  28. data/docs/_sass/_layout.scss +242 -0
  29. data/docs/_sass/_syntax-highlighting.scss +71 -0
  30. data/docs/about.md +12 -0
  31. data/docs/assets/bright.png +0 -0
  32. data/docs/assets/bubbles.png +0 -0
  33. data/docs/assets/design.png +0 -0
  34. data/docs/assets/dymo.png +0 -0
  35. data/docs/assets/favicon.ico +0 -0
  36. data/docs/assets/fred.png +0 -0
  37. data/docs/assets/merge.png +0 -0
  38. data/docs/css/main.scss +38 -0
  39. data/docs/favicon.ico +0 -0
  40. data/docs/feed.xml +30 -0
  41. data/docs/index.html +38 -0
  42. data/examples/README.md +1 -1
  43. data/examples/data/bot1.svg +1 -1
  44. data/examples/data/lion.svg +156 -156
  45. data/examples/data/ruby.svg +1 -1
  46. data/examples/hello_svg_to_pdf.rb +1 -1
  47. data/examples/jruby_merge.rb +1 -1
  48. data/examples/{f_agent.rb → library/f_agent/f_agent.rb} +0 -0
  49. data/examples/{font_agent.rb → library/font_agent/font_agent.rb} +2 -1
  50. data/examples/text_on_geomerative_path.rb +3 -2
  51. data/examples/typo_deform.rb +2 -2
  52. data/examples/typo_extra_bright.rb +1 -1
  53. data/geomerative.gemspec +3 -7
  54. data/lib/geomerative.rb +5 -4
  55. data/lib/geomerative/version.rb +1 -1
  56. data/mvnw +234 -0
  57. data/mvnw.cmd +145 -0
  58. data/pom.rb +19 -18
  59. data/pom.xml +14 -13
  60. data/src/geomerative/FastRClip.java +2050 -2334
  61. data/src/geomerative/RClip.java +2237 -2539
  62. data/src/geomerative/RClosest.java +33 -31
  63. data/src/geomerative/RCommand.java +1750 -1758
  64. data/src/geomerative/RContour.java +290 -292
  65. data/src/geomerative/RFont.java +277 -246
  66. data/src/geomerative/RG.java +722 -727
  67. data/src/geomerative/RGeomElem.java +967 -962
  68. data/src/geomerative/RGroup.java +508 -467
  69. data/src/geomerative/RMatrix.java +304 -289
  70. data/src/geomerative/RMesh.java +241 -229
  71. data/src/geomerative/RPath.java +924 -926
  72. data/src/geomerative/RPoint.java +391 -391
  73. data/src/geomerative/RPolygon.java +1017 -1013
  74. data/src/geomerative/RRectangle.java +43 -52
  75. data/src/geomerative/RSVG.java +480 -516
  76. data/src/geomerative/RShape.java +1767 -1777
  77. data/src/geomerative/RStrip.java +173 -176
  78. data/src/geomerative/RStyle.java +197 -194
  79. data/src/org/apache/batik/svggen/font/Font.java +141 -142
  80. data/src/org/apache/batik/svggen/font/Glyph.java +102 -71
  81. data/src/org/apache/batik/svggen/font/Point.java +12 -12
  82. data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +14 -12
  83. data/src/org/apache/batik/svggen/font/table/ClassDef.java +12 -12
  84. data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +27 -24
  85. data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +20 -17
  86. data/src/org/apache/batik/svggen/font/table/CmapFormat.java +43 -43
  87. data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +33 -26
  88. data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +25 -20
  89. data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +106 -96
  90. data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +36 -32
  91. data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +69 -49
  92. data/src/org/apache/batik/svggen/font/table/CmapTable.java +50 -50
  93. data/src/org/apache/batik/svggen/font/table/Coverage.java +19 -19
  94. data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +30 -27
  95. data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +26 -24
  96. data/src/org/apache/batik/svggen/font/table/CvtTable.java +16 -16
  97. data/src/org/apache/batik/svggen/font/table/Device.java +32 -32
  98. data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +39 -39
  99. data/src/org/apache/batik/svggen/font/table/Feature.java +26 -23
  100. data/src/org/apache/batik/svggen/font/table/FeatureList.java +37 -35
  101. data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +22 -22
  102. data/src/org/apache/batik/svggen/font/table/FeatureTags.java +4 -3
  103. data/src/org/apache/batik/svggen/font/table/FpgmTable.java +9 -9
  104. data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +134 -132
  105. data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +123 -122
  106. data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +44 -44
  107. data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +110 -109
  108. data/src/org/apache/batik/svggen/font/table/GlyfTable.java +46 -46
  109. data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +25 -13
  110. data/src/org/apache/batik/svggen/font/table/GposTable.java +26 -23
  111. data/src/org/apache/batik/svggen/font/table/GsubTable.java +85 -82
  112. data/src/org/apache/batik/svggen/font/table/HeadTable.java +131 -131
  113. data/src/org/apache/batik/svggen/font/table/HheaTable.java +80 -80
  114. data/src/org/apache/batik/svggen/font/table/HmtxTable.java +50 -49
  115. data/src/org/apache/batik/svggen/font/table/KernSubtable.java +29 -27
  116. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +35 -32
  117. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +28 -26
  118. data/src/org/apache/batik/svggen/font/table/KernTable.java +36 -31
  119. data/src/org/apache/batik/svggen/font/table/KerningPair.java +27 -23
  120. data/src/org/apache/batik/svggen/font/table/LangSys.java +28 -26
  121. data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +22 -22
  122. data/src/org/apache/batik/svggen/font/table/Ligature.java +24 -24
  123. data/src/org/apache/batik/svggen/font/table/LigatureSet.java +24 -24
  124. data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +9 -9
  125. data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +30 -30
  126. data/src/org/apache/batik/svggen/font/table/LocaTable.java +37 -37
  127. data/src/org/apache/batik/svggen/font/table/Lookup.java +41 -40
  128. data/src/org/apache/batik/svggen/font/table/LookupList.java +34 -34
  129. data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +7 -5
  130. data/src/org/apache/batik/svggen/font/table/MaxpTable.java +96 -96
  131. data/src/org/apache/batik/svggen/font/table/NameRecord.java +64 -65
  132. data/src/org/apache/batik/svggen/font/table/NameTable.java +33 -33
  133. data/src/org/apache/batik/svggen/font/table/Os2Table.java +196 -196
  134. data/src/org/apache/batik/svggen/font/table/Panose.java +14 -12
  135. data/src/org/apache/batik/svggen/font/table/PostTable.java +338 -338
  136. data/src/org/apache/batik/svggen/font/table/PrepTable.java +9 -9
  137. data/src/org/apache/batik/svggen/font/table/Program.java +15 -15
  138. data/src/org/apache/batik/svggen/font/table/RangeRecord.java +26 -25
  139. data/src/org/apache/batik/svggen/font/table/Script.java +38 -38
  140. data/src/org/apache/batik/svggen/font/table/ScriptList.java +42 -42
  141. data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +22 -22
  142. data/src/org/apache/batik/svggen/font/table/ScriptTags.java +2 -1
  143. data/src/org/apache/batik/svggen/font/table/SingleSubst.java +15 -16
  144. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +33 -33
  145. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +32 -32
  146. data/src/org/apache/batik/svggen/font/table/Table.java +171 -170
  147. data/src/org/apache/batik/svggen/font/table/TableDirectory.java +55 -55
  148. data/src/org/apache/batik/svggen/font/table/TableFactory.java +92 -93
  149. metadata +47 -30
  150. 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: CmapFormat4.java,v 1.6 2004/09/01 09:35:23 deweese Exp $
@@ -26,65 +26,74 @@ import org.apache.batik.svggen.font.*;
26
26
  */
27
27
  public class CmapFormat4 extends CmapFormat {
28
28
 
29
- public int language;
30
- private final int segCountX2;
31
- private final int searchRange;
32
- private final int entrySelector;
33
- private final int rangeShift;
34
- private final int[] endCode;
35
- private final int[] startCode;
36
- private final int[] idDelta;
37
- private final int[] idRangeOffset;
38
- private final int[] glyphIdArray;
39
- private final int segCount;
40
- private int first, last;
29
+ public int language;
30
+ private final int segCountX2;
31
+ private final int searchRange;
32
+ private final int entrySelector;
33
+ private final int rangeShift;
34
+ private final int[] endCode;
35
+ private final int[] startCode;
36
+ private final int[] idDelta;
37
+ private final int[] idRangeOffset;
38
+ private final int[] glyphIdArray;
39
+ private final int segCount;
40
+ private int first, last;
41
41
 
42
- protected CmapFormat4(RandomAccessFileEmulator raf) throws IOException {
43
- super(raf);
44
- format = 4;
45
- segCountX2 = raf.readUnsignedShort();
46
- segCount = segCountX2 / 2;
47
- endCode = new int[segCount];
48
- startCode = new int[segCount];
49
- idDelta = new int[segCount];
50
- idRangeOffset = new int[segCount];
51
- searchRange = raf.readUnsignedShort();
52
- entrySelector = raf.readUnsignedShort();
53
- rangeShift = raf.readUnsignedShort();
54
- last = -1;
55
- for (int i = 0; i < segCount; i++) {
56
- endCode[i] = raf.readUnsignedShort();
57
- if (endCode[i] > last) last = endCode[i];
58
- }
59
- raf.readUnsignedShort(); // reservePad
60
- for (int i = 0; i < segCount; i++) {
61
- startCode[i] = raf.readUnsignedShort();
62
- if ((i==0 ) || (startCode[i] < first)) first = startCode[i];
63
- }
64
- for (int i = 0; i < segCount; i++) {
65
- idDelta[i] = raf.readUnsignedShort();
66
- }
67
- for (int i = 0; i < segCount; i++) {
68
- idRangeOffset[i] = raf.readUnsignedShort();
69
- }
42
+ protected CmapFormat4(RandomAccessFileEmulator raf) throws IOException {
43
+ super(raf);
44
+ format = 4;
45
+ segCountX2 = raf.readUnsignedShort();
46
+ segCount = segCountX2 / 2;
47
+ endCode = new int[segCount];
48
+ startCode = new int[segCount];
49
+ idDelta = new int[segCount];
50
+ idRangeOffset = new int[segCount];
51
+ searchRange = raf.readUnsignedShort();
52
+ entrySelector = raf.readUnsignedShort();
53
+ rangeShift = raf.readUnsignedShort();
54
+ last = -1;
55
+ for (int i = 0; i < segCount; i++) {
56
+ endCode[i] = raf.readUnsignedShort();
57
+ if (endCode[i] > last) {
58
+ last = endCode[i];
59
+ }
60
+ }
61
+ raf.readUnsignedShort(); // reservePad
62
+ for (int i = 0; i < segCount; i++) {
63
+ startCode[i] = raf.readUnsignedShort();
64
+ if ((i == 0) || (startCode[i] < first)) {
65
+ first = startCode[i];
66
+ }
67
+ }
68
+ for (int i = 0; i < segCount; i++) {
69
+ idDelta[i] = raf.readUnsignedShort();
70
+ }
71
+ for (int i = 0; i < segCount; i++) {
72
+ idRangeOffset[i] = raf.readUnsignedShort();
73
+ }
70
74
 
71
- // Whatever remains of this header belongs in glyphIdArray
72
- int count = (length - 16 - (segCount*8)) / 2;
73
- glyphIdArray = new int[count];
74
- for (int i = 0; i < count; i++) {
75
- glyphIdArray[i] = raf.readUnsignedShort();
76
- }
75
+ // Whatever remains of this header belongs in glyphIdArray
76
+ int count = (length - 16 - (segCount * 8)) / 2;
77
+ glyphIdArray = new int[count];
78
+ for (int i = 0; i < count; i++) {
79
+ glyphIdArray[i] = raf.readUnsignedShort();
77
80
  }
81
+ }
82
+
83
+ @Override
84
+ public int getFirst() {
85
+ return first;
86
+ }
78
87
 
79
- @Override
80
- public int getFirst() { return first; }
81
- @Override
82
- public int getLast() { return last; }
88
+ @Override
89
+ public int getLast() {
90
+ return last;
91
+ }
83
92
 
84
- @Override
85
- public int mapCharCode(int charCode) {
86
- try {
87
- /*
93
+ @Override
94
+ public int mapCharCode(int charCode) {
95
+ try {
96
+ /*
88
97
  Quoting :
89
98
  http://developer.apple.com/fonts/TTRefMan/RM06/Chap6cmap.html#Surrogates
90
99
 
@@ -98,50 +107,51 @@ public class CmapFormat4 extends CmapFormat {
98
107
 
99
108
  My comment : Isn't there a typo here ? Shouldn't we
100
109
  rather read 65,534 ?
101
- */
102
- if ((charCode < 0) || (charCode >= 0xFFFE))
103
- return 0;
110
+ */
111
+ if ((charCode < 0) || (charCode >= 0xFFFE)) {
112
+ return 0;
113
+ }
104
114
 
105
- for (int i = 0; i < segCount; i++) {
106
- if (endCode[i] >= charCode) {
107
- if (startCode[i] <= charCode) {
108
- if (idRangeOffset[i] > 0) {
109
- return glyphIdArray[idRangeOffset[i]/2 +
110
- (charCode - startCode[i]) -
111
- (segCount - i)];
112
- } else {
113
- return (idDelta[i] + charCode) % 65536;
114
- }
115
- } else {
116
- break;
117
- }
118
- }
115
+ for (int i = 0; i < segCount; i++) {
116
+ if (endCode[i] >= charCode) {
117
+ if (startCode[i] <= charCode) {
118
+ if (idRangeOffset[i] > 0) {
119
+ return glyphIdArray[idRangeOffset[i] / 2
120
+ + (charCode - startCode[i])
121
+ - (segCount - i)];
122
+ } else {
123
+ return (idDelta[i] + charCode) % 65536;
119
124
  }
120
- } catch (ArrayIndexOutOfBoundsException e) {
121
- System.err.println("error: Array out of bounds - " + e.getMessage());
125
+ } else {
126
+ break;
127
+ }
122
128
  }
123
- return 0;
129
+ }
130
+ } catch (ArrayIndexOutOfBoundsException e) {
131
+ System.err.println("error: Array out of bounds - " + e.getMessage());
124
132
  }
133
+ return 0;
134
+ }
125
135
 
126
- @Override
127
- public String toString() {
128
- return new StringBuilder()
129
- .append(super.toString())
130
- .append(", segCountX2: ")
131
- .append(segCountX2)
132
- .append(", searchRange: ")
133
- .append(searchRange)
134
- .append(", entrySelector: ")
135
- .append(entrySelector)
136
- .append(", rangeShift: ")
137
- .append(rangeShift)
138
- .append(", endCode: ")
139
- .append(endCode)
140
- .append(", startCode: ")
141
- .append(endCode)
142
- .append(", idDelta: ")
143
- .append(idDelta)
144
- .append(", idRangeOffset: ")
145
- .append(idRangeOffset).toString();
146
- }
136
+ @Override
137
+ public String toString() {
138
+ return new StringBuilder()
139
+ .append(super.toString())
140
+ .append(", segCountX2: ")
141
+ .append(segCountX2)
142
+ .append(", searchRange: ")
143
+ .append(searchRange)
144
+ .append(", entrySelector: ")
145
+ .append(entrySelector)
146
+ .append(", rangeShift: ")
147
+ .append(rangeShift)
148
+ .append(", endCode: ")
149
+ .append(endCode)
150
+ .append(", startCode: ")
151
+ .append(endCode)
152
+ .append(", idDelta: ")
153
+ .append(idDelta)
154
+ .append(", idRangeOffset: ")
155
+ .append(idRangeOffset).toString();
156
+ }
147
157
  }
@@ -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: CmapFormat6.java,v 1.4 2004/09/01 09:35:23 deweese Exp $
@@ -26,35 +26,39 @@ import org.apache.batik.svggen.font.*;
26
26
  */
27
27
  public class CmapFormat6 extends CmapFormat {
28
28
 
29
- private final short cformat;
30
- private short clength;
31
- private short cversion;
32
- private short firstCode;
33
- private short entryCount;
34
- private short[] glyphIdArray;
35
-
36
- protected CmapFormat6(RandomAccessFileEmulator raf) throws IOException {
37
- super(raf);
38
- cformat = 6;
39
- }
40
-
41
- @Override
42
- public int getFirst() { return 0; }
43
-
44
- /**
45
- *
46
- * @return
47
- */
48
- @Override
49
- public int getLast() { return 0; }
50
-
51
- /**
52
- *
53
- * @param charCode
54
- * @return
55
- */
56
- @Override
57
- public int mapCharCode(int charCode) {
58
- return 0;
59
- }
29
+ private final short cformat;
30
+ private short clength;
31
+ private short cversion;
32
+ private short firstCode;
33
+ private short entryCount;
34
+ private short[] glyphIdArray;
35
+
36
+ protected CmapFormat6(RandomAccessFileEmulator raf) throws IOException {
37
+ super(raf);
38
+ cformat = 6;
39
+ }
40
+
41
+ @Override
42
+ public int getFirst() {
43
+ return 0;
44
+ }
45
+
46
+ /**
47
+ *
48
+ * @return
49
+ */
50
+ @Override
51
+ public int getLast() {
52
+ return 0;
53
+ }
54
+
55
+ /**
56
+ *
57
+ * @param charCode
58
+ * @return
59
+ */
60
+ @Override
61
+ public int mapCharCode(int charCode) {
62
+ return 0;
63
+ }
60
64
  }
@@ -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: CmapIndexEntry.java,v 1.3 2004/08/18 07:15:20 vhardy Exp $
@@ -26,59 +26,79 @@ import org.apache.batik.svggen.font.*;
26
26
  */
27
27
  public class CmapIndexEntry {
28
28
 
29
- private final int platformId;
30
- private final int encodingId;
31
- private final int offset;
29
+ private final int platformId;
30
+ private final int encodingId;
31
+ private final int offset;
32
32
 
33
- protected CmapIndexEntry(RandomAccessFileEmulator raf) throws IOException {
34
- platformId = raf.readUnsignedShort();
35
- encodingId = raf.readUnsignedShort();
36
- offset = raf.readInt();
37
- }
33
+ protected CmapIndexEntry(RandomAccessFileEmulator raf) throws IOException {
34
+ platformId = raf.readUnsignedShort();
35
+ encodingId = raf.readUnsignedShort();
36
+ offset = raf.readInt();
37
+ }
38
38
 
39
- public int getEncodingId() {
40
- return encodingId;
41
- }
39
+ public int getEncodingId() {
40
+ return encodingId;
41
+ }
42
42
 
43
- public int getOffset() {
44
- return offset;
45
- }
43
+ public int getOffset() {
44
+ return offset;
45
+ }
46
46
 
47
- public int getPlatformId() {
48
- return platformId;
49
- }
47
+ public int getPlatformId() {
48
+ return platformId;
49
+ }
50
50
 
51
- @Override
52
- public String toString() {
53
- String platform;
54
- String encoding = "";
51
+ @Override
52
+ public String toString() {
53
+ String platform;
54
+ String encoding = "";
55
55
 
56
- switch (platformId) {
57
- case 1: platform = " (Macintosh)"; break;
58
- case 3: platform = " (Windows)"; break;
59
- default: platform = "";
60
- }
61
- if (platformId == 3) {
62
- // Windows specific encodings
63
- switch (encodingId) {
64
- case 0: encoding = " (Symbol)"; break;
65
- case 1: encoding = " (Unicode)"; break;
66
- case 2: encoding = " (ShiftJIS)"; break;
67
- case 3: encoding = " (Big5)"; break;
68
- case 4: encoding = " (PRC)"; break;
69
- case 5: encoding = " (Wansung)"; break;
70
- case 6: encoding = " (Johab)"; break;
71
- default: encoding = "";
72
- }
73
- }
74
- return new StringBuffer()
75
- .append( "platform id: " )
76
- .append( platformId )
77
- .append( platform )
78
- .append( ", encoding id: " )
79
- .append( encodingId )
80
- .append( encoding )
81
- .append( ", offset: " )
82
- .append( offset ).toString();
56
+ switch (platformId) {
57
+ case 1:
58
+ platform = " (Macintosh)";
59
+ break;
60
+ case 3:
61
+ platform = " (Windows)";
62
+ break;
63
+ default:
64
+ platform = "";
65
+ }
66
+ if (platformId == 3) {
67
+ // Windows specific encodings
68
+ switch (encodingId) {
69
+ case 0:
70
+ encoding = " (Symbol)";
71
+ break;
72
+ case 1:
73
+ encoding = " (Unicode)";
74
+ break;
75
+ case 2:
76
+ encoding = " (ShiftJIS)";
77
+ break;
78
+ case 3:
79
+ encoding = " (Big5)";
80
+ break;
81
+ case 4:
82
+ encoding = " (PRC)";
83
+ break;
84
+ case 5:
85
+ encoding = " (Wansung)";
86
+ break;
87
+ case 6:
88
+ encoding = " (Johab)";
89
+ break;
90
+ default:
91
+ encoding = "";
92
+ }
83
93
  }
94
+ return new StringBuffer()
95
+ .append("platform id: ")
96
+ .append(platformId)
97
+ .append(platform)
98
+ .append(", encoding id: ")
99
+ .append(encodingId)
100
+ .append(encoding)
101
+ .append(", offset: ")
102
+ .append(offset).toString();
103
+ }
84
104
  }
@@ -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: CmapTable.java,v 1.3 2004/08/18 07:15:20 vhardy Exp $
@@ -26,62 +26,62 @@ import org.apache.batik.svggen.font.*;
26
26
  */
27
27
  public class CmapTable implements Table {
28
28
 
29
- private final int version;
30
- private final int numTables;
31
- private final CmapIndexEntry[] entries;
32
- private final CmapFormat[] formats;
33
-
34
- protected CmapTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
35
- long fp = de.getOffset();
36
- raf.seek(fp);
37
- version = raf.readUnsignedShort();
38
- numTables = raf.readUnsignedShort();
39
- entries = new CmapIndexEntry[numTables];
40
- formats = new CmapFormat[numTables];
41
-
42
- // Get each of the index entries
43
- for (int i = 0; i < numTables; i++) {
44
- entries[i] = new CmapIndexEntry(raf);
45
- }
46
-
47
- // Get each of the tables
48
- for (int i = 0; i < numTables; i++) {
49
- raf.seek(fp + entries[i].getOffset());
50
- int format = raf.readUnsignedShort();
51
- formats[i] = CmapFormat.create(format, raf);
52
- }
29
+ private final int version;
30
+ private final int numTables;
31
+ private final CmapIndexEntry[] entries;
32
+ private final CmapFormat[] formats;
33
+
34
+ protected CmapTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
35
+ long fp = de.getOffset();
36
+ raf.seek(fp);
37
+ version = raf.readUnsignedShort();
38
+ numTables = raf.readUnsignedShort();
39
+ entries = new CmapIndexEntry[numTables];
40
+ formats = new CmapFormat[numTables];
41
+
42
+ // Get each of the index entries
43
+ for (int i = 0; i < numTables; i++) {
44
+ entries[i] = new CmapIndexEntry(raf);
53
45
  }
54
46
 
55
- public CmapFormat getCmapFormat(short platformId, short encodingId) {
56
-
57
- // Find the requested format
58
- for (int i = 0; i < numTables; i++) {
59
- if (entries[i].getPlatformId() == platformId
60
- && entries[i].getEncodingId() == encodingId) {
61
- return formats[i];
62
- }
63
- }
64
- return null;
47
+ // Get each of the tables
48
+ for (int i = 0; i < numTables; i++) {
49
+ raf.seek(fp + entries[i].getOffset());
50
+ int format = raf.readUnsignedShort();
51
+ formats[i] = CmapFormat.create(format, raf);
65
52
  }
53
+ }
54
+
55
+ public CmapFormat getCmapFormat(short platformId, short encodingId) {
66
56
 
67
- @Override
68
- public int getType() {
69
- return cmap;
57
+ // Find the requested format
58
+ for (int i = 0; i < numTables; i++) {
59
+ if (entries[i].getPlatformId() == platformId
60
+ && entries[i].getEncodingId() == encodingId) {
61
+ return formats[i];
62
+ }
70
63
  }
64
+ return null;
65
+ }
71
66
 
72
- @Override
73
- public String toString() {
74
- StringBuffer sb = new StringBuffer().append("cmap\n");
67
+ @Override
68
+ public int getType() {
69
+ return CMAP;
70
+ }
75
71
 
76
- // Get each of the index entries
77
- for (int i = 0; i < numTables; i++) {
78
- sb.append("\t").append(entries[i].toString()).append("\n");
79
- }
72
+ @Override
73
+ public String toString() {
74
+ StringBuffer sb = new StringBuffer().append("cmap\n");
75
+
76
+ // Get each of the index entries
77
+ for (int i = 0; i < numTables; i++) {
78
+ sb.append("\t").append(entries[i].toString()).append("\n");
79
+ }
80
80
 
81
- // Get each of the tables
82
- for (int i = 0; i < numTables; i++) {
83
- sb.append("\t").append(formats[i].toString()).append("\n");
84
- }
85
- return sb.toString();
81
+ // Get each of the tables
82
+ for (int i = 0; i < numTables; i++) {
83
+ sb.append("\t").append(formats[i].toString()).append("\n");
86
84
  }
85
+ return sb.toString();
86
+ }
87
87
  }