• R/O
  • SSH
  • HTTPS

copper: Commit


Commit MetaInfo

Revision1570 (tree)
Time2018-07-11 14:50:15
Authormiyabe

Log Message

(empty log message)

Change Summary

Incremental Difference

--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/lang/BreakAllBindingRule.java (nonexistent)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/lang/BreakAllBindingRule.java (revision 1570)
@@ -0,0 +1,14 @@
1+package jp.cssj.homare.css.lang;
2+
3+import jp.cssj.sakae.gc.text.hyphenation.impl.BindingRule;
4+
5+public class BreakAllBindingRule implements BindingRule {
6+ public boolean atomic(char c1, char c2) {
7+ return false;
8+ }
9+
10+ public boolean canSeparate(char c1, char c2) {
11+ return true;
12+ }
13+
14+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/lang/JapaneseKeepAllBindingRule.java (nonexistent)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/lang/JapaneseKeepAllBindingRule.java (revision 1570)
@@ -0,0 +1,14 @@
1+package jp.cssj.homare.css.lang;
2+
3+import java.lang.Character.UnicodeBlock;
4+
5+import jp.cssj.sakae.gc.text.hyphenation.impl.JapaneseBindingRule;
6+
7+public class JapaneseKeepAllBindingRule extends JapaneseBindingRule {
8+ public boolean atomic(char c1, char c2) {
9+ if (this.isCJK(c1) && this.isCJK(c2) && UnicodeBlock.of(c1) != UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION) {
10+ return true;
11+ }
12+ return super.atomic(c1, c2);
13+ }
14+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/lang/LanguageProfile.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/lang/LanguageProfile.java (revision 1570)
@@ -1,7 +1,9 @@
11 package jp.cssj.homare.css.lang;
22
3+import jp.cssj.homare.css.CSSStyle;
34 import jp.cssj.homare.css.value.TextTransformValue;
45 import jp.cssj.homare.css.value.ValueListValue;
6+import jp.cssj.sakae.gc.text.hyphenation.Hyphenation;
57
68 /**
79 * 各言語のための固有の機能です。
@@ -55,4 +57,11 @@
5557 * @param len
5658 */
5759 public void transform(TextTransformValue transform, char[] ch, int off, int len);
60+
61+ /**
62+ * ハイフネーションを返します。
63+ * @param style
64+ * @return
65+ */
66+ public Hyphenation getHyphenation(final CSSStyle style);
5867 }
--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/style/StyleBuilder.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/style/StyleBuilder.java (revision 1570)
@@ -18,7 +18,6 @@
1818 import jp.cssj.homare.css.Declaration;
1919 import jp.cssj.homare.css.StyleContext;
2020 import jp.cssj.homare.css.html.HTMLStyle;
21-import jp.cssj.homare.css.lang.CSSJBindingRule;
2221 import jp.cssj.homare.css.lang.LanguageProfile;
2322 import jp.cssj.homare.css.lang.LanguageProfileBundle;
2423 import jp.cssj.homare.css.util.BoxValueUtils;
@@ -48,7 +47,6 @@
4847 import jp.cssj.homare.css.value.Value;
4948 import jp.cssj.homare.css.value.ValueListValue;
5049 import jp.cssj.homare.css.value.VisibilityValue;
51-import jp.cssj.homare.css.value.ext.CSSJBreakRuleValue;
5250 import jp.cssj.homare.css.value.ext.CSSJDirectionModeValue;
5351 import jp.cssj.homare.css.value.ext.CSSJFirstHeadingValue;
5452 import jp.cssj.homare.css.value.ext.CSSJLastHeadingValue;
@@ -151,11 +149,8 @@
151149 import jp.cssj.homare.impl.css.property.css3.TextStrokeWidth;
152150 import jp.cssj.homare.impl.css.property.css3.Transform;
153151 import jp.cssj.homare.impl.css.property.css3.TransformOrigin;
154-import jp.cssj.homare.impl.css.property.css3.WordBreak;
155152 import jp.cssj.homare.impl.css.property.css3.WordWrap;
156-import jp.cssj.homare.impl.css.property.ext.CSSJBreakCharacters;
157153 import jp.cssj.homare.impl.css.property.ext.CSSJDirectionMode;
158-import jp.cssj.homare.impl.css.property.ext.CSSJNoBreakCharacters;
159154 import jp.cssj.homare.impl.css.property.ext.CSSJPageContent;
160155 import jp.cssj.homare.impl.css.property.ext.CSSJPageContentClear;
161156 import jp.cssj.homare.impl.css.property.ext.CSSJRegeneratable;
@@ -244,9 +239,6 @@
244239 import jp.cssj.sakae.gc.GC;
245240 import jp.cssj.sakae.gc.GraphicsException;
246241 import jp.cssj.sakae.gc.image.Image;
247-import jp.cssj.sakae.gc.text.hyphenation.Hyphenation;
248-import jp.cssj.sakae.gc.text.hyphenation.impl.DefaultHyphenation;
249-import jp.cssj.sakae.gc.text.hyphenation.impl.JapaneseBindingRule;
250242
251243 /**
252244 * @author MIYABE Tatsuhiko
@@ -299,8 +291,6 @@
299291
300292 private byte state = 0;
301293
302- private final Hyphenation hyphenation;
303-
304294 public StyleBuilder(StyleContext styleContext, UserAgent ua, Imposition imposition) {
305295 this.styleContext = styleContext;
306296 this.ua = ua;
@@ -307,7 +297,6 @@
307297 this.pageNumber = ua.getPassContext().getPageNumber();
308298 this.imposition = imposition;
309299 this.doc = new DocumentBuilder(this);
310- this.hyphenation = new DefaultHyphenation(new JapaneseBindingRule());
311300
312301 byte pageMode = 0;
313302 // 自動高さ
@@ -419,18 +408,6 @@
419408 return this.pageElement;
420409 }
421410
422- private Hyphenation getHyphenation(final CSSStyle style) {
423- // 禁則処理
424- final CSSJBreakRuleValue include = CSSJNoBreakCharacters.get(style);
425- final CSSJBreakRuleValue exclude = CSSJBreakCharacters.get(style);
426- if (include != CSSJBreakRuleValue.NONE_VALUE || exclude != CSSJBreakRuleValue.NONE_VALUE) {
427- final CSSJBindingRule binding = new CSSJBindingRule(include, exclude);
428- return new DefaultHyphenation(binding);
429- }
430-
431- return this.hyphenation;
432- }
433-
434411 /**
435412 * 相対配置可能な配置の設定します。
436413 *
@@ -569,10 +546,7 @@
569546 private void setupTextParams(AbstractTextParams params, CSSStyle style) {
570547 this.setupParams(params, style);
571548 params.whiteSpace = WhiteSpace.get(style);
572- params.wordWrap = WordBreak.get(style);
573- if (params.wordWrap == AbstractTextParams.WORD_WRAP_NORMAL) {
574- params.wordWrap = WordWrap.get(style);
575- }
549+ params.wordWrap = WordWrap.get(style);
576550 params.color = TextFillColor.get(style);
577551 params.decoration = TextDecoration.get(style);
578552 params.decorationThickness = 1.0 / style.getUserAgent().getFontSize(UserAgent.FONT_SIZE_MEDIUM) / 2.0;
@@ -584,7 +558,9 @@
584558 params.textTransform = TextTransform.get(style);
585559 params.fontStyle = style.getFontStyle();
586560 params.fontManager = this.ua.getFontManager();
587- params.hyphenation = this.getHyphenation(style);
561+ final LanguageProfile lang = LanguageProfileBundle
562+ .getLanguageProfile(style.getCSSElement().lang);
563+ params.hyphenation = lang.getHyphenation(style);
588564 params.direction = Direction.get(style);
589565 params.flow = BlockFlow.get(style);
590566 }
@@ -1147,6 +1123,9 @@
11471123 this.toPageContentClear.put(ce, pageContentClearNames);
11481124 }
11491125
1126+ final LanguageProfile lang = LanguageProfileBundle
1127+ .getLanguageProfile(style.getCSSElement().lang);
1128+
11501129 if (pageContentName != null) {
11511130 final PageContent pageContent;
11521131 if (regenerate) {
@@ -1163,7 +1142,7 @@
11631142 params.element = ce;
11641143 params.fontStyle = style.getFontStyle();
11651144 params.fontManager = this.ua.getFontManager();
1166- params.hyphenation = this.getHyphenation(style);
1145+ params.hyphenation = lang.getHyphenation(style);
11671146 final InlineBox inlineBox = new InlineBox(params, pos);
11681147 this.doc.startBox(inlineBox);
11691148 this.doc.endBox();
@@ -1273,7 +1252,7 @@
12731252 BlockParams params = new BlockParams();
12741253 params.fontStyle = style.getFontStyle();
12751254 params.fontManager = this.ua.getFontManager();
1276- params.hyphenation = this.getHyphenation(style);
1255+ params.hyphenation = lang.getHyphenation(style);
12771256 params.direction = Direction.get(style);
12781257 params.flow = BlockFlow.get(style);
12791258 params.element = ce;
@@ -2669,7 +2648,9 @@
26692648 params.flow = this.progression;
26702649 params.fontStyle = pageStyle.getFontStyle();
26712650 params.fontManager = this.ua.getFontManager();
2672- params.hyphenation = this.getHyphenation(pageStyle);
2651+ final LanguageProfile lang = LanguageProfileBundle
2652+ .getLanguageProfile(pageStyle.getCSSElement().lang);
2653+ params.hyphenation = lang.getHyphenation(pageStyle);
26732654
26742655 // ページのサイズ
26752656 double width = this.imposition.getPageWidth();
--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/Value.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/Value.java (revision 1570)
@@ -165,9 +165,6 @@
165165 //
166166 public static final short TYPE_UNICODE_BIDI = TYPE_DIRECTION + 1;
167167
168- // 単語の分割
169- public static final short TYPE_WORD_WRAP = TYPE_UNICODE_BIDI + 1;
170-
171168 /**
172169 * 値のタイプを返します。
173170 *
--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/css3/CSS3Value.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/css3/CSS3Value.java (revision 1570)
@@ -23,5 +23,8 @@
2323
2424 public static final short TYPE_BOX_SIZING = 3010;
2525
26- public static final short TYPE_WORD_BREAK = 3011;
26+ // 単語の分割
27+ public static final short TYPE_WORD_WRAP = 3011;
28+
29+ public static final short TYPE_WORD_BREAK = 3012;
2730 }
\ No newline at end of file
--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/css3/WordBreakValue.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/css3/WordBreakValue.java (revision 1570)
@@ -1,16 +1,22 @@
11 package jp.cssj.homare.css.value.css3;
22
3-import jp.cssj.homare.style.box.params.AbstractTextParams;
4-
53 /**
64 * @author MIYABE Tatsuhiko
75 * @version $Id: WordWrapValue.java 1552 2018-04-26 01:43:24Z miyabe $
86 */
97 public class WordBreakValue implements CSS3Value {
10- public static final WordBreakValue NORMAL_VALUE = new WordBreakValue(AbstractTextParams.WORD_WRAP_NORMAL);
8+ public static final byte NORMAL = 1;
119
12- public static final WordBreakValue BREAK_ALL_VALUE = new WordBreakValue(AbstractTextParams.WORD_WRAP_BREAK_ALL);
10+ public static final byte BREAK_ALL = 2;
1311
12+ public static final byte KEEP_ALL = 3;
13+
14+ public static final WordBreakValue NORMAL_VALUE = new WordBreakValue(NORMAL);
15+
16+ public static final WordBreakValue BREAK_ALL_VALUE = new WordBreakValue(BREAK_ALL);
17+
18+ public static final WordBreakValue KEEP_ALL_VALUE = new WordBreakValue(KEEP_ALL);
19+
1420 private final byte wordBreak;
1521
1622 private WordBreakValue(byte wordBreak) {
@@ -27,12 +33,15 @@
2733
2834 public String toString() {
2935 switch (this.wordBreak) {
30- case AbstractTextParams.WORD_WRAP_NORMAL:
36+ case NORMAL:
3137 return "normal";
3238
33- case AbstractTextParams.WORD_WRAP_BREAK_ALL:
39+ case BREAK_ALL:
3440 return "break-all";
3541
42+ case KEEP_ALL:
43+ return "keep-all";
44+
3645 default:
3746 throw new IllegalStateException();
3847 }
--- copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/css3/WordWrapValue.java (nonexistent)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/css/value/css3/WordWrapValue.java (revision 1570)
@@ -0,0 +1,40 @@
1+package jp.cssj.homare.css.value.css3;
2+
3+import jp.cssj.homare.style.box.params.AbstractTextParams;
4+
5+/**
6+ * @author MIYABE Tatsuhiko
7+ * @version $Id: WordWrapValue.java 1552 2018-04-26 01:43:24Z miyabe $
8+ */
9+public class WordWrapValue implements CSS3Value {
10+ public static final WordWrapValue NORMAL_VALUE = new WordWrapValue(AbstractTextParams.WORD_WRAP_NORMAL);
11+
12+ public static final WordWrapValue BREAK_WORD_VALUE = new WordWrapValue(AbstractTextParams.WORD_WRAP_BREAK_WORD);
13+
14+ private final byte wordWrap;
15+
16+ private WordWrapValue(byte wordWrap) {
17+ this.wordWrap = wordWrap;
18+ }
19+
20+ public short getValueType() {
21+ return TYPE_WORD_WRAP;
22+ }
23+
24+ public byte getWordWrap() {
25+ return this.wordWrap;
26+ }
27+
28+ public String toString() {
29+ switch (this.wordWrap) {
30+ case AbstractTextParams.WORD_WRAP_NORMAL:
31+ return "normal";
32+
33+ case AbstractTextParams.WORD_WRAP_BREAK_WORD:
34+ return "break-word";
35+
36+ default:
37+ throw new IllegalStateException();
38+ }
39+ }
40+}
\ No newline at end of file
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- copper/trunk/homare/src/main/java/jp/cssj/homare/impl/css/lang/LanguageProfile_ja.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/impl/css/lang/LanguageProfile_ja.java (revision 1570)
@@ -1,11 +1,23 @@
11 package jp.cssj.homare.impl.css.lang;
22
3+import jp.cssj.homare.css.CSSStyle;
4+import jp.cssj.homare.css.lang.BreakAllBindingRule;
5+import jp.cssj.homare.css.lang.CSSJBindingRule;
6+import jp.cssj.homare.css.lang.JapaneseKeepAllBindingRule;
37 import jp.cssj.homare.css.lang.LanguageProfile;
48 import jp.cssj.homare.css.value.QuotesValue;
59 import jp.cssj.homare.css.value.TextTransformValue;
610 import jp.cssj.homare.css.value.Value;
711 import jp.cssj.homare.css.value.ValueListValue;
12+import jp.cssj.homare.css.value.css3.WordBreakValue;
13+import jp.cssj.homare.css.value.ext.CSSJBreakRuleValue;
14+import jp.cssj.homare.impl.css.property.css3.WordBreak;
15+import jp.cssj.homare.impl.css.property.ext.CSSJBreakCharacters;
16+import jp.cssj.homare.impl.css.property.ext.CSSJNoBreakCharacters;
817 import jp.cssj.homare.style.box.params.AbstractTextParams;
18+import jp.cssj.sakae.gc.text.hyphenation.Hyphenation;
19+import jp.cssj.sakae.gc.text.hyphenation.impl.DefaultHyphenation;
20+import jp.cssj.sakae.gc.text.hyphenation.impl.JapaneseBindingRule;
921
1022 /**
1123 * @author MIYABE Tatsuhiko
@@ -14,6 +26,12 @@
1426 public class LanguageProfile_ja implements LanguageProfile {
1527 private static final ValueListValue QUOTES = new ValueListValue(
1628 new Value[] { new QuotesValue("「", "」"), new QuotesValue("『", "』"), });
29+
30+ private final Hyphenation normalHyph = new DefaultHyphenation(new JapaneseBindingRule());
31+
32+ private final Hyphenation breakAllHyph = new DefaultHyphenation(new BreakAllBindingRule());
33+
34+ private final Hyphenation keepAllHyph = new DefaultHyphenation(new JapaneseKeepAllBindingRule());
1735
1836 public String getLanguage() {
1937 return "ja";
@@ -128,4 +146,28 @@
128146 throw new IllegalStateException();
129147 }
130148 }
149+
150+ public Hyphenation getHyphenation(final CSSStyle style) {
151+ // 禁則処理
152+ switch(WordBreak.get(style)) {
153+ case WordBreakValue.NORMAL:
154+ final CSSJBreakRuleValue include = CSSJNoBreakCharacters.get(style);
155+ final CSSJBreakRuleValue exclude = CSSJBreakCharacters.get(style);
156+ if (include != CSSJBreakRuleValue.NONE_VALUE || exclude != CSSJBreakRuleValue.NONE_VALUE) {
157+ final CSSJBindingRule binding = new CSSJBindingRule(include, exclude);
158+ return new DefaultHyphenation(binding);
159+ }
160+
161+ return this.normalHyph;
162+
163+ case WordBreakValue.KEEP_ALL:
164+ return this.keepAllHyph;
165+
166+ case WordBreakValue.BREAK_ALL:
167+ return this.breakAllHyph;
168+ default:
169+ throw new IllegalStateException();
170+ }
171+
172+ }
131173 }
\ No newline at end of file
--- copper/trunk/homare/src/main/java/jp/cssj/homare/impl/css/property/css3/WordBreak.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/impl/css/property/css3/WordBreak.java (revision 1570)
@@ -42,10 +42,12 @@
4242 switch (lu.getLexicalUnitType()) {
4343 case LexicalUnit.SAC_IDENT:
4444 String ident = lu.getStringValue().toLowerCase();
45- if (ident.equals("normal") || ident.equals("keep-all")) {
45+ if (ident.equals("normal")) {
4646 return WordBreakValue.NORMAL_VALUE;
4747 } else if (ident.equals("break-all")) {
4848 return WordBreakValue.BREAK_ALL_VALUE;
49+ } else if (ident.equals("keep-all")) {
50+ return WordBreakValue.KEEP_ALL_VALUE;
4951 }
5052
5153 default:
--- copper/trunk/homare/src/main/java/jp/cssj/homare/impl/css/property/css3/WordWrap.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/impl/css/property/css3/WordWrap.java (revision 1570)
@@ -7,7 +7,7 @@
77 import jp.cssj.homare.css.property.PrimitivePropertyInfo;
88 import jp.cssj.homare.css.property.PropertyException;
99 import jp.cssj.homare.css.value.Value;
10-import jp.cssj.homare.css.value.WordWrapValue;
10+import jp.cssj.homare.css.value.css3.WordWrapValue;
1111 import jp.cssj.homare.ua.UserAgent;
1212 import jp.cssj.sakae.sac.css.LexicalUnit;
1313
--- copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/SVGImageLoader.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/SVGImageLoader.java (revision 1570)
@@ -17,7 +17,6 @@
1717 import org.apache.batik.anim.dom.SVGOMSVGElement;
1818 import org.apache.batik.bridge.BridgeContext;
1919 import org.apache.batik.bridge.BridgeException;
20-import org.apache.batik.bridge.DocumentLoader;
2120 import org.apache.batik.bridge.GVTBuilder;
2221 import org.apache.batik.gvt.GraphicsNode;
2322 import org.apache.batik.util.ParsedURL;
@@ -33,7 +32,6 @@
3332 import jp.cssj.sakae.svg.Dimension2DImpl;
3433 import jp.cssj.sakae.svg.GVTBuilderImpl;
3534 import jp.cssj.sakae.svg.SVGImage;
36-import jp.cssj.sakae.svg.UserAgentImpl;
3735
3836 public class SVGImageLoader implements ImageLoader {
3937 private static final Logger LOG = Logger.getLogger(SVGImageLoader.class.getName());
@@ -136,9 +134,7 @@
136134 } catch (Exception e) {
137135 // ignore
138136 }
139- UserAgentImpl uax = new UserAgentImpl(viewport);
140- DocumentLoader loader = new DocumentLoader(uax);
141- BridgeContext ctx = new BridgeContext(uax, loader);
137+ BridgeContext ctx = new BridgeContextImpl(docURI, ua, viewport, this);
142138 GVTBuilder gvt = new GVTBuilderImpl();
143139 GraphicsNode gvtRoot = gvt.build(ctx, doc);
144140
--- copper/trunk/homare/src/main/java/jp/cssj/homare/style/box/params/AbstractTextParams.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/style/box/params/AbstractTextParams.java (revision 1570)
@@ -38,8 +38,6 @@
3838 public static final byte WORD_WRAP_NORMAL = 1;
3939
4040 public static final byte WORD_WRAP_BREAK_WORD = 2;
41-
42- public static final byte WORD_WRAP_BREAK_ALL = 3;
4341
4442 public static final byte DECORATION_UNDERLINE = 0x01;
4543
--- copper/trunk/homare/src/main/java/jp/cssj/homare/style/builder/impl/TextBuilder.java (revision 1569)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/style/builder/impl/TextBuilder.java (revision 1570)
@@ -853,25 +853,21 @@
853853 // }
854854 // this.flush();
855855 // }
856- if (this.breakWord != AbstractTextParams.WORD_WRAP_NORMAL && this.unitAdvance > 0) {
856+ if (this.breakWord == AbstractTextParams.WORD_WRAP_BREAK_WORD && this.unitAdvance > 0) {
857857 if (this.firstUnit) {
858858 this.locateLine();
859859 this.firstUnit = false;
860860 }
861- if (this.breakWord == AbstractTextParams.WORD_WRAP_BREAK_ALL) {
862- this.flush();
861+ double lineAxis = this.unitAdvance + this.letterSpacing;
862+ if (this.text == null) {
863+ lineAxis += this.fontMetrics.getAdvance(gid);
863864 } else {
864- double lineAxis = this.unitAdvance + this.letterSpacing;
865- if (this.text == null) {
866- lineAxis += this.fontMetrics.getAdvance(gid);
867- } else {
868- lineAxis += this.text.glyphAdvance(gid);
869- }
870- final double maxLineAxis = this.maxLineSize - this.textIndent;
871- if (StyleUtils.compare(lineAxis, maxLineAxis) > 0) {
872- this.flush();
873- }
865+ lineAxis += this.text.glyphAdvance(gid);
874866 }
867+ final double maxLineAxis = this.maxLineSize - this.textIndent;
868+ if (StyleUtils.compare(lineAxis, maxLineAxis) > 0) {
869+ this.flush();
870+ }
875871 }
876872
877873 if (this.text == null) {
--- copper/trunk/sakae/sakae-core/src/main/java/jp/cssj/sakae/gc/text/hyphenation/impl/JapaneseBindingRule.java (revision 1569)
+++ copper/trunk/sakae/sakae-core/src/main/java/jp/cssj/sakae/gc/text/hyphenation/impl/JapaneseBindingRule.java (revision 1570)
@@ -108,7 +108,7 @@
108108 return false;
109109 }
110110
111- private boolean isCJK(char c) {
111+ protected boolean isCJK(char c) {
112112 UnicodeBlock b = UnicodeBlock.of(c);
113113 if (b == null) {
114114 return true;
Show on old repository browser