diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java index d033f7e..752f578 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/FourCornerUnicodeImport.java @@ -36,7 +36,6 @@ import org.x4o.fc18.cake2.FourCornerX18CakePointSequence; import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D; import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0; -import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8; /// Imports unicode as four corner BASIC text from the "FC.CDC1604-P6" code page. /// @@ -149,20 +148,16 @@ public class FourCornerUnicodeImport { } private boolean handleDataGramWordSpacerTypes(ImportState ctx) { - if (' ' == ctx.codePoint) { - ctx.reset(); - ctx.output.add(FCDotCMD5401Dash2D.CMD_F4TXT0001_SP); - return true; - } - if (convertWhitespaces == false) { + if (convertWhitespaces) { + if (!WHITE_SPACES.contains(ctx.codePoint)) { + return false; + } + } else if (' ' != ctx.codePoint) { return false; } - if (WHITE_SPACES.contains(ctx.codePoint)) { - ctx.reset(); - ctx.output.add(FCDotCMD5401Dash2D.CMD_F4TXT0001_SP); - return true; - } - return false; + ctx.reset(); + ctx.output.add(FCDotCMD5401Dash2D.CMD_F4TXT0001_SP); + return true; } private void sendTypeWriterNewLine(ImportState ctx) { diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java index 8c5cad1..c88e483 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeImportTest.java @@ -256,4 +256,24 @@ public class FourCornerUnicodeImportTest { String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc); Assertions.assertEquals("A\nB\nC\nD\nE\nF\n\n\n", out); } + + @Test + public void testWhiteSpace() throws Exception { + String space16 = "\u3000\u205F\u202F\u200A\u2009\u2008\u2007\u2006\u2005\u2004\u2003\u2002\u2001\u2000\u00A0\u0020"; + List cdc = FourCornerUnicodeImport.lossy().convertToX06(space16); + Iterator cdi = cdc.iterator(); + Assertions.assertNotNull(cdc); + Assertions.assertTrue(cdi.hasNext()); + Assertions.assertFalse(cdc.isEmpty()); + Assertions.assertEquals(16, cdc.size()); + while (cdi.hasNext()) { + Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TXT0001_SP, cdi.next()); + } + String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc); + Assertions.assertEquals(" ", out); + + Assertions.assertThrows(IllegalArgumentException.class, () -> { + FourCornerUnicodeImport.strict().convertToX06(space16); + }); + } }