summaryrefslogtreecommitdiffstats
path: root/turtle2d/src/jogamp/graph/font
diff options
context:
space:
mode:
Diffstat (limited to 'turtle2d/src/jogamp/graph/font')
-rw-r--r--turtle2d/src/jogamp/graph/font/FontConstructor.java34
-rw-r--r--turtle2d/src/jogamp/graph/font/FontInt.java50
-rw-r--r--turtle2d/src/jogamp/graph/font/JavaFontLoader.java129
-rw-r--r--turtle2d/src/jogamp/graph/font/UbuntuFontLoader.java132
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/CONTRIBUTING.txt21
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/FONTLOG.txt211
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE-FAQ.txt177
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE.txt96
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/README.txt15
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/TRADEMARKS.txt4
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-B.ttfbin339320 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-BI.ttfbin362784 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-L.ttfbin421172 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-LI.ttfbin415424 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-M.ttfbin346940 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-MI.ttfbin372728 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-R.ttfbin359668 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-RI.ttfbin389744 -> 0 bytes
-rw-r--r--turtle2d/src/jogamp/graph/font/fonts/ubuntu/copyright.txt5
-rw-r--r--turtle2d/src/jogamp/graph/font/typecast/TypecastFont.java268
-rw-r--r--turtle2d/src/jogamp/graph/font/typecast/TypecastFontConstructor.java53
-rw-r--r--turtle2d/src/jogamp/graph/font/typecast/TypecastGlyph.java232
-rw-r--r--turtle2d/src/jogamp/graph/font/typecast/TypecastHMetrics.java83
-rw-r--r--turtle2d/src/jogamp/graph/font/typecast/TypecastRenderer.java163
24 files changed, 0 insertions, 1673 deletions
diff --git a/turtle2d/src/jogamp/graph/font/FontConstructor.java b/turtle2d/src/jogamp/graph/font/FontConstructor.java
deleted file mode 100644
index a382d292e..000000000
--- a/turtle2d/src/jogamp/graph/font/FontConstructor.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font;
-
-import com.jogamp.graph.font.Font;
-
-public interface FontConstructor {
- Font create(String name);
-}
diff --git a/turtle2d/src/jogamp/graph/font/FontInt.java b/turtle2d/src/jogamp/graph/font/FontInt.java
deleted file mode 100644
index 4d9390da2..000000000
--- a/turtle2d/src/jogamp/graph/font/FontInt.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font;
-
-import jogamp.graph.geom.plane.AffineTransform;
-import jogamp.graph.geom.plane.Path2D;
-
-import com.jogamp.graph.font.Font;
-
-public interface FontInt extends Font {
-
- public interface Glyph extends Font.Glyph {
- // reserved special glyph IDs
- // http://scripts.sil.org/cms/scripts/page.php?item_id=IWS-Chapter08#ba57949e
- public static final int ID_UNKNOWN = 0;
- public static final int ID_CR = 2;
- public static final int ID_SPACE = 3;
-
- public Path2D getPath(); // unscaled path
- public Path2D getPath(float pixelSize);
- }
-
- public void getOutline(String string, float pixelSize,
- AffineTransform transform, Path2D[] result);
-}
diff --git a/turtle2d/src/jogamp/graph/font/JavaFontLoader.java b/turtle2d/src/jogamp/graph/font/JavaFontLoader.java
deleted file mode 100644
index 33505e797..000000000
--- a/turtle2d/src/jogamp/graph/font/JavaFontLoader.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font;
-
-import com.jogamp.common.util.IntObjectHashMap;
-import com.jogamp.graph.font.Font;
-import com.jogamp.graph.font.FontSet;
-import com.jogamp.graph.font.FontFactory;
-
-public class JavaFontLoader implements FontSet {
-
- final static FontSet fontLoader = new JavaFontLoader();
-
- public static FontSet get() {
- return fontLoader;
- }
-
- final static String availableFontFileNames[] =
- {
- /* 00 */ "LucidaBrightRegular.ttf",
- /* 01 */ "LucidaBrightItalic.ttf",
- /* 02 */ "LucidaBrightDemiBold.ttf",
- /* 03 */ "LucidaBrightDemiItalic.ttf",
- /* 04 */ "LucidaSansRegular.ttf",
- /* 05 */ "LucidaSansDemiBold.ttf",
- /* 06 */ "LucidaTypewriterRegular.ttf",
- /* 07 */ "LucidaTypewriterBold.ttf",
- };
-
- final String javaFontPath;
-
- private JavaFontLoader() {
- javaFontPath = System.getProperty("java.home") + "/lib/fonts/";
- }
-
- // FIXME: Add cache size to limit memory usage
- static final IntObjectHashMap fontMap = new IntObjectHashMap();
-
- static boolean is(int bits, int bit) {
- return 0 != ( bits & bit ) ;
- }
-
- public Font getDefault() {
- return get(FAMILY_REGULAR, 0) ; // Sans Serif Regular
- }
-
- public Font get(int family, int style) {
- Font font = (Font)fontMap.get( ( family << 8 ) | style );
- if (font != null) {
- return font;
- }
-
- // 1st process Sans Serif (2 fonts)
- if( is(style, STYLE_SERIF) ) {
- if( is(style, STYLE_BOLD) ) {
- font = abspath(availableFontFileNames[5], family, style);
- } else {
- font = abspath(availableFontFileNames[4], family, style);
- }
- fontMap.put( ( family << 8 ) | style, font );
- return font;
- }
-
- // Serif Fonts ..
- switch (family) {
- case FAMILY_LIGHT:
- case FAMILY_MEDIUM:
- case FAMILY_CONDENSED:
- case FAMILY_REGULAR:
- if( is(style, STYLE_BOLD) ) {
- if( is(style, STYLE_ITALIC) ) {
- font = abspath(availableFontFileNames[3], family, style);
- } else {
- font = abspath(availableFontFileNames[2], family, style);
- }
- } else if( is(style, STYLE_ITALIC) ) {
- font = abspath(availableFontFileNames[1], family, style);
- } else {
- font = abspath(availableFontFileNames[0], family, style);
- }
- break;
-
- case FAMILY_MONOSPACED:
- if( is(style, STYLE_BOLD) ) {
- font = abspath(availableFontFileNames[7], family, style);
- } else {
- font = abspath(availableFontFileNames[6], family, style);
- }
- break;
- }
-
- return font;
- }
-
- Font abspath(String fname, int family, int style) {
- final Font f = FontFactory.getFontConstr().create(javaFontPath+fname);
- if(null != f) {
- fontMap.put( ( family << 8 ) | style, f );
- }
- return f;
-
- }
-
-}
diff --git a/turtle2d/src/jogamp/graph/font/UbuntuFontLoader.java b/turtle2d/src/jogamp/graph/font/UbuntuFontLoader.java
deleted file mode 100644
index e09ea85e5..000000000
--- a/turtle2d/src/jogamp/graph/font/UbuntuFontLoader.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font;
-
-import com.jogamp.common.util.IntObjectHashMap;
-import com.jogamp.graph.font.Font;
-import com.jogamp.graph.font.FontSet;
-import com.jogamp.graph.font.FontFactory;
-import com.jogamp.opengl.util.Locator;
-
-public class UbuntuFontLoader implements FontSet {
-
- final static FontSet fontLoader = new UbuntuFontLoader();
-
- public static FontSet get() {
- return fontLoader;
- }
-
- final static String availableFontFileNames[] =
- {
- /* 00 */ "Ubuntu-R.ttf", // regular
- /* 01 */ "Ubuntu-RI.ttf", // regular italic
- /* 02 */ "Ubuntu-B.ttf", // bold
- /* 03 */ "Ubuntu-BI.ttf", // bold italic
- /* 04 */ "Ubuntu-L.ttf", // light
- /* 05 */ "Ubuntu-LI.ttf", // light italic
- /* 06 */ "Ubuntu-M.ttf", // medium
- /* 07 */ "Ubuntu-MI.ttf", // medium italic
-
- };
-
- final static String relPath = "fonts/ubuntu/" ;
-
- private UbuntuFontLoader() {
- }
-
- // FIXME: Add cache size to limit memory usage
- static final IntObjectHashMap fontMap = new IntObjectHashMap();
-
- static boolean is(int bits, int bit) {
- return 0 != ( bits & bit ) ;
- }
-
- public Font getDefault() {
- return get(FAMILY_REGULAR, 0) ; // Sans Serif Regular
- }
-
- public Font get(int family, int style)
- {
- Font font = (Font)fontMap.get( ( family << 8 ) | style );
- if (font != null) {
- return font;
- }
-
- switch (family) {
- case FAMILY_MONOSPACED:
- case FAMILY_CONDENSED:
- case FAMILY_REGULAR:
- if( is(style, STYLE_BOLD) ) {
- if( is(style, STYLE_ITALIC) ) {
- font = abspath(availableFontFileNames[3], family, style);
- } else {
- font = abspath(availableFontFileNames[2], family, style);
- }
- } else if( is(style, STYLE_ITALIC) ) {
- font = abspath(availableFontFileNames[1], family, style);
- } else {
- font = abspath(availableFontFileNames[0], family, style);
- }
- break;
-
- case FAMILY_LIGHT:
- if( is(style, STYLE_ITALIC) ) {
- font = abspath(availableFontFileNames[5], family, style);
- } else {
- font = abspath(availableFontFileNames[4], family, style);
- }
- break;
-
- case FAMILY_MEDIUM:
- if( is(style, STYLE_ITALIC) ) {
- font = abspath(availableFontFileNames[6], family, style);
- } else {
- font = abspath(availableFontFileNames[7], family, style);
- }
- break;
- }
-
- return font;
- }
-
- Font abspath(String fname) {
- return FontFactory.getFontConstr().create(
- Locator.getResource(UbuntuFontLoader.class, relPath+fname).getPath() );
- }
-
- Font abspath(String fname, int family, int style) {
- final Font f = FontFactory.getFontConstr().create(
- Locator.getResource(UbuntuFontLoader.class, relPath+fname).getPath() );
- if(null != f) {
- fontMap.put( ( family << 8 ) | style, f );
- }
- return f;
- }
-
-
-}
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/CONTRIBUTING.txt b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/CONTRIBUTING.txt
deleted file mode 100644
index 15bdc0c0b..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/CONTRIBUTING.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-The Ubuntu Font Family is very long-term endeavour, and the first time
-that a professionally-designed font has been funded specifically with
-the intent of being an on-going community expanded project:
-
- http://font.ubuntu.com/
-
-Development of the Ubuntu Font Family is undertaken on Launchpad:
-
- http://launchpad.net/ubuntu-font-family/
-
-and this is where milestones, bug management and releases are handled.
-
-Contributions are welcomed. Your work will be used on millions of
-computers every single day! Following the initial bootstrapping of
-Latin, Cyrillic, Greek, Arabic and Hebrew expansion will be undertaken
-by font designers from the font design and Ubuntu communities.
-
-To ensure that the Ubuntu Font Family can be re-licensed to future
-widely-used libre font licences, copyright assignment is being required:
-
- https://launchpad.net/~uff-contributors
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/FONTLOG.txt b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/FONTLOG.txt
deleted file mode 100644
index cf0e4c111..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/FONTLOG.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-This is the FONTLOG file for the Ubuntu Font Family and attempts to follow
-the recommendations at: http://scripts.sil.org/OFL-FAQ_web#43cecb44
-
-
-Overview
-
-The new Ubuntu Font Family was started to enable the personality of
-Ubuntu to be seen and felt in every menu, button and dialog.
-The typeface is sans-serif, uses OpenType features and is manually
-hinted for clarity on desktop and mobile computing screens.
-
-The scope of the Ubuntu Font Family includes all the languages used by
-the various Ubuntu users around the world in tune with Ubuntu's
-philosophy which states that every user should be able to use their
-software in the language of their choice. So the Ubuntu Font Family
-project will be extended to cover many more written languages.
-
-
-History
-
-The Ubuntu Font Family has been creating during 2010. As of December 2010
-coverage is provided for Latin, Cyrillic and Greek across Regular, Italic,
-Bold and Bold-Italic.
-
-
-ChangeLog
-
-2010-03-08 (Paul Sladen) Ubuntu Font Family version 0.71.2
-
- * (Production) Adjust Medium WeightClass to 500 (Md, MdIt) (LP: #730912)
-
-2010-03-07 (Paul Sladen) Ubuntu Font Family version 0.71.1
-
- * (Design) Add Capitalised version of glyphs and kern. (Lt, LtIt,
- Md, MdIt) DM (LP: #677446)
- * (Design) Re-space and tighen Regular and Italic by amount specified
- by Mark Shuttleworth (minus 4 FUnits). (Rg, It) (LP: #677149)
- * (Design) Design: Latin (U+0192) made straight more like l/c f with
- tail (LP: #670768)
- * (Design) (U+01B3) should have hook on right, as the lowercase
- (U+01B4) (LP: #681026)
- * (Design) Tail of Light Italic germandbls, longs and lowercase 'f'
- to match Italic/BoldItalic (LP: #623925)
- * (Production) Update <case> feature (Lt, LtIt, Md, MdIt). DM
- (LP: #676538, #676539)
- * (Production) Remove Bulgarian locl feature for Italics. (LP: #708578)
- * (Production) Update Description information with new string:
- "The Ubuntu Font Family are libre fonts funded by Canonical Ltd
- on behalf of the Ubuntu project. The font design work and
- technical implementation is being undertaken by Dalton Maag. The
- typeface is sans-serif, uses OpenType features and is manually
- hinted for clarity on desktop and mobile computing screens. The
- scope of the Ubuntu Font Family includes all the languages used
- by the various Ubuntu users around the world in tune with
- Ubuntu's philosophy which states that every user should be able
- to use their software in the language of their choice. The
- project is ongoing, and we expect the family will be extended to
- cover many written languages in the coming years."
- (Rg, It, Bd, BdIt, Lt, LtIt, Md, MdIt) (LP: #690590)
- * (Production) Pixel per em indicator added at U+F000 (Lt, LtIt, Md,
- MdIt) (LP: #615787)
- * (Production) Version number indicator added at U+EFFD (Lt, LtIt, Md,
- MdIt) (LP: #640623)
- * (Production) fstype bit set to 0 - Editable (Lt, LtIt, Md, MdIt)
- (LP: #648406)
- * (Production) Localisation of name table has been removed because
- of problems with Mac OS/X interpretation of localisation. DM
- (LP: #730785)
- * (Hinting) Regular '?' dot non-circular (has incorrect control
- value). (LP: #654336)
- * (Hinting) Too much space after latin capital 'G' in 13pt
- regular. Now reduced. (LP: #683437)
- * (Hinting) Balance Indian Rupee at 18,19pt (LP: #662177)
- * (Hinting) Make Regular '£' less ambiguous at 13-15 ppm (LP: #685562)
- * (Hinting) Regular capital 'W' made symmetrical at 31 ppem (LP: #686168)
-
-2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70.1
-
- Packaging, rebuilt from '2010-12-08 UbuntuFontsSourceFiles_070.zip':
- * (Midstream) Fstype bit != 0 (LP: #648406)
- * (Midstream) Add unit test to validate fstype bits (LP: #648406)
- * (Midstream) Add unit test to validate licence
-
-2010-12-14 (Paul Sladen) Ubuntu Font Family version 0.70
-
- Release notes 0.70:
- * (Design) Add Capitalised version of glyphs and kern. (Rg, It, Bd,
- BdIt) DM (LP: #676538, #677446)
- * (Design) Give acute and grave a slight upright move to more match
- the Hungarian double acute angle. (Rg, It, Bd, BdIt) (LP: #656647)
- * (Design) Shift Bold Italic accent glyphs to be consistent with the
- Italic. (BdIt only) DM (LP: #677449)
- * (Design) Check spacing and kerning of dcaron, lcaron and
- tcaron. (Rg, It, Bd, BdIt) (LP: #664722)
- * (Design) Add positive kerning to () {} [] to open out the
- combinations so they are less like a closed box. (Rg, It, Bd,
- BdIt) (LP: #671228)
- * (Design) Change design of acute.asc and check highest points (Bd
- and BdIt only) DM
- * (Production) Update <case> feature. DM (LP: #676538, #676539)
- * (Production) Remove Romanian locl feature. (Rg, It, Bd, BdIt)
- (LP: #635615)
- * (Production) Update Copyright information with new
- strings. "Copyright 2010 Canonical Ltd. Licensed under the Ubuntu
- Font Licence 1.0" Trademark string "Ubuntu and Canonical are
- registered trademarks of Canonical Ltd." (Rg, It, Bd, BdIt) DM
- (LP: #677450)
- * (Design) Check aligning of hyphen, math signs em, en, check braces
- and other brackets. 16/11 (LP: #676465)
- * (Production) Pixel per em indicator added at U+F000 (Rg, It, Bd,
- BdIt) (LP: #615787)
- * (Production) Version number indicator added at U+EFFD (Rg, It, Bd,
- BdIt) (LP: #640623)
- * (Production) fstype bit set to 0 - Editable (Rg, It, Bd, BdIt)
- (LP: #648406)
-
-2010-10-05 (Paul Sladen) Ubuntu Font Family version 0.69
-
- [Dalton Maag]
- * Italic,
- - Hinting on lowercase Italic l amended 19ppm (LP: #632451)
- - Hinting on lowercase Italic u amended 12ppm (LP: #626376)
-
- * Regular, Italic, Bold, BoldItalic
- - New Rupee Sign added @ U+20B9 (LP: #645987)
- - Ubuntu Roundel added @ U+E0FF (LP: #651606)
-
- [Paul Sladen]
- * All
- - Removed "!ubu" GSUB.calt ligature for U+E0FF (LP: #651606)
-
-
-Acknowledgements
-
-If you make modifications be sure to add your name (N), email (E),
-web-address (if you have one) (W) and description (D). This list is in
-alphabetical order.
-
-N: Amélie Bonet
-W: http://ameliebonet.com/
-D: Type design with Dalton Maag, particularly Ubuntu Mono
-
-N: Ron Carpenter
-N: Vincent Connare
-N: Lukas Paltram
-W: http://www.daltonmaag.com/
-D: Type design and engineering with Dalton Maag
-
-N: Dave Crossland
-W: http://understandingfonts.com/
-D: Documentation and libre licensing guidance
-
-N: Iain Farrell
-W: http://www.flickr.com/photos/iain
-D: Ubuntu Font Family delivery for the Ubuntu UX team
-
-N: Shiraaz Gabru
-W: http://www.daltonmaag.com/
-D: Ubuntu Font Family project management at Dalton Maag
-
-N: Marcus Haslam
-W: http://design.canonical.com/author/marcus-haslam/
-D: Creative inspiration
-
-N: Ben Laenen
-D: Inspiration behind the pixels-per-em (PPEM) readout debugging glyph at U+F000
- (for this font the concept was re-implemented from scratch by Dalton-Maag)
-
-N: Bruno Maag
-W: http://www.daltonmaag.com/
-D: Stylistic direction of the Ubuntu Font Family, as head of Dalton Maag
-
-N: Ivanka Majic
-W: http://www.ivankamajic.com/
-D: Guiding the UX team and Cyrillic feedback
-
-N: David Marshall
-N: Malcolm Wooden
-W: http://www.daltonmaag.com/
-D: Font Engineering and technical direction
-
-N: Rodrigo Rivas
-D: Indian Rupee Sign glyph
-
-N: Mark Shuttleworth
-W: http://www.markshuttleworth.com/
-D: Executive quality-control and funding
-
-N: Paul Sladen
-W: http://www.paul.sladen.org/
-D: Bug triaging, packaging
-
-N: Nicolas Spalinger
-W: http://planet.open-fonts.org
-D: Continuous guidance on libre/open font licensing, best practises in source
- tree layout, release and packaging (pkg-fonts Debian team)
-
-N: Kenneth Wimer
-D: Initial PPA packaging
-
-* Canonical Ltd is the primary commercial sponsor of the Ubuntu and
- Kubuntu operating systems
-* Dalton Maag are a custom type foundry headed by Bruno Maag
-
-For further documentation, information on contributors, source code
-downloads and those involved with the Ubuntu Font Family, visit:
-
- http://font.ubuntu.com/
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE-FAQ.txt b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE-FAQ.txt
deleted file mode 100644
index 776a25edf..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE-FAQ.txt
+++ /dev/null
@@ -1,177 +0,0 @@
- Ubuntu Font Family Licensing FAQ
-
- Stylistic Foundations
-
- The Ubuntu Font Family is the first time that a libre typeface has been
- designed professionally and explicitly with the intent of developing a
- public and long-term community-based development process.
-
- When developing an open project, it is generally necessary to have firm
- foundations: a font needs to maintain harmony within itself even across
- many type designers and writing systems. For the [1]Ubuntu Font Family,
- the process has been guided with the type foundry Dalton Maag setting
- the project up with firm stylistic foundation covering several
- left-to-right scripts: Latin, Greek and Cyrillic; and right-to-left
- scripts: Arabic and Hebrew (due in 2011).
-
- With this starting point the community will, under the supervision of
- [2]Canonical and [3]Dalton Maag, be able to build on the existing font
- sources to expand their character coverage. Ultimately everybody will
- be able to use the Ubuntu Font Family in their own written languages
- across the whole of Unicode (and this will take some time!).
-
- Licensing
-
- The licence chosen by any free software project is one of the
- foundational decisions that sets out how derivatives and contributions
- can occur, and in turn what kind of community will form around the
- project.
-
- Using a licence that is compatible with other popular licences is a
- powerful constraint because of the [4]network effects: the freedom to
- share improvements between projects allows free software to reach
- high-quality over time. Licence-proliferation leads to many
- incompatible licences, undermining the network effect, the freedom to
- share and ultimately making the libre movement that Ubuntu is a part of
- less effective. For all kinds of software, writing a new licence is not
- to be taken lightly and is a choice that needs to be thoroughly
- justified if this path is taken.
-
- Today it is not clear to Canonical what the best licence for a font
- project like the Ubuntu Font Family is: one that starts life designed
- by professionals and continues with the full range of community
- development, from highly commercial work in new directions to curious
- beginners' experimental contributions. The fast and steady pace of the
- Ubuntu release cycle means that an interim libre licence has been
- necessary to enable the consideration of the font family as part of
- Ubuntu 10.10 operating system release.
-
- Before taking any decision on licensing, Canonical as sponsor and
- backer of the project has reviewed the many existing licenses used for
- libre/open fonts and engaged the stewards of the most popular licenses
- in detailed discussions. The current interim licence is the first step
- in progressing the state-of-the-art in licensing for libre/open font
- development.
-
- The public discussion must now involve everyone in the (comparatively
- new) area of the libre/open font community; including font users,
- software freedom advocates, open source supporters and existing libre
- font developers. Most importantly, the minds and wishes of professional
- type designers considering entering the free software business
- community must be taken on board.
-
- Conversations and discussion has taken place, privately, with
- individuals from the following groups (generally speaking personally on
- behalf of themselves, rather than their affiliations):
- * [5]SIL International
- * [6]Open Font Library
- * [7]Software Freedom Law Center
- * [8]Google Font API
-
- Document embedding
-
- One issue highlighted early on in the survey of existing font licences
- is that of document embedding. Almost all font licences, both free and
- unfree, permit embedding a font into a document to a certain degree.
- Embedding a font with other works that make up a document creates a
- "combined work" and copyleft would normally require the whole document
- to be distributed under the terms of the font licence. As beautiful as
- the font might be, such a licence makes a font too restrictive for
- useful general purpose digital publishing.
-
- The situation is not entirely unique to fonts and is encountered also
- with tools such as GNU Bison: a vanilla GNU GPL licence would require
- anything generated with Bison to be made available under the terms of
- the GPL as well. To avoid this, Bison is [9]published with an
- additional permission to the GPL which allows the output of Bison to be
- made available under any licence.
-
- The conflict between licensing of fonts and licensing of documents, is
- addressed in two popular libre font licences, the SIL OFL and GNU GPL:
- * [10]SIL Open Font Licence: When OFL fonts are embedded in a
- document, the OFL's terms do not apply to that document. (See
- [11]OFL-FAQ for details.
- * [12]GPL Font Exception: The situation is resolved by granting an
- additional permission to allow documents to not be covered by the
- GPL. (The exception is being reviewed).
-
- The Ubuntu Font Family must also resolve this conflict, ensuring that
- if the font is embedded and then extracted it is once again clearly
- under the terms of its libre licence.
-
- Long-term licensing
-
- Those individuals involved, especially from Ubuntu and Canonical, are
- interested in finding a long-term libre licence that finds broad favour
- across the whole libre/open font community. The deliberation during the
- past months has been on how to licence the Ubuntu Font Family in the
- short-term, while knowingly encouraging everyone to pursue a long-term
- goal.
- * [13]Copyright assignment will be required so that the Ubuntu Font
- Family's licensing can be progressively expanded to one (or more)
- licences, as best practice continues to evolve within the
- libre/open font community.
- * Canonical will support and fund legal work on libre font licensing.
- It is recognised that the cost and time commitments required are
- likely to be significant. We invite other capable parties to join
- in supporting this activity.
-
- The GPL version 3 (GPLv3) will be used for Ubuntu Font Family build
- scripts and the CC-BY-SA for associated documentation and non-font
- content: all items which do not end up embedded in general works and
- documents.
-
-Ubuntu Font Licence
-
- For the short-term only, the initial licence is the [14]Ubuntu Font
- License (UFL). This is loosely inspired from the work on the SIL
- OFL 1.1, and seeks to clarify the issues that arose during discussions
- and legal review, from the perspective of the backers, Canonical Ltd.
- Those already using established licensing models such as the GPL, OFL
- or Creative Commons licensing should have no worries about continuing
- to use them. The Ubuntu Font Licence (UFL) and the SIL Open Font
- Licence (SIL OFL) are not identical and should not be confused with
- each other. Please read the terms precisely. The UFL is only intended
- as an interim license, and the overriding aim is to support the
- creation of a more suitable and generic libre font licence. As soon as
- such a licence is developed, the Ubuntu Font Family will migrate to
- it—made possible by copyright assignment in the interium. Between the
- OFL 1.1, and the UFL 1.0, the following changes are made to produce the
- Ubuntu Font Licence:
- * Clarification:
-
- 1. Document embedding (see [15]embedding section above).
- 2. Apply at point of distribution, instead of receipt
- 3. Author vs. copyright holder disambiguation (type designers are
- authors, with the copyright holder normally being the funder)
- 4. Define "Propagate" (for internationalisation, similar to the GPLv3)
- 5. Define "Substantially Changed"
- 6. Trademarks are explicitly not transferred
- 7. Refine renaming requirement
-
- Streamlining:
- 8. Remove "not to be sold separately" clause
- 9. Remove "Reserved Font Name(s)" declaration
-
- A visual demonstration of how these points were implemented can be
- found in the accompanying coloured diff between SIL OFL 1.1 and the
- Ubuntu Font Licence 1.0: [16]ofl-1.1-ufl-1.0.diff.html
-
-References
-
- 1. http://font.ubuntu.com/
- 2. http://www.canonical.com/
- 3. http://www.daltonmaag.com/
- 4. http://en.wikipedia.org/wiki/Network_effect
- 5. http://scripts.sil.org/
- 6. http://openfontlibrary.org/
- 7. http://www.softwarefreedom.org/
- 8. http://code.google.com/webfonts
- 9. http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF
- 10. http://scripts.sil.org/OFL_web
- 11. http://scripts.sil.org/OFL-FAQ_web
- 12. http://www.gnu.org/licenses/gpl-faq.html#FontException
- 13. https://launchpad.net/~uff-contributors
- 14. http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt
- 15. http://font.ubuntu.com/ufl/FAQ.html#embedding
- 16. http://font.ubuntu.com/ufl/ofl-1.1-ufl-1.0.diff.html
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE.txt b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE.txt
deleted file mode 100644
index ae78a8f94..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/LICENCE.txt
+++ /dev/null
@@ -1,96 +0,0 @@
--------------------------------
-UBUNTU FONT LICENCE Version 1.0
--------------------------------
-
-PREAMBLE
-This licence allows the licensed fonts to be used, studied, modified and
-redistributed freely. The fonts, including any derivative works, can be
-bundled, embedded, and redistributed provided the terms of this licence
-are met. The fonts and derivatives, however, cannot be released under
-any other licence. The requirement for fonts to remain under this
-licence does not require any document created using the fonts or their
-derivatives to be published under this licence, as long as the primary
-purpose of the document is not to be a vehicle for the distribution of
-the fonts.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this licence and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Original Version" refers to the collection of Font Software components
-as received under this licence.
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to
-a new environment.
-
-"Copyright Holder(s)" refers to all individuals and companies who have a
-copyright ownership of the Font Software.
-
-"Substantially Changed" refers to Modified Versions which can be easily
-identified as dissimilar to the Font Software by users of the Font
-Software comparing the Original Version with the Modified Version.
-
-To "Propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification and with or without charging
-a redistribution fee), making available to the public, and in some
-countries other activities as well.
-
-PERMISSION & CONDITIONS
-This licence does not grant any rights under trademark law and all such
-rights are reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of the Font Software, to propagate the Font Software, subject to
-the below conditions:
-
-1) Each copy of the Font Software must contain the above copyright
-notice and this licence. These can be included either as stand-alone
-text files, human-readable headers or in the appropriate machine-
-readable metadata fields within text or binary files as long as those
-fields can be easily viewed by the user.
-
-2) The font name complies with the following:
-(a) The Original Version must retain its name, unmodified.
-(b) Modified Versions which are Substantially Changed must be renamed to
-avoid use of the name of the Original Version or similar names entirely.
-(c) Modified Versions which are not Substantially Changed must be
-renamed to both (i) retain the name of the Original Version and (ii) add
-additional naming elements to distinguish the Modified Version from the
-Original Version. The name of such Modified Versions must be the name of
-the Original Version, with "derivative X" where X represents the name of
-the new work, appended to that name.
-
-3) The name(s) of the Copyright Holder(s) and any contributor to the
-Font Software shall not be used to promote, endorse or advertise any
-Modified Version, except (i) as required by this licence, (ii) to
-acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with
-their explicit written permission.
-
-4) The Font Software, modified or unmodified, in part or in whole, must
-be distributed entirely under this licence, and must not be distributed
-under any other licence. The requirement for fonts to remain under this
-licence does not affect any document created using the Font Software,
-except any version of the Font Software extracted from a document
-created using the Font Software may only be distributed under this
-licence.
-
-TERMINATION
-This licence becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
-COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
-DEALINGS IN THE FONT SOFTWARE.
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/README.txt b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/README.txt
deleted file mode 100644
index 292d4ade6..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/README.txt
+++ /dev/null
@@ -1,15 +0,0 @@
- ----------------------
- Ubuntu Font Family
- ======================
-
-The Ubuntu Font Family are a set of matching new libre/open fonts in
-development during 2010--2011. The development is being funded by
-Canonical Ltd on behalf the wider Free Software community and the
-Ubuntu project. The technical font design work and implementation is
-being undertaken by Dalton Maag.
-
-Both the final font Truetype/OpenType files and the design files used
-to produce the font family are distributed under an open licence and
-you are expressly encouraged to experiment, modify, share and improve.
-
- http://font.ubuntu.com/
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/TRADEMARKS.txt b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/TRADEMARKS.txt
deleted file mode 100644
index d34265bc8..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/TRADEMARKS.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Ubuntu and Canonical are registered trademarks of Canonical Ltd.
-
-The licence accompanying these works does not grant any rights
-under trademark law and all such rights are reserved.
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-B.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-B.ttf
deleted file mode 100644
index 7639344e7..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-B.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-BI.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-BI.ttf
deleted file mode 100644
index 337b8a88b..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-BI.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-L.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-L.ttf
deleted file mode 100644
index c3b0fa46d..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-L.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-LI.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-LI.ttf
deleted file mode 100644
index d65e8eab3..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-LI.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-M.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-M.ttf
deleted file mode 100644
index 387ef03fc..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-M.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-MI.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-MI.ttf
deleted file mode 100644
index 5b92fcb5d..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-MI.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-R.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-R.ttf
deleted file mode 100644
index a46446440..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-R.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-RI.ttf b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-RI.ttf
deleted file mode 100644
index 0e0955918..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/Ubuntu-RI.ttf
+++ /dev/null
Binary files differ
diff --git a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/copyright.txt b/turtle2d/src/jogamp/graph/font/fonts/ubuntu/copyright.txt
deleted file mode 100644
index 3a45d712e..000000000
--- a/turtle2d/src/jogamp/graph/font/fonts/ubuntu/copyright.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Copyright 2010 Canonical Ltd.
-
-This Font Software is licensed under the Ubuntu Font Licence, Version
-1.0. https://launchpad.net/ubuntu-font-licence
-
diff --git a/turtle2d/src/jogamp/graph/font/typecast/TypecastFont.java b/turtle2d/src/jogamp/graph/font/typecast/TypecastFont.java
deleted file mode 100644
index 0d018a314..000000000
--- a/turtle2d/src/jogamp/graph/font/typecast/TypecastFont.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font.typecast;
-
-import jogamp.graph.font.FontInt;
-import jogamp.graph.geom.plane.AffineTransform;
-import jogamp.graph.geom.plane.Path2D;
-import net.java.dev.typecast.ot.OTFont;
-import net.java.dev.typecast.ot.OTFontCollection;
-import net.java.dev.typecast.ot.table.CmapFormat;
-import net.java.dev.typecast.ot.table.CmapIndexEntry;
-import net.java.dev.typecast.ot.table.CmapTable;
-import net.java.dev.typecast.ot.table.HdmxTable;
-import net.java.dev.typecast.ot.table.ID;
-
-import com.jogamp.common.util.IntObjectHashMap;
-import com.jogamp.graph.geom.AABBox;
-
-class TypecastFont implements FontInt {
- static final boolean DEBUG = false;
-
- final OTFontCollection fontset;
- final OTFont font;
- TypecastHMetrics metrics;
- final CmapFormat cmapFormat;
- int cmapentries;
-
- // FIXME: Add cache size to limit memory usage ??
- IntObjectHashMap char2Glyph;
-
- public TypecastFont(OTFontCollection fontset) {
- this.fontset = fontset;
- this.font = fontset.getFont(0);
-
- // FIXME: Generic attempt to find the best CmapTable,
- // which is assumed to be the one with the most entries (stupid 'eh?)
- CmapTable cmapTable = font.getCmapTable();
- CmapFormat[] _cmapFormatP = { null, null, null, null };
- int platform = -1;
- int platformLength = -1;
- int encoding = -1;
- for(int i=0; i<cmapTable.getNumTables(); i++) {
- CmapIndexEntry cmapIdxEntry = cmapTable.getCmapIndexEntry(i);
- int pidx = cmapIdxEntry.getPlatformId();
- CmapFormat cf = cmapIdxEntry.getFormat();
- if(DEBUG) {
- System.err.println("CmapFormat["+i+"]: platform " + pidx +
- ", encoding "+cmapIdxEntry.getEncodingId() + ": "+cf);
- }
- if( _cmapFormatP[pidx] == null ||
- _cmapFormatP[pidx].getLength() < cf.getLength() ) {
- _cmapFormatP[pidx] = cf;
- if( cf.getLength() > platformLength ) {
- platformLength = cf.getLength() ;
- platform = pidx;
- encoding = cmapIdxEntry.getEncodingId();
- }
- }
- }
- if(0 <= platform) {
- cmapFormat = _cmapFormatP[platform];
- if(DEBUG) {
- System.err.println("Selected CmapFormat: platform " + platform +
- ", encoding "+encoding + ": "+cmapFormat);
- }
- } else {
- CmapFormat _cmapFormat = null;
- /*if(null == _cmapFormat) {
- platform = ID.platformMacintosh;
- encoding = ID.encodingASCII;
- _cmapFormat = cmapTable.getCmapFormat(platform, encoding);
- } */
- if(null == _cmapFormat) {
- // default unicode
- platform = ID.platformMicrosoft;
- encoding = ID.encodingUnicode;
- _cmapFormat = cmapTable.getCmapFormat((short)platform, (short)encoding);
- }
- if(null == _cmapFormat) {
- // maybe a symbol font ?
- platform = ID.platformMicrosoft;
- encoding = ID.encodingSymbol;
- _cmapFormat = cmapTable.getCmapFormat((short)platform, (short)encoding);
- }
- if(null == _cmapFormat) {
- throw new RuntimeException("Cannot find a suitable cmap table for font "+font);
- }
- cmapFormat = _cmapFormat;
- if(DEBUG) {
- System.err.println("Selected CmapFormat (2): platform " + platform + ", encoding "+encoding + ": "+cmapFormat);
- }
- }
-
- cmapentries = 0;
- for (int i = 0; i < cmapFormat.getRangeCount(); ++i) {
- CmapFormat.Range range = cmapFormat.getRange(i);
- cmapentries += range.getEndCode() - range.getStartCode() + 1; // end included
- }
- if(DEBUG) {
- System.err.println("num glyphs: "+font.getNumGlyphs());
- System.err.println("num cmap entries: "+cmapentries);
- System.err.println("num cmap ranges: "+cmapFormat.getRangeCount());
-
- for (int i = 0; i < cmapFormat.getRangeCount(); ++i) {
- CmapFormat.Range range = cmapFormat.getRange(i);
- for (int j = range.getStartCode(); j <= range.getEndCode(); ++j) {
- final int code = cmapFormat.mapCharCode(j);
- if(code < 15) {
- System.err.println(" char: " + (int)j + " ( " + (char)j +" ) -> " + code);
- }
- }
- }
- }
- char2Glyph = new IntObjectHashMap(cmapentries + cmapentries/4);
- }
-
- public String getName() {
- return fontset.getFileName();
- }
-
- public Metrics getMetrics() {
- if (metrics == null) {
- metrics = new TypecastHMetrics(this);
- }
- return metrics;
- }
-
- public Glyph getGlyph(char symbol) {
- TypecastGlyph result = (TypecastGlyph) char2Glyph.get(symbol);
- if (null == result) {
- // final short code = (short) char2Code.get(symbol);
- short code = (short) cmapFormat.mapCharCode(symbol);
- if(0 == code && 0 != symbol) {
- // reserved special glyph IDs by convention
- switch(symbol) {
- case ' ': code = Glyph.ID_SPACE; break;
- case '\n': code = Glyph.ID_CR; break;
- default: code = Glyph.ID_UNKNOWN;
- }
- }
-
- net.java.dev.typecast.ot.OTGlyph glyph = font.getGlyph(code);
- if(null == glyph) {
- glyph = font.getGlyph(Glyph.ID_UNKNOWN);
- }
- if(null == glyph) {
- throw new RuntimeException("Could not retrieve glyph for symbol: <"+symbol+"> "+(int)symbol+" -> glyph id "+code);
- }
- Path2D path = TypecastRenderer.buildPath(glyph);
- result = new TypecastGlyph(this, symbol, code, glyph.getBBox(), glyph.getAdvanceWidth(), path);
- if(DEBUG) {
- System.err.println("New glyph: " + (int)symbol + " ( " + (char)symbol +" ) -> " + code + ", contours " + glyph.getPointCount() + ": " + path);
- }
- final HdmxTable hdmx = font.getHdmxTable();
- if (null!= result && null != hdmx) {
- /*if(DEBUG) {
- System.err.println("hdmx "+hdmx);
- }*/
- for (int i=0; i<hdmx.getNumberOfRecords(); i++)
- {
- final HdmxTable.DeviceRecord dr = hdmx.getRecord(i);
- result.addAdvance(dr.getWidth(code), dr.getPixelSize());
- if(DEBUG) {
- System.err.println("hdmx advance : pixelsize = "+dr.getWidth(code)+" : "+ dr.getPixelSize());
- }
- }
- }
- char2Glyph.put(symbol, result);
- }
- return result;
- }
-
- public void getOutline(String string, float pixelSize, AffineTransform transform, Path2D[] result) {
- TypecastRenderer.getOutline(this, string, pixelSize, transform, result);
- }
-
- public float getStringWidth(String string, float pixelSize) {
- float width = 0;
- final int len = string.length();
- for (int i=0; i< len; i++)
- {
- char character = string.charAt(i);
- if (character == '\n') {
- width = 0;
- } else {
- Glyph glyph = getGlyph(character);
- width += glyph.getAdvance(pixelSize, false);
- }
- }
-
- return (int)(width + 0.5f);
- }
-
- public float getStringHeight(String string, float pixelSize) {
- int height = 0;
-
- for (int i=0; i<string.length(); i++)
- {
- char character = string.charAt(i);
- if (character != ' ')
- {
- Glyph glyph = getGlyph(character);
- AABBox bbox = glyph.getBBox(pixelSize);
- height = (int)Math.ceil(Math.max(bbox.getHeight(), height));
- }
- }
- return height;
- }
-
- public AABBox getStringBounds(CharSequence string, float pixelSize) {
- if (string == null) {
- return new AABBox();
- }
- final Metrics metrics = getMetrics();
- final float lineGap = metrics.getLineGap(pixelSize);
- final float ascent = metrics.getAscent(pixelSize);
- final float descent = metrics.getDescent(pixelSize);
- final float advanceY = lineGap - descent + ascent;
- float totalHeight = 0;
- float totalWidth = 0;
- float curLineWidth = 0;
- for (int i=0; i<string.length(); i++) {
- char character = string.charAt(i);
- if (character == '\n') {
- totalWidth = Math.max(curLineWidth, totalWidth);
- curLineWidth = 0;
- totalHeight -= advanceY;
- continue;
- }
- Glyph glyph = getGlyph(character);
- curLineWidth += glyph.getAdvance(pixelSize, true);
- }
- if (curLineWidth > 0) {
- totalHeight -= advanceY;
- totalWidth = Math.max(curLineWidth, totalWidth);
- }
- return new AABBox(0, 0, 0, totalWidth, totalHeight,0);
- }
-
- final public int getNumGlyphs() {
- return font.getNumGlyphs();
- }
-} \ No newline at end of file
diff --git a/turtle2d/src/jogamp/graph/font/typecast/TypecastFontConstructor.java b/turtle2d/src/jogamp/graph/font/typecast/TypecastFontConstructor.java
deleted file mode 100644
index 5fb9d32f7..000000000
--- a/turtle2d/src/jogamp/graph/font/typecast/TypecastFontConstructor.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font.typecast;
-
-import java.io.File;
-import java.io.IOException;
-
-import jogamp.graph.font.FontConstructor;
-
-import net.java.dev.typecast.ot.OTFontCollection;
-
-import com.jogamp.graph.font.Font;
-
-
-public class TypecastFontConstructor implements FontConstructor {
-
- public Font create(String path) {
- OTFontCollection fontset;
- try {
- fontset = OTFontCollection.create(new File(path));
- return new TypecastFont(fontset);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
-
-} \ No newline at end of file
diff --git a/turtle2d/src/jogamp/graph/font/typecast/TypecastGlyph.java b/turtle2d/src/jogamp/graph/font/typecast/TypecastGlyph.java
deleted file mode 100644
index 88d865f9c..000000000
--- a/turtle2d/src/jogamp/graph/font/typecast/TypecastGlyph.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font.typecast;
-
-import java.util.HashMap;
-
-import jogamp.graph.font.FontInt;
-import jogamp.graph.geom.plane.AffineTransform;
-import jogamp.graph.geom.plane.Path2D;
-
-import com.jogamp.graph.font.Font;
-import com.jogamp.graph.geom.AABBox;
-
-public class TypecastGlyph implements FontInt.Glyph {
- public class Advance
- {
- final Font font;
- final float advance;
- HashMap<Float, Float> size2advance = new HashMap<Float, Float>();
-
- public Advance(Font font, float advance)
- {
- this.font = font;
- this.advance = advance;
- }
-
- public void reset() {
- size2advance.clear();
- }
-
- public float getScale(float pixelSize)
- {
- return this.font.getMetrics().getScale(pixelSize);
- }
-
- public void add(float advance, float size)
- {
- size2advance.put(size, advance);
- }
-
- public float get(float size, boolean useFrationalMetrics)
- {
- Float fo = size2advance.get(size);
- if(null == fo) {
- float value = (this.advance * getScale(size));
- if (useFrationalMetrics == false) {
- //value = (float)Math.ceil(value);
- // value = (int)value;
- value = (int) ( value + 0.5f ) ; // TODO: check
- }
- size2advance.put(size, value);
- return value;
- }
- return fo.floatValue();
- }
-
- public String toString()
- {
- return "\nAdvance:"+
- "\n advance: "+this.advance+
- "\n advances: \n"+size2advance;
- }
- }
-
- public class Metrics
- {
- AABBox bbox;
- Advance advance;
-
- public Metrics(Font font, AABBox bbox, float advance)
- {
- this.bbox = bbox;
- this.advance = new Advance(font, advance);
- }
-
- public void reset() {
- advance.reset();
- }
-
- public float getScale(float pixelSize)
- {
- return this.advance.getScale(pixelSize);
- }
-
- public AABBox getBBox()
- {
- return this.bbox;
- }
-
- public void addAdvance(float advance, float size)
- {
- this.advance.add(advance, size);
- }
-
- public float getAdvance(float size, boolean useFrationalMetrics)
- {
- return this.advance.get(size, useFrationalMetrics);
- }
-
- public String toString()
- {
- return "\nMetrics:"+
- "\n bbox: "+this.bbox+
- this.advance;
- }
- }
-
- public static final short INVALID_ID = (short)((1 << 16) - 1);
- public static final short MAX_ID = (short)((1 << 16) - 2);
-
- private final Font font;
-
- char symbol;
- short id;
- int advance;
- Metrics metrics;
-
- protected Path2D path; // in EM units
- protected Path2D pathSized;
- protected float numberSized;
-
- protected TypecastGlyph(Font font, char symbol) {
- this.font = font;
- this.symbol = symbol;
- }
-
- protected TypecastGlyph(Font font,
- char symbol, short id, AABBox bbox, int advance, Path2D path) {
- this.font = font;
- this.symbol = symbol;
- this.advance = advance;
-
- init(id, bbox, advance);
-
- this.path = path;
- this.pathSized = null;
- this.numberSized = 0.0f;
- }
-
- void init(short id, AABBox bbox, int advance) {
- this.id = id;
- this.advance = advance;
- this.metrics = new Metrics(this.font, bbox, this.advance);
- }
-
- public void reset(Path2D path) {
- this.path = path;
- this.metrics.reset();
- }
-
- public Font getFont() {
- return this.font;
- }
-
- public char getSymbol() {
- return this.symbol;
- }
-
- AABBox getBBoxUnsized() {
- return this.metrics.getBBox();
- }
-
- public AABBox getBBox() {
- return this.metrics.getBBox();
- }
-
- public Metrics getMetrics() {
- return this.metrics;
- }
-
- public short getID() {
- return this.id;
- }
-
- public float getScale(float pixelSize) {
- return this.metrics.getScale(pixelSize);
- }
-
- public AABBox getBBox(float pixelSize) {
- final float size = getScale(pixelSize);
- AABBox newBox = getBBox().clone();
- newBox.scale(size);
- return newBox;
- }
-
- protected void addAdvance(float advance, float size) {
- this.metrics.addAdvance(advance, size);
- }
-
- public float getAdvance(float pixelSize, boolean useFrationalMetrics) {
- return this.metrics.getAdvance(pixelSize, useFrationalMetrics);
- }
-
- public Path2D getPath() {
- return this.path;
- }
-
- public Path2D getPath(float pixelSize) {
- final float size = getScale(pixelSize);
-
- if (this.numberSized != size) {
- this.numberSized = size;
- this.pathSized = AffineTransform.getScaleInstance(null, size, size).createTransformedShape(getPath());
- }
- return this.pathSized;
- }
-}
diff --git a/turtle2d/src/jogamp/graph/font/typecast/TypecastHMetrics.java b/turtle2d/src/jogamp/graph/font/typecast/TypecastHMetrics.java
deleted file mode 100644
index cd8595498..000000000
--- a/turtle2d/src/jogamp/graph/font/typecast/TypecastHMetrics.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font.typecast;
-
-import net.java.dev.typecast.ot.table.HeadTable;
-import net.java.dev.typecast.ot.table.HheaTable;
-import com.jogamp.graph.font.Font.Metrics;
-import com.jogamp.graph.geom.AABBox;
-
-class TypecastHMetrics implements Metrics {
- private final TypecastFont fontImpl;
-
- // HeadTable
- private final HeadTable headTable;
- private final float unitsPerEM_Inv;
- private final AABBox bbox;
- // HheaTable
- private final HheaTable hheaTable;
- // VheaTable (for horizontal fonts)
- // private final VheaTable vheaTable;
-
- public TypecastHMetrics(TypecastFont fontImpl) {
- this.fontImpl = fontImpl;
- headTable = this.fontImpl.font.getHeadTable();
- hheaTable = this.fontImpl.font.getHheaTable();
- // vheaTable = this.fontImpl.font.getVheaTable();
- unitsPerEM_Inv = 1.0f / ( (float) headTable.getUnitsPerEm() );
-
- int maxWidth = headTable.getXMax() - headTable.getXMin();
- int maxHeight = headTable.getYMax() - headTable.getYMin();
- float lowx= headTable.getXMin();
- float lowy = -(headTable.getYMin()+maxHeight);
- float highx = lowx + maxWidth;
- float highy = lowy + maxHeight;
- bbox = new AABBox(lowx, lowy, 0, highx, highy, 0); // invert
- }
-
- public final float getAscent(float pixelSize) {
- return getScale(pixelSize) * -hheaTable.getAscender(); // invert
- }
- public final float getDescent(float pixelSize) {
- return getScale(pixelSize) * -hheaTable.getDescender(); // invert
- }
- public final float getLineGap(float pixelSize) {
- return getScale(pixelSize) * -hheaTable.getLineGap(); // invert
- }
- public final float getMaxExtend(float pixelSize) {
- return getScale(pixelSize) * hheaTable.getXMaxExtent();
- }
- public final float getScale(float pixelSize) {
- return pixelSize * unitsPerEM_Inv;
- }
- public final AABBox getBBox(float pixelSize) {
- AABBox res = new AABBox(bbox.getLow(), bbox.getHigh());
- res.scale(getScale(pixelSize));
- return res;
- }
-} \ No newline at end of file
diff --git a/turtle2d/src/jogamp/graph/font/typecast/TypecastRenderer.java b/turtle2d/src/jogamp/graph/font/typecast/TypecastRenderer.java
deleted file mode 100644
index 410f5b73a..000000000
--- a/turtle2d/src/jogamp/graph/font/typecast/TypecastRenderer.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Copyright 2011 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package jogamp.graph.font.typecast;
-
-import jogamp.graph.geom.plane.AffineTransform;
-import jogamp.graph.geom.plane.Path2D;
-
-import com.jogamp.graph.font.Font;
-import net.java.dev.typecast.ot.Point;
-import net.java.dev.typecast.ot.OTGlyph;
-
-/**
- * Factory to build a {@link com.jogamp.graph.geom.Path2D Path2D} from
- * {@link net.java.dev.typecast.ot.OTGlyph Glyph}s.
- */
-public class TypecastRenderer {
-
- public static void getOutline(TypecastFont font,
- String string, float pixelSize, AffineTransform transform, Path2D[] p)
- {
- if (string == null) {
- return;
- }
- Font.Metrics metrics = font.getMetrics();
- float advanceTotal = 0;
- float lineGap = metrics.getLineGap(pixelSize) ;
- float ascent = metrics.getAscent(pixelSize) ;
- float descent = metrics.getDescent(pixelSize) ;
- if (transform == null) {
- transform = new AffineTransform();
- }
- AffineTransform t = new AffineTransform();
-
- float advanceY = lineGap - descent + ascent;
- float y = 0;
- for (int i=0; i<string.length(); i++)
- {
- p[i] = new Path2D();
- p[i].reset();
- t.setTransform(transform);
- char character = string.charAt(i);
- if (character == '\n') {
- y -= advanceY;
- advanceTotal = 0;
- continue;
- } else if (character == ' ') {
- advanceTotal += font.font.getHmtxTable().getAdvanceWidth(TypecastGlyph.ID_SPACE) * metrics.getScale(pixelSize);
- continue;
- }
- TypecastGlyph glyph = (TypecastGlyph) font.getGlyph(character);
- Path2D gp = glyph.getPath();
- float scale = metrics.getScale(pixelSize);
- t.translate(advanceTotal, y);
- t.scale(scale, scale);
- p[i].append(gp.iterator(t), false);
- advanceTotal += glyph.getAdvance(pixelSize, true);
- }
- }
-
- /**
- * Build a {@link com.jogamp.graph.geom.Path2D Path2D} from a
- * {@link net.java.dev.typecast.ot.OTGlyph Glyph}. This glyph path can then
- * be transformed and rendered.
- */
- public static Path2D buildPath(OTGlyph glyph) {
-
- if (glyph == null) {
- return null;
- }
-
- Path2D glyphPath = new Path2D();
-
- // Iterate through all of the points in the glyph. Each time we find a
- // contour end point, add the point range to the path.
- int firstIndex = 0;
- int count = 0;
- for (int i = 0; i < glyph.getPointCount(); i++) {
- count++;
- if (glyph.getPoint(i).endOfContour) {
- addContourToPath(glyphPath, glyph, firstIndex, count);
- firstIndex = i + 1;
- count = 0;
- }
- }
- return glyphPath;
- }
-
- private static void addContourToPath(Path2D gp, OTGlyph glyph, int startIndex, int count) {
- int offset = 0;
- while (offset < count) {
- Point point = glyph.getPoint(startIndex + offset%count);
- Point point_plus1 = glyph.getPoint(startIndex + (offset+1)%count);
- Point point_plus2 = glyph.getPoint(startIndex + (offset+2)%count);
- if(offset == 0)
- {
- gp.moveTo(point.x, -point.y);
- }
-
- if (point.onCurve) {
- if (point_plus1.onCurve) {
- // s = new Line2D.Float(point.x, -point.y, point_plus1.x, -point_plus1.y);
- gp.lineTo( point_plus1.x, -point_plus1.y );
- offset++;
- } else {
- if (point_plus2.onCurve) {
- // s = new QuadCurve2D.Float( point.x, -point.y, point_plus1.x, -point_plus1.y, point_plus2.x, -point_plus2.y);
- gp.quadTo(point_plus1.x, -point_plus1.y, point_plus2.x, -point_plus2.y);
- offset+=2;
- } else {
- // s = new QuadCurve2D.Float(point.x,-point.y,point_plus1.x,-point_plus1.y,
- // midValue(point_plus1.x, point_plus2.x), -midValue(point_plus1.y, point_plus2.y));
- gp.quadTo(point_plus1.x, -point_plus1.y, midValue(point_plus1.x, point_plus2.x), -midValue(point_plus1.y, point_plus2.y));
- offset+=2;
- }
- }
- } else {
- if (point_plus1.onCurve) {
- // s = new QuadCurve2D.Float(midValue(point_minus1.x, point.x), -midValue(point_minus1.y, point.y),
- // point.x, -point.y, point_plus1.x, -point_plus1.y);
- //gp.curve3(point_plus1.x, -point_plus1.y, point.x, -point.y);
- gp.quadTo(point.x, -point.y, point_plus1.x, -point_plus1.y);
- offset++;
-
- } else {
- // s = new QuadCurve2D.Float(midValue(point_minus1.x, point.x), -midValue(point_minus1.y, point.y), point.x, -point.y,
- // midValue(point.x, point_plus1.x), -midValue(point.y, point_plus1.y));
- //gp.curve3(midValue(point.x, point_plus1.x), -midValue(point.y, point_plus1.y), point.x, -point.y);
- gp.quadTo(point.x, -point.y, midValue(point.x, point_plus1.x), -midValue(point.y, point_plus1.y));
- offset++;
- }
- }
- }
- }
-
- private static int midValue(int a, int b) {
- return a + (b - a)/2;
- }
-}