Changeset 14331 in josm


Ignore:
Timestamp:
2018-10-14T17:02:51+02:00 (6 years ago)
Author:
Don-vip
Message:

see #14319, see #16838 - fix regressions introduced in svgSalamander 1.1.2

see https://github.com/blackears/svgSalamander/issues/29

Location:
trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/com/kitfox/svg/Tspan.java

    r14328 r14331  
    234234        }
    235235
     236        if (font == null)
     237        {
     238            font = FontSystem.createFont("Serif", fontStyle, fontWeight, fontStyle);
     239        }
     240
    236241        AffineTransform xform = new AffineTransform();
    237242
  • trunk/src/com/kitfox/svg/util/FontSystem.java

    r14328 r14331  
    4848import java.util.HashMap;
    4949import java.util.HashSet;
     50import java.util.Locale;
    5051
    5152/**
     
    5859    FontMetrics fm;
    5960
    60     HashMap<String, Glyph> glyphCache = new HashMap<String, Glyph>();
     61    HashMap<String, Glyph> glyphCache = new HashMap<>();
    6162   
    62     static HashSet<String> sysFontNames = new HashSet<String>();
     63    static HashSet<String> sysFontNames = new HashSet<>();
    6364
    6465    public static boolean checkIfSystemFontExists(String fontName)
     
    6667        if (sysFontNames.isEmpty())
    6768        {
    68             for (String name: GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames())
     69            for (String name: GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(Locale.ENGLISH))
    6970            {
    7071                sysFontNames.add(name);
     
    8081        for (String fontName: families)
    8182        {
    82             if (checkIfSystemFontExists(fontName))
     83            String javaFontName = mapJavaFontName(fontName);
     84            if (checkIfSystemFontExists(javaFontName))
    8385            {
    84                 return new FontSystem(fontName, fontStyle, fontWeight, fontSize);
     86                return new FontSystem(javaFontName, fontStyle, fontWeight, fontSize);
    8587            }
    8688        }
    8789
    8890        return null;
     91    }
     92
     93    private static String mapJavaFontName(String fontName) {
     94        if ("serif".equals(fontName)) {
     95            return java.awt.Font.SERIF;
     96        } else if ("sans-serif".equals(fontName)) {
     97            return java.awt.Font.SANS_SERIF;
     98        } else if ("monospace".equals(fontName)) {
     99            return java.awt.Font.MONOSPACED;
     100        } else {
     101            return fontName;
     102        }
    89103    }
    90104
  • trunk/src/com/kitfox/svg/xml/XMLParseUtil.java

    r11525 r14331  
    5656    static final Matcher fpMatch = Pattern.compile("([-+]?((\\d*\\.\\d+)|(\\d+))([eE][+-]?\\d+)?)(\\%|in|cm|mm|pt|pc|px|em|ex)?").matcher("");
    5757    static final Matcher intMatch = Pattern.compile("[-+]?\\d+").matcher("");
     58    static final Matcher quoteMatch = Pattern.compile("^'|'$").matcher("");
    5859
    5960    /** Creates a new instance of XMLParseUtil */
     
    320321
    321322            String key = styles[i].substring(0, colon).trim();
    322             String value = styles[i].substring(colon + 1).trim();
     323            String value = quoteMatch.reset(styles[i].substring(colon + 1).trim()).replaceAll("");
    323324
    324325            map.put(key, new StyleAttribute(key, value));
  • trunk/src/org/openstreetmap/josm/tools/ImageProvider.java

    r14328 r14331  
    3434import java.util.Base64;
    3535import java.util.Collection;
     36import java.util.EnumMap;
    3637import java.util.HashMap;
    3738import java.util.HashSet;
     
    315316
    316317    /** small cache of critical images used in many parts of the application */
    317     private static final Map<OsmPrimitiveType, ImageIcon> osmPrimitiveTypeCache = new HashMap<>();
     318    private static final Map<OsmPrimitiveType, ImageIcon> osmPrimitiveTypeCache = new EnumMap<>(OsmPrimitiveType.class);
    318319
    319320    /** larger cache of critical padded image icons used in many parts of the application */
     
    16341635        }
    16351636
    1636         if (realWidth == 0 || realHeight == 0) {
     1637        int roundedWidth = Math.round(realWidth);
     1638        int roundedHeight = Math.round(realHeight);
     1639        if (roundedWidth <= 0 || roundedHeight <= 0) {
     1640            Logging.error("createImageFromSvg: {0} {1} realWidth={2} realHeight={3}",
     1641                    svg.getXMLBase(), dim, Float.toString(realWidth), Float.toString(realHeight));
    16371642            return null;
    16381643        }
    1639         BufferedImage img = new BufferedImage(Math.round(realWidth), Math.round(realHeight), BufferedImage.TYPE_INT_ARGB);
     1644        BufferedImage img = new BufferedImage(roundedWidth, roundedHeight, BufferedImage.TYPE_INT_ARGB);
    16401645        Graphics2D g = img.createGraphics();
    16411646        g.setClip(0, 0, img.getWidth(), img.getHeight());
Note: See TracChangeset for help on using the changeset viewer.