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
@@ -35,154 +35,153 @@ import org.apache.batik.svggen.font.table.TableFactory;
35
35
 
36
36
  /**
37
37
  * The TrueType font.
38
+ *
38
39
  * @version $Id: Font.java,v 1.6 2004/08/18 07:15:18 vhardy Exp $
39
40
  * @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
40
41
  */
41
42
  public class Font {
42
43
 
43
- private byte[] bs;
44
+ private byte[] bs;
44
45
  // private Interpreter interp = null;
45
46
  // private Parser parser = null;
46
- private TableDirectory tableDirectory = null;
47
- private Table[] tables;
48
- private Os2Table os2;
49
- private CmapTable cmap;
50
- private GlyfTable glyf;
51
- private HeadTable head;
52
- private HheaTable hhea;
53
- private HmtxTable hmtx;
54
- private LocaTable loca;
55
- private MaxpTable maxp;
56
- private NameTable name;
57
- private PostTable post;
58
-
59
- /**
60
- * Constructor
61
- */
62
- public Font() {
63
- }
64
-
65
- public Table getTable(int tableType) {
66
- for (Table table : tables) {
67
- if ((table != null) && (table.getType() == tableType)) {
68
- return table;
69
- }
70
- }
71
- return null;
72
- }
73
-
74
- public Os2Table getOS2Table() {
75
- return os2;
76
- }
77
-
78
- public CmapTable getCmapTable() {
79
- return cmap;
80
- }
81
-
82
- public HeadTable getHeadTable() {
83
- return head;
84
- }
85
-
86
- public HheaTable getHheaTable() {
87
- return hhea;
88
- }
89
-
90
- public HmtxTable getHmtxTable() {
91
- return hmtx;
92
- }
93
-
94
- public LocaTable getLocaTable() {
95
- return loca;
96
- }
97
-
98
- public MaxpTable getMaxpTable() {
99
- return maxp;
100
- }
101
-
102
- public NameTable getNameTable() {
103
- return name;
104
- }
105
-
106
- public PostTable getPostTable() {
107
- return post;
108
- }
109
-
110
- public int getAscent() {
111
- return hhea.getAscender();
112
- }
113
-
114
- public int getDescent() {
115
- return hhea.getDescender();
116
- }
117
-
118
- public int getNumGlyphs() {
119
- return maxp.getNumGlyphs();
120
- }
121
-
122
- public Glyph getGlyph(int i) {
123
- return (glyf.getDescription(i) != null)
124
- ? new Glyph(
125
- glyf.getDescription(i),
126
- hmtx.getLeftSideBearing(i),
127
- hmtx.getAdvanceWidth(i))
128
- : null;
129
- }
130
-
131
- public TableDirectory getTableDirectory() {
132
- return tableDirectory;
133
- }
134
-
135
- /**
136
- * @param fontInBytes
137
- */
138
- protected void read(byte[] fontInBytes) {
139
- bs = fontInBytes;
140
- try {
141
- try (RandomAccessFileEmulator raf = new RandomAccessFileEmulator(bs, "r")) {
142
- tableDirectory = new TableDirectory(raf);
143
- tables = new Table[tableDirectory.getNumTables()];
144
-
145
- // Load each of the tables
146
- for (int i = 0; i < tableDirectory.getNumTables(); i++) {
147
- tables[i] = TableFactory.create
148
- (tableDirectory.getEntry(i), raf);
149
- }
150
- }
151
-
152
- // Get references to commonly used tables
153
- os2 = (Os2Table) getTable(Table.OS_2);
154
- cmap = (CmapTable) getTable(Table.cmap);
155
- glyf = (GlyfTable) getTable(Table.glyf);
156
- head = (HeadTable) getTable(Table.head);
157
- hhea = (HheaTable) getTable(Table.hhea);
158
- hmtx = (HmtxTable) getTable(Table.hmtx);
159
- loca = (LocaTable) getTable(Table.loca);
160
- maxp = (MaxpTable) getTable(Table.maxp);
161
- name = (NameTable) getTable(Table.name);
162
- post = (PostTable) getTable(Table.post);
163
-
164
- // Initialize the tables that require it
165
- hmtx.init(hhea.getNumberOfHMetrics(),
166
- maxp.getNumGlyphs() - hhea.getNumberOfHMetrics());
167
- loca.init(maxp.getNumGlyphs(), head.getIndexToLocFormat() == 0);
168
- glyf.init(maxp.getNumGlyphs(), loca);
169
-
170
- } catch (IOException e) {
47
+ private TableDirectory tableDirectory = null;
48
+ private Table[] tables;
49
+ private Os2Table os2;
50
+ private CmapTable cmap;
51
+ private GlyfTable glyf;
52
+ private HeadTable head;
53
+ private HheaTable hhea;
54
+ private HmtxTable hmtx;
55
+ private LocaTable loca;
56
+ private MaxpTable maxp;
57
+ private NameTable name;
58
+ private PostTable post;
59
+
60
+ /**
61
+ * Constructor
62
+ */
63
+ public Font() {
64
+ }
65
+
66
+ public Table getTable(int tableType) {
67
+ for (Table table : tables) {
68
+ if ((table != null) && (table.getType() == tableType)) {
69
+ return table;
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+
75
+ public Os2Table getOS2Table() {
76
+ return os2;
77
+ }
78
+
79
+ public CmapTable getCmapTable() {
80
+ return cmap;
81
+ }
82
+
83
+ public HeadTable getHeadTable() {
84
+ return head;
85
+ }
86
+
87
+ public HheaTable getHheaTable() {
88
+ return hhea;
89
+ }
90
+
91
+ public HmtxTable getHmtxTable() {
92
+ return hmtx;
93
+ }
94
+
95
+ public LocaTable getLocaTable() {
96
+ return loca;
97
+ }
98
+
99
+ public MaxpTable getMaxpTable() {
100
+ return maxp;
101
+ }
102
+
103
+ public NameTable getNameTable() {
104
+ return name;
105
+ }
106
+
107
+ public PostTable getPostTable() {
108
+ return post;
109
+ }
110
+
111
+ public int getAscent() {
112
+ return hhea.getAscender();
113
+ }
114
+
115
+ public int getDescent() {
116
+ return hhea.getDescender();
117
+ }
118
+
119
+ public int getNumGlyphs() {
120
+ return maxp.getNumGlyphs();
121
+ }
122
+
123
+ public Glyph getGlyph(int i) {
124
+ return (glyf.getDescription(i) != null)
125
+ ? new Glyph(
126
+ glyf.getDescription(i),
127
+ hmtx.getLeftSideBearing(i),
128
+ hmtx.getAdvanceWidth(i))
129
+ : null;
130
+ }
131
+
132
+ public TableDirectory getTableDirectory() {
133
+ return tableDirectory;
134
+ }
135
+
136
+ /**
137
+ * @param fontInBytes
138
+ */
139
+ protected void read(byte[] fontInBytes) {
140
+ bs = fontInBytes;
141
+ try {
142
+ try (RandomAccessFileEmulator raf = new RandomAccessFileEmulator(bs, "r")) {
143
+ tableDirectory = new TableDirectory(raf);
144
+ tables = new Table[tableDirectory.getNumTables()];
145
+
146
+ // Load each of the tables
147
+ for (int i = 0; i < tableDirectory.getNumTables(); i++) {
148
+ tables[i] = TableFactory.create(tableDirectory.getEntry(i), raf);
171
149
  }
172
- }
173
-
174
- public static Font create() {
175
- return new Font();
176
- }
177
-
178
- /**
179
- * @param fontInBytes
180
- * @return
181
- */
182
-
183
- public static Font create(byte[] fontInBytes) {
184
- Font f = new Font();
185
- f.read(fontInBytes);
186
- return f;
187
- }
150
+ }
151
+
152
+ // Get references to commonly used tables
153
+ os2 = (Os2Table) getTable(Table.OS_2);
154
+ cmap = (CmapTable) getTable(Table.CMAP);
155
+ glyf = (GlyfTable) getTable(Table.GLYF);
156
+ head = (HeadTable) getTable(Table.HEAD);
157
+ hhea = (HheaTable) getTable(Table.HHEA);
158
+ hmtx = (HmtxTable) getTable(Table.HMTX);
159
+ loca = (LocaTable) getTable(Table.LOCA);
160
+ maxp = (MaxpTable) getTable(Table.MAXP);
161
+ name = (NameTable) getTable(Table.NAME);
162
+ post = (PostTable) getTable(Table.POST);
163
+
164
+ // Initialize the tables that require it
165
+ hmtx.init(hhea.getNumberOfHMetrics(),
166
+ maxp.getNumGlyphs() - hhea.getNumberOfHMetrics());
167
+ loca.init(maxp.getNumGlyphs(), head.getIndexToLocFormat() == 0);
168
+ glyf.init(maxp.getNumGlyphs(), loca);
169
+
170
+ } catch (IOException e) {
171
+ }
172
+ }
173
+
174
+ public static Font create() {
175
+ return new Font();
176
+ }
177
+
178
+ /**
179
+ * @param fontInBytes
180
+ * @return
181
+ */
182
+ public static Font create(byte[] fontInBytes) {
183
+ Font f = new Font();
184
+ f.read(fontInBytes);
185
+ return f;
186
+ }
188
187
  }
@@ -22,61 +22,92 @@ import org.apache.batik.svggen.font.table.GlyphDescription;
22
22
 
23
23
  /**
24
24
  * An individual glyph within a font.
25
+ *
25
26
  * @version $Id: Glyph.java,v 1.4 2004/08/18 07:15:18 vhardy Exp $
26
27
  * @author <a href="mailto:david@steadystate.co.uk">David Schweinsberg</a>
27
28
  */
28
29
  public class Glyph {
29
30
 
30
- protected short leftSideBearing;
31
- protected int advanceWidth;
32
- private Point[] points;
33
-
34
- public Glyph(GlyphDescription gd, short lsb, int advance) {
35
- leftSideBearing = lsb;
36
- advanceWidth = advance;
37
- describe(gd);
38
- }
39
-
40
- public int getAdvanceWidth() {
41
- return advanceWidth;
42
- }
43
-
44
- public short getLeftSideBearing() {
45
- return leftSideBearing;
46
- }
47
-
48
- public Point getPoint(int i) {
49
- return points[i];
50
- }
51
-
52
- public int getPointCount() {
53
- return points.length;
31
+ /**
32
+ *
33
+ */
34
+ protected short leftSideBearing;
35
+
36
+ /**
37
+ *
38
+ */
39
+ protected int advanceWidth;
40
+ private Point[] points;
41
+
42
+ /**
43
+ *
44
+ * @param gd
45
+ * @param lsb
46
+ * @param advance
47
+ */
48
+ public Glyph(GlyphDescription gd, short lsb, int advance) {
49
+ leftSideBearing = lsb;
50
+ advanceWidth = advance;
51
+ describe(gd);
52
+ }
53
+
54
+ /**
55
+ *
56
+ * @return
57
+ */
58
+ public int getAdvanceWidth() {
59
+ return advanceWidth;
60
+ }
61
+
62
+ /**
63
+ *
64
+ * @return
65
+ */
66
+ public short getLeftSideBearing() {
67
+ return leftSideBearing;
68
+ }
69
+
70
+ /**
71
+ *
72
+ * @param i
73
+ * @return
74
+ */
75
+ public Point getPoint(int i) {
76
+ return points[i];
77
+ }
78
+
79
+ /**
80
+ *
81
+ * @return
82
+ */
83
+ public int getPointCount() {
84
+ return points.length;
85
+ }
86
+
87
+ /**
88
+ * Resets the glyph to the TrueType table settings
89
+ */
90
+ public void reset() {
91
+ }
92
+
93
+ /**
94
+ * @param factor a float value
95
+ */
96
+ public void scale(float factor) {
97
+ if (points != null) {
98
+ for (Point point : points) {
99
+ point.x *= factor;
100
+ point.y *= -factor;
101
+ }
54
102
  }
55
-
56
- /**
57
- * Resets the glyph to the TrueType table settings
58
- */
59
- public void reset() {
60
- }
61
-
62
- /**
63
- * @param factor a float value
64
- */
65
- public void scale(float factor) {
66
- if(points!=null){
67
- for (Point point : points) {
68
- point.x *= factor;
69
- point.y *= -factor;
70
- }
71
- }
72
- leftSideBearing = (short)((float)leftSideBearing * factor);
73
- advanceWidth = (int)((float)advanceWidth * factor);
74
- }
75
-
76
- /**
77
- * @param factor a 16.16 fixed value
78
- */
79
- /*
103
+ leftSideBearing = (short) ((float) leftSideBearing * factor);
104
+ advanceWidth = (int) ((float) advanceWidth * factor);
105
+ }
106
+
107
+ /**
108
+ * @param factor a 16.16 fixed value
109
+ */
110
+ /*
80
111
  public void scale(int factor) {
81
112
  for (int i = 0; i < points.length; i++) {
82
113
  //points[i].x = ( points[i].x * factor ) >> 6;
@@ -87,27 +118,27 @@ public class Glyph {
87
118
  leftSideBearing = (short)(( leftSideBearing * factor) >> 6);
88
119
  advanceWidth = (advanceWidth * factor) >> 6;
89
120
  }
90
- */
91
- /**
92
- * Set the points of a glyph from the GlyphDescription
93
- */
94
- private void describe(GlyphDescription gd) {
95
- int endPtIndex = 0;
96
- points = new Point[gd.getPointCount() + 2];
97
- for (int i = 0; i < gd.getPointCount(); i++) {
98
- boolean endPt = gd.getEndPtOfContours(endPtIndex) == i;
99
- if (endPt) {
100
- endPtIndex++;
101
- }
102
- points[i] = new Point(
103
- gd.getXCoordinate(i),
104
- gd.getYCoordinate(i),
105
- (gd.getFlags(i) & GlyfDescript.onCurve) != 0,
106
- endPt);
107
- }
108
-
109
- // Append the origin and advanceWidth points (n & n+1)
110
- points[gd.getPointCount()] = new Point(0, 0, true, true);
111
- points[gd.getPointCount()+1] = new Point(advanceWidth, 0, true, true);
121
+ */
122
+ /**
123
+ * Set the points of a glyph from the GlyphDescription
124
+ */
125
+ private void describe(GlyphDescription gd) {
126
+ int endPtIndex = 0;
127
+ points = new Point[gd.getPointCount() + 2];
128
+ for (int i = 0; i < gd.getPointCount(); i++) {
129
+ boolean endPt = gd.getEndPtOfContours(endPtIndex) == i;
130
+ if (endPt) {
131
+ endPtIndex++;
132
+ }
133
+ points[i] = new Point(
134
+ gd.getXCoordinate(i),
135
+ gd.getYCoordinate(i),
136
+ (gd.getFlags(i) & GlyfDescript.onCurve) != 0,
137
+ endPt);
112
138
  }
139
+
140
+ // Append the origin and advanceWidth points (n & n+1)
141
+ points[gd.getPointCount()] = new Point(0, 0, true, true);
142
+ points[gd.getPointCount() + 1] = new Point(advanceWidth, 0, true, true);
143
+ }
113
144
  }