Author: ssteiner
Date: Wed May 25 14:12:42 2016
New Revision: 1745490
URL: http://svn.apache.org/viewvc?rev=1745490&view=rev
Log:
FOP-2608: Allow more than 256 glyphs for CFF to Type1
Modified:
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java
xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java Wed May 25 14:12:42 2016
@@ -22,6 +22,10 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.fontbox.cff.CFFFont;
@@ -43,16 +47,49 @@ public class CFFToType1Font extends Mult
}
public InputStream getInputStream() throws IOException {
+ return null;
+ }
+
+ public List<InputStream> getInputStreams() throws IOException {
InputStream cff = super.getInputStream();
return convertOTFToType1(cff);
}
- private InputStream convertOTFToType1(InputStream in) throws IOException {
+ private List<InputStream> convertOTFToType1(InputStream in) throws IOException {
CFFFont f = new CFFParser().parse(IOUtils.toByteArray(in)).get(0);
if (!(f instanceof CFFType1Font)) {
throw new IOException(getEmbedFileURI() + ": only OTF CFF Type1 font can be converted to Type1");
}
- byte[] t1 = new Type1FontFormatter(cidSet.getGlyphs(), eventListener).format((CFFType1Font) f);
+ List<InputStream> fonts = new ArrayList<InputStream>();
+ Map<Integer, Integer> glyphs = cidSet.getGlyphs();
+ int i = 0;
+ for (Map<Integer, Integer> x : splitGlyphs(glyphs)) {
+ String iStr = "." + i;
+ fonts.add(convertOTFToType1(x, f, iStr));
+ i++;
+ }
+ return fonts;
+ }
+
+ private List<Map<Integer, Integer>> splitGlyphs(Map<Integer, Integer> glyphs) {
+ List<Map<Integer, Integer>> allGlyphs = new ArrayList<Map<Integer, Integer>>();
+ for (Map.Entry<Integer, Integer> x : glyphs.entrySet()) {
+ int k = x.getKey();
+ int v = x.getValue();
+ int pot = v / 256;
+ v = v % 256;
+ while (allGlyphs.size() < pot + 1) {
+ Map<Integer, Integer> glyphsPerFont = new HashMap<Integer, Integer>();
+ glyphsPerFont.put(0, 0);
+ allGlyphs.add(glyphsPerFont);
+ }
+ allGlyphs.get(pot).put(k, v);
+ }
+ return allGlyphs;
+ }
+
+ private InputStream convertOTFToType1(Map<Integer, Integer> glyphs, CFFFont f, String i) throws IOException {
+ byte[] t1 = new Type1FontFormatter(glyphs).format((CFFType1Font) f, i);
PFBData pfb = new PFBParser().parsePFB(new ByteArrayInputStream(t1));
ByteArrayOutputStream s1 = new ByteArrayOutputStream();
s1.write(pfb.getHeaderSegment());
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java Wed May 25 14:12:42 2016
@@ -66,10 +66,6 @@ public class FontEventAdapter implements
getEventProducer().fontDirectoryNotFound(source, dir);
}
- public void fontType1MaxGlyphs(Object source, String fontName) {
- getEventProducer().fontType1MaxGlyphs(source, fontName);
- }
-
/** {@inheritDoc} */
public void svgTextStrokedAsShapes(Object source, String fontFamily) {
getEventProducer().svgTextStrokedAsShapes(source, fontFamily);
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java Wed May 25 14:12:42 2016
@@ -61,6 +61,4 @@ public interface FontEventListener {
* @param fontFamily the family name of the font that is being stroked
*/
void svgTextStrokedAsShapes(Object source, String fontFamily);
-
- void fontType1MaxGlyphs(Object source, String fontName);
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java Wed May 25 14:12:42 2016
@@ -87,11 +87,4 @@ public interface FontEventProducer exten
*/
void svgTextStrokedAsShapes(Object source, String fontFamily);
- /**
- * A method to warn the user that the font has too many glyphs
- * @param source
- * @param fontName
- * @event.severity ERROR
- */
- void fontType1MaxGlyphs(Object source, String fontName);
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java Wed May 25 14:12:42 2016
@@ -139,8 +139,8 @@ public class OFFontLoader extends FontLo
multiFont = new CFFToType1Font(resourceResolver, embeddingMode);
} else {
multiFont = new MultiByteFont(resourceResolver, embeddingMode);
- multiFont.setIsOTFFile(otf instanceof OTFFile);
}
+ multiFont.setIsOTFFile(otf instanceof OTFFile);
returnFont = multiFont;
multiFont.setTTCName(ttcFontName);
} else {
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java Wed May 25 14:12:42 2016
@@ -22,8 +22,10 @@ package org.apache.fop.render.ps;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -40,6 +42,7 @@ import org.apache.xmlgraphics.ps.PSResou
import org.apache.xmlgraphics.ps.dsc.ResourceTracker;
import org.apache.fop.fonts.Base14Font;
+import org.apache.fop.fonts.CFFToType1Font;
import org.apache.fop.fonts.CIDFontType;
import org.apache.fop.fonts.CIDSet;
import org.apache.fop.fonts.CMapSegment;
@@ -138,8 +141,7 @@ public class PSFontUtils extends org.apa
Map fontResources = new HashMap();
for (String key : fonts.keySet()) {
Typeface tf = getTypeFace(fontInfo, fonts, key);
- PSResource fontRes = new PSResource(PSResource.TYPE_FONT, tf.getEmbedFontName());
- PSFontResource fontResource = embedFont(gen, tf, fontRes, eventProducer);
+ PSFontResource fontResource = embedFont(gen, tf, eventProducer);
fontResources.put(key, fontResource);
if (tf instanceof SingleByteFont) {
@@ -239,11 +241,12 @@ public class PSFontUtils extends org.apa
return tf;
}
- private static PSFontResource embedFont(PSGenerator gen, Typeface tf, PSResource fontRes,
- PSEventProducer eventProducer) throws IOException {
+ private static PSFontResource embedFont(PSGenerator gen, Typeface tf, PSEventProducer eventProducer)
+ throws IOException {
boolean embeddedFont = false;
FontType fontType = tf.getFontType();
PSFontResource fontResource = null;
+ PSResource fontRes = new PSResource(PSResource.TYPE_FONT, tf.getEmbedFontName());
if (!(fontType == FontType.TYPE1 || fontType == FontType.TRUETYPE
|| fontType == FontType.TYPE0) || !(tf instanceof CustomFont)) {
gen.writeDSCComment(DSCConstants.INCLUDE_RESOURCE, fontRes);
@@ -252,42 +255,51 @@ public class PSFontUtils extends org.apa
}
CustomFont cf = (CustomFont)tf;
if (isEmbeddable(cf)) {
- InputStream in = getInputStreamOnFont(gen, cf);
- if (in != null) {
- if (fontType == FontType.TYPE0) {
- if (((MultiByteFont)tf).isOTFFile()) {
- checkPostScriptLevel3(gen, eventProducer, "OpenType CFF");
- embedType2CFF(gen, (MultiByteFont) tf, in);
- } else {
- if (gen.embedIdentityH()) {
- checkPostScriptLevel3(gen, eventProducer, "TrueType");
+ List<InputStream> ins = getInputStreamOnFont(gen, cf);
+ if (ins != null) {
+ int i = 0;
+ for (InputStream in : ins) {
+ if (i > 0) {
+ fontRes = new PSResource(PSResource.TYPE_FONT, tf.getEmbedFontName() + "." + i);
+ }
+ if (fontType == FontType.TYPE0) {
+ if (((MultiByteFont) tf).isOTFFile()) {
+ checkPostScriptLevel3(gen, eventProducer, "OpenType CFF");
+ embedType2CFF(gen, (MultiByteFont) tf, in);
+ } else {
+ if (gen.embedIdentityH()) {
+ checkPostScriptLevel3(gen, eventProducer, "TrueType");
/*
* First CID-keyed font to be embedded; add
* %%IncludeResource: comment for ProcSet CIDInit.
*/
- gen.includeProcsetCIDInitResource();
+ gen.includeProcsetCIDInitResource();
+ }
+ PSResource cidFontResource;
+ cidFontResource = embedType2CIDFont(gen,
+ (MultiByteFont) tf, in);
+ fontResource = PSFontResource.createFontResource(fontRes,
+ gen.getProcsetCIDInitResource(), gen.getIdentityHCMapResource(),
+ cidFontResource);
}
- PSResource cidFontResource;
- cidFontResource = embedType2CIDFont(gen,
- (MultiByteFont) tf, in);
- fontResource = PSFontResource.createFontResource(fontRes,
- gen.getProcsetCIDInitResource(), gen.getIdentityHCMapResource(),
- cidFontResource);
}
+ gen.writeDSCComment(DSCConstants.BEGIN_RESOURCE, fontRes);
+ if (fontType == FontType.TYPE1) {
+ embedType1Font(gen, (CustomFont) tf, in);
+ if (fontResource == null) {
+ fontResource = PSFontResource.createFontResource(fontRes);
+ }
+ } else if (fontType == FontType.TRUETYPE) {
+ embedTrueTypeFont(gen, (SingleByteFont) tf, in);
+ fontResource = PSFontResource.createFontResource(fontRes);
+ } else if (!((MultiByteFont) tf).isOTFFile()) {
+ composeType0Font(gen, (MultiByteFont) tf);
+ }
+ gen.writeDSCComment(DSCConstants.END_RESOURCE);
+ gen.getResourceTracker().registerSuppliedResource(fontRes);
+ embeddedFont = true;
+ i++;
}
- gen.writeDSCComment(DSCConstants.BEGIN_RESOURCE, fontRes);
- if (fontType == FontType.TYPE1) {
- embedType1Font(gen, (CustomFont) tf, in);
- fontResource = PSFontResource.createFontResource(fontRes);
- } else if (fontType == FontType.TRUETYPE) {
- embedTrueTypeFont(gen, (SingleByteFont) tf, in);
- fontResource = PSFontResource.createFontResource(fontRes);
- } else {
- composeType0Font(gen, (MultiByteFont) tf, in);
- }
- gen.writeDSCComment(DSCConstants.END_RESOURCE);
- gen.getResourceTracker().registerSuppliedResource(fontRes);
- embeddedFont = true;
} else {
gen.commentln("%WARNING: Could not embed font: " + cf.getEmbedFontName());
log.warn("Font " + cf.getEmbedFontName() + " is marked as supplied in the"
@@ -297,7 +309,6 @@ public class PSFontUtils extends org.apa
if (!embeddedFont) {
gen.writeDSCComment(DSCConstants.INCLUDE_RESOURCE, fontRes);
fontResource = PSFontResource.createFontResource(fontRes);
- return fontResource;
}
return fontResource;
}
@@ -502,8 +513,7 @@ public class PSFontUtils extends org.apa
return 0;
}
- private static void composeType0Font(PSGenerator gen, MultiByteFont font,
- InputStream fontStream) throws IOException {
+ private static void composeType0Font(PSGenerator gen, MultiByteFont font) throws IOException {
String psName = font.getEmbedFontName();
gen.write("/");
gen.write(psName);
@@ -724,18 +734,23 @@ public class PSFontUtils extends org.apa
return font.isEmbeddable();
}
- private static InputStream getInputStreamOnFont(PSGenerator gen, CustomFont font)
+ private static List<InputStream> getInputStreamOnFont(PSGenerator gen, CustomFont font)
throws IOException {
if (isEmbeddable(font)) {
+ List<InputStream> fonts = new ArrayList<InputStream>();
InputStream in = font.getInputStream();
if (in == null) {
+ if (font instanceof CFFToType1Font) {
+ return ((CFFToType1Font) font).getInputStreams();
+ }
return null;
}
//Make sure the InputStream is decorated with a BufferedInputStream
if (!(in instanceof java.io.BufferedInputStream)) {
in = new java.io.BufferedInputStream(in);
}
- return in;
+ fonts.add(in);
+ return fonts;
} else {
return null;
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java Wed May 25 14:12:42 2016
@@ -40,7 +40,6 @@ import org.apache.xmlgraphics.image.load
import org.apache.xmlgraphics.ps.PSGenerator;
import org.apache.xmlgraphics.ps.PSResource;
-import org.apache.fop.fonts.CFFToType1Font;
import org.apache.fop.fonts.EmbeddingMode;
import org.apache.fop.fonts.Font;
import org.apache.fop.fonts.FontTriplet;
@@ -429,8 +428,7 @@ public class PSPainter extends AbstractI
true);
start = i;
}
- generator.writeln("/" + res.getName() + "." + encoding + " "
- + generator.formatDouble(sizeMillipoints / 1000f) + " F");
+ generator.useFont("/" + res.getName() + "." + encoding, sizeMillipoints / 1000f);
curEncoding = encoding;
}
}
@@ -459,7 +457,7 @@ public class PSPainter extends AbstractI
int lineStart = 0;
StringBuffer accText = new StringBuffer(initialSize);
StringBuffer sb = new StringBuffer(initialSize);
- boolean isOTF = multiByte && ((MultiByteFont)tf).isOTFFile() || tf instanceof CFFToType1Font;
+ boolean isOTF = multiByte && ((MultiByteFont)tf).isOTFFile();
for (int i = start; i < end; i++) {
char orgChar = text.charAt(i);
char ch;
@@ -580,13 +578,11 @@ public class PSPainter extends AbstractI
private void useFont(String key, int size, boolean otf) throws IOException {
PSFontResource res = getDocumentHandler().getPSResourceForFontKey(key);
PSGenerator generator = getGenerator();
+ String name = "/" + res.getName();
if (otf) {
- String name = "/" + res.getName() + ".0";
- generator.getCurrentState().useFont(name, size);
- generator.writeln(name + ' ' + generator.formatDouble(size / 1000f) + " F");
- } else {
- generator.useFont("/" + res.getName(), size / 1000f);
+ name += ".0";
}
+ generator.useFont(name, size / 1000f);
res.notifyResourceUsageOnPage(generator.getResourceTracker());
}
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java Wed May 25 14:12:42 2016
@@ -28,8 +28,6 @@ import org.apache.fontbox.cff.CFFType1Fo
import org.apache.fontbox.cff.DataOutput;
import org.apache.fontbox.cff.Type1FontUtil;
-import org.apache.fop.fonts.FontEventListener;
-
/**
* This class represents a formatter for a given Type1 font.
* author Villu Ruusmann
@@ -37,31 +35,30 @@ import org.apache.fop.fonts.FontEventLis
*/
public final class Type1FontFormatter {
private Map<Integer, Integer> gids;
- private FontEventListener eventListener;
- public Type1FontFormatter(Map<Integer, Integer> gids, FontEventListener eventListener) {
+ public Type1FontFormatter(Map<Integer, Integer> gids) {
this.gids = gids;
- this.eventListener = eventListener;
}
/**
* Read and convert a given CFFFont.
* @param font the given CFFFont
+ * @param i
* @return the Type1 font
* @throws IOException if an error occurs during reading the given font
*/
- public byte[] format(CFFType1Font font) throws IOException {
+ public byte[] format(CFFType1Font font, String i) throws IOException {
DataOutput output = new DataOutput();
- printFont(font, output);
+ printFont(font, output, i);
return output.getBytes();
}
- private void printFont(CFFType1Font font, DataOutput output)
+ private void printFont(CFFType1Font font, DataOutput output, String iStr)
throws IOException {
- output.println("%!FontType1-1.0 " + font.getName() + " "
+ output.println("%!FontType1-1.0 " + font.getName() + iStr + " "
+ font.getTopDict().get("version"));
- printFontDictionary(font, output);
+ printFontDictionary(font, output, iStr);
for (int i = 0; i < 8; i++) {
StringBuilder sb = new StringBuilder();
@@ -76,7 +73,7 @@ public final class Type1FontFormatter {
output.println("cleartomark");
}
- private void printFontDictionary(CFFType1Font font, DataOutput output)
+ private void printFontDictionary(CFFType1Font font, DataOutput output, String iStr)
throws IOException {
output.println("10 dict begin");
output.println("/FontInfo 10 dict dup begin");
@@ -99,7 +96,7 @@ public final class Type1FontFormatter {
output.println("/UnderlineThickness "
+ font.getTopDict().get("UnderlineThickness") + " def");
output.println("end readonly def");
- output.println("/FontName /" + font.getName() + " def");
+ output.println("/FontName /" + font.getName() + iStr + " def");
output.println("/PaintType " + font.getTopDict().get("PaintType") + " def");
output.println("/FontType 1 def");
NumberFormat matrixFormat = new DecimalFormat("0.########", new DecimalFormatSymbols(Locale.US));
@@ -119,9 +116,6 @@ public final class Type1FontFormatter {
sb.append(String.format("dup %d /%s put", gid.getValue(), name)).append('\n');
max = Math.max(max, gid.getValue());
}
- if (max > 255) {
- eventListener.fontType1MaxGlyphs(this, font.getName());
- }
output.println("/Encoding " + (max + 1) + " array");
output.println("0 1 " + max + " {1 index exch /.notdef put} for");
output.print(sb.toString());
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java Wed May 25 14:12:42 2016
@@ -154,10 +154,6 @@ public final class FontListMain {
public void svgTextStrokedAsShapes(Object source, String fontFamily) {
// ignore
}
-
- public void fontType1MaxGlyphs(Object source, String fontName) {
- //ignore
- }
};
FontListGenerator listGenerator = new FontListGenerator();
Modified: xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml Wed May 25 14:12:42 2016
@@ -22,5 +22,4 @@
<message key="glyphNotAvailable">Glyph "{ch}" (0x{ch,hex}[, {ch,glyph-name}]) not available in font "{fontName}".</message>
<message key="fontDirectoryNotFound">The font directory {dir} could not be found.</message>
<message key="svgTextStrokedAsShapes">The SVG text for font {fontFamily} will be stroked as shapes.</message>
- <message key="fontType1MaxGlyphs">Font "{fontName}" encoding has more than 256 glyphs may cause wrong output, enable font subsetting or disable 'embed-as-type1'.</message>
</catalogue>
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java Wed May 25 14:12:42 2016
@@ -29,6 +29,7 @@ import org.apache.fontbox.type1.Type1Fon
import org.apache.fop.apps.io.InternalResourceResolver;
import org.apache.fop.apps.io.ResourceResolverFactory;
+import org.apache.fop.fonts.CFFToType1Font;
import org.apache.fop.fonts.CustomFont;
import org.apache.fop.fonts.EmbeddingMode;
import org.apache.fop.fonts.EncodingMode;
@@ -40,10 +41,10 @@ public class OTFToType1TestCase {
@Test
public void testFont() throws IOException {
Type1Font t1 = getFont("test/resources/fonts/otf/SourceSansProBold.otf");
- Assert.assertEquals(t1.getFontName(), "SourceSansPro-Bold");
+ Assert.assertEquals(t1.getFontName(), "SourceSansPro-Bold.0");
Assert.assertEquals(t1.getCharStringsDict().keySet().toString(), "[.notdef, d]");
t1 = getFont("test/resources/fonts/otf/AlexBrushRegular.otf");
- Assert.assertEquals(t1.getFontName(), "AlexBrush-Regular");
+ Assert.assertEquals(t1.getFontName(), "AlexBrush-Regular.0");
}
private Type1Font getFont(String s) throws IOException {
@@ -52,7 +53,7 @@ public class OTFToType1TestCase {
CustomFont realFont = FontLoader.loadFont(new FontUris(new File(s).toURI(), null), null, true,
EmbeddingMode.SUBSET, EncodingMode.AUTO, true, true, rr, true);
realFont.mapChar('d');
- InputStream is = realFont.getInputStream();
+ InputStream is = ((CFFToType1Font)realFont).getInputStreams().get(0);
return Type1Font.createWithPFB(is);
}
}
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java Wed May 25 14:12:42 2016
@@ -220,7 +220,6 @@ public class PSPainterTestCase {
+ "/OTFFont.0 0.01 F\n"
+ "1 0 0 -1 0 0 Tm\n"
+ "<FFFFFFFFFF> t\n"
- + "/OTFFont.0 0.01 F\n"
+ "1 0 0 -1 0 0 Tm\n"
+ "<FFFFFFFFFF> t\n"
+ "/TTFFont 0.01 F\n"
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.