01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: /* $Id: FontUtil.java 542237 2007-05-28 14:31:24Z jeremias $ */
19:
20: package org.apache.fop.fonts;
21:
22: /**
23: * Font utilities.
24: */
25: public class FontUtil {
26:
27: /**
28: * Parses an CSS2 (SVG and XSL-FO) font weight (normal, bold, 100-900) to
29: * an integer.
30: * See http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-weight
31: * TODO: Implement "lighter" and "bolder".
32: * @param text the font weight to parse
33: * @return an integer between 100 and 900 (100, 200, 300...)
34: */
35: public static int parseCSS2FontWeight(String text) {
36: int weight = 400;
37: try {
38: weight = Integer.parseInt(text);
39: weight = ((int) weight / 100) * 100;
40: weight = Math.max(weight, 100);
41: weight = Math.min(weight, 900);
42: } catch (NumberFormatException nfe) {
43: //weight is no number, so convert symbolic name to number
44: if (text.equals("normal")) {
45: weight = 400;
46: } else if (text.equals("bold")) {
47: weight = 700;
48: } else {
49: throw new IllegalArgumentException(
50: "Illegal value for font weight: '" + text
51: + "'. Use one of: 100, 200, 300, "
52: + "400, 500, 600, 700, 800, 900, "
53: + "normal (=400), bold (=700)");
54: }
55: }
56: return weight;
57: }
58:
59: /**
60: * Removes all white space from a string (used primarily for font names)
61: * @param s the string
62: * @return the processed result
63: */
64: public static String stripWhiteSpace(String s) {
65: StringBuffer sb = new StringBuffer(s.length());
66: for (int i = 0, c = s.length(); i < c; i++) {
67: final char ch = s.charAt(i);
68: if (ch != ' ' && ch != '\r' && ch != '\n' && ch != '\t') {
69: sb.append(ch);
70: }
71: }
72: return sb.toString();
73: }
74:
75: }
|