From ee76f72a90dd79e78cfdefef0cfd7415c5a9beaf Mon Sep 17 00:00:00 2001 From: Ioan Lucut Date: Fri, 29 Sep 2023 14:51:51 +0300 Subject: [PATCH] Update allowed characters and add conversion for single quotation marks to RTF format. --- .../proPresenter7SongConverter.spec.ts.snap | 128 +++++++++--------- .../txtToRtfConverter.spec.ts.snap | 6 +- src/constants.ts | 2 +- src/proPresenter7SongConverter.spec.ts | 18 +-- src/txtToRtfConverter.spec.ts | 6 +- src/txtToRtfConverter.ts | 4 +- txtToRtfConverterGeneratedRtf.rtf | 3 +- txtToRtfConverterGeneratedRtf_II.rtf | 3 + 8 files changed, 92 insertions(+), 78 deletions(-) diff --git a/src/__snapshots__/proPresenter7SongConverter.spec.ts.snap b/src/__snapshots__/proPresenter7SongConverter.spec.ts.snap index 6efd500..05510e1 100644 --- a/src/__snapshots__/proPresenter7SongConverter.spec.ts.snap +++ b/src/__snapshots__/proPresenter7SongConverter.spec.ts.snap @@ -52,10 +52,10 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "album": "Biserica Emanuel Sibiu 2023", "artistCredits": "", "artwork": Uint8Array [], - "author": "Ioan Lucuț", + "author": "ANY_AUTHOR", "copyrightYear": 2023, "display": false, - "publisher": "Biserica Emanuel Sibiu", + "publisher": "ANY_PUBLISHER", "songNumber": 0, "songTitle": "Any title", }, @@ -394,9 +394,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -1003,9 +1003,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "layerIdentification": undefined, "macro": { "identification": { - "parameterName": "Songs", + "parameterName": "ANY_REF_MACRO_NAME", "parameterUuid": { - "string": "3ffd01b7-104f-499f-aac9-a13135006d0e", + "string": "ANY_REF_MACRO_ID", }, }, }, @@ -1013,7 +1013,7 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "media": undefined, "message": undefined, "multiScreen": undefined, - "name": "Songs", + "name": "ANY_REF_MACRO_NAME", "oldType": undefined, "playlistItem": undefined, "presentationDocument": undefined, @@ -1157,9 +1157,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -1938,9 +1938,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -2952,9 +2952,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -3957,9 +3957,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -4891,9 +4891,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -5847,9 +5847,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -6813,9 +6813,9 @@ exports[`proPresenter7SongConverter Advanced song (w/ subsection) should convert "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -7842,10 +7842,10 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "album": "Biserica Emanuel Sibiu 2023", "artistCredits": "", "artwork": Uint8Array [], - "author": "Ioan Lucuț", + "author": "ANY_AUTHOR", "copyrightYear": 2023, "display": false, - "publisher": "Biserica Emanuel Sibiu", + "publisher": "ANY_PUBLISHER", "songNumber": 0, "songTitle": "My custom test song title abcdefghijlmnopqrstuvwxzÎâîăÂȘșĂȚț {Alternative: {The Cause Of Christ}, Author: {Kari Jobe}}", }, @@ -8426,9 +8426,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -9035,9 +9035,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "layerIdentification": undefined, "macro": { "identification": { - "parameterName": "Songs", + "parameterName": "ANY_REF_MACRO_NAME", "parameterUuid": { - "string": "3ffd01b7-104f-499f-aac9-a13135006d0e", + "string": "ANY_REF_MACRO_ID", }, }, }, @@ -9045,7 +9045,7 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "media": undefined, "message": undefined, "multiScreen": undefined, - "name": "Songs", + "name": "ANY_REF_MACRO_NAME", "oldType": undefined, "playlistItem": undefined, "presentationDocument": undefined, @@ -9189,9 +9189,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -9962,9 +9962,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -10867,9 +10867,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -11772,9 +11772,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -12557,9 +12557,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -13343,9 +13343,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -14128,9 +14128,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -14914,9 +14914,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -15699,9 +15699,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -16484,9 +16484,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -17270,9 +17270,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -18056,9 +18056,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -18842,9 +18842,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -19628,9 +19628,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -20414,9 +20414,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -21200,9 +21200,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -21986,9 +21986,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, @@ -22772,9 +22772,9 @@ exports[`proPresenter7SongConverter Basic song (no subsection) should convert to "font": { "bold": true, "face": "", - "family": "CMGSans", + "family": "CMG Sans Cn CAPS", "italic": false, - "name": "CMGSans-Regular", + "name": "CMGSans-BoldCnCAPS", "size": 58, }, "kerning": 1, diff --git a/src/__snapshots__/txtToRtfConverter.spec.ts.snap b/src/__snapshots__/txtToRtfConverter.spec.ts.snap index bec0600..61adad9 100644 --- a/src/__snapshots__/txtToRtfConverter.spec.ts.snap +++ b/src/__snapshots__/txtToRtfConverter.spec.ts.snap @@ -9,7 +9,8 @@ exports[`txtToRtfConverter should convert to expected \`rtf\` correctly 1`] = ` \\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\qc\\partightenfactor0 \\f0\\b\\fs120 \\cf2 \\cb3 Row 1-1\\ -Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\\]abcdefghijklmnopqrstuvwxyz\\uc0\\u206\\uc0\\u226\\uc0\\u238\\uc0\\u259\\uc0\\u194\\uc0\\u536\\uc0\\u537\\uc0\\u258\\uc0\\u538\\uc0\\u539\\uc0\\u8217\\uc0\\u8221\\uc0\\u8222\\ +Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\\]abcdefghijklmnopqrstuvwxyz\\uc0\\u206\\uc0\\u226\\uc0\\u238\\uc0\\u259\\uc0\\u194\\uc0\\u536\\uc0\\u537\\uc0\\u258\\uc0\\u538\\uc0\\u539\\uc0\\u8217\\uc0\\u8216\\uc0\\u8221\\uc0\\u8222\\ +Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\\]abcdefghijklmnopqrstuvwxyz\\uc0\\u206\\uc0\\u226\\uc0\\u238\\uc0\\u259\\uc0\\u194\\uc0\\u536\\uc0\\u537\\uc0\\u258\\uc0\\u538\\uc0\\u539\\uc0\\u8217\\uc0\\u8216\\uc0\\u8221\\uc0\\u8222\\ Row 1-3} " `; @@ -34,6 +35,7 @@ space-not-expected-before \\uc0\\u538text\\ space-not-expected-before \\uc0\\u539text\\ space-not-expected-before -text\\ space-not-expected-before \\uc0\\u8217text\\ +space-not-expected-before \\uc0\\u8216text\\ space-not-expected-before \\uc0\\u8221text\\ space-not-expected-before \\uc0\\u8222text\\ \\ @@ -49,6 +51,7 @@ text\\uc0\\u538 single-space-expected-after-this\\ text\\uc0\\u539 single-space-expected-after-this\\ text- single-space-expected-after-this\\ text\\uc0\\u8217 single-space-expected-after-this\\ +text\\uc0\\u8216 single-space-expected-after-this\\ text\\uc0\\u8221 single-space-expected-after-this\\ text\\uc0\\u8222 single-space-expected-after-this\\ \\ @@ -64,6 +67,7 @@ end-of-line-works-without-extra-space-text\\uc0\\u538\\ end-of-line-works-without-extra-space-text\\uc0\\u539\\ end-of-line-works-without-extra-space-text-\\ end-of-line-works-without-extra-space-text\\uc0\\u8217\\ +end-of-line-works-without-extra-space-text\\uc0\\u8216\\ end-of-line-works-without-extra-space-text\\uc0\\u8221\\ end-of-line-works-without-extra-space-text\\uc0\\u8222} " diff --git a/src/constants.ts b/src/constants.ts index 6fb6d24..1b687a4 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -19,7 +19,7 @@ export const TXT_EXTENSION = '.txt'; export const TEST_FILE = 'TEMPLATE.txt'; export const ALLOWED_CHARS = - ` {}&#!(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZYQ[\\]abcdefghijklmnopqrstuvwxyzÎâîăÂȘșĂȚț’”„\n`.split( + ` *_{}&!(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZYQ[\\]abcdefghijklmnopqrstuvwxyzÎâîăÂȘșĂȚț‘’”„\n`.split( EMPTY_STRING, ); diff --git a/src/proPresenter7SongConverter.spec.ts b/src/proPresenter7SongConverter.spec.ts index d77ddba..06ebc34 100644 --- a/src/proPresenter7SongConverter.spec.ts +++ b/src/proPresenter7SongConverter.spec.ts @@ -17,25 +17,25 @@ jest.mock('crypto', () => { const ANY_CONFIG = { arrangementName: 'BES', ccliSettings: { - publisher: 'Biserica Emanuel Sibiu', - author: 'Ioan Lucuț', - copyrightYear: new Date().getFullYear(), - album: `Biserica Emanuel Sibiu ${new Date().getFullYear()}`, + publisher: 'ANY_PUBLISHER', + author: 'ANY_AUTHOR', + copyrightYear: 2023, + album: `Biserica Emanuel Sibiu 2023`, songNumber: 0, } as Presentation_CCLI, fontConfig: { - name: 'CMGSans-Regular', + name: 'CMGSans-BoldCnCAPS', size: 58, - family: 'CMGSans', + family: 'CMG Sans Cn CAPS', bold: true, } as Graphics_Text_Attributes_Font, graphicSize: { width: 1920, height: 1080, }, - presentationCategory: `Worship Songs ~ BES ${new Date().getFullYear()}`, - refMacroId: '3ffd01b7-104f-499f-aac9-a13135006d0e', - refMacroName: 'Songs', + presentationCategory: `Worship Songs ~ BES 2023`, + refMacroId: 'ANY_REF_MACRO_ID', + refMacroName: 'ANY_REF_MACRO_NAME', }; describe('proPresenter7SongConverter', () => { diff --git a/src/txtToRtfConverter.spec.ts b/src/txtToRtfConverter.spec.ts index e033a21..4153597 100644 --- a/src/txtToRtfConverter.spec.ts +++ b/src/txtToRtfConverter.spec.ts @@ -4,7 +4,8 @@ import { convertToRtf } from './txtToRtfConverter'; describe('txtToRtfConverter', () => { it('should convert to expected `rtf` correctly', () => { const rtfContent = convertToRtf(`Row 1-1 -Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\\]abcdefghijklmnopqrstuvwxyzÎâîăÂȘșĂȚț’”„ +Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\\]abcdefghijklmnopqrstuvwxyzÎâîăÂȘșĂȚț’‘”„ +Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\\]abcdefghijklmnopqrstuvwxyzÎâîăÂȘșĂȚț’‘”„ Row 1-3`); expect(rtfContent).toMatchSnapshot(); @@ -25,6 +26,7 @@ space-not-expected-before Țtext space-not-expected-before țtext space-not-expected-before -text space-not-expected-before ’text +space-not-expected-before ‘text space-not-expected-before ”text space-not-expected-before „text @@ -40,6 +42,7 @@ textȚ single-space-expected-after-this textț single-space-expected-after-this text- single-space-expected-after-this text’ single-space-expected-after-this +text‘ single-space-expected-after-this text” single-space-expected-after-this text„ single-space-expected-after-this @@ -55,6 +58,7 @@ end-of-line-works-without-extra-space-textȚ end-of-line-works-without-extra-space-textț end-of-line-works-without-extra-space-text- end-of-line-works-without-extra-space-text’ +end-of-line-works-without-extra-space-text‘ end-of-line-works-without-extra-space-text” end-of-line-works-without-extra-space-text„`); diff --git a/src/txtToRtfConverter.ts b/src/txtToRtfConverter.ts index 0816b6e..8e6cd4b 100644 --- a/src/txtToRtfConverter.ts +++ b/src/txtToRtfConverter.ts @@ -23,6 +23,7 @@ const encodeVerseContentToUnicodeRTFFormat = (verseContent: string) => .replaceAll('” ', '\\uc0\\u8221 ') .replaceAll('„ ', '\\uc0\\u8222 ') .replaceAll('’ ', '\\uc0\\u8217 ') + .replaceAll('‘ ', '\\uc0\\u8216 ') // Remaining chars .replaceAll('Â', '\\uc0\\u194') .replaceAll('â', '\\uc0\\u226') @@ -36,7 +37,8 @@ const encodeVerseContentToUnicodeRTFFormat = (verseContent: string) => .replaceAll('Ț', '\\uc0\\u538') .replaceAll('”', '\\uc0\\u8221') .replaceAll('„', '\\uc0\\u8222') - .replaceAll('’', '\\uc0\\u8217'); + .replaceAll('’', '\\uc0\\u8217') + .replaceAll('‘', '\\uc0\\u8216'); export const convertToRtf = (multiLineVerseContent: string) => { if (!rtfTemplate) { diff --git a/txtToRtfConverterGeneratedRtf.rtf b/txtToRtfConverterGeneratedRtf.rtf index c5f0957..060d2bc 100644 --- a/txtToRtfConverterGeneratedRtf.rtf +++ b/txtToRtfConverterGeneratedRtf.rtf @@ -6,5 +6,6 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 \f0\b\fs120 \cf2 \cb3 Row 1-1\ -Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\]abcdefghijklmnopqrstuvwxyz\uc0\u206\uc0\u226\uc0\u238\uc0\u259\uc0\u194\uc0\u536\uc0\u537\uc0\u258\uc0\u538\uc0\u539\uc0\u8217\uc0\u8221\uc0\u8222\ +Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\]abcdefghijklmnopqrstuvwxyz\uc0\u206\uc0\u226\uc0\u238\uc0\u259\uc0\u194\uc0\u536\uc0\u537\uc0\u258\uc0\u538\uc0\u539\uc0\u8217\uc0\u8216\uc0\u8221\uc0\u8222\ +Row 1-2 !(),-./1234567890:;?ABCDEFGHIJKLMNOPRSTUVWXZY[\]abcdefghijklmnopqrstuvwxyz\uc0\u206\uc0\u226\uc0\u238\uc0\u259\uc0\u194\uc0\u536\uc0\u537\uc0\u258\uc0\u538\uc0\u539\uc0\u8217\uc0\u8216\uc0\u8221\uc0\u8222\ Row 1-3} diff --git a/txtToRtfConverterGeneratedRtf_II.rtf b/txtToRtfConverterGeneratedRtf_II.rtf index 6eaf73e..601ddeb 100644 --- a/txtToRtfConverterGeneratedRtf_II.rtf +++ b/txtToRtfConverterGeneratedRtf_II.rtf @@ -17,6 +17,7 @@ space-not-expected-before \uc0\u538text\ space-not-expected-before \uc0\u539text\ space-not-expected-before -text\ space-not-expected-before \uc0\u8217text\ +space-not-expected-before \uc0\u8216text\ space-not-expected-before \uc0\u8221text\ space-not-expected-before \uc0\u8222text\ \ @@ -32,6 +33,7 @@ text\uc0\u538 single-space-expected-after-this\ text\uc0\u539 single-space-expected-after-this\ text- single-space-expected-after-this\ text\uc0\u8217 single-space-expected-after-this\ +text\uc0\u8216 single-space-expected-after-this\ text\uc0\u8221 single-space-expected-after-this\ text\uc0\u8222 single-space-expected-after-this\ \ @@ -47,5 +49,6 @@ end-of-line-works-without-extra-space-text\uc0\u538\ end-of-line-works-without-extra-space-text\uc0\u539\ end-of-line-works-without-extra-space-text-\ end-of-line-works-without-extra-space-text\uc0\u8217\ +end-of-line-works-without-extra-space-text\uc0\u8216\ end-of-line-works-without-extra-space-text\uc0\u8221\ end-of-line-works-without-extra-space-text\uc0\u8222}