26 lines
658 B
C
26 lines
658 B
C
#ifndef _TERMPTY_DBL_H__
|
|
#define _TERMPTY_DBL_H__ 1
|
|
|
|
Eina_Bool _termpty_is_dblwidth_slow_get(const Termpty *ty, int g);
|
|
|
|
static inline Eina_Bool
|
|
_termpty_is_dblwidth_get(const Termpty *ty, int g)
|
|
{
|
|
// check for east asian full-width (F), half-width (H), wide (W),
|
|
// narrow (Na) or ambiguous (A) codepoints
|
|
// ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
|
|
|
|
// optimize for latin1 non-ambiguous
|
|
if (g <= 0xa0)
|
|
return EINA_FALSE;
|
|
// (F)
|
|
if ((g == 0x3000) ||
|
|
((g >= 0xff01) && (g <= 0xff60)) ||
|
|
((g >= 0xffe0) && (g <= 0xffe6)))
|
|
return EINA_TRUE;
|
|
|
|
return _termpty_is_dblwidth_slow_get(ty, g);
|
|
}
|
|
|
|
#endif
|