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.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/.mvn/extensions.xml +1 -1
- data/.mvn/wrapper/maven-wrapper.properties +1 -1
- data/CHANGELOG.md +25 -0
- data/COPYING.md +1 -1
- data/README.md +4 -2
- data/Rakefile +2 -15
- data/docs/.gitignore +6 -0
- data/docs/_config.yml +30 -0
- data/docs/_includes/footer.html +38 -0
- data/docs/_includes/head.html +16 -0
- data/docs/_includes/header.html +27 -0
- data/docs/_includes/icon-github.html +1 -0
- data/docs/_includes/icon-github.svg +3 -0
- data/docs/_includes/icon-twitter.html +1 -0
- data/docs/_includes/icon-twitter.svg +3 -0
- data/docs/_includes/navigation.html +24 -0
- data/docs/_layouts/default.html +20 -0
- data/docs/_layouts/page.html +14 -0
- data/docs/_layouts/post.html +15 -0
- data/docs/_posts/2015-11-21-getting_started.md +67 -0
- data/docs/_posts/2015-11-25-bubbles.md +111 -0
- data/docs/_posts/2015-11-26-extra_bright.md +103 -0
- data/docs/_posts/2015-11-26-text_merge.md +114 -0
- data/docs/_posts/2016-07-06-dymo.md +99 -0
- data/docs/_sass/_base.scss +206 -0
- data/docs/_sass/_layout.scss +242 -0
- data/docs/_sass/_syntax-highlighting.scss +71 -0
- data/docs/about.md +12 -0
- data/docs/assets/bright.png +0 -0
- data/docs/assets/bubbles.png +0 -0
- data/docs/assets/design.png +0 -0
- data/docs/assets/dymo.png +0 -0
- data/docs/assets/favicon.ico +0 -0
- data/docs/assets/fred.png +0 -0
- data/docs/assets/merge.png +0 -0
- data/docs/css/main.scss +38 -0
- data/docs/favicon.ico +0 -0
- data/docs/feed.xml +30 -0
- data/docs/index.html +38 -0
- data/examples/README.md +1 -1
- data/examples/data/bot1.svg +1 -1
- data/examples/data/lion.svg +156 -156
- data/examples/data/ruby.svg +1 -1
- data/examples/hello_svg_to_pdf.rb +1 -1
- data/examples/jruby_merge.rb +1 -1
- data/examples/{f_agent.rb → library/f_agent/f_agent.rb} +0 -0
- data/examples/{font_agent.rb → library/font_agent/font_agent.rb} +2 -1
- data/examples/text_on_geomerative_path.rb +3 -2
- data/examples/typo_deform.rb +2 -2
- data/examples/typo_extra_bright.rb +1 -1
- data/geomerative.gemspec +3 -7
- data/lib/geomerative.rb +5 -4
- data/lib/geomerative/version.rb +1 -1
- data/mvnw +234 -0
- data/mvnw.cmd +145 -0
- data/pom.rb +19 -18
- data/pom.xml +14 -13
- data/src/geomerative/FastRClip.java +2050 -2334
- data/src/geomerative/RClip.java +2237 -2539
- data/src/geomerative/RClosest.java +33 -31
- data/src/geomerative/RCommand.java +1750 -1758
- data/src/geomerative/RContour.java +290 -292
- data/src/geomerative/RFont.java +277 -246
- data/src/geomerative/RG.java +722 -727
- data/src/geomerative/RGeomElem.java +967 -962
- data/src/geomerative/RGroup.java +508 -467
- data/src/geomerative/RMatrix.java +304 -289
- data/src/geomerative/RMesh.java +241 -229
- data/src/geomerative/RPath.java +924 -926
- data/src/geomerative/RPoint.java +391 -391
- data/src/geomerative/RPolygon.java +1017 -1013
- data/src/geomerative/RRectangle.java +43 -52
- data/src/geomerative/RSVG.java +480 -516
- data/src/geomerative/RShape.java +1767 -1777
- data/src/geomerative/RStrip.java +173 -176
- data/src/geomerative/RStyle.java +197 -194
- data/src/org/apache/batik/svggen/font/Font.java +141 -142
- data/src/org/apache/batik/svggen/font/Glyph.java +102 -71
- data/src/org/apache/batik/svggen/font/Point.java +12 -12
- data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +14 -12
- data/src/org/apache/batik/svggen/font/table/ClassDef.java +12 -12
- data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +27 -24
- data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +20 -17
- data/src/org/apache/batik/svggen/font/table/CmapFormat.java +43 -43
- data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +33 -26
- data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +25 -20
- data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +106 -96
- data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +36 -32
- data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +69 -49
- data/src/org/apache/batik/svggen/font/table/CmapTable.java +50 -50
- data/src/org/apache/batik/svggen/font/table/Coverage.java +19 -19
- data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +30 -27
- data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +26 -24
- data/src/org/apache/batik/svggen/font/table/CvtTable.java +16 -16
- data/src/org/apache/batik/svggen/font/table/Device.java +32 -32
- data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +39 -39
- data/src/org/apache/batik/svggen/font/table/Feature.java +26 -23
- data/src/org/apache/batik/svggen/font/table/FeatureList.java +37 -35
- data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +22 -22
- data/src/org/apache/batik/svggen/font/table/FeatureTags.java +4 -3
- data/src/org/apache/batik/svggen/font/table/FpgmTable.java +9 -9
- data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +134 -132
- data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +123 -122
- data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +44 -44
- data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +110 -109
- data/src/org/apache/batik/svggen/font/table/GlyfTable.java +46 -46
- data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +25 -13
- data/src/org/apache/batik/svggen/font/table/GposTable.java +26 -23
- data/src/org/apache/batik/svggen/font/table/GsubTable.java +85 -82
- data/src/org/apache/batik/svggen/font/table/HeadTable.java +131 -131
- data/src/org/apache/batik/svggen/font/table/HheaTable.java +80 -80
- data/src/org/apache/batik/svggen/font/table/HmtxTable.java +50 -49
- data/src/org/apache/batik/svggen/font/table/KernSubtable.java +29 -27
- data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +35 -32
- data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +28 -26
- data/src/org/apache/batik/svggen/font/table/KernTable.java +36 -31
- data/src/org/apache/batik/svggen/font/table/KerningPair.java +27 -23
- data/src/org/apache/batik/svggen/font/table/LangSys.java +28 -26
- data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +22 -22
- data/src/org/apache/batik/svggen/font/table/Ligature.java +24 -24
- data/src/org/apache/batik/svggen/font/table/LigatureSet.java +24 -24
- data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +9 -9
- data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +30 -30
- data/src/org/apache/batik/svggen/font/table/LocaTable.java +37 -37
- data/src/org/apache/batik/svggen/font/table/Lookup.java +41 -40
- data/src/org/apache/batik/svggen/font/table/LookupList.java +34 -34
- data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +7 -5
- data/src/org/apache/batik/svggen/font/table/MaxpTable.java +96 -96
- data/src/org/apache/batik/svggen/font/table/NameRecord.java +64 -65
- data/src/org/apache/batik/svggen/font/table/NameTable.java +33 -33
- data/src/org/apache/batik/svggen/font/table/Os2Table.java +196 -196
- data/src/org/apache/batik/svggen/font/table/Panose.java +14 -12
- data/src/org/apache/batik/svggen/font/table/PostTable.java +338 -338
- data/src/org/apache/batik/svggen/font/table/PrepTable.java +9 -9
- data/src/org/apache/batik/svggen/font/table/Program.java +15 -15
- data/src/org/apache/batik/svggen/font/table/RangeRecord.java +26 -25
- data/src/org/apache/batik/svggen/font/table/Script.java +38 -38
- data/src/org/apache/batik/svggen/font/table/ScriptList.java +42 -42
- data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +22 -22
- data/src/org/apache/batik/svggen/font/table/ScriptTags.java +2 -1
- data/src/org/apache/batik/svggen/font/table/SingleSubst.java +15 -16
- data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +33 -33
- data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +32 -32
- data/src/org/apache/batik/svggen/font/table/Table.java +171 -170
- data/src/org/apache/batik/svggen/font/table/TableDirectory.java +55 -55
- data/src/org/apache/batik/svggen/font/table/TableFactory.java +92 -93
- metadata +47 -30
- 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
|
-
|
|
44
|
+
private byte[] bs;
|
|
44
45
|
// private Interpreter interp = null;
|
|
45
46
|
// private Parser parser = null;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
}
|