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: 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
- 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();
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
- private byte[] buf = null;
31
- private int[] hMetrics = null;
32
- private short[] leftSideBearing = null;
30
+ private byte[] buf = null;
31
+ private int[] hMetrics = null;
32
+ private short[] leftSideBearing = null;
33
33
 
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
- /*
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
- public void init(int numberOfHMetrics, int lsbCount) {
56
- if (buf == null) {
57
- return;
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
- 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;
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
- public short getLeftSideBearing(int i) {
86
- if (hMetrics == null) {
87
- return 0;
88
- }
89
- if (i < hMetrics.length) {
90
- return (short)(hMetrics[i] & 0xffff);
91
- } else {
92
- return leftSideBearing[i - hMetrics.length];
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
- public int getType() {
97
- return hmtx;
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
- /** Creates new KernSubtable */
31
- protected KernSubtable() {
32
- }
33
-
34
- public abstract int getKerningPairCount();
35
-
36
- public abstract KerningPair getKerningPair(int i);
37
-
38
- public static KernSubtable read(RandomAccessFileEmulator raf) throws IOException {
39
- KernSubtable table = null;
40
- /* int version =*/ raf.readUnsignedShort();
41
- /* int length =*/ raf.readUnsignedShort();
42
- int coverage = raf.readUnsignedShort();
43
- int format = coverage >> 8;
44
-
45
- switch (format) {
46
- case 0:
47
- table = new KernSubtableFormat0(raf);
48
- break;
49
- case 2:
50
- table = new KernSubtableFormat2(raf);
51
- break;
52
- default:
53
- break;
54
- }
55
- return table;
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
- /** Creates new KernSubtableFormat0
37
- * @param raf
38
- * @throws java.io.IOException */
39
- protected KernSubtableFormat0(RandomAccessFileEmulator raf) throws IOException {
40
- nPairs = raf.readUnsignedShort();
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
- @Override
51
- public int getKerningPairCount() {
52
- return nPairs;
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
- * @param i
58
- * @return
59
- */
60
- @Override
61
- public KerningPair getKerningPair(int i) {
62
- return kerningPairs[i];
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
  }