1 | /* | |
2 | * $Id: PdfFont.java 3373 2008-05-12 16:21:24Z xlv $ | |
3 | * | |
4 | * Copyright 1999, 2000, 2001, 2002 Bruno Lowagie | |
5 | * | |
6 | * The contents of this file are subject to the Mozilla Public License Version 1.1 | |
7 | * (the "License"); you may not use this file except in compliance with the License. | |
8 | * You may obtain a copy of the License at http://www.mozilla.org/MPL/ | |
9 | * | |
10 | * Software distributed under the License is distributed on an "AS IS" basis, | |
11 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
12 | * for the specific language governing rights and limitations under the License. | |
13 | * | |
14 | * The Original Code is 'iText, a free JAVA-PDF library'. | |
15 | * | |
16 | * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by | |
17 | * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie. | |
18 | * All Rights Reserved. | |
19 | * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer | |
20 | * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved. | |
21 | * | |
22 | * Contributor(s): all the names of the contributors are added in the source code | |
23 | * where applicable. | |
24 | * | |
25 | * Alternatively, the contents of this file may be used under the terms of the | |
26 | * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the | |
27 | * provisions of LGPL are applicable instead of those above. If you wish to | |
28 | * allow use of your version of this file only under the terms of the LGPL | |
29 | * License and not to allow others to use your version of this file under | |
30 | * the MPL, indicate your decision by deleting the provisions above and | |
31 | * replace them with the notice and other provisions required by the LGPL. | |
32 | * If you do not delete the provisions above, a recipient may use your version | |
33 | * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE. | |
34 | * | |
35 | * This library is free software; you can redistribute it and/or modify it | |
36 | * under the terms of the MPL as stated above or under the terms of the GNU | |
37 | * Library General Public License as published by the Free Software Foundation; | |
38 | * either version 2 of the License, or any later version. | |
39 | * | |
40 | * This library is distributed in the hope that it will be useful, but WITHOUT | |
41 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
42 | * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more | |
43 | * details. | |
44 | * | |
45 | * If you didn't download this code from the following link, you should check if | |
46 | * you aren't using an obsolete version: | |
47 | * http://www.lowagie.com/iText/ | |
48 | */ | |
49 | ||
50 | package com.lowagie.text.pdf; | |
51 | ||
52 | ||
53 | import com.lowagie.text.Image; | |
54 | import com.lowagie.text.ExceptionConverter; | |
55 | ||
56 | /** | |
57 | * <CODE>PdfFont</CODE> is the Pdf Font object. | |
58 | * <P> | |
59 | * Limitation: in this class only base 14 Type 1 fonts (courier, courier bold, courier oblique, | |
60 | * courier boldoblique, helvetica, helvetica bold, helvetica oblique, helvetica boldoblique, | |
61 | * symbol, times roman, times bold, times italic, times bolditalic, zapfdingbats) and their | |
62 | * standard encoding (standard, MacRoman, (MacExpert,) WinAnsi) are supported.<BR> | |
63 | * This object is described in the 'Portable Document Format Reference Manual version 1.3' | |
64 | * section 7.7 (page 198-203). | |
65 | * | |
66 | * @see PdfName | |
67 | * @see PdfDictionary | |
68 | * @see BadPdfFormatException | |
69 | */ | |
70 | ||
71 | class PdfFont implements Comparable { | |
72 | | |
73 | | |
74 | /** the font metrics. */ | |
75 | private BaseFont font; | |
76 | | |
77 | /** the size. */ | |
78 | private float size; | |
79 | | |
80 | /** an image. */ | |
81 | protected Image image; | |
82 | | |
83 | protected float hScale = 1; | |
84 | | |
85 | // constructors | |
86 | | |
87 | PdfFont(BaseFont bf, float size) { | |
88 | this.size = size; | |
89 | font = bf; | |
90 | } | |
91 | | |
92 | // methods | |
93 | | |
94 | /** | |
95 | * Compares this <CODE>PdfFont</CODE> with another | |
96 | * | |
97 | * @param object the other <CODE>PdfFont</CODE> | |
98 | * @return a value | |
99 | */ | |
100 | | |
101 | public int compareTo(Object object) { | |
102 |
1
1. compareTo : negated conditional → NO_COVERAGE |
if (image != null) |
103 |
1
1. compareTo : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return 0; |
104 |
1
1. compareTo : negated conditional → NO_COVERAGE |
if (object == null) { |
105 |
1
1. compareTo : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return -1; |
106 | } | |
107 | PdfFont pdfFont; | |
108 | try { | |
109 | pdfFont = (PdfFont) object; | |
110 |
1
1. compareTo : negated conditional → NO_COVERAGE |
if (font != pdfFont.font) { |
111 |
1
1. compareTo : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return 1; |
112 | } | |
113 |
1
1. compareTo : negated conditional → NO_COVERAGE |
if (this.size() != pdfFont.size()) { |
114 |
1
1. compareTo : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return 2; |
115 | } | |
116 |
1
1. compareTo : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return 0; |
117 | } | |
118 | catch(ClassCastException cce) { | |
119 |
1
1. compareTo : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return -2; |
120 | } | |
121 | } | |
122 | | |
123 | /** | |
124 | * Returns the size of this font. | |
125 | * | |
126 | * @return a size | |
127 | */ | |
128 | | |
129 | float size() { | |
130 |
1
1. size : negated conditional → NO_COVERAGE |
if (image == null) |
131 |
1
1. size : replaced return of float value with -(x + 1) for com/lowagie/text/pdf/PdfFont::size → NO_COVERAGE |
return size; |
132 | else { | |
133 |
1
1. size : replaced return of float value with -(x + 1) for com/lowagie/text/pdf/PdfFont::size → NO_COVERAGE |
return image.getScaledHeight(); |
134 | } | |
135 | } | |
136 | | |
137 | /** | |
138 | * Returns the approximative width of 1 character of this font. | |
139 | * | |
140 | * @return a width in Text Space | |
141 | */ | |
142 | | |
143 | float width() { | |
144 |
1
1. width : replaced return of float value with -(x + 1) for com/lowagie/text/pdf/PdfFont::width → NO_COVERAGE |
return width(' '); |
145 | } | |
146 | | |
147 | /** | |
148 | * Returns the width of a certain character of this font. | |
149 | * | |
150 | * @param character a certain character | |
151 | * @return a width in Text Space | |
152 | */ | |
153 | | |
154 | float width(int character) { | |
155 |
1
1. width : negated conditional → NO_COVERAGE |
if (image == null) |
156 |
2
1. width : Replaced float multiplication with division → NO_COVERAGE 2. width : replaced return of float value with -(x + 1) for com/lowagie/text/pdf/PdfFont::width → NO_COVERAGE |
return font.getWidthPoint(character, size) * hScale; |
157 | else | |
158 |
1
1. width : replaced return of float value with -(x + 1) for com/lowagie/text/pdf/PdfFont::width → NO_COVERAGE |
return image.getScaledWidth(); |
159 | } | |
160 | | |
161 | float width(String s) { | |
162 |
1
1. width : negated conditional → NO_COVERAGE |
if (image == null) |
163 |
2
1. width : Replaced float multiplication with division → NO_COVERAGE 2. width : replaced return of float value with -(x + 1) for com/lowagie/text/pdf/PdfFont::width → NO_COVERAGE |
return font.getWidthPoint(s, size) * hScale; |
164 | else | |
165 |
1
1. width : replaced return of float value with -(x + 1) for com/lowagie/text/pdf/PdfFont::width → NO_COVERAGE |
return image.getScaledWidth(); |
166 | } | |
167 | | |
168 | BaseFont getFont() { | |
169 | return font; | |
170 | } | |
171 | | |
172 | void setImage(Image image) { | |
173 | this.image = image; | |
174 | } | |
175 | | |
176 | static PdfFont getDefaultFont() { | |
177 | try { | |
178 | BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false); | |
179 |
1
1. getDefaultFont : mutated return of Object value for com/lowagie/text/pdf/PdfFont::getDefaultFont to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return new PdfFont(bf, 12); |
180 | } | |
181 | catch (Exception ee) { | |
182 | throw new ExceptionConverter(ee); | |
183 | } | |
184 | } | |
185 | void setHorizontalScaling(float hScale) { | |
186 | this.hScale = hScale; | |
187 | } | |
188 | } | |
Mutations | ||
102 |
1.1 |
|
103 |
1.1 |
|
104 |
1.1 |
|
105 |
1.1 |
|
110 |
1.1 |
|
111 |
1.1 |
|
113 |
1.1 |
|
114 |
1.1 |
|
116 |
1.1 |
|
119 |
1.1 |
|
130 |
1.1 |
|
131 |
1.1 |
|
133 |
1.1 |
|
144 |
1.1 |
|
155 |
1.1 |
|
156 |
1.1 2.2 |
|
158 |
1.1 |
|
162 |
1.1 |
|
163 |
1.1 2.2 |
|
165 |
1.1 |
|
179 |
1.1 |