diff options
author | David Schweinsberg <[email protected]> | 2019-09-15 19:04:42 -0700 |
---|---|---|
committer | David Schweinsberg <[email protected]> | 2019-09-15 19:04:42 -0700 |
commit | 158166d9b194b69083923c55728589408932a673 (patch) | |
tree | 350a1d2d945a9b9948930a977abaac48e59ec4a3 /src | |
parent | 55e11ec99807fb91c1ca07396d28edf3fbbb611c (diff) |
Added SVG font export test
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/net/java/dev/typecast/exchange/Exporter.java | 4 | ||||
-rw-r--r-- | src/main/java/net/java/dev/typecast/exchange/Messages.java | 24 | ||||
-rw-r--r-- | src/main/java/net/java/dev/typecast/exchange/SVGExporter.java | 54 | ||||
-rw-r--r-- | src/main/java/net/java/dev/typecast/ot/TTGlyph.java | 9 | ||||
-rw-r--r-- | src/main/resources/net/java/dev/typecast/exchange/Messages.properties (renamed from src/main/java/net/java/dev/typecast/exchange/Messages.properties) | 0 | ||||
-rw-r--r-- | src/test/java/net/java/dev/typecast/exchange/SVGExporterTest.java | 62 | ||||
-rw-r--r-- | src/test/java/net/java/dev/typecast/ot/OTFontCollectionTest.java | 1 |
7 files changed, 114 insertions, 40 deletions
diff --git a/src/main/java/net/java/dev/typecast/exchange/Exporter.java b/src/main/java/net/java/dev/typecast/exchange/Exporter.java index b88b297..98ef724 100644 --- a/src/main/java/net/java/dev/typecast/exchange/Exporter.java +++ b/src/main/java/net/java/dev/typecast/exchange/Exporter.java @@ -1,7 +1,7 @@ /* - * Typecast - The Font Development Environment + * Typecast * - * Copyright (c) 2004 David Schweinsberg + * Copyright © 2004-2019 David Schweinsberg * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/net/java/dev/typecast/exchange/Messages.java b/src/main/java/net/java/dev/typecast/exchange/Messages.java index 995fda5..8338bc4 100644 --- a/src/main/java/net/java/dev/typecast/exchange/Messages.java +++ b/src/main/java/net/java/dev/typecast/exchange/Messages.java @@ -1,10 +1,20 @@ -/***************************************************************************** - * Copyright (C) The Apache Software Foundation. All rights reserved. * - * ------------------------------------------------------------------------- * - * This software is published under the terms of the Apache Software License * - * version 1.1, a copy of which has been included with this distribution in * - * the LICENSE file. * - *****************************************************************************/ +/* + * Typecast + * + * Copyright © 2004-2019 David Schweinsberg + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package net.java.dev.typecast.exchange; diff --git a/src/main/java/net/java/dev/typecast/exchange/SVGExporter.java b/src/main/java/net/java/dev/typecast/exchange/SVGExporter.java index 3a774ec..d24d92e 100644 --- a/src/main/java/net/java/dev/typecast/exchange/SVGExporter.java +++ b/src/main/java/net/java/dev/typecast/exchange/SVGExporter.java @@ -132,59 +132,59 @@ public class SVGExporter if (offset == 0) { sb.append(PATH_MOVE) - .append(String.valueOf(point.x)) + .append(point.x) .append(XML_SPACE) - .append(String.valueOf(point.y)); + .append(point.y); } if (point.onCurve && point_plus1.onCurve) { if (point_plus1.x == point.x) { // This is a vertical line sb.append(PATH_VERTICAL_LINE_TO) - .append(String.valueOf(point_plus1.y)); + .append(point_plus1.y); } else if (point_plus1.y == point.y) { // This is a horizontal line sb.append(PATH_HORIZONTAL_LINE_TO) - .append(String.valueOf(point_plus1.x)); + .append(point_plus1.x); } else { sb.append(PATH_LINE_TO) - .append(String.valueOf(point_plus1.x)) + .append(point_plus1.x) .append(XML_SPACE) - .append(String.valueOf(point_plus1.y)); + .append(point_plus1.y); } offset++; } else if (point.onCurve && !point_plus1.onCurve && point_plus2.onCurve) { // This is a curve with no implied points sb.append(PATH_QUAD_TO) - .append(String.valueOf(point_plus1.x)) + .append(point_plus1.x) .append(XML_SPACE) - .append(String.valueOf(point_plus1.y)) + .append(point_plus1.y) .append(XML_SPACE) - .append(String.valueOf(point_plus2.x)) + .append(point_plus2.x) .append(XML_SPACE) - .append(String.valueOf(point_plus2.y)); + .append(point_plus2.y); offset+=2; } else if (point.onCurve && !point_plus1.onCurve && !point_plus2.onCurve) { // This is a curve with one implied point sb.append(PATH_QUAD_TO) - .append(String.valueOf(point_plus1.x)) + .append(point_plus1.x) .append(XML_SPACE) - .append(String.valueOf(point_plus1.y)) + .append(point_plus1.y) .append(XML_SPACE) - .append(String.valueOf(midValue(point_plus1.x, point_plus2.x))) + .append(midValue(point_plus1.x, point_plus2.x)) .append(XML_SPACE) - .append(String.valueOf(midValue(point_plus1.y, point_plus2.y))); + .append(midValue(point_plus1.y, point_plus2.y)); offset+=2; } else if (!point.onCurve && !point_plus1.onCurve) { // This is a curve with two implied points sb.append(PATH_SMOOTH_QUAD_TO) - .append(String.valueOf(midValue(point.x, point_plus1.x))) + .append(midValue(point.x, point_plus1.x)) .append(XML_SPACE) - .append(String.valueOf(midValue(point.y, point_plus1.y))); + .append(midValue(point.y, point_plus1.y)); offset++; } else if (!point.onCurve && point_plus1.onCurve) { sb.append(PATH_SMOOTH_QUAD_TO) - .append(String.valueOf(point_plus1.x)) + .append(point_plus1.x) .append(XML_SPACE) - .append(String.valueOf(point_plus1.y)); + .append(point_plus1.y); offset++; } else { System.out.println("drawGlyph case not catered for!!"); @@ -568,14 +568,19 @@ public class SVGExporter } private final TTFont _font; - private final int _low = 32; - private int _high = 127; + private final int _low; + private final int _high; private String _id; - private final boolean _ascii = false; - private final boolean _testCard = true; + private final boolean _ascii; + private final boolean _testCard; - public SVGExporter(TTFont font) { + public SVGExporter(TTFont font, int low, int high, String id, boolean ascii, boolean testCard) { _font = font; + _low = low; + _high = high; + _id = id; + _ascii = ascii; + _testCard = testCard; } /** @@ -587,9 +592,6 @@ public class SVGExporter public void export(OutputStream os) throws TableException { PrintStream ps = new PrintStream(os); - // TESTING - _high = 65536; - // Write the various parts of the SVG file writeSvgBegin(ps); writeSvgDefsBegin(ps); diff --git a/src/main/java/net/java/dev/typecast/ot/TTGlyph.java b/src/main/java/net/java/dev/typecast/ot/TTGlyph.java index 24a8df6..0752b0b 100644 --- a/src/main/java/net/java/dev/typecast/ot/TTGlyph.java +++ b/src/main/java/net/java/dev/typecast/ot/TTGlyph.java @@ -88,8 +88,9 @@ public class TTGlyph extends Glyph { */ private void describe(GlyphDescription gd) { int endPtIndex = 0; - _points = new Point[gd.getPointCount() + 2]; - for (int i = 0; i < gd.getPointCount(); i++) { + int pointCount = gd != null ? gd.getPointCount() : 0; + _points = new Point[pointCount + 2]; + for (int i = 0; i < pointCount; i++) { boolean endPt = gd.getEndPtOfContours(endPtIndex) == i; if (endPt) { endPtIndex++; @@ -102,7 +103,7 @@ public class TTGlyph extends Glyph { } // Append the origin and advanceWidth points (n & n+1) - _points[gd.getPointCount()] = new Point(0, 0, true, true); - _points[gd.getPointCount()+1] = new Point(_advanceWidth, 0, true, true); + _points[pointCount] = new Point(0, 0, true, true); + _points[pointCount+1] = new Point(_advanceWidth, 0, true, true); } } diff --git a/src/main/java/net/java/dev/typecast/exchange/Messages.properties b/src/main/resources/net/java/dev/typecast/exchange/Messages.properties index ef5e952..ef5e952 100644 --- a/src/main/java/net/java/dev/typecast/exchange/Messages.properties +++ b/src/main/resources/net/java/dev/typecast/exchange/Messages.properties diff --git a/src/test/java/net/java/dev/typecast/exchange/SVGExporterTest.java b/src/test/java/net/java/dev/typecast/exchange/SVGExporterTest.java new file mode 100644 index 0000000..11c8d4a --- /dev/null +++ b/src/test/java/net/java/dev/typecast/exchange/SVGExporterTest.java @@ -0,0 +1,62 @@ +/* + * Typecast + * + * Copyright © 2004-2019 David Schweinsberg + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.java.dev.typecast.exchange; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; +import net.java.dev.typecast.ot.TTFont; +import net.java.dev.typecast.ot.table.TableException; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.file.Files; + +public class SVGExporterTest extends TestCase { + /** + * Create the test case + * + * @param testName name of the test case + */ + public SVGExporterTest(String testName) { + super(testName); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() { + return new TestSuite(SVGExporterTest.class); + } + + public void testExportFont() throws URISyntaxException, IOException, TableException { + URL url = ClassLoader.getSystemResource("Lato-Regular.ttf"); + File file = new File(url.toURI()); + byte[] fontData = Files.readAllBytes(file.toPath()); + TTFont font = new TTFont(fontData, 0); + SVGExporter exporter = new SVGExporter(font, 32, 32, "abc", true, false); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + exporter.export(baos); + String svgString = baos.toString(); + System.out.println(svgString); + } +} diff --git a/src/test/java/net/java/dev/typecast/ot/OTFontCollectionTest.java b/src/test/java/net/java/dev/typecast/ot/OTFontCollectionTest.java index 3427d47..324a21d 100644 --- a/src/test/java/net/java/dev/typecast/ot/OTFontCollectionTest.java +++ b/src/test/java/net/java/dev/typecast/ot/OTFontCollectionTest.java @@ -20,7 +20,6 @@ package net.java.dev.typecast.ot; import java.io.File; import java.io.IOException; -import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import junit.framework.Test; |