Skip to content

Commit fa93a4e

Browse files
BATIK-1355: Missing arabic characters
1 parent 1291295 commit fa93a4e

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

batik-gvt/src/main/java/org/apache/batik/gvt/text/ArabicTextHandler.java

+6
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,12 @@ public static boolean isLigature(char c) {
620620

621621
null, // 0x0628
622622
null, // 0x0629
623+
null, // 0x062A
624+
null, // 0x062B
625+
null, // 0x062C
626+
null, // 0x062D
627+
null, // 0x062E
628+
null, // 0x062F
623629
null, // 0x0630
624630
null, // 0x0631
625631
null, // 0x0632
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
3+
Licensed to the Apache Software Foundation (ASF) under one or more
4+
contributor license agreements. See the NOTICE file distributed with
5+
this work for additional information regarding copyright ownership.
6+
The ASF licenses this file to You under the Apache License, Version 2.0
7+
(the "License"); you may not use this file except in compliance with
8+
the License. You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
18+
*/
19+
package org.apache.batik.svg;
20+
21+
import java.io.ByteArrayInputStream;
22+
import java.io.ByteArrayOutputStream;
23+
import org.apache.batik.transcoder.TranscoderInput;
24+
import org.apache.batik.transcoder.TranscoderOutput;
25+
import org.apache.batik.transcoder.image.PNGTranscoder;
26+
import org.junit.Assert;
27+
import org.junit.Test;
28+
29+
public class ArabicCharactersTestCase {
30+
@Test
31+
public void testDoubleCharRemappings() throws Exception {
32+
String text = "\u0634\u0627\u0631\u0639 \u0637\u064E\u0648\u0650\u064A \u0623\u0645 \u0627\u0644\u0638\u0651\u0650\u0628\u0627";
33+
String svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" " +
34+
"width=\"700\" height=\"500\" viewBox=\"0 0 700 500\">\n" +
35+
"\t<g font-family=\"dialog\" font-size=\"35\" text-anchor=\"start\">\n" +
36+
"\t\t<text fill=\"DarkRed\" x=\"5%\" y=\"10%\"\n" +
37+
"\t\t> Arabic Shadda : " + text + "</text>\n" +
38+
"\t</g>\n" +
39+
"</svg>";
40+
PNGTranscoder transcoder = new PNGTranscoder();
41+
TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(svgContent.getBytes()));
42+
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
43+
TranscoderOutput output = new TranscoderOutput(ostream);
44+
transcoder.transcode(input, output);
45+
Assert.assertNotNull(ostream.toByteArray());
46+
}
47+
}

0 commit comments

Comments
 (0)