aboutsummaryrefslogtreecommitdiffstats
path: root/fop-core/src/main/java
diff options
context:
space:
mode:
authorSimon Steiner <ssteiner@apache.org>2023-04-24 12:27:09 +0100
committerSimon Steiner <ssteiner@apache.org>2023-04-24 12:27:09 +0100
commit6696559fc657aa3d83b868c337ced59e6a44ca7b (patch)
tree727dcd2426ee34e88ca9f81f5bbcd7e44dd407ea /fop-core/src/main/java
parent95ddfc80503820b6cd5d07121595f6419cfbe221 (diff)
downloadxmlgraphics-fop-6696559fc657aa3d83b868c337ced59e6a44ca7b.tar.gz
xmlgraphics-fop-6696559fc657aa3d83b868c337ced59e6a44ca7b.zip
FOP-3129: Symbol font was not being mapped to unicode
Diffstat (limited to 'fop-core/src/main/java')
-rw-r--r--fop-core/src/main/java/org/apache/fop/fonts/truetype/OpenFont.java28
1 files changed, 17 insertions, 11 deletions
diff --git a/fop-core/src/main/java/org/apache/fop/fonts/truetype/OpenFont.java b/fop-core/src/main/java/org/apache/fop/fonts/truetype/OpenFont.java
index 0d10129f0..95113f407 100644
--- a/fop-core/src/main/java/org/apache/fop/fonts/truetype/OpenFont.java
+++ b/fop-core/src/main/java/org/apache/fop/fonts/truetype/OpenFont.java
@@ -557,17 +557,7 @@ public abstract class OpenFont {
unicodeMappings.add(new UnicodeMapping(this, glyphIdx, j));
mtxTab[glyphIdx].getUnicodeIndex().add(j);
- if (encodingID == 0 && j >= 0xF020 && j <= 0xF0FF) {
- //Experimental: Mapping 0xF020-0xF0FF to 0x0020-0x00FF
- //Tested with Wingdings and Symbol TTF fonts which map their
- //glyphs in the region 0xF020-0xF0FF.
- int mapped = j - 0xF000;
- if (!eightBitGlyphs.get(mapped)) {
- //Only map if Unicode code point hasn't been mapped before
- unicodeMappings.add(new UnicodeMapping(this, glyphIdx, mapped));
- mtxTab[glyphIdx].getUnicodeIndex().add(mapped);
- }
- }
+ mapSymbol(encodingID, j, eightBitGlyphs, glyphIdx);
// Also add winAnsiWidth
List<Integer> v = ansiIndex.get(j);
@@ -612,6 +602,8 @@ public abstract class OpenFont {
+ mtxTab.length);
}
+ mapSymbol(encodingID, j, eightBitGlyphs, glyphIdx);
+
// Also add winAnsiWidth
List<Integer> v = ansiIndex.get(j);
if (v != null) {
@@ -727,6 +719,20 @@ public abstract class OpenFont {
return true;
}
+ private void mapSymbol(int encodingID, int unicodeIndex, BitSet eightBitGlyphs, int glyphIdx) {
+ if (encodingID == 0 && unicodeIndex >= 0xF020 && unicodeIndex <= 0xF0FF) {
+ /* Experimental: Mapping 0xF020-0xF0FF to 0x0020-0x00FF
+ Tested with Wingdings and Symbol TTF fonts which map their
+ glyphs in the region 0xF020-0xF0FF. */
+ int mapped = unicodeIndex - 0xF000;
+ if (!eightBitGlyphs.get(mapped)) {
+ //Only map if Unicode code point hasn't been mapped before
+ unicodeMappings.add(new UnicodeMapping(this, glyphIdx, mapped));
+ mtxTab[glyphIdx].getUnicodeIndex().add(mapped);
+ }
+ }
+ }
+
private boolean isInPrivateUseArea(int start, int end) {
return (isInPrivateUseArea(start) || isInPrivateUseArea(end));
}