1 /*
2  For general Scribus (>=1.3.2) copyright and licensing information please refer
3  to the COPYING file provided with the program. Following this notice may exist
4  a copyright and/or license notice that predates the release of Scribus 1.3.2
5  for which a new license (GPL+exception) is in place.
6  */
7 /***************************************************************************
8 pageitem.cpp  -  description
9 -------------------
10     begin                : Sat Apr 7 2001
11     copyright            : (C) 2001 by Franz Schmid
12     email                : Franz.Schmid@altmuehlnet.de
13 	***************************************************************************/
14 
15 /***************************************************************************
16 *                                                                         *
17 *   This program is free software; you can redistribute it and/or modify  *
18 *   it under the terms of the GNU General Public License as published by  *
19 *   the Free Software Foundation; either version 2 of the License, or     *
20 *   (at your option) any later version.                                   *
21 *                                                                         *
22 ***************************************************************************/
23 
24 
25 #ifndef SPECIALCHARS_H
26 #define SPECIALCHARS_H
27 
28 
29 #include <QString>
30 #include "scribusapi.h"
31 
32 class SCRIBUS_API SpecialChars {
33 public:
34 	static QChar OBJECT;
35 	static QChar TAB;
36 	static QChar PARSEP;
37 	static QChar LINEBREAK;
38 	static QChar OLD_LINEBREAK;
39 	static QChar COLBREAK;
40 	static QChar FRAMEBREAK;
41 	static QChar SHYPHEN;
42 	static QChar OLD_NBHYPHEN;
43 	static QChar OLD_NBSPACE;
44 	static QChar NBHYPHEN;
45 	static QChar NBSPACE;
46 	static QChar NNBSPACE;
47 	static QChar ZWNBSPACE;
48 	static QChar ZWSPACE;
49 	static QChar ZWNJ;			// break ligatures
50 	static QChar ZWJ;
51 	static QChar PAGENUMBER;
52 	static QChar PAGECOUNT;
53 	static QChar BLANK;
54 
55 	static bool isBreak(QChar c, bool includeColBreak = true);
56 	static bool isBreakingSpace(QChar c);
57 	static bool isExpandingSpace(QChar c);
58 	static bool isFixedSpace(QChar c);
59 	static bool isImplicitSpace(QChar c1, QChar c2);
60 	static bool isImplicitSpace(uint c1, uint c2);
61 
62 		enum {
63 			CJK_FENCE_BEGIN = 0x0001,
64 			CJK_FENCE_END = 0x0002,
65 			CJK_NOTOP = 0x0003,
66 			CJK_HYPHEN = 0x0004,
67 			CJK_DELMITER = 0x0005,
68 			CJK_MIDPOINT = 0x0006,
69 			CJK_PERIOD = 0x0007,
70 			CJK_COMMA = 0x0008,
71 			CJK_BETWEEN = 0x0009,
72 			CJK_PREFIX = 0x000a,
73 			CJK_POSTFIX = 0x000b,
74 			CJK_SPACE = 0x000c,
75 			CJK_KANA = 0x000d,
76 			CJK_KANJI = 0x000e,
77 
78 			CJK_CHAR_MASK = 0x00ff,
79 
80 			CJK_NOBREAK_BEFORE = 0x0100,
81 			CJK_NOBREAK_AFTER = 0x0200,
82 		};
83 		static int getCJKAttr(QChar c);
84 
85 	static bool isCJK(uint ch);
86 	static bool isLetterRequiringSpaceAroundCJK(uint ch);
87 	static bool isIgnorableCodePoint(uint ch);
88 	static bool isArabicModifierLetter(uint ch);
89 };
90 
91 #endif
92