Merged gcj-eclipse branch to trunk.
From-SVN: r120621
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/* AxisHints.java -- FIXME: briefly describe file purpose
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
class AxisHints
|
||||
{
|
||||
|
||||
Segment[] segments;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/* Constants.java -- Some constants used in the autofitter
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
/**
|
||||
* Some constants used in the autofitter.
|
||||
*/
|
||||
interface Constants
|
||||
{
|
||||
|
||||
/**
|
||||
* The horizontal dimension.
|
||||
*/
|
||||
static final int DIMENSION_HORZ = 0;
|
||||
|
||||
/**
|
||||
* The vertical dimension.
|
||||
*/
|
||||
static final int DIMENSION_VERT = 1;
|
||||
|
||||
/**
|
||||
* The number of dimensions.
|
||||
*/
|
||||
static final int DIMENSION_MAX = 2;
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
/* GlyphHints.java -- Data and methods for actual hinting
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
import gnu.java.awt.font.opentype.truetype.Zone;
|
||||
|
||||
/**
|
||||
* The data and methods used for the actual hinting process.
|
||||
*/
|
||||
class GlyphHints
|
||||
{
|
||||
|
||||
int xScale;
|
||||
int xDelta;
|
||||
int yScale;
|
||||
int yDelta;
|
||||
|
||||
AxisHints[] axis;
|
||||
|
||||
void rescale(ScriptMetrics metrics)
|
||||
{
|
||||
// TODO: Implement.
|
||||
}
|
||||
|
||||
void reload(Zone outline)
|
||||
{
|
||||
// TODO: Implement.
|
||||
}
|
||||
|
||||
void computeSegments(int dim)
|
||||
{
|
||||
// TODO: Implement.
|
||||
}
|
||||
|
||||
void linkSegments(int dim)
|
||||
{
|
||||
// TODO: Implement.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
/* Latin.java -- Latin specific glyph handling
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
import java.awt.geom.AffineTransform;
|
||||
|
||||
import gnu.java.awt.font.opentype.OpenTypeFont;
|
||||
import gnu.java.awt.font.opentype.truetype.Zone;
|
||||
|
||||
/**
|
||||
* Implements Latin specific glyph handling.
|
||||
*/
|
||||
class Latin
|
||||
implements Script, Constants
|
||||
{
|
||||
|
||||
private static final int MAX_WIDTHS = 16;
|
||||
|
||||
public void applyHints(GlyphHints hints, ScriptMetrics metrics)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public void doneMetrics(ScriptMetrics metrics)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the <code>hints</code> object.
|
||||
*
|
||||
* @param hints the hints to initialize
|
||||
* @param metrics the metrics to use
|
||||
*/
|
||||
public void initHints(GlyphHints hints, ScriptMetrics metrics)
|
||||
{
|
||||
hints.rescale(metrics);
|
||||
LatinMetrics lm = (LatinMetrics) metrics;
|
||||
hints.xScale = lm.axis[DIMENSION_HORZ].scale;
|
||||
hints.xDelta = lm.axis[DIMENSION_HORZ].delta;
|
||||
hints.yScale = lm.axis[DIMENSION_VERT].scale;
|
||||
hints.yDelta = lm.axis[DIMENSION_VERT].delta;
|
||||
// TODO: Set the scaler and other flags.
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the script metrics.
|
||||
*
|
||||
* @param metrics the script metrics to initialize
|
||||
* @param face the font
|
||||
*/
|
||||
public void initMetrics(ScriptMetrics metrics, OpenTypeFont face)
|
||||
{
|
||||
assert metrics instanceof LatinMetrics;
|
||||
LatinMetrics lm = (LatinMetrics) metrics;
|
||||
lm.unitsPerEm = face.unitsPerEm;
|
||||
|
||||
// TODO: Check for latin charmap.
|
||||
|
||||
initWidths(lm, face, 'o');
|
||||
initBlues(lm, face);
|
||||
}
|
||||
|
||||
public void scaleMetrics(ScriptMetrics metrics)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the standard stem widths.
|
||||
*
|
||||
* @param metrics the metrics to use
|
||||
* @param face the font face
|
||||
* @param ch the character that is used for getting the widths
|
||||
*/
|
||||
private void initWidths(LatinMetrics metrics, OpenTypeFont face, char ch)
|
||||
{
|
||||
GlyphHints hints = new GlyphHints();
|
||||
metrics.axis[DIMENSION_HORZ].widthCount = 0;
|
||||
metrics.axis[DIMENSION_VERT].widthCount = 0;
|
||||
int glyphIndex = face.getGlyph(ch);
|
||||
// TODO: Avoid that AffineTransform constructor and change
|
||||
// getRawGlyphOutline() to accept null or remove that parameter altogether.
|
||||
// Consider this when the thing is done and we know what we need that for.
|
||||
Zone outline = face.getRawGlyphOutline(glyphIndex, new AffineTransform());
|
||||
LatinMetrics dummy = new LatinMetrics();
|
||||
Scaler scaler = dummy.scaler;
|
||||
dummy.unitsPerEm = metrics.unitsPerEm;
|
||||
scaler.xScale = scaler.yScale = 10000;
|
||||
scaler.xDelta = scaler.yDelta = 0;
|
||||
scaler.face = face;
|
||||
hints.rescale(dummy);
|
||||
hints.reload(outline);
|
||||
for (int dim = 0; dim < DIMENSION_MAX; dim++)
|
||||
{
|
||||
LatinAxis axis = metrics.axis[dim];
|
||||
AxisHints axHints = hints.axis[dim];
|
||||
int numWidths = 0;
|
||||
hints.computeSegments(dim);
|
||||
hints.linkSegments(dim);
|
||||
Segment[] segs = axHints.segments;
|
||||
for (int i = 0; i < segs.length; i++)
|
||||
{
|
||||
Segment seg = segs[i];
|
||||
Segment link = seg.link;
|
||||
if (link != null && link.link == seg && link.index > i)
|
||||
{
|
||||
int dist = Math.abs(seg.pos - link.pos);
|
||||
if (numWidths < MAX_WIDTHS)
|
||||
axis.widths[numWidths++].org = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int dim = 0; dim < DIMENSION_MAX; dim++)
|
||||
{
|
||||
LatinAxis axis = metrics.axis[dim];
|
||||
int stdw = axis.widthCount > 0 ? axis.widths[0].org
|
||||
: constant(metrics, 50);
|
||||
axis.edgeDistanceTreshold= stdw / 5;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the blue zones of the font.
|
||||
*
|
||||
* @param metrics the metrics to use
|
||||
* @param face the font face to analyze
|
||||
*/
|
||||
private void initBlues(LatinMetrics metrics, OpenTypeFont face)
|
||||
{
|
||||
// TODO: Implement.
|
||||
}
|
||||
|
||||
private int constant(LatinMetrics metrics, int c)
|
||||
{
|
||||
return c * (metrics.unitsPerEm / 2048);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
/* LatinAxis.java -- Axis specific data
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
/**
|
||||
* Some axis specific data.
|
||||
*/
|
||||
class LatinAxis
|
||||
{
|
||||
|
||||
int scale;
|
||||
int delta;
|
||||
|
||||
int widthCount;
|
||||
Width[] widths;
|
||||
float edgeDistanceTreshold;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/* LatinMetrics.java -- Latin specific metrics data
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
/**
|
||||
* Latin specific metrics data.
|
||||
*/
|
||||
class LatinMetrics
|
||||
extends ScriptMetrics
|
||||
{
|
||||
|
||||
LatinAxis[] axis;
|
||||
|
||||
int unitsPerEm;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/* Scaler.java -- FIXME: briefly describe file purpose
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
import gnu.java.awt.font.opentype.OpenTypeFont;
|
||||
|
||||
class Scaler
|
||||
{
|
||||
|
||||
int xScale;
|
||||
int xDelta;
|
||||
int yScale;
|
||||
int yDelta;
|
||||
OpenTypeFont face;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* Script.java -- Defines script specific interface to the autofitter
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
import gnu.java.awt.font.opentype.OpenTypeFont;
|
||||
|
||||
/**
|
||||
* Defines script specific methods for the auto fitter.
|
||||
*/
|
||||
interface Script
|
||||
{
|
||||
|
||||
/**
|
||||
* Initializes the metrics.
|
||||
*/
|
||||
void initMetrics(ScriptMetrics metrics, OpenTypeFont face);
|
||||
|
||||
void scaleMetrics(ScriptMetrics metrics/* , scaler, map this */);
|
||||
|
||||
void doneMetrics(ScriptMetrics metrics);
|
||||
|
||||
void initHints(GlyphHints hints, ScriptMetrics metrics);
|
||||
|
||||
void applyHints(GlyphHints hints, /* some outline object, */
|
||||
ScriptMetrics metrics);
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/* ScriptMetrics.java -- Script specific metrics data
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
/**
|
||||
* Script specific metrics data.
|
||||
*/
|
||||
class ScriptMetrics
|
||||
{
|
||||
|
||||
Script script;
|
||||
Scaler scaler;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/* Segment.java -- FIXME: briefly describe file purpose
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
class Segment
|
||||
{
|
||||
|
||||
Segment link;
|
||||
int index;
|
||||
int pos;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/* Width.java -- FIXME: briefly describe file purpose
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.awt.font.autofit;
|
||||
|
||||
public class Width
|
||||
{
|
||||
int org;
|
||||
int cur;
|
||||
int fit;
|
||||
}
|
||||
@@ -61,7 +61,7 @@ import java.nio.IntBuffer;
|
||||
*
|
||||
* @author Sascha Brawer (brawer@dandelis.ch)
|
||||
*/
|
||||
abstract class CharGlyphMap
|
||||
public abstract class CharGlyphMap
|
||||
{
|
||||
private static final int PLATFORM_UNICODE = 0;
|
||||
private static final int PLATFORM_MACINTOSH = 1;
|
||||
|
||||
@@ -52,6 +52,7 @@ import java.util.Locale;
|
||||
import gnu.java.awt.font.FontDelegate;
|
||||
import gnu.java.awt.font.GNUGlyphVector;
|
||||
import gnu.java.awt.font.opentype.truetype.TrueTypeScaler;
|
||||
import gnu.java.awt.font.opentype.truetype.Zone;
|
||||
|
||||
|
||||
/**
|
||||
@@ -117,7 +118,7 @@ public final class OpenTypeFont
|
||||
* OpenType fonts with PostScript outlines, other values are
|
||||
* acceptable (such as 1000).
|
||||
*/
|
||||
private int unitsPerEm;
|
||||
public int unitsPerEm;
|
||||
|
||||
|
||||
/**
|
||||
@@ -697,6 +698,20 @@ public final class OpenTypeFont
|
||||
antialias, fractionalMetrics);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the raw glyph outline for the specified glyph index. This is used
|
||||
* for the autofitter only ATM and is otherwise not usable for outside code.
|
||||
*
|
||||
* @param glyph the glyph index to fetch
|
||||
* @param transform the transform to apply
|
||||
*
|
||||
* @return the raw outline of that glyph
|
||||
*/
|
||||
public synchronized Zone getRawGlyphOutline(int glyph,
|
||||
AffineTransform transform)
|
||||
{
|
||||
return scaler.getRawOutline(glyph, transform);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a name for the specified glyph. This is useful for
|
||||
|
||||
@@ -37,6 +37,8 @@ exception statement from your version. */
|
||||
|
||||
package gnu.java.awt.font.opentype;
|
||||
|
||||
import gnu.java.awt.font.opentype.truetype.Zone;
|
||||
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.GeneralPath;
|
||||
import java.awt.geom.Point2D;
|
||||
@@ -189,4 +191,14 @@ public abstract class Scaler
|
||||
boolean antialiased,
|
||||
boolean fractionalMetrics,
|
||||
boolean horizontal);
|
||||
|
||||
/**
|
||||
* Returns the raw outline data. This is used for the autofitter atm.
|
||||
*
|
||||
* @param glyph the glyph index
|
||||
* @param transform the transform to apply
|
||||
*
|
||||
* @return the raw glyph outline
|
||||
*/
|
||||
public abstract Zone getRawOutline(int glyph, AffineTransform transform);
|
||||
}
|
||||
|
||||
@@ -119,6 +119,11 @@ final class GlyphLoader
|
||||
0, 0);
|
||||
}
|
||||
|
||||
public void loadGlyph(int glyphIndex, AffineTransform transform,
|
||||
Zone glyphZone)
|
||||
{
|
||||
loadGlyph(glyphIndex, unitsPerEm, transform, false, glyphZone);
|
||||
}
|
||||
|
||||
private void loadSubGlyph(int glyphIndex,
|
||||
double pointSize,
|
||||
|
||||
@@ -198,6 +198,12 @@ public final class TrueTypeScaler
|
||||
return glyphZone.getPath();
|
||||
}
|
||||
|
||||
public Zone getRawOutline(int glyphIndex, AffineTransform transform)
|
||||
{
|
||||
Zone zone = new Zone(glyphZone.getCapacity());
|
||||
glyphLoader.loadGlyph(glyphIndex, transform, zone);
|
||||
return zone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the advance width and height for a glyph.
|
||||
|
||||
@@ -45,7 +45,7 @@ import java.awt.geom.PathIterator;
|
||||
/**
|
||||
* A collection of points with some additional information.
|
||||
*/
|
||||
final class Zone
|
||||
public final class Zone
|
||||
{
|
||||
private final int[] pos;
|
||||
private final int[] origPos;
|
||||
|
||||
Reference in New Issue
Block a user