a bunch of font work that prolly breaks things too...

This commit is contained in:
benfry
2005-04-16 01:34:10 +00:00
parent 87ba178f8c
commit fc1432316a
7 changed files with 354 additions and 112 deletions
+4 -1
View File
@@ -150,6 +150,9 @@ public class CreateFont extends JFrame {
*/
int index = 0;
for (int i = 0; i < fonts.length; i++) {
String psname = fonts[i].getPSName();
if (psname == null) System.err.println("ps name is null");
flist[index++] = fonts[i].getPSName();
table.put(fonts[i].getPSName(), fonts[i]);
}
@@ -407,7 +410,7 @@ public class CreateFont extends JFrame {
try {
Font instance = (Font) table.get(list[selection]);
font = instance.deriveFont(Font.PLAIN, fontsize);
PFont f = new PFont(font, all, smooth);
PFont f = new PFont(font, all ? null : PFont.DEFAULT_CHARSET, smooth);
// make sure the 'data' folder exists
if (!targetFolder.exists()) targetFolder.mkdirs();
+17
View File
@@ -4026,6 +4026,11 @@ public class PApplet extends Applet
return what & 0xff;
}
/**
* Note that toInt('5') is unlike String in the sense that it
* won't return 5, but the ascii value. This is because ((int) someChar)
* returns the ascii value, and toInt() is just longhand for the cast.
*/
static final public int toInt(char what) {
return what;
}
@@ -5762,6 +5767,12 @@ v PApplet.this.stop();
}
public void ortho() {
if (recorder != null) recorder.ortho();
g.ortho();
}
public void ortho(float left, float right,
float bottom, float top,
float near, float far) {
@@ -5770,6 +5781,12 @@ v PApplet.this.stop();
}
public void perspective() {
if (recorder != null) recorder.perspective();
g.perspective();
}
public void perspective(float fovy, float aspect, float zNear, float zFar) {
if (recorder != null) recorder.perspective(fovy, aspect, zNear, zFar);
g.perspective(fovy, aspect, zNear, zFar);
+68 -25
View File
@@ -59,6 +59,17 @@ public class PFont implements PConstants {
public int charCount;
public PImage images[];
/**
* Name of the font as seen by Java when it was created.
* If the font is available, the native version will be used.
*/
public String name;
/**
* Postscript name of the font that this bitmap was created from.
*/
public String psname;
/** "natural" size of the font (most often 48) */
public int size;
@@ -104,7 +115,10 @@ public class PFont implements PConstants {
charCount = is.readInt();
// bit count is ignored since this is always 8
int numBits = is.readInt();
//int numBits = is.readInt();
// used to be the bitCount, but now used for version number.
// version 8 is any font before 69, so 9 is anything from 83+
int version = is.readInt();
// this was formerly ignored, now it's the actual font size
//mbox = is.readInt();
@@ -199,6 +213,11 @@ public class PFont implements PConstants {
}
//System.out.println();
}
if (version == 9) { // includes the font name at the end of the file
name = is.readUTF();
psname = is.readUTF();
}
}
@@ -210,7 +229,10 @@ public class PFont implements PConstants {
DataOutputStream os = new DataOutputStream(output);
os.writeInt(charCount);
os.writeInt(8); // numBits
// formerly numBits, now used for version number
os.writeInt((name != null) ? 9 : 8);
os.writeInt(size); // formerly mboxX (was 64, now 48)
os.writeInt(mbox2); // formerly mboxY (was 64, still 64)
os.writeInt(ascent); // formerly baseHt (was ignored)
@@ -233,8 +255,12 @@ public class PFont implements PConstants {
}
}
}
if (name != null) { // version 9
os.writeUTF(name);
}
os.flush();
//os.close(); // can/should i do this?
}
@@ -370,7 +396,8 @@ public class PFont implements PConstants {
x -= parent.textSize * width(c);
}
textImpl(c, x, y, z, parent);
//textImpl(c, x, y, z, parent);
parent.textImpl(c, x, y, z);
}
@@ -378,6 +405,7 @@ public class PFont implements PConstants {
* Internal function to draw a character at an x, y, z position.
* This version is called after the textM
*/
/*
protected void textImpl(char c, float x, float y, float z,
PGraphics parent) {
int glyph = index(c);
@@ -475,6 +503,7 @@ public class PFont implements PConstants {
}
}
}
*/
public void text(String str, float x, float y, PGraphics parent) {
@@ -516,7 +545,8 @@ public class PFont implements PConstants {
}
for (int index = start; index < stop; index++) {
textImpl(textBuffer[index], x, y, z, parent);
//textImpl(textBuffer[index], x, y, z, parent);
parent.textImpl(textBuffer[index], x, y, z);
x += parent.textSize *width(textBuffer[index]);
}
}
@@ -533,6 +563,7 @@ public class PFont implements PConstants {
/**
* Draw text in a box that is constrained to a particular size.
* <P>
* The parent PApplet will have converted the coords based on
* the current rectMode().
* <P>
@@ -642,19 +673,6 @@ public class PFont implements PConstants {
//////////////////////////////////////////////////////////////
/**
* This is the union of the Mac Roman and Windows ANSI
* character sets. ISO Latin 1 would be Unicode characters
* 0x80 -> 0xFF, but in practice, it would seem that most
* designers using P5 would rather have the characters
* that they expect from their platform's fonts.
*
* This is more of an interim solution until a much better
* font solution can be determined. (i.e. create fonts on
* the fly from some sort of vector format).
*
* Not that I expect that to happen.
*/
static final char[] EXTRA_CHARS = {
0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
@@ -686,15 +704,31 @@ public class PFont implements PConstants {
0xFB01, 0xFB02
};
static char[] charset;
/**
* The default Processing character set.
* <P>
* This is the union of the Mac Roman and Windows ANSI
* character sets. ISO Latin 1 would be Unicode characters
* 0x80 -> 0xFF, but in practice, it would seem that most
* designers using P5 would rather have the characters
* that they expect from their platform's fonts.
* <P>
* This is more of an interim solution until a much better
* font solution can be determined. (i.e. create fonts on
* the fly from some sort of vector format).
* <P>
* Not that I expect that to happen.
*/
static public char[] DEFAULT_CHARSET;
static {
charset = new char[126-33+1 + EXTRA_CHARS.length];
DEFAULT_CHARSET = new char[126-33+1 + EXTRA_CHARS.length];
int index = 0;
for (int i = 33; i <= 126; i++) {
charset[index++] = (char)i;
DEFAULT_CHARSET[index++] = (char)i;
}
for (int i = 0; i < EXTRA_CHARS.length; i++) {
charset[index++] = EXTRA_CHARS[i];
DEFAULT_CHARSET[index++] = EXTRA_CHARS[i];
}
};
@@ -703,18 +737,22 @@ public class PFont implements PConstants {
* Create a new .vlw font on the fly. See documentation with
* the later version of this constructor.
*/
/*
public PFont(String name, int fontsize) {
this(new Font(name, Font.PLAIN, fontsize), false, true);
}
*/
/**
* Create a new .vlw font on the fly. See documentation with
* the later version of this constructor.
*/
/*
public PFont(String name, int fontsize, boolean smooth) {
this(new Font(name, Font.PLAIN, fontsize), false, smooth);
}
*/
/**
@@ -725,14 +763,19 @@ public class PFont implements PConstants {
* @param all true to include all available characters in the font
* @param smooth true to enable smoothing/anti-aliasing
*/
public PFont(Font font, boolean all, boolean smooth) {
public PFont(Font font, char charset[], boolean smooth) {
if (PApplet.javaVersion < 1.3) {
throw new RuntimeException("Can only create fonts with " +
"Java 1.3 or higher");
}
name = font.getName();
psname = font.getPSName();
try {
this.charCount = all ? 65536 : charset.length;
// the count gets reset later based on how many of
// the chars are actually found inside the font.
this.charCount = (charset == null) ? 65536 : charset.length;
this.size = font.getSize();
fwidth = fheight = size;
@@ -847,7 +890,7 @@ public class PFont implements PConstants {
int maxWidthHeight = 0;
int index = 0;
for (int i = 0; i < charCount; i++) {
char c = all ? (char)i : charset[i];
char c = (charset == null) ? (char)i : charset[i];
//if (!font.canDisplay(c)) { // skip chars not in the font
try {
+137
View File
@@ -1466,6 +1466,7 @@ public class PGraphics extends PImage implements PConstants {
float x1, float y1, float x2, float y2,
int u1, int v1, int u2, int v2) {
// TODO blit an image to the screen
System.err.println("unimplemented imageImpl() in PGraphics");
}
@@ -1743,6 +1744,134 @@ public class PGraphics extends PImage implements PConstants {
}
//font.getStringBounds(text, g2.getFontRenderContext()).getWidth();
protected void textImpl(char ch, float x, float y, float z) {
int index = textFont.index(ch);
if (index == -1) return;
PImage glyph = textFont.images[index];
if (textMode == OBJECT) {
float high = (float) textFont.height[index] / textFont.fheight;
float bwidth = (float) textFont.width[index] / textFont.fwidth;
float lextent = (float) textFont.leftExtent[index] / textFont.fwidth;
float textent = (float) textFont.topExtent[index] / textFont.fheight;
float x1 = x + lextent * textSize;
float y1 = y - textent * textSize;
float x2 = x1 + bwidth * textSize;
float y2 = y1 + high * textSize;
textImplObject(glyph,
x1, y1, z, x2, y2, z,
textFont.width[index], textFont.height[index]);
} else if (textMode == SCREEN) {
int xx = (int) x + textFont.leftExtent[index];;
int yy = (int) y - textFont.topExtent[index];
int w0 = textFont.width[index];
int h0 = textFont.height[index];
textImplScreen(glyph, xx, yy, w0, h0);
}
}
protected void textImplObject(PImage glyph,
float x1, float y1, float z1,
float x2, float y2, float z2,
int u2, int v2) {
boolean savedTint = tint;
int savedTintColor = tintColor;
float savedTintR = tintR;
float savedTintG = tintG;
float savedTintB = tintB;
float savedTintA = tintA;
boolean savedTintAlpha = tintAlpha;
tint = true;
tintColor = fillColor;
tintR = fillR;
tintG = fillG;
tintB = fillB;
tintA = fillA;
tintAlpha = fillAlpha;
imageImpl(glyph, x1, y1, x2, y2, 0, 0, u2, v2);
tint = savedTint;
tintColor = savedTintColor;
tintR = savedTintR;
tintG = savedTintG;
tintB = savedTintB;
tintA = savedTintA;
tintAlpha = savedTintAlpha;
}
// should take image, int x1, int y1, and x2, y2
protected void textImplScreen(PImage glyph,
int xx, int yy, //int x2, int y2,
int w0, int h0) {
/*
System.out.println("textimplscreen");
rectMode(CORNER);
stroke(255);
rect(xx, yy, w0, h0);
*/
int x0 = 0;
int y0 = 0;
if ((xx >= width) || (yy >= height) ||
(xx + w0 < 0) || (yy + h0 < 0)) return;
if (xx < 0) {
x0 -= xx;
w0 += xx;
xx = 0;
}
if (yy < 0) {
y0 -= yy;
h0 += yy;
yy = 0;
}
if (xx + w0 > width) {
w0 -= ((xx + w0) - width);
}
if (yy + h0 > height) {
h0 -= ((yy + h0) - height);
}
int fr = fillRi;
int fg = fillGi;
int fb = fillBi;
int fa = fillAi;
int pixels1[] = glyph.pixels; //images[glyph].pixels;
// TODO this can be optimized a bit
for (int row = y0; row < y0 + h0; row++) {
for (int col = x0; col < x0 + w0; col++) {
int a1 = (fa * pixels1[row * textFont.twidth + col]) >> 8;
int a2 = a1 ^ 0xff;
//int p1 = pixels1[row * textFont.width[glyph] + col];
int p1 = pixels1[row * glyph.width + col];
int p2 = pixels[(yy + row-y0)*width + (xx+col-x0)];
pixels[(yy + row-y0)*width + xx+col-x0] =
(0xff000000 |
(((a1 * fr + a2 * ((p2 >> 16) & 0xff)) & 0xff00) << 8) |
(( a1 * fg + a2 * ((p2 >> 8) & 0xff)) & 0xff00) |
(( a1 * fb + a2 * ( p2 & 0xff)) >> 8));
}
}
}
//////////////////////////////////////////////////////////////
@@ -1931,12 +2060,20 @@ public class PGraphics extends PImage implements PConstants {
depthError("endCamera");
}
public void ortho() {
depthError("ortho");
}
public void ortho(float left, float right,
float bottom, float top,
float near, float far) {
depthError("ortho");
}
public void perspective() {
depthError("perspective");
}
public void perspective(float fovy, float aspect, float zNear, float zFar) {
depthError("perspective");
}
+18 -15
View File
@@ -2449,7 +2449,7 @@ public class PGraphics3 extends PGraphics {
* Record the current settings into the camera matrix.
* And set the matrix mode back to the current
* transformation matrix.
*
* <P>
* Note that this will destroy any settings to scale(),
* translate() to your scene.
*/
@@ -2458,11 +2458,16 @@ public class PGraphics3 extends PGraphics {
throw new RuntimeException("cannot call endCamera while not "+
"in camera manipulation mode");
}
else {
manipulatingCamera = false;
forwardTransform = modelview;
reverseTransform = modelviewInv;
}
// reset the modelview to use this new camera matrix
modelview.set(camera);
modelviewInv.set(cameraInv);
// set matrix mode back to modelview
forwardTransform = modelview;
reverseTransform = modelviewInv;
// all done
manipulatingCamera = false;
}
@@ -2740,11 +2745,11 @@ public class PGraphics3 extends PGraphics {
/**
* Takes an RGB or RGBA image and sets it as the background.
*
* <P>
* Note that even if the image is set as RGB, the high 8 bits of
* each pixel must be set (0xFF000000), because the image data will
* be copied directly to the screen.
*
* <P>
* Also clears out the zbuffer and stencil buffer if they exist.
*/
public void background(PImage image) {
@@ -2758,11 +2763,9 @@ public class PGraphics3 extends PGraphics {
/**
* Clears pixel buffer. Also clears the stencil and zbuffer
* if they exist. Their existence is more accurate than using 'depth'
* to test whether to clear them, because if they're non-null,
* it means that depth() has been called somewhere in the program,
* even if noDepth() was called before draw() exited.
* Clears pixel buffer.
* <P>
* With P3D and OPENGL, this also clears the stencil and zbuffer.
*/
public void clear() {
//System.out.println("PGraphics3.clear(" +
@@ -2887,13 +2890,13 @@ public class PGraphics3 extends PGraphics {
public void smooth() {
String msg = "smooth() not available when used with depth()";
String msg = "smooth() not available with P3D";
throw new RuntimeException(msg);
}
public void noSmooth() {
String msg = "noSmooth() not available when used with depth()";
String msg = "noSmooth() not available with P3D";
throw new RuntimeException(msg);
}
+83 -71
View File
@@ -62,6 +62,63 @@ X i.e. mixed case filename in sketch is different in windows
X but when uploaded to a unix server causes a serious problem
X use canonicalPath to flag possible problems
X http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1096508877;start=5
o fix shapes in P3D (line loop, polygons, etc)
o should we include a from and to for the directional light?
X no, cuz it doesn't do much really..
X fromX-toX etc is all that's different
thursday day
X set modelview to camera on endCamera
X add ortho() and perspective() to PGraphics.java
thursday evening
o textMode(ALIGN_LEFT) etc, should make sure that left/center/right not used
X though since have to change to LEFT, should be easy to switch
friday night
o should toInt('5') return the ascii or the char?
X since (int) '5' returns the ascii, that's what it does
X made a note in the PApplet reference
text api
X textMode ALIGN_CENTER _LEFT _RIGHT -> CENTER, LEFT, RIGHT ?
X use built-in font if available? yes
o text() with \n is semi-broken
X does the font or PApplet control the size? (the font, ala java)
X without setting the font, SCREEN_SPACE comes out weird
o move SCREEN_SPACE into ScreenFont() class?
o probably not, casey thinks screen space text is prolly more useful
o that way can clear up some of the general confusion in the code
X textFont with a named font can use the renderer/os font
X illustrator api can get the ps name from the java font name
X since it's associated with the font file.. wee!
X for postscript, can grab the real font
o altho problem here is that really the fonts just need a name
o since needs to render to screen as well
o font has to be installed to get psname
X fine because why would you embed a ps font that you don't have?
o need to resolve SCREEN_SPACE vs OBJECT_SPACE
o can this be auto-detected with noDepth()?
o how does rotated text work?
o PFont.rotate(180) rotate(PI)
o or can this be detected from the matrix?
o PFont.list() to return string list of all the available fonts
X probably not a mode of use that we really want to encourage
X don't use pixels to do screen space text inside PFont
X add a function in PGraphics for direct pixel image impl
X store the font name in the vlw font file (at the end)
o could include multiple names for multi platforms
X get text impl stuff working properly
o look into fixing the texture mapping to not squash fonts
o NEW_GRAPHICS totally smashes everything
_ implement createFont()
_ with a .ttf does a create font internally (1.3+ only)
_ although the images aren't populated
_ until a P2D/P3D/OPENGL tries to draw them, which triggers it
_ but if PGraphics2, just uses the built-in font
_ also works for font names and just creating them
_ if font name doesn't end with otf or ttf, then tries to create it
_ rename video.Camera to video.Video ?
_ VideoInput VideoOutput, SoundInput, SoundOutput or AudioInput/AudioOutput
@@ -70,12 +127,11 @@ _ yes, and add nf(int what) so that non-padded version works
_ but don't put commas into the zero-padded version
_ make nf/nfs/nfp not so weird
_ nf(PLUS, ...) nf(PAD, ...) nfc(PLUS, ...)
_ should we include a from and to for the directional light?
_ fix shapes in P3D (line loop, polygons, etc)
_ fix the flicker in java2d mode
X is it because the lock was taken off (g) in PApplet?
_ appears to be much worse (unfinished drawing) on macosx
_ try turning off hw accel on the mac to see if that's the problem
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
@@ -83,6 +139,9 @@ X is it because the lock was taken off (g) in PApplet?
NOT NECESSARY BEFORE BETA
_ post() method to send a bunch of crap to a web url?
_ or an example that does this?
_ bit shifting in opengl, get down to 2 ops by using other image modes
_ i.e. ABGR_EXT might allow for just two shifts instead of 4
_ allow access to native pixel buffer in opengl and power of 2
@@ -231,38 +290,6 @@ public Object growArray(Object array, int size) {
return grown;
}
text api questions
_ text should maybe use built-in font if available?
_ don't use pixels to do screen space text inside PFont
_ add a function in PGraphics for direct pixel image impl
_ in java2d, can quickly blit the image itself
_ this way, can isolate it for gl too, which will use glBitmap
_ textFont with a named font can use the renderer/os font
_ PFont.list() to return string list of all the available fonts
_ for postscript, can grab the real font
_ -> altho problem here is that really the fonts just need a name
_ since needs to render to screen as well
text api solutions
_ store the font name in the vlw font file (at the end)
o could include multiple names for multi platforms
_ danger of this setup is that it may run much nicer for the author
_ i.e. with the font installed, and then super slow for their users
_ is getFontList returning a different set of fonts from device2d?
_ or is it only those with ps names?
_ createFont() with a .ttf does a create font internally (1.3+ only)
_ although the images aren't populated
_ until a P2D/P3D/OPENGL tries to draw them, which triggers it
_ but if PGraphics2, just uses the built-in font
_ how does ftgl handle tesselation? will our tesselator just work?
_ main code is in FTVectoriser
_ uses gluTessBeginContour and gluTessEndContour
_ and then does 5 step sizes for each curveto
_ createFont() also works for font names and just creating them
_ if font name doesn't end with otf or ttf, then tries to create it
_ illustrator api can get the ps name from the java font name
_ since it's associated with the font file.. wee!
_ beginShape()
_ don't allow you to draw stroked items unless stroke() is called
_ don't allow beginShape() if shape is already set
@@ -363,42 +390,10 @@ _ just have a "thin_flat_line" option in opengl code
_ go through and figure out what stuff to make public
text issues
_ text() with \n is semi-broken
_ font encoding issues
_ java seems to force straight windows encoding.. (problem for pi fonts)
_ opentype/cff fonts don't work with live loading from the app
_ many (all?) opentype fonts won't show up or aren't supported
_ this may be only cff fonts that have trouble
_ when encoding with something besides the standard encoding, problematic
_ so sonata otf and sonata don't seem to have any chars at all
_ getAllFonts() not quite working for many fonts
_ i.e. Orator Std on windows.. macosx seems to be ok
_ is getFamilyNames() any different/better?
_ when did this break? 1.4.1? 1.4.x vs 1.3?
_ may be that cff fonts won't work?
_ textMode ALIGN_CENTER _LEFT _RIGHT -> CENTER, LEFT, RIGHT ?
_ need to resolve SCREEN_SPACE vs OBJECT_SPACE
_ can this be auto-detected with noDepth()?
_ how does rotated text work?
_ PFont.rotate(180) rotate(PI)
_ or can this be detected from the matrix?
_ does the font or PApplet control the size? (the font, ala java)
_ without setting the font, SCREEN_SPACE comes out weird
_ move SCREEN_SPACE into ScreenFont() class?
_ probably not, casey thinks screen space text is prolly more useful
_ that way can clear up some of the general confusion in the code
_ check into symbol font encoding with create font
_ create font with user-specified charsets
text wish list
_ look into fixing the texture mapping to not squash fonts
_ NEW_GRAPHICS totally smashes everything
_ not having kerning really blows
_ could this be pulled from the OpenType font stuff?
_ it could be placed at the end of the file
_ simple way to just use java text in p5 applets?
_ the current text support is just so hokey
_ how does ftgl handle tesselation? will our tesselator just work?
_ main code is in FTVectoriser
_ uses gluTessBeginContour and gluTessEndContour
_ and then does 5 step sizes for each curveto
_ illustrator export / rendering mode
_ also postscript or pdf export?
@@ -559,6 +554,23 @@ CORE / PGraphics
1 _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1076660476;start=0
CORE / PFont
1 _ optimize textMode(OBJECT) with textMode(SCREEN)
1 _ in PGraphics and PGraphics3, check to see if matrix is within epsilon
1 _ of one of the rotation matrices (many fewer steps)
1 _ if identity, or just translate, or a rotate, make OBJECT into SCREEN
1 _ optimize fonts by using native fonts in PGraphics2
1 _ especially textMode(SCREEN) which is disastrously slow
1 _ in java2d, can quickly blit the image itself
1 _ this way, can isolate it for gl too, which will use glBitmap
1 _ danger of this setup is that it may run much nicer for the author
1 _ i.e. with the font installed, and then super slow for their users
? _ not having kerning really blows
? _ could this be pulled from the OpenType font stuff?
? _ it could be placed at the end of the file
CORE / PSound
1 _ make java 1.1 version of PSound work properly
+27
View File
@@ -9,8 +9,12 @@ X get latest sonia from amit
X remove particles from current processing
X move netscape library out of libs and into build/shared
_ add serial.stop() just like client/server
_ remove PdeXxx prefixes on names, make PdeBase into just "Processing"
_ fix macos readme about how to boost memory size, and 1.3 vs 1.4
_ placement of 100x100 items is odd
_ happens with P3D and maybe also P2D?
@@ -21,6 +25,11 @@ _ update linux build and shell scripts for new package
_ make a linux version
_ need to fix up the make/dist scripts for linux
_ if in full java mode
_ if extends PApplet.. or rather, put PApplet cast into a
_ try/catch block.. if it doesn't work, try applet. if that
_ doesn't work, try using the class' main() to run it
fixed in 82
X border weirdness in PdeEditor panels on windows
@@ -194,6 +203,7 @@ _ some type of sketch archive format for posting examples (.psk?)
_ would be nice to open a sketch directly from a zip file
camera
_ pause and framerate aren't working
_ when passing in 'null' as the camera, dialog pops up fine
_ but the applet craps out after a few seconds (pinwheel spin)
_ list() should return full list with all sub-components
@@ -517,6 +527,23 @@ PDE / Create Font
1 _ font builder chopping off parts of letters
1 _ this may be fixed?
1 _ http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_software_bugs;action=display;num=1076358432;start=0
1 _ font encoding issues
1 _ java seems to force straight windows encoding.. (problem for pi fonts)
1 _ opentype/cff fonts don't work with live loading from the app
1 _ many (all?) opentype fonts won't show up or aren't supported
1 _ this may be only cff fonts that have trouble
1 _ when encoding with something besides the standard encoding, problematic
1 _ so sonata otf and sonata don't seem to have any chars at all
1 _ available font issues
1 _ is getFontList returning a different set of fonts from device2d?
1 _ try it out on java 1.3 versus 1.4
1 _ getAllFonts() not quite working for many fonts
1 _ i.e. Orator Std on windows.. macosx seems to be ok
1 _ is getFamilyNames() any different/better?
1 _ when did this break? 1.4.1? 1.4.x vs 1.3?
1 _ may be that cff fonts won't work?
1 _ or is it only those with ps names?
1 _ create font with user-specified charsets
PDE / Editor Status