vhardy 2002/08/28 01:06:48 Modified: sources/org/apache/batik/bridge SVGAltGlyphElementBridge.java sources/org/apache/batik/gvt/renderer StrokingTextPainter.java test-resources/org/apache/batik/test samplesRendering.xml Added: test-references/samples/tests/spec/fonts fontAltGlyph2.png Log: Implemented RFE #4834 (making last visited files persistent. The most recent visited files are now persistent and kept in the preferences.xml file. There are two entries: - preference.key.visited.uri.list.length which defines the maximum number of uris which will be stored in the preference file. - preference.key.visited.uri.list which is the list of uris, separated by spaces after encoding with URLEncoder (note that the methods used are deprecated in 1.4, but their replacement is not available in 1.3). The history in each of the viewer frame ('Go' menu) is initialized with the current list of last visited uris which is kept current (i.e., it is updated each time a new uri is visited) throughout the life of the Squiggle browser. Then new URIs are appended as before in the local history. Revision Changes Path 1.10 +34 -11 xml-batik/sources/org/apache/batik/bridge/SVGAltGlyphElementBridge.java Index: SVGAltGlyphElementBridge.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGAltGlyphElementBridge.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- SVGAltGlyphElementBridge.java 13 Jun 2002 11:19:37 -0000 1.9 +++ SVGAltGlyphElementBridge.java 28 Aug 2002 08:06:47 -0000 1.10 @@ -165,15 +165,27 @@ (SVG_NAMESPACE_URI, SVG_ALT_GLYPH_ITEM_TAG); int numAltGlyphItemNodes = altGlyphItemNodes.getLength(); if (numAltGlyphItemNodes > 0) { - Glyph[] glyphArray = new Glyph[numAltGlyphItemNodes]; - for (int i = 0; i < numAltGlyphItemNodes; i++) { + boolean foundMatchingGlyph = false; + Glyph[] glyphArray = null; + + //look through all altGlyphItem to find the one + //that have all its glyphs available + + for (int i = 0; i < numAltGlyphItemNodes && !foundMatchingGlyph ; i++) { + // try to find a resolvable glyphRef Element altGlyphItemElement = (Element)altGlyphItemNodes.item(i); NodeList altGlyphRefNodes = altGlyphItemElement.getElementsByTagNameNS (SVG_NAMESPACE_URI, SVG_GLYPH_REF_TAG); int numAltGlyphRefNodes = altGlyphRefNodes.getLength(); - boolean foundMatchingGlyph = false; + + glyphArray = new Glyph[numAltGlyphRefNodes]; + + // consider that all glyphs are available + // and check if they can be found + foundMatchingGlyph = true; + for (int j = 0; j < numAltGlyphRefNodes; j++) { // get the referenced glyph element Element glyphRefElement = (Element)altGlyphRefNodes.item(j); @@ -182,25 +194,36 @@ Glyph glyph = getGlyph(ctx, glyphUri, glyphRefElement, fontSize, aci); if (glyph != null) { // found a matching glyph for this altGlyphItem - glyphArray[i] = glyph; - foundMatchingGlyph = true; + glyphArray[j] = glyph; + } + else{ + //this altGlyphItem is not good + //seek for the next one + foundMatchingGlyph = false; break; } } - if (!foundMatchingGlyph) { - // couldn't find a matching glyph for this alGlyphItem - // so stop and return null - return null; - } } + if (!foundMatchingGlyph) { + // couldn't find a alGlyphItem + // with all its glyphs available + // so stop and return null + return null; + } + return glyphArray; } } } + + /* // reference is not to a valid element type, throw an exception throw new BridgeException(altGlyphElement, ERR_URI_BAD_TARGET, new Object[] {uri}); + */ + //reference not valid, no altGlyph created + return null; } 1.39 +12 -2 xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java Index: StrokingTextPainter.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/StrokingTextPainter.java,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- StrokingTextPainter.java 13 Aug 2002 21:33:16 -0000 1.38 +++ StrokingTextPainter.java 28 Aug 2002 08:06:47 -0000 1.39 @@ -119,6 +119,8 @@ GVTAttributedCharacterIterator.TextAttribute.ADJUST_SPACING; public static final Integer ADJUST_ALL = GVTAttributedCharacterIterator.TextAttribute.ADJUST_ALL; + public static final GVTAttributedCharacterIterator.TextAttribute ALT_GLYPH_HANDLER = + GVTAttributedCharacterIterator.TextAttribute.ALT_GLYPH_HANDLER; static Set extendedAtts = new HashSet(); @@ -418,7 +420,8 @@ Vector fontFamilies; fontFamilies = (Vector)aci.getAttributes().get(GVT_FONT_FAMILIES); - if (fontFamilies == null) { + + if (fontFamilies == null ) { // no font families set this chunk so just increment... asOff += aciLength; moreChunks = (aci.setIndex(end) != aci.DONE); @@ -477,6 +480,13 @@ while (currentIndex < end) { int displayUpToIndex = font.canDisplayUpTo (aci, currentIndex, end); + + Object altGlyphElement = aci.getAttributes().get(ALT_GLYPH_HANDLER); + if ( altGlyphElement != null ){ + //found all the glyph to be displayed + //consider the font matching done + displayUpToIndex = -1; + } if (displayUpToIndex == -1) { // Can handle the whole thing... 1.82 +2 -1 xml-batik/test-resources/org/apache/batik/test/samplesRendering.xml Index: samplesRendering.xml =================================================================== RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/test/samplesRendering.xml,v retrieving revision 1.81 retrieving revision 1.82 diff -u -r1.81 -r1.82 --- samplesRendering.xml 14 Aug 2002 12:59:47 -0000 1.81 +++ samplesRendering.xml 28 Aug 2002 08:06:47 -0000 1.82 @@ -112,6 +112,7 @@ <testGroup id="tests.spec.fonts"> <test id="samples/tests/spec/fonts/batikFont.svg" /> <test id="samples/tests/spec/fonts/fontAltGlyph.svg" /> + <test id="samples/tests/spec/fonts/fontAltGlyph2.svg" /> <test id="samples/tests/spec/fonts/fontArabic.svg" /> <test id="samples/tests/spec/fonts/fontBounds.svg" /> <test id="samples/tests/spec/fonts/fontChoice.svg" /> 1.1 xml-batik/test-references/samples/tests/spec/fonts/fontAltGlyph2.png <<Binary file>>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]