geomerative 1.1.0-java → 2.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.mvn/extensions.xml +1 -1
  4. data/.mvn/wrapper/maven-wrapper.properties +1 -1
  5. data/CHANGELOG.md +3 -0
  6. data/COPYING.md +1 -1
  7. data/README.md +0 -1
  8. data/Rakefile +2 -15
  9. data/docs/_includes/header.html +6 -6
  10. data/docs/_includes/icon-github.svg +3 -1
  11. data/docs/_includes/icon-twitter.svg +3 -1
  12. data/docs/_includes/navigation.html +18 -18
  13. data/docs/_sass/_base.scss +79 -79
  14. data/docs/_sass/_layout.scss +137 -137
  15. data/docs/_sass/_syntax-highlighting.scss +64 -64
  16. data/docs/index.html +18 -18
  17. data/examples/data/bot1.svg +1 -1
  18. data/examples/data/lion.svg +156 -156
  19. data/examples/data/ruby.svg +1 -1
  20. data/geomerative.gemspec +1 -2
  21. data/lib/geomerative/version.rb +1 -1
  22. data/mvnw +234 -0
  23. data/mvnw.cmd +145 -0
  24. data/pom.rb +14 -13
  25. data/pom.xml +14 -13
  26. data/src/geomerative/FastRClip.java +2149 -2156
  27. data/src/geomerative/RClip.java +2237 -2539
  28. data/src/geomerative/RClosest.java +33 -31
  29. data/src/geomerative/RCommand.java +1750 -1758
  30. data/src/geomerative/RContour.java +290 -292
  31. data/src/geomerative/RFont.java +277 -246
  32. data/src/geomerative/RG.java +722 -727
  33. data/src/geomerative/RGeomElem.java +967 -960
  34. data/src/geomerative/RGroup.java +508 -467
  35. data/src/geomerative/RMatrix.java +304 -289
  36. data/src/geomerative/RMesh.java +241 -229
  37. data/src/geomerative/RPath.java +924 -925
  38. data/src/geomerative/RPoint.java +391 -391
  39. data/src/geomerative/RPolygon.java +998 -988
  40. data/src/geomerative/RRectangle.java +43 -52
  41. data/src/geomerative/RSVG.java +480 -516
  42. data/src/geomerative/RShape.java +1767 -1777
  43. data/src/geomerative/RStrip.java +173 -176
  44. data/src/geomerative/RStyle.java +197 -194
  45. data/src/org/apache/batik/svggen/font/Font.java +141 -142
  46. data/src/org/apache/batik/svggen/font/Glyph.java +102 -71
  47. data/src/org/apache/batik/svggen/font/Point.java +12 -12
  48. data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +14 -12
  49. data/src/org/apache/batik/svggen/font/table/ClassDef.java +12 -12
  50. data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +27 -24
  51. data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +20 -17
  52. data/src/org/apache/batik/svggen/font/table/CmapFormat.java +43 -43
  53. data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +33 -26
  54. data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +25 -20
  55. data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +106 -96
  56. data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +36 -32
  57. data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +69 -49
  58. data/src/org/apache/batik/svggen/font/table/CmapTable.java +50 -50
  59. data/src/org/apache/batik/svggen/font/table/Coverage.java +19 -19
  60. data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +30 -27
  61. data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +26 -24
  62. data/src/org/apache/batik/svggen/font/table/CvtTable.java +16 -16
  63. data/src/org/apache/batik/svggen/font/table/Device.java +32 -32
  64. data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +39 -39
  65. data/src/org/apache/batik/svggen/font/table/Feature.java +26 -23
  66. data/src/org/apache/batik/svggen/font/table/FeatureList.java +37 -35
  67. data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +22 -22
  68. data/src/org/apache/batik/svggen/font/table/FeatureTags.java +4 -3
  69. data/src/org/apache/batik/svggen/font/table/FpgmTable.java +9 -9
  70. data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +134 -132
  71. data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +123 -122
  72. data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +44 -44
  73. data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +110 -109
  74. data/src/org/apache/batik/svggen/font/table/GlyfTable.java +46 -46
  75. data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +25 -13
  76. data/src/org/apache/batik/svggen/font/table/GposTable.java +26 -23
  77. data/src/org/apache/batik/svggen/font/table/GsubTable.java +85 -82
  78. data/src/org/apache/batik/svggen/font/table/HeadTable.java +131 -131
  79. data/src/org/apache/batik/svggen/font/table/HheaTable.java +80 -80
  80. data/src/org/apache/batik/svggen/font/table/HmtxTable.java +50 -49
  81. data/src/org/apache/batik/svggen/font/table/KernSubtable.java +29 -27
  82. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +35 -32
  83. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +28 -26
  84. data/src/org/apache/batik/svggen/font/table/KernTable.java +36 -31
  85. data/src/org/apache/batik/svggen/font/table/KerningPair.java +27 -23
  86. data/src/org/apache/batik/svggen/font/table/LangSys.java +28 -26
  87. data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +22 -22
  88. data/src/org/apache/batik/svggen/font/table/Ligature.java +24 -24
  89. data/src/org/apache/batik/svggen/font/table/LigatureSet.java +24 -24
  90. data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +9 -9
  91. data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +30 -30
  92. data/src/org/apache/batik/svggen/font/table/LocaTable.java +37 -37
  93. data/src/org/apache/batik/svggen/font/table/Lookup.java +41 -40
  94. data/src/org/apache/batik/svggen/font/table/LookupList.java +34 -34
  95. data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +7 -5
  96. data/src/org/apache/batik/svggen/font/table/MaxpTable.java +96 -96
  97. data/src/org/apache/batik/svggen/font/table/NameRecord.java +64 -65
  98. data/src/org/apache/batik/svggen/font/table/NameTable.java +33 -33
  99. data/src/org/apache/batik/svggen/font/table/Os2Table.java +196 -196
  100. data/src/org/apache/batik/svggen/font/table/Panose.java +14 -12
  101. data/src/org/apache/batik/svggen/font/table/PostTable.java +338 -338
  102. data/src/org/apache/batik/svggen/font/table/PrepTable.java +9 -9
  103. data/src/org/apache/batik/svggen/font/table/Program.java +15 -15
  104. data/src/org/apache/batik/svggen/font/table/RangeRecord.java +26 -25
  105. data/src/org/apache/batik/svggen/font/table/Script.java +38 -38
  106. data/src/org/apache/batik/svggen/font/table/ScriptList.java +42 -42
  107. data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +22 -22
  108. data/src/org/apache/batik/svggen/font/table/ScriptTags.java +2 -1
  109. data/src/org/apache/batik/svggen/font/table/SingleSubst.java +15 -16
  110. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +33 -33
  111. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +32 -32
  112. data/src/org/apache/batik/svggen/font/table/Table.java +171 -170
  113. data/src/org/apache/batik/svggen/font/table/TableDirectory.java +55 -55
  114. data/src/org/apache/batik/svggen/font/table/TableFactory.java +92 -93
  115. metadata +10 -11
  116. data/.travis.yml +0 -9
@@ -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
  }