Lines Matching +full:- +full:a
4 <<wcwidth>>---number of column positions of a wide-character code
16 shall ensure that the value of <[wc]> is a character representable
17 as a wint_t (combining Unicode surrogate pairs into single 21-bit
18 Unicode code points), and is a wide-character code corresponding to a
22 The <<wcwidth>> function shall either return 0 (if <[wc]> is a null
23 wide-character code), or return the number of column positions to
24 be occupied by the wide-character code <[wc]>, or return -1 (if <[wc]>
25 does not correspond to a printable wide-character code).
34 * IEEE Std 1002.1-2001) for Unicode.
38 * In fixed-width output devices, Latin characters all occupy a single
40 * occupy two such cells. Interoperability between terminal-line
41 * applications and (teletype-style) character terminals using the
42 * UTF-8 encoding requires agreement on which character should advance
46 * a first attempt of defining such behavior based on simple rules
50 * defines a character-cell width via the definition of the East Asian
51 * FullWidth (F), Wide (W), Half-width (H), and Narrow (Na) classes.
52 * In all these cases, there is no ambiguity about which width a
53 * terminal shall use. For characters in the East Asian Ambiguous (A)
54 * class, the width choice depends purely on a preference of backward
56 * Choosing single-width for these characters is easy to justify as
57 * the appropriate long-term solution, as the CJK practice of
58 * displaying these characters as double-width comes from historic
59 * implementation simplicity (8-bit encoded characters were displayed
60 * single-width and 16-bit ones double-width, even for Greek,
64 * (Neutral) class. Existing practice does not dictate a width for any
68 * represented adequately with a single-width glyph. The following
69 * routines at present merely assign a single-cell width to all
72 * establishing a formal standard in this area. At the moment, the
74 * represented by double-width glyphs cannot yet be answered by
75 * applying a simple rule from the Unicode database content. Setting
76 * up a proper standard for the behavior of UTF-8 character terminals
77 * will require a careful analysis not only of each Unicode character,
83 * Markus Kuhn -- 2007-05-26 (Unicode 5.0)
122 max = mid - 1; in bisearch()
134 * - The null character (U+0000) has a column width of 0.
136 * - Other C0/C1 control characters and DEL will lead to a return
137 * value of -1.
139 * - If the current language is recognized as a language usually using
140 * CJK fonts, spacing characters in the East Asian Ambiguous (A)
141 * category as defined in Unicode Technical Report #11 have a column
144 * - Non-spacing and enclosing combining characters (general
145 * category code Mn or Me in the Unicode database) have a
148 * - SOFT HYPHEN (U+00AD) has a column width of 1.
150 * - Other format characters (general category code Cf in the Unicode
151 * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.
153 * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
154 * have a column width of 0.
156 * - Spacing characters in the East Asian Wide (W) or East Asian
157 * Full-width (F) category as defined in Unicode Technical
158 * Report #11 have a column width of 2.
160 * - All remaining characters (including all printable
161 * ISO 8859-1 and WGL4 characters, Unicode control characters,
162 * etc.) have a column width of 1.
173 /* sorted list of non-overlapping intervals of East Asian Ambiguous chars */ in __wcwidth()
177 /* sorted list of non-overlapping intervals of non-spacing characters */ in __wcwidth()
181 /* sorted list of non-overlapping intervals of wide characters, in __wcwidth()
197 return -1; in __wcwidth()
201 return -1; in __wcwidth()
203 /* check CJK width mode (1: ambiguous-wide, 0: normal, -1: disabled) */ in __wcwidth()
209 sizeof(ambiguous) / sizeof(struct interval) - 1)) in __wcwidth()
212 /* binary search in table of non-spacing characters */ in __wcwidth()
214 sizeof(combining) / sizeof(struct interval) - 1)) in __wcwidth()
217 /* if we arrive here, ucs is not a combining or C0/C1 control character */ in __wcwidth()
222 sizeof(wide) / sizeof(struct interval) - 1)) in __wcwidth()
231 return -1; in __wcwidth()