1*8af74909SZhong Yang // Scintilla source code edit control 2*8af74909SZhong Yang /** @file DBCS.cxx 3*8af74909SZhong Yang ** Functions to handle DBCS double byte encodings like Shift-JIS. 4*8af74909SZhong Yang **/ 5*8af74909SZhong Yang // Copyright 2017 by Neil Hodgson <[email protected]> 6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed. 7*8af74909SZhong Yang 8*8af74909SZhong Yang #include "DBCS.h" 9*8af74909SZhong Yang 10*8af74909SZhong Yang using namespace Scintilla; 11*8af74909SZhong Yang 12*8af74909SZhong Yang namespace Scintilla { 13*8af74909SZhong Yang DBCSIsLeadByte(int codePage,char ch)14*8af74909SZhong Yangbool DBCSIsLeadByte(int codePage, char ch) noexcept { 15*8af74909SZhong Yang // Byte ranges found in Wikipedia articles with relevant search strings in each case 16*8af74909SZhong Yang const unsigned char uch = ch; 17*8af74909SZhong Yang switch (codePage) { 18*8af74909SZhong Yang case 932: 19*8af74909SZhong Yang // Shift_jis 20*8af74909SZhong Yang return ((uch >= 0x81) && (uch <= 0x9F)) || 21*8af74909SZhong Yang ((uch >= 0xE0) && (uch <= 0xFC)); 22*8af74909SZhong Yang // Lead bytes F0 to FC may be a Microsoft addition. 23*8af74909SZhong Yang case 936: 24*8af74909SZhong Yang // GBK 25*8af74909SZhong Yang return (uch >= 0x81) && (uch <= 0xFE); 26*8af74909SZhong Yang case 949: 27*8af74909SZhong Yang // Korean Wansung KS C-5601-1987 28*8af74909SZhong Yang return (uch >= 0x81) && (uch <= 0xFE); 29*8af74909SZhong Yang case 950: 30*8af74909SZhong Yang // Big5 31*8af74909SZhong Yang return (uch >= 0x81) && (uch <= 0xFE); 32*8af74909SZhong Yang case 1361: 33*8af74909SZhong Yang // Korean Johab KS C-5601-1992 34*8af74909SZhong Yang return 35*8af74909SZhong Yang ((uch >= 0x84) && (uch <= 0xD3)) || 36*8af74909SZhong Yang ((uch >= 0xD8) && (uch <= 0xDE)) || 37*8af74909SZhong Yang ((uch >= 0xE0) && (uch <= 0xF9)); 38*8af74909SZhong Yang } 39*8af74909SZhong Yang return false; 40*8af74909SZhong Yang } 41*8af74909SZhong Yang 42*8af74909SZhong Yang } 43